Intrigued by the art of cloud architecture? Discover how to design, develop, and manage robust, secure, scalable, and dynamic solutions on Google Cloud as you prepare for the Professional Cloud Architect exam!
Architectural Decoupling means building a system where its parts can work and change independently. This is a key goal of a cloud-first design. Using managed services helps achieve this by letting architects focus on their application logic instead of managing servers. When services are loosely coupled, a failure in one part doesn't bring down the whole system, and teams can update a single service without redeploying everything.
A common way to build loosely coupled systems is with asynchronous messaging. Services communicate by sending events or messages, like using Pub/Sub, instead of waiting for an immediate direct reply. This allows the sending service to keep working without being blocked. This pattern enables independent service evolution, where different teams can develop and scale their services at their own pace, and it provides system-wide fault tolerance because the failure of one service doesn't stop messages from flowing to others.
To achieve global scalability, applications can be built as distributed services running in multiple regions. Techniques like cloud bursting let the system temporarily use resources from another cloud or region to handle sudden spikes in traffic. For disaster recovery, architects plan different models: a hot standby keeps a full copy running for instant failover, while a cold standby is cheaper but takes longer to start. Traffic management tools, like a Cloud Service Mesh, use algorithms to control the flow of requests, automatically routing users to healthy services and away from failed ones.
A cloud-first approach means preferring managed services and serverless computing over managing your own infrastructure. The main trade-off is between control and operational effort. Managing your own Virtual Machines (VMs) gives you full control but requires you to handle updates, security, backups, and scaling manually. In contrast, a managed service like Cloud SQL or Spanner handles these tasks automatically, reducing long-term technical debt and freeing your team to focus on building features.
Serverless services, such as Cloud Run and Cloud Functions, are designed for event-driven workloads. They provide automated scaling, meaning they instantly add or remove resources to match demand, and can even scale down to zero when not in use to save costs. This eliminates the need to plan for server capacity and minimizes infrastructure management. Choosing serverless options is a key way to offload operational tasks to Google Cloud.
Managed services are also built for high reliability. They often include built-in redundancy across multiple zones or regions. For example, Regional Managed Instance Groups (MIGs) and GKE regional clusters automatically distribute your application across zones to protect against outages. Using these services is essential for meeting strict Service Level Agreements (SLAs) for mission-critical applications. To manage all this infrastructure efficiently, tools like Terraform let you define your setup as infrastructure as code (IaC), which makes deployments repeatable and reduces human error.
Refactoring is the process of updating an older, monolithic application to use modern, cloud-native patterns. This improves deployment speed and makes better use of resources. The first step often involves performance tuning, such as adding caching to reduce database load or optimizing the database queries themselves. This prepares the application to run more efficiently in the cloud.
A major goal of refactoring is to adopt serverless architectures for parts of the application. Services like Cloud Run (for containers) and Cloud Functions allow code to run in an inherently elastic environment that scales automatically with traffic. This shift to serverless is a core part of envisioning future solution improvements, as it increases agility and optimizes costs by only paying for resources when they are actually used.
For applications that need container orchestration, Google Kubernetes Engine (GKE) in Autopilot mode provides a managed Kubernetes service. Autopilot handles the underlying node infrastructure, ensuring the application remains resilient and scalable without requiring deep operational expertise from your team. To handle users around the world, global Load Balancing can route traffic to the nearest healthy instance, often using serverless network endpoint groups (NEGs) to connect to backend services. Advanced features like predictive autoscaling analyze trends to provision resources ahead of anticipated demand spikes.
Prepare and test your skills
Prepare and test your skills
Managed services like Cloud SQL or Spanner automatically handle updates, security, backups, and scaling, reducing long-term technical debt and freeing your team to focus on building features, whereas managing your own VMs gives you full control but requires manual handling of these tasks.
Asynchronous messaging with Pub/Sub allows services to communicate by sending events or messages without waiting for an immediate direct reply, so the sending service can keep working without being blocked, enabling independent service evolution and system-wide fault tolerance.
Serverless services like Cloud Run and Cloud Functions provide automated scaling, instantly adding or removing resources to match demand, and can scale down to zero when not in use to save costs, eliminating the need to plan for server capacity and minimizing infrastructure management.
Refactoring updates an older monolithic application to use modern cloud-native patterns, improving deployment speed and making better use of resources by adopting serverless architectures and services like Cloud Run and Cloud Functions that scale automatically with traffic.
Rehost the monolithic virtual machine instances directly onto Google Compute Engine managed instance groups (MIGs) using custom images and instance templates.
Containerize the entire monolithic application stack into a single large container image and run it on a Compute Engine VM with attached Persistent Disks.
Rewrite all frontend and backend application logic into event-triggered Cloud Run functions, maintaining local in-memory session caching across invocation cycles.
Deconstruct the monolithic frontend into stateless containerized microservices running on Cloud Run, and refactor the stateful inventory backend into containerized services running on Google Kubernetes Engine (GKE) backed by managed storage.
An enterprise operates an on-premises monolithic application running on virtual machines. The application consists of a public HTTP web frontend with unpredictable traffic spikes, along with a stateful inventory backend that requires specialized operational controls and custom storage configurations. Deployments currently suffer from long lead times, and resource utilization is inefficient because compute capacity must remain over-provisioned to handle peak traffic.
You are tasked with architecting a cloud-first modernization strategy on Google Cloud that refactors the architecture into cloud-native patterns to enhance agility, enable fine-grained autoscaling, and optimize compute resources.
Which refactoring strategy should you recommend?