
The Definitive Guide to Modernizing Applications on Google Cloud
Legacy applications, which comprise 75-80% of all enterprise applications, often end up being stuck in data centers. Modernizing these applications to make them cloud-native enables them to scale in a cloud environment without taking months or years to start seeing the benefits. This book will help software developers and solutions architects to modernize their applications on Google Cloud and transform them into cloud-native applications.
This book helps you to build on your existing knowledge of enterprise application development and takes you on a journey through the six Rs: rehosting, replatforming, rearchitecting, repurchasing, retiring, and retaining. You'll learn how to modernize a legacy enterprise application on Google Cloud and build on existing assets and skills effectively. Taking an iterative and incremental approach to modernization, the book introduces the main services in Google Cloud in an easy-to-understand way that can be applied immediately to an application.
By the end of this Google Cloud book, you'll have learned how to modernize a legacy enterprise application by exploring various interim architectures and tooling to develop a cloud-native microservices-based application.
- The Definitive Guide to Modernizing Applications on Google Cloud
- Contributors
- About the authors
- About the reviewer
- Preface
- Who this book is for
- What this book covers
- To get the most out of this book
- Download the example code files
- Download the color images
- Conventions used
- Get in touch
- Reviews
- Share Your Thoughts
- Section 1: Cloud-Native Application Development and App Modernization in Google Cloud
- Chapter 1: Cloud-Native Application Fundamentals
- The cloud-native ecosystem
- Benefits of cloud-native applications
- Increased speed of delivery
- Increased scalability
- Increased resiliency
- Mixed technology stack and workforce
- Continuous integration and delivery
- Increased automation
- Principles of cloud-native architecture
- Principle 1 lightweight microservices
- Principle 2 leveraging automation
- Principle 3 DevOps culture
- Principle 4 better to go managed
- Principle 5 innovate
- Limitations of microservices
- Applying the 12-factor app principles on Google Cloud
- Code base
- Dependencies
- Config
- Backing services
- Build, release, run
- Processes
- Port binding
- Concurrency
- Disposability
- Dev/prod parity
- Logs
- Admin processes
- Summary
- Chapter 2: End-to-End Extensible Tooling for Cloud-Native Application Development
- Moving past third-party services the beauty of end-to-end tooling
- Google Cloud Code
- Features and benefits of Cloud Code
- The role of Cloud Code in the cloud-native app development pipeline
- Google Cloud Build
- Features and benefits of Cloud Build
- The role of Cloud Build in the cloud-native app development pipeline
- Google Container Registry
- Features and benefits of GCR
- The next-gen container registry Artifact Registry
- The role of GCR in the cloud-native app development pipeline
- Google Cloud Run
- Features and benefits of Cloud Run
- The role of Google Cloud Run in the cloud-native app development pipeline
- Google Kubernetes Engine
- Features and benefits of GKE
- The role of GKE in the cloud-native app development pipeline
- Operations suite
- Features of Google Cloud Monitoring
- Features of Google Cloud Logging
- The role of the Cloud operations suite in the cloud-native app development pipeline
- Summary
- Chapter 3: Cloud-Native Architecture Patterns and System Architecture Tenets
- Cloud-native patterns
- The scope of cloud-native patterns
- Solving challenges with cloud-native patterns
- Be proactive, not reactive
- Scaling and performance
- Deployments
- Resiliency and availability
- Monitoring
- Security
- Cloud-native design patterns
- Microservices
- Strangler applications
- Decomposition patterns
- Event-driven patterns
- Command Query Responsibility Segregation
- The saga pattern
- Multiple service instances
- Canary deployments
- Stateless services
- Immutable infrastructure
- Anti-corruption layer
- API composition
- Event sourcing
- The Retry pattern
- Circuit breaker pattern
- The bulkhead pattern
- Using the cloud-native pattern judiciously
- Hybrid and multi-cloud architecture recommendations
- Distributed deployment patterns
- Redundant deployment patterns
- Summary
- Cloud-native patterns
- Section 2: Selecting the Right Google Cloud Services
- Chapter 4: Choosing the Right Compute Option
- Five compute options and Firebase
- Firebase
- Cloud Functions
- GAE
- Cloud Run
- GKE
- GCE
- Pricing
- How important is it to choose the right option?
- Changing compute options
- Making a decision
- Summary
- Five compute options and Firebase
- Chapter 5: Choosing the Right Database and Storage
- Storage and database options on Google Cloud the big three
- GCS basics
- GCS
- Cloud SQL
- Cloud Firestore (previously Datastore)
- Cloud Spanner
- Cloud Bigtable
- Wrapping up the big five
- Additional storage and database options
- BigQuery
- Filestore
- Persistent disks/local solid-state drive (SSD) (block storage)
- MemoryStore
- Security and flexibility
- Summary
- Storage and database options on Google Cloud the big three
- Chapter 6: Implementing a Messaging and Scheduling System
- Understanding the requirements of a messaging system
- Requirement #1: Scalability
- Requirement #2: Extensibility
- Requirement #3: Agility
- Requirement #4: Resiliency
- Introduction to asynchronous messaging
- Messaging products available (open source and cloud native) on the market
- Amazon SQS
- Kafka
- RabbitMQ
- NATS Streaming
- Advantages of asynchronous messaging
- Introduction to Pub/Sub
- What is Cloud Pub/Sub?
- Pub/Sub key features
- Additional benefits
- Pub/Sub Concepts topics and subscriptions
- Pub/Sub model fan-in and fan-out
- Pull versus push types differences and when to use each type
- Getting started with Cloud Pub/Sub
- Introduction to Cloud Tasks
- Introduction to Cloud Scheduler
- Summary
- Understanding the requirements of a messaging system
- Chapter 7: Implementing Cloud-Native Security
- The principles and concepts of cloud security
- Economy of Mechanism
- Defense in Depth
- Principle of Least Privilege
- Adding infrastructure security layers (revision)
- Cloud IAM
- Traditional access control versus Cloud IAM
- Concepts of IAM
- Entity
- Identity
- Permissions
- Policy
- Authentication and authorization
- Cloud IAM on Google Cloud Platform
- Features of Cloud IAM
- Components of Cloud IAM
- Members
- All authenticated users
- All users
- Resources
- Permissions
- Roles
- IAM policy bindings
- Limitations of Cloud IAM
- Cloud Identity
- Features of Cloud Identity
- Setting up Cloud Identity
- Cloud Identity Platform
- Features of Cloud Identity Platform
- BeyondCorp (a new approach to enterprise security)
- Cloud Identity-Aware Proxy (IAP)
- Summary
- The principles and concepts of cloud security
- Section 3: Rehosting and Replatforming the Application
- Chapter 8: Introducing the Legacy Application
- Technical requirements
- The infrastructure architecture
- The software architecture
- Spring Boot
- Thymeleaf
- Bootstrap
- jQuery
- Explaining the software architecture
- Implementing the software
- Spring Boot configuration
- Understanding the layers of the application
- The presentation layer
- The controller layer
- The domain layer
- Validation and defensive programming
- Summary
- Chapter 9: The Initial Architecture on Google Compute Engine
- Technical requirements
- The initial infrastructure design
- Designing our network
- Designing our network security
- Creating the modernization project
- Implementing the network
- Implementing the VMs
- Importing the data
- Summary
- Chapter 10: Addressing Scalability and Availability
- Technical Requirements
- Designing for scalability and availability
- Using instance templates
- Using managed instance groups
- Using an HTTP(S) load balancer
- Summary
- Chapter 11: Re-Platforming the Data Layer
- Designing for scalability and availability
- Using Cloud Memorystore
- Provisioning a Cloud Memorystore instance
- Updating the Regional Managed Instance Group
- Using Cloud SQL
- Using Cloud SQL Proxy
- Using Cloud Spanner
- Provisioning Cloud Spanner
- Updating the build
- Updating the application settings
- Importing data into Cloud SQL
- Exporting data from our MySQL virtual machine
- Importing to Cloud SQL
- Cloud SQL versus Cloud Spanner
- Summary
- Chapter 12: Designing the Interim Architecture
- The infrastructure architecture
- Google Identity Platform
- Cloud Pub/Sub
- The software architecture
- Refactoring the frontend and exposing REST services
- Adding Google Identity Platform for identity and authentication
- Publishing events
- Consuming events
- Refactoring to microservices
- Microservice boundaries
- Summary
- The infrastructure architecture
- Chapter 13: Refactoring to Microservices
- Technical requirements
- Analyzing the structure of the application backend
- Refactoring into microservices
- Refactoring the database
- The web frontend
- The Strangler Pattern revisited
- Google HTTP(S) Load Balancer Routing
- Google App Engine Dispatcher
- Apigee API Manager
- Containerizing the deployment units with Docker
- Summary
- Section 4: Refactoring the Application on Cloud-Native/PaaS and Serverless in Google Cloud
- Chapter 14: Refactoring the Frontend and Exposing REST Services
- Technical requirements
- Creating REST controllers
- Creating an AngularJS web frontend
- Modules
- Components
- Routing
- Services
- Authenticating in the web frontend
- Setting up Firebase and Google Identity Platform
- Initializing Firebase Authentication
- Router updates
- The authentication cycle
- The signout controller
- Validating the authentication token in the REST controllers
- The authentication filter
- Summary
- Chapter 15: Handling Eventual Consistency with the Compensation Pattern
- Technical requirements
- The distributed transaction problem
- The compensation pattern
- Creating topics and subscriptions with Google Cloud Pub/Sub
- Implementing eventual consistency and the compensation pattern
- Deploying and testing the application
- Summary
- Chapter 16: Orchestrating Your Application with Google Kubernetes Engine
- Technical requirements
- Introducing GKE
- Modes of operation
- Creating a GKE cluster
- Configuring the environment
- Kubernetes ConfigMaps and Secrets
- Deploying and configuring the microservices
- Kubernetes Pods
- Kubernetes ReplicaSets
- Kubernetes Deployments
- Kubernetes Horizontal Pod Autoscalers
- Kubernetes Services
- Automating the deployment of our components
- Configuring public access to the application
- Kubernetes-managed certificates
- Kubernetes Ingress
- When to use GKE
- Summary
- Chapter 17: Going Serverless with Google App Engine
- Technical requirements
- Introducing Google App Engine
- Google App Engine standard environment
- Google App Engine flexible environment
- Components of App Engine and the hierarchy of an application deployed on App Engine
- Deploying containers to the App Engine flexible environment
- Application configuration updates
- Deployment configuration
- Automating deployment
- When to use Google App Engine
- Summary
- Chapter 18: Future Proofing Your App with Google Cloud Run
- Technical requirements
- Cloud Run
- The Knative stack
- Cloud Run environments
- Deploying containers to Google Cloud Run
- Frontend configuration
- Service manifest
- Google Cloud Build
- Domain name mapping
- When to use Cloud Run
- Summary
- Appendix A: Choosing the Right Migration Strategy
- Step 1 assess
- Cataloging existing applications
- Educating teams
- Choosing what to migrate first
- Capable and innovative teams
- The effort required for migration
- License restrictions and compliance
- Can afford downtime
- Step 2 plan
- Migration paths versus migration strategies
- Choosing the right migration path
- Step 3 migrate
- Transferring your data
- Deploying workloads
- Setting up automated and containerized deployments
- Step 4 optimize
- Letting internal teams takeover
- Setting up monitoring
- Leveraging managed services and automation
- Cost and performance
- Step 1 assess
- Appendix B: Application Modernization Solutions
- Modernizing Java apps
- What is Google Anthos?
- Preparing to modernize Java apps
- Phase 1 containerizing Java applications
- Phase 2 Refactoring and re-platforming
- Modernization strategies (the 6 Rs of modernization)
- Retire, retain, and re-architect
- Why subscribe?
- Modernizing Java apps
- Other Books You May Enjoy
- Packt is searching for authors like you
- Share Your Thoughts
- Tytuły: The Definitive Guide to Modernizing Applications on Google Cloud
- Autor: Steve (Satish) Sangapu, Dheeraj Panyam, Jason Marston
- Tytuł oryginału: The Definitive Guide to Modernizing Applications on Google Cloud
- ISBN Ebooka: 9781800209022, 9781800209022
- Data wydania: 2022-01-06
- Identyfikator pozycji: e_2t3l
- Kategorie:
- Wydawca: Packt Publishing