AWS · Azure · Google Cloud

The same idea, three different shapes.

Most cross-cloud comparisons tell you what a service is called somewhere else. This one tells you what breaks when you assume it works the same way, and it says so on every row.

38 graded mappings, 16 colliding terms and 21 exams. Free and open source, with primary sources and explicit caveats.

Cloud Foundations

AWS, Microsoft Azure and Google Cloud provide computing services that you configure and use through consoles, APIs and automation. This guide compares architectural behavior. It does not assume a certification or prior experience.

Start With One Application

Imagine a photo-sharing application. A person uploads a photo, adds a caption, and later views it. The architecture has six decisions:

DecisionWhat the application needs
ComputeRun the code that checks an upload and responds to requests
StorageKeep the photo as an object; query captions and ownership as database records
NetworkingDecide which endpoints are public and how services reach each other
IdentityAuthenticate people and give the application narrowly scoped permissions
AvailabilityDecide what should keep working after a machine, zone or region fails
CostEstimate usage, storage, requests, replicas and data transfer; set budgets and alerts

These are requirements, not a claim that every application needs the same products. The architecture atlas draws a logical request flow and three provider-specific implementations. They are alternatives, not a requirement to deploy to all three clouds.

What You Still Manage

A managed service reduces some operational work; it does not remove responsibility for data, access or configuration. In SaaS, customers still control user access, data handling and available application settings. IaaS generally also leaves the guest operating system and application stack to the customer. The exact division depends on the service. AWS shared responsibility, Azure shared responsibility, Google shared responsibility.

Managed service does not mean unmanaged responsibilityCustomer duties remain across IaaS, PaaS and SaaS: protect data, manage access and configure available controls. Guest OS management is normally customer responsibility in IaaS and provider responsibility in managed PaaS and SaaS. Service-specific shared duties remain.Managed service does not mean unmanaged responsibilityCloud Rosetta | Conceptual architecture | Sources and assumptions in the chapterLegend: dashed box = labelled scope; solid arrow = named relationship;dashed arrow = control or recovery action. Colors identify providers, not security.IaaSCustomer duties remainData protection, identities,access and available settingsService-dependent dutiesOperate guest OS andapplicationsPaaSCustomer duties remainData protection, identities,access and available settingsService-dependent dutiesConfigure application andplatform controlsSaaSCustomer duties remainData protection, identities,access and available settingsService-dependent dutiesConfigure service settings andaccess
Customer duties remain across IaaS, PaaS and SaaS: protect data, manage access and configure available controls. Guest OS management is normally customer responsibility in IaaS and provider responsibility in managed PaaS and SaaS. Service-specific shared duties remain. Open full-size SVG

Vocabulary for the Next Chapter

TermMeaning
RegionA geographic service location. Availability, supported features and prices depend on the region
ZoneA failure domain within a region. Resilience requires distribution and recovery, not just selecting a zone
EgressOutbound data transfer. Charges depend on source, destination, service and allowances
Managed serviceA service whose provider operates some infrastructure or software layers for you
ElasticityAdjusting capacity to demand, within configured and available limits
AvailabilityWhether a service can successfully serve requests when needed
DurabilityWhether stored data remains intact; different from immediate accessibility
RTO / RPORecovery time objective and recovery point objective: target recovery time and tolerable data-loss window

Treat pricing, quotas and service availability as design inputs to check, not constants to memorize. A cheaper storage rate may be outweighed by retrieval or transfer costs. A replicated database can still replicate an accidental deletion.

Learn the Provider Boundaries

An AWS account, an Azure subscription and a Google project are useful starting points for resource administration, but they are not interchangeable billing and identity systems. Resource models explain those differences before the service catalogue.

Choose a Reading Route

Market-share estimates and adoption surveys are not architecture requirements. Earlier research notes retain their historical context; they are not evidence that a provider is the best choice for this application.

Resource Ownership, Identity and Geography

Three questions need three answers: who administers a resource, where it runs, and which identity can access it. Billing is a related fourth question. Drawing all four as one nested hierarchy teaches the wrong model.

Administrative Ownership

Administrative ownership is not geographyAdministrative parentage only. Optional OUs, management groups and folders group workload boundaries. Regions and zones are not children in this tree.Administrative ownership is not geographyCloud Rosetta | Conceptual architecture | Sources and assumptions in the chapterLegend: dashed box = labelled scope; solid arrow = named relationship;dashed arrow = control or recovery action. Colors identify providers, not security.AWSOrganization rootOU (optional)parent ofAccountparent ofWorkload resourcesparent ofAzureRoot management groupManagement group (optional)parent ofSubscriptionparent ofResource groupparent ofResources at this scopeparent ofGoogle CloudOrganizationFolder (optional)parent ofProjectparent ofWorkload resourcesparent of
Administrative parentage only. Optional OUs, management groups and folders group workload boundaries. Regions and zones are not children in this tree. Open full-size SVG

The arrows in this drawing mean administrative parentage. They are not network connections. Optional intermediate groups are labelled. Regions and zones do not belong in this tree.

ProviderWorkload administrationRelated systems
AWSAn account contains resources and IAM configuration; Organizations groups accountsOrganizations supports consolidated billing. Workforce access can come from Identity Center or another identity provider
AzureManagement groups organize subscriptions; resource groups contain resources deployed at resource-group scopeA subscription trusts an Entra tenant. Billing accounts and agreements form a separate billing hierarchy
Google CloudAn organization can contain folders and projects; projects contain workload resourcesProjects link to billing accounts. Directory administration and resource IAM are separate responsibilities

Sources: AWS Organizations, AWS billing, Azure resource scopes, Google hierarchy.

Network Membership and Location

Network membership and location are separateEach subnet belongs to its virtual network. AWS subnets occupy one zone; Azure and Google subnets are regional. A network does not own geographic zones.Network membership and location are separateCloud Rosetta | Conceptual architecture | Sources and assumptions in the chapterLegend: dashed box = labelled scope; solid arrow = named relationship;dashed arrow = control or recovery action. Colors identify providers, not security.AWSVPCLocation: Regionalcontains subnetSubnetLocation: One AvailabilityZoneAzureVirtual networkLocation: Regionalcontains subnetSubnetLocation: Regional; notzone-boundGoogle CloudVPC networkLocation: Globalcontains subnetSubnetLocation: One region
Each subnet belongs to its virtual network. AWS subnets occupy one zone; Azure and Google subnets are regional. A network does not own geographic zones. Open full-size SVG

An AWS VPC is regional and its subnets each occupy one Availability Zone. An Azure VNet and its subnets are regional. A Google VPC is global and its subnets are regional. A Google project owns network resources; it does not own geographic regions. A VPC does not own a zone. AWS subnets, Azure VNets, Google VPCs.

A global network can connect regional resources; it does not make those resources global or resilient to regional failure. Routing, firewall rules and authorization still apply.

Grouping and Deletion

ObjectWhat deletion means
AWS Resource GroupRemoves the group, not its member resources
AWS organizational unitAccounts and child OUs must first be removed or moved
Azure resource groupRequests deletion of members; locks, dependencies and service behavior can prevent completion
Google folderMust be empty before deletion; it does not recursively delete projects
Google projectStarts shutdown and a recovery period; some resources may not be recoverable. Project IDs cannot be reused

Sources: AWS resource groups, AWS OUs, Azure deletion, Google folders, Google projects.

Failure Domains Are Not Guarantees

An Azure availability set separates fault and update domains within a datacenter; it is not a multi-zone design. To tolerate a zone outage, place enough capacity in other zones and ensure clients, data and dependencies can fail over. A single VM in a zone remains a single VM. Azure availability sets.

AWS AZ names can map differently across accounts. Use AZ IDs to align physical locations when sharing resources. Do not replace “can differ” with “always differ.” AWS AZ IDs.

Quotas and Names

Nesting depth, project-creation quotas and resource-name rules are service-specific. Check current limits when designing an organization. S3 general-purpose bucket names, for example, are unique within an AWS partition; not every S3 bucket type has identical naming rules. AWS Organizations quotas, Azure management groups, S3 naming.

Identity and Access

Goal: explain who can act, what they can do, and where the permission applies. Start with cloud foundations if these terms are new.

An identity represents a person or a workload. Authentication establishes that identity; authorization decides whether its request is permitted. A principal is the identity making a request. A scope is the resource or collection to which a grant applies.

Same Word, Different Object

Identity, credentials and permissionsAWS STS issues temporary 02-identity-role-session credentials after successful role assumption. Azure RBAC and Google IAM assign a permission set to a principal at a scope; conditions and denies still apply.Identity, credentials and permissionsCloud Rosetta | Conceptual architecture | Sources and assumptions in the chapterLegend: dashed box = labelled scope; solid arrow = named relationship;dashed arrow = control or recovery action. Colors identify providers, not security.AWS | role assumption and an authorized requestPrincipalUser, workload orfederationRole sessionTemporary STS credentialsTarget resourceChecks applicable policiesassume roleAPI requestTrust policy controls who may assume the role; an assumption request must be authorized.Azure / Google | a grant relates a principal, a permission set and a scopePrincipalPerson or workloadRole assignment / bindingRole is a permission setScopeGrant can inherit tochildrenreceives grantapplies at
AWS STS issues temporary role-session credentials after successful role assumption. Azure RBAC and Google IAM assign a permission set to a principal at a scope; conditions and denies still apply. Open full-size SVG

The nearest translation runs the other way from the name: an Azure or Google role is closest to an AWS managed policy, and an AWS role is closest to a service principal or service account. The categories match; the trust and credential mechanisms do not. AWS · Azure · Google

Directory Administration Is Not Workload Access

ProviderDirectory or workforce administrationAccess to cloud resources
AWSIAM Identity Center administrationPermission sets grant access through roles in target accounts
AzureMicrosoft Entra directory rolesAzure role-based access control (RBAC) assignments
Google CloudWorkspace or Cloud Identity super administratorOrganization and resource IAM roles

For Azure, Global Administrator does not itself grant access to virtual machines. An elevated administrator receives User Access Administrator at root scope and can assign the needed resource roles. For Google, Organization Administrator manages organization IAM; it is not unrestricted access to all workloads. Keep recovery administration separate from routine work. AWS workforce access, Azure elevation, Google separation of duties.

How to Evaluate an AWS Request

First identify the principal, resource, account relationship, action, and applicable policies. Identity and resource policies can grant access; boundaries and organization policies constrain it. An applicable explicit deny overrides an allow. The interaction depends on context, so a single six-step “every layer must allow” rule is misleading. AWS evaluation logic.

Worked decision: an identity grant constrained by a boundary

Assume an IAM user requests s3:PutObject. Its identity policy allows that action, but its permissions boundary allows only s3:GetObject. There is no resource-policy grant and no other policy grants or restrictions in this example. Denied: the identity grant is limited by the boundary. Adding another identity allow does not expand the boundary.

Worked decision: a same-account resource grant

Assume an S3 bucket policy grants s3:GetObject directly to an IAM user's ARN in the same account. The user's identity policy and boundary omit that action, but neither explicitly denies it. No other applicable control restricts the request. Allowed: this kind of direct resource grant is not limited by those implicit denies. Naming a role ARN instead changes the analysis. AWS boundary and principal rules.

These are deliberately bounded examples, not advice to use IAM users for application credentials. For real requests also consider cross-account access, session policies, organization controls, resource-specific settings, conditions, and explicit denies.

Two bounded AWS permission decisionsExample A: identity allows PutObject but boundary allows only GetObject, so deny. Example B: same-account bucket policy directly grants an IAM user GetObject, so omission from identity policy and boundary alone does not block it. No other restrictions are assumed.Two bounded AWS permission decisionsCloud Rosetta | Conceptual architecture | Sources and assumptions in the chapterLegend: dashed box = labelled scope; solid arrow = named relationship;dashed arrow = control or recovery action. Colors identify providers, not security.A | Identity-based grantUser policy allows PutObjectBoundary permits only GetObjectDENIEDNo applicable explicit deny or other restrictingcontrol.B | Direct resource grantBucket grants user ARN GetObjectIdentity and boundary omit itALLOWED under stated assumptionsNo applicable explicit deny or other restrictingcontrol.
Example A: identity allows PutObject but boundary allows only GetObject, so deny. Example B: same-account bucket policy directly grants an IAM user GetObject, so omission from identity policy and boundary alone does not block it. No other restrictions are assumed. Open full-size SVG

Inherited Grants in Azure and Google Cloud

Assigning a smaller role at a child resource does not subtract a grant inherited from its parent. An Azure Reader assignment on a resource group does not reduce a subscription-level Contributor grant. In Google Cloud, a project-level Viewer grant does not reduce inherited Editor access. Deny controls and conditions can restrict effective access; changing an allow grant alone is not the same operation. Configuration governance (Azure Policy or Google Organization Policy) answers a separate question from who may perform an operation. Azure access model, Google resource hierarchy, Google deny policies.

Give the Application an Identity

WorkloadAWSAzureGoogle Cloud
Virtual machineIAM role through an instance profileManaged identityAttached service account
Container applicationECS task roleManaged identityService identity on Cloud Run
Kubernetes workloadEKS Pod Identity or workload federationMicrosoft Entra Workload IDWorkload Identity Federation for GKE

An Azure system-assigned managed identity follows the resource lifecycle; a user-assigned identity is independent and can be shared. A Google service account is both an identity and a resource: permission to attach or impersonate it differs from the permissions it exercises. Prefer attached identities or federation to distributing long-lived keys, where the workload supports them. AWS instance profiles, Azure managed identities, Google service accounts.

Check Your Understanding

A photo service needs to create objects in one bucket. Does giving it an organization-wide administrator role solve the problem well?

Answer and reasoning:

It may grant sufficient access, but it grants far more than the task needs. Give the workload an identity and an object-creation permission at the appropriate resource scope. Check whether it also needs to read, overwrite, or delete objects before adding those permissions. A role's name is not evidence that its permissions fit the task.

Networking: Reachability Is Not Authorization

A successful request needs name resolution, a route, permitted traffic, a listening service and application authorization. A private address alone establishes none of the other four.

Network and Subnet Scope

AWS VPCs and Azure VNets are regional. Google VPC networks are global. AWS subnets are zonal; Azure and Google subnets are regional. Defaults depend on account or project creation and organization policies, so inspect the actual network instead of assuming a default exists. Network and location drawing.

Traffic Filtering

Native network filtering: specify the controlAWS security groups are stateful allow-only while network ACLs are stateless allow/deny. Azure NSGs are stateful at subnet or NIC. Google VPC firewall rules belong to a network and target VM interfaces.Native network filtering: specify the controlCloud Rosetta | Conceptual architecture | Sources and assumptions in the chapterLegend: dashed box = labelled scope; solid arrow = named relationship;dashed arrow = control or recovery action. Colors identify providers, not security.AWSNetwork ACL | subnetStateless; allow and denySecurity group | interfaceStateful; allow onlySee chapter for defaults andpriority.AzureNSG | subnetStateful; allow and denyNSG | network interfaceIf both are assigned, bothapplySee chapter for defaults andpriority.Google CloudVPC firewall ruleDefined on the VPC networkVM interface targetsAll instances, tags or serviceaccountsSee chapter for defaults andpriority.
AWS security groups are stateful allow-only while network ACLs are stateless allow/deny. Azure NSGs are stateful at subnet or NIC. Google VPC firewall rules belong to a network and target VM interfaces. Open full-size SVG
ControlAssociation or targetState and rule behavior
AWS security groupNetwork interfaces of supported resourcesStateful allow rules; no explicit deny
AWS network ACLSubnetStateless, numbered allow/deny rules; first match wins
Azure NSGSubnet, interface, or bothStateful allow/deny rules; lower priority number evaluated first
Google VPC firewall ruleDefined on a network, applying to selected VM interfacesStateful allow/deny; priority and rule interactions matter

A new AWS security group has no inbound rules, while a default security group allows inbound traffic from members of that group. Default and custom network ACLs also have different initial rules. In Azure, custom NSG rules have higher precedence than built-in defaults. In Google, a deny takes precedence over an allow at the same priority; omitted targets mean all instances in the network, while supported selectors include network tags and service accounts. AWS security groups, AWS ACLs, Azure NSGs, Google firewall rules.

To block an address while broad AWS security-group allows remain, select a suitable deny-capable control. An ACL is one option; a network firewall or application-layer rule may better match the traffic and inspection requirement. A stateless ACL needs explicit return-path rules.

Outbound Access

For IPv4 internet access, choose an explicit egress path and inspect routes and firewall rules. AWS has both zonal and regional NAT gateways. Regional automatic mode can expand across workload zones, but expansion is not instantaneous and regional NAT does not support private NAT. Azure NAT Gateway behavior depends on SKU and configuration. Google Cloud NAT provides translation through distributed networking rather than a NAT VM in the packet path. AWS regional NAT, Azure NAT, Google Cloud NAT.

A NAT gateway is not a way to accept unsolicited inbound requests. Public IPs, proxies and load balancers have separate purposes. IPv6 egress has different design options.

Connecting Networks

Ordinary VPC/VNet peerings are not transit routers. A-to-B and B-to-C peering alone does not create A-to-C reachability. Address overlap and route exchange restrictions vary by provider and address type. Use a supported transit design for a hub network. AWS peering, Azure peering, Google peering.

Direct Connect, ExpressRoute and Cloud Interconnect provide private connectivity options; private connectivity is not a universal promise of encryption. Verify encryption, routing, redundancy and failure behavior for the selected connection.

Accessing Managed Services Privately

Private endpoints: the service stays outside your subnetConsumer clients connect to a private endpoint in their network, which connects to a supported provider service outside that consumer network. AWS interface endpoints, Azure private endpoints and Google PSC endpoints need correct DNS, routes and permissions.Private endpoints: the service stays outside your subnetCloud Rosetta | Conceptual architecture | Sources and assumptions in the chapterLegend: dashed box = labelled scope; solid arrow = named relationship;dashed arrow = control or recovery action. Colors identify providers, not security.AWS | consumer networkClient workloadResolve service nameprivate destinationInterface endpointPrivate IP / endpointinterfaceservice connectionSupported serviceProvider-managed boundaryAzure | consumer networkClient workloadResolve service nameprivate destinationPrivate endpointPrivate IP / endpointinterfaceservice connectionSupported serviceProvider-managed boundaryGoogle Cloud | consumer networkClient workloadResolve service nameprivate destinationPSC endpointPrivate IP / endpointinterfaceservice connectionSupported serviceProvider-managed boundary
Consumer clients connect to a private endpoint in their network, which connects to a supported provider service outside that consumer network. AWS interface endpoints, Azure private endpoints and Google PSC endpoints need correct DNS, routes and permissions. Open full-size SVG
MechanismImportant distinction
AWS gateway endpointRoute-based S3 or DynamoDB access; no endpoint fee; not accessible through VPN, Direct Connect or peering
AWS interface endpointEndpoint interfaces for supported PrivateLink services; service support, DNS and costs vary
Azure service endpointService retains its public address; not an on-premises private endpoint
Azure private endpointPrivate IP in the consumer VNet; hybrid clients need routing and DNS
Google Private Google AccessAccess mechanism for supported Google APIs; distinct from a PSC private endpoint
Google Private Service ConnectConsumer endpoint/backend and producer-service patterns; connectivity varies by configuration

Sources: AWS gateway endpoints, AWS PrivateLink, Azure service endpoints, Azure private endpoints, Google private access, Google PSC.

Creating a private endpoint does not universally disable the service's public endpoint, grant data access, or solve DNS. The managed service remains outside the consumer subnet; the endpoint is the network entry point, not the service itself.

Load Balancing and DNS

RequirementAWSAzureGoogle Cloud
Regional HTTP proxyApplication Load BalancerApplication GatewayRegional Application Load Balancer
Global HTTP entry pointCloudFrontFront DoorGlobal external Application Load Balancer
DNS traffic steeringRoute 53 routing policiesTraffic ManagerCloud DNS routing policies
Appliance insertionGateway Load BalancerGateway Load BalancerUse a supported appliance/routing architecture

These are functional comparisons, not identical implementations. CloudFront is also a CDN; Global Accelerator is a TCP/UDP service, not a layer-7 header-routing engine. DNS steering does not proxy the connection or migrate established sessions. Proxy failover also does not promise that an existing connection survives an origin failure. AWS global acceleration, Azure Traffic Manager, Azure Gateway Load Balancer, Google DNS routing, Google load balancing.

Cloud Architecture Atlas

These are conceptual and logical architecture drawings for learning. They are not deployment plans, a security certification, or a claim that a provider guarantees an application's recovery time. Each view answers one question; read its assumptions before adapting it.

For network placement and recovery decisions, continue to the three deployment reference architectures. They connect ingress, private application access, database availability and operational responsibilities.

How to Read These Architectures

Follow the labelled arrows, then check which network and failure boundaries they cross.

Visual elementMeaning
Labelled dashed boundaryThe named administrative, network or failure scope; the label states which
Service boxA named component or resource; its detail describes responsibility
Solid arrowThe relationship written on the arrow: parentage, data flow or replication
Dashed arrowControl, assignment or recovery action, explicitly labelled
AWS / Azure / Google colorsProvider identity only; no implicit security or availability meaning

Ownership views omit geographic containment. Network views keep managed services outside the consumer subnet. Application views show logical service relationships, not hidden provider infrastructure. Full-size SVGs remain readable when opened separately; the web guide also allows horizontal scrolling without shrinking labels on a phone. Text descriptions accompany each view.

One Application, Three Implementations

A user uploads a photo through an authenticated HTTPS endpoint. Application code checks ownership and content, stores photo bytes in object storage, then stores an object key and caption in a database. The workload uses its own identity for data operations; the user's identity is a separate authorization concern.

These examples intentionally omit CDN delivery, upload acceleration, private networking and multi-region recovery. The database and object writes are not one transaction: use idempotent requests and a recovery/cleanup strategy for partial failures. For large files, consider a short-lived signed upload URL rather than sending the whole file through application code.

AWS

AWS · Authorize the user, then write two kinds of dataAn authenticated user calls application code. Code authorizes access, writes object bytes and then metadata using its workload identity. The writes are separate operations and need idempotency and partial-failure recovery.AWS · Authorize the user, then write two kinds of dataLOGICAL VIEW / private data access does not mean a private application endpointAWS workload ownership · logical services, not VPC placementApplication userSigned-in client;HTTPS requestAmazon APIGatewayConfigured APIauthorizationAWS LambdaValidate input; enforceobject ownershipAmazon S3Photo bytes; workload datapermissionsAmazon DynamoDBOwner, caption and object keyTwo separate authorization decisionsThe application checks the end user. Lambda execution role grants the code onlythe object and database operations it needs. A successful login is not a grantto every object.Design for a partial writeIf the object write succeeds but metadata fails, retry idempotently orreconcile the orphan. For large files, issue a short-lived signed upload URLafter authorization; that alternate path is not drawn.HTTPSInvoke2 write bytes3 write metadataSolid arrows: labelled traffic or replication. Dashed arrows: policy/control. Conceptual design; assumptions and sources in the chapter.
An authenticated user calls application code. Code authorizes access, writes object bytes and then metadata using its workload identity. The writes are separate operations and need idempotency and partial-failure recovery. Open full-size SVG

API Gateway invokes Lambda; the Lambda execution role grants the required S3 and DynamoDB operations. Configure the API's authentication/authorization and object-access controls. Do not place these regional managed service boxes inside a VPC unless a selected integration actually requires it. API Gateway integration, Lambda execution role, S3, DynamoDB.

Azure

Azure · Authorize the user, then write two kinds of dataAn authenticated user calls application code. Code authorizes access, writes object bytes and then metadata using its workload identity. The writes are separate operations and need idempotency and partial-failure recovery.Azure · Authorize the user, then write two kinds of dataLOGICAL VIEW / private data access does not mean a private application endpointAzure workload ownership · logical services, not subnet placementApplication userSigned-in client;HTTPS requestAzure FunctionsValidate input; enforceobject ownershipAzure Blob StoragePhoto bytes; workload datapermissionsAzure Cosmos DBOwner, caption and object keyTwo separate authorization decisionsThe application checks the end user. Managed identity grants the code only theobject and database operations it needs. A successful login is not a grant toevery object.Design for a partial writeIf the object write succeeds but metadata fails, retry idempotently orreconcile the orphan. For large files, issue a short-lived signed upload URLafter authorization; that alternate path is not drawn.1 HTTPS · authenticate user2 write bytes3 write metadataSolid arrows: labelled traffic or replication. Dashed arrows: policy/control. Conceptual design; assumptions and sources in the chapter.
An authenticated user calls application code. Code authorizes access, writes object bytes and then metadata using its workload identity. The writes are separate operations and need idempotency and partial-failure recovery. Open full-size SVG

An HTTP-triggered Function is the application endpoint. A managed identity can access Blob Storage and a supported Cosmos DB API using appropriate data-plane roles. Choose a Functions hosting plan and configure end-user authentication; a function access key alone is not a user identity or ownership check. The logical subscription boundary is not a VNet boundary. HTTP functions, Functions identity, Blob authorization, Cosmos DB data roles.

Google Cloud

Google Cloud · Authorize the user, then write two kinds of dataAn authenticated user calls application code. Code authorizes access, writes object bytes and then metadata using its workload identity. The writes are separate operations and need idempotency and partial-failure recovery.Google Cloud · Authorize the user, then write two kinds of dataLOGICAL VIEW / private data access does not mean a private application endpointGoogle Cloud workload ownership · logical services, not VPC placementApplication userSigned-in client;HTTPS requestCloud RunValidate input; enforceobject ownershipCloud StoragePhoto bytes; workload datapermissionsFirestoreOwner, caption and object keyTwo separate authorization decisionsThe application checks the end user. Service account grants the code only theobject and database operations it needs. A successful login is not a grant toevery object.Design for a partial writeIf the object write succeeds but metadata fails, retry idempotently orreconcile the orphan. For large files, issue a short-lived signed upload URLafter authorization; that alternate path is not drawn.1 HTTPS · authenticate user2 write bytes3 write metadataSolid arrows: labelled traffic or replication. Dashed arrows: policy/control. Conceptual design; assumptions and sources in the chapter.
An authenticated user calls application code. Code authorizes access, writes object bytes and then metadata using its workload identity. The writes are separate operations and need idempotency and partial-failure recovery. Open full-size SVG

Cloud Run executes the application with a service account. Grant that account the required Cloud Storage and Firestore permissions. Define who may invoke the service and how the application identifies and authorizes its users. The drawing does not imply that the managed services live inside a consumer VPC. Cloud Run service identity, Cloud Storage access, Firestore server access.

Resource Ownership and Network Geography

Administrative ownership is not geographyAdministrative parentage only. Optional OUs, management groups and folders group workload boundaries. Regions and zones are not children in this tree.Administrative ownership is not geographyCloud Rosetta | Conceptual architecture | Sources and assumptions in the chapterLegend: dashed box = labelled scope; solid arrow = named relationship;dashed arrow = control or recovery action. Colors identify providers, not security.AWSOrganization rootOU (optional)parent ofAccountparent ofWorkload resourcesparent ofAzureRoot management groupManagement group (optional)parent ofSubscriptionparent ofResource groupparent ofResources at this scopeparent ofGoogle CloudOrganizationFolder (optional)parent ofProjectparent ofWorkload resourcesparent of
Administrative parentage only. Optional OUs, management groups and folders group workload boundaries. Regions and zones are not children in this tree. Open full-size SVG

Arrows represent administrative parentage. AWS OUs and Google folders are optional; the Azure view is within one directory and includes optional intermediate management groups. This does not draw the separate identity or billing associations. Resource groups cover resource-group scope, not every Azure resource type. Resource models and sources.

Network membership and location are separateEach subnet belongs to its virtual network. AWS subnets occupy one zone; Azure and Google subnets are regional. A network does not own geographic zones.Network membership and location are separateCloud Rosetta | Conceptual architecture | Sources and assumptions in the chapterLegend: dashed box = labelled scope; solid arrow = named relationship;dashed arrow = control or recovery action. Colors identify providers, not security.AWSVPCLocation: Regionalcontains subnetSubnetLocation: One AvailabilityZoneAzureVirtual networkLocation: Regionalcontains subnetSubnetLocation: Regional; notzone-boundGoogle CloudVPC networkLocation: Globalcontains subnetSubnetLocation: One region
Each subnet belongs to its virtual network. AWS subnets occupy one zone; Azure and Google subnets are regional. A network does not own geographic zones. Open full-size SVG

A subnet belongs to a virtual network but has its own location rule. AWS subnets are zonal; Azure and Google subnets are regional. A global Google network does not make a regional VM or database global. Scope sources.

Identity and Permission Decisions

Identity, credentials and permissionsAWS STS issues temporary architecture-role-session credentials after successful role assumption. Azure RBAC and Google IAM assign a permission set to a principal at a scope; conditions and denies still apply.Identity, credentials and permissionsCloud Rosetta | Conceptual architecture | Sources and assumptions in the chapterLegend: dashed box = labelled scope; solid arrow = named relationship;dashed arrow = control or recovery action. Colors identify providers, not security.AWS | role assumption and an authorized requestPrincipalUser, workload orfederationRole sessionTemporary STS credentialsTarget resourceChecks applicable policiesassume roleAPI requestTrust policy controls who may assume the role; an assumption request must be authorized.Azure / Google | a grant relates a principal, a permission set and a scopePrincipalPerson or workloadRole assignment / bindingRole is a permission setScopeGrant can inherit tochildrenreceives grantapplies at
AWS STS issues temporary role-session credentials after successful role assumption. Azure RBAC and Google IAM assign a permission set to a principal at a scope; conditions and denies still apply. Open full-size SVG

The first row shows successful AWS role assumption followed by a resource request. The second shows a principal receiving a role at a scope in Azure or Google. Inherited grants remain subject to applicable conditions and deny controls. Identity explanation and sources.

Two bounded AWS permission decisionsExample A: identity allows PutObject but boundary allows only GetObject, so deny. Example B: same-account bucket policy directly grants an IAM user GetObject, so omission from identity policy and boundary alone does not block it. No other restrictions are assumed.Two bounded AWS permission decisionsCloud Rosetta | Conceptual architecture | Sources and assumptions in the chapterLegend: dashed box = labelled scope; solid arrow = named relationship;dashed arrow = control or recovery action. Colors identify providers, not security.A | Identity-based grantUser policy allows PutObjectBoundary permits only GetObjectDENIEDNo applicable explicit deny or other restrictingcontrol.B | Direct resource grantBucket grants user ARN GetObjectIdentity and boundary omit itALLOWED under stated assumptionsNo applicable explicit deny or other restrictingcontrol.
Example A: identity allows PutObject but boundary allows only GetObject, so deny. Example B: same-account bucket policy directly grants an IAM user GetObject, so omission from identity policy and boundary alone does not block it. No other restrictions are assumed. Open full-size SVG

In A, an identity grant cannot exceed the permissions boundary. In B, a same-account bucket policy directly names an IAM user; identity/boundary omissions alone do not block that grant. Assume no explicit deny or other restriction. Changing the principal type or account relationship changes the evaluation. AWS boundaries.

Firewall Placement and Private Access

Native network filtering: specify the controlAWS security groups are stateful allow-only while network ACLs are stateless allow/deny. Azure NSGs are stateful at subnet or NIC. Google VPC firewall rules belong to a network and target VM interfaces.Native network filtering: specify the controlCloud Rosetta | Conceptual architecture | Sources and assumptions in the chapterLegend: dashed box = labelled scope; solid arrow = named relationship;dashed arrow = control or recovery action. Colors identify providers, not security.AWSNetwork ACL | subnetStateless; allow and denySecurity group | interfaceStateful; allow onlySee chapter for defaults andpriority.AzureNSG | subnetStateful; allow and denyNSG | network interfaceIf both are assigned, bothapplySee chapter for defaults andpriority.Google CloudVPC firewall ruleDefined on the VPC networkVM interface targetsAll instances, tags or serviceaccountsSee chapter for defaults andpriority.
AWS security groups are stateful allow-only while network ACLs are stateless allow/deny. Azure NSGs are stateful at subnet or NIC. Google VPC firewall rules belong to a network and target VM interfaces. Open full-size SVG

The view compares native controls, not all available firewall products. Azure traffic must pass both NSGs when both subnet and interface NSGs apply. Google selectors apply rules to VM interfaces. Networking details and sources.

Private endpoints: the service stays outside your subnetConsumer clients connect to a private endpoint in their network, which connects to a supported provider service outside that consumer network. AWS interface endpoints, Azure private endpoints and Google PSC endpoints need correct DNS, routes and permissions.Private endpoints: the service stays outside your subnetCloud Rosetta | Conceptual architecture | Sources and assumptions in the chapterLegend: dashed box = labelled scope; solid arrow = named relationship;dashed arrow = control or recovery action. Colors identify providers, not security.AWS | consumer networkClient workloadResolve service nameprivate destinationInterface endpointPrivate IP / endpointinterfaceservice connectionSupported serviceProvider-managed boundaryAzure | consumer networkClient workloadResolve service nameprivate destinationPrivate endpointPrivate IP / endpointinterfaceservice connectionSupported serviceProvider-managed boundaryGoogle Cloud | consumer networkClient workloadResolve service nameprivate destinationPSC endpointPrivate IP / endpointinterfaceservice connectionSupported serviceProvider-managed boundary
Consumer clients connect to a private endpoint in their network, which connects to a supported provider service outside that consumer network. AWS interface endpoints, Azure private endpoints and Google PSC endpoints need correct DNS, routes and permissions. Open full-size SVG

The endpoint is in the consumer network; the supported managed service is outside it. Hybrid access additionally requires DNS and routing. Private connectivity neither grants data permissions nor universally disables public access. Endpoint details and sources.

Database Replication and Recovery

RDS: availability and readable replicasA Multi-AZ DB instance has a synchronous unreadable standby. A Multi-AZ DB cluster has semisynchronous replication to two readable standbys in three zones. An ordinary read replica uses asynchronous replication and is not automatic failover for its source.RDS: availability and readable replicasCloud Rosetta | Conceptual architecture | Sources and assumptions in the chapterLegend: dashed box = labelled scope; solid arrow = named relationship;dashed arrow = control or recovery action. Colors identify providers, not security.DB instancePrimary | AZ ASynchronousStandby | AZ BStandby does not serve readsDB clusterWriter | AZ ASemisynchronousReader | AZ BReader | AZ CAlso reader in AZ C; bothreadableOrdinary read replicaSource databaseAsynchronousRead replicaNo automatic source failover
A Multi-AZ DB instance has a synchronous unreadable standby. A Multi-AZ DB cluster has semisynchronous replication to two readable standbys in three zones. An ordinary read replica uses asynchronous replication and is not automatic failover for its source. Open full-size SVG

The DB instance pattern has an unreadable standby. The DB cluster has two readable failover targets and semisynchronous replication; it is distinct from Aurora. An ordinary read replica is not automatic source failover. Engine, version, region and replica lag matter. RDS DB clusters, RDS DB instances, RDS replicas.

RDS DB instance: before and after a zone outageBefore failure the database endpoint directs clients to the primary in zone A, with synchronous replication to a non-readable standby in zone B. After RDS promotes the standby, clients reconnect using the endpoint; existing sessions are interrupted.RDS DB instance: before and after a zone outageCloud Rosetta | Conceptual architecture | Sources and assumptions in the chapterLegend: dashed box = labelled scope; solid arrow = named relationship;dashed arrow = control or recovery action. Colors identify providers, not security.BEFORE outageApplicationUses DB endpoint; retriessafelyAZ APrimary: reads /writesAZ BStandby: no clientreadsSQL sessionsyncAFTER failoverApplicationUses DB endpoint; retriessafelyAZ AUnavailableAZ BPromoted: reads /writesreconnect
Before failure the database endpoint directs clients to the primary in zone A, with synchronous replication to a non-readable standby in zone B. After RDS promotes the standby, clients reconnect using the endpoint; existing sessions are interrupted. Open full-size SVG

This example is specifically an RDS Multi-AZ DB instance. Promotion and DNS changes do not preserve existing database sessions; applications need reconnection and safe retry behavior. The same-region standby is not a complete response to a regional outage or accidental deletion. RDS failover.

Shared Responsibility

Managed service does not mean unmanaged responsibilityCustomer duties remain across IaaS, PaaS and SaaS: protect data, manage access and configure available controls. Guest OS management is normally customer responsibility in IaaS and provider responsibility in managed PaaS and SaaS. Service-specific shared duties remain.Managed service does not mean unmanaged responsibilityCloud Rosetta | Conceptual architecture | Sources and assumptions in the chapterLegend: dashed box = labelled scope; solid arrow = named relationship;dashed arrow = control or recovery action. Colors identify providers, not security.IaaSCustomer duties remainData protection, identities,access and available settingsService-dependent dutiesOperate guest OS andapplicationsPaaSCustomer duties remainData protection, identities,access and available settingsService-dependent dutiesConfigure application andplatform controlsSaaSCustomer duties remainData protection, identities,access and available settingsService-dependent dutiesConfigure service settings andaccess
Customer duties remain across IaaS, PaaS and SaaS: protect data, manage access and configure available controls. Guest OS management is normally customer responsibility in IaaS and provider responsibility in managed PaaS and SaaS. Service-specific shared duties remain. Open full-size SVG

Customers retain data and access responsibilities even with SaaS. This is a responsibility summary, not a network diagram or an exhaustive contract matrix. Foundations and sources.

Before Using a Drawing for a Real System

Document the selected regions, service tiers, traffic volumes, trust model, RTO/RPO, backup retention and tested failure modes. Add monitoring, deployment and rollback behavior, cost estimates and operational ownership. Validate supported integrations against current provider documentation rather than inferring them from two boxes connected by a line.

Design a Resilient Web Application

A service comparison helps you find names. An architecture explains how requests reach your application, who can access its data, and what happens when a component fails. These three reference designs serve the same requirement: an internet-facing application with private application/data access and resilience to a zone failure within one region.

Start with the simpler photo applications if you are learning cloud basics. Use these deployment views when network placement and recovery become requirements. They are illustrative designs, not tested deployments or a promise of an availability target. Groups labelled “resources in” or “VMs in” a zone identify the depicted resources that share a failure location. A VPC or subnet does not own an availability zone.

Choose the Operating Model First

RequirementDesign shownWhat your team owns
Control the operating system and application runtime on AWSEC2 Auto Scaling, ALB, RDS Multi-AZ DB instanceImages, patching, scaling policies, application and recovery testing
Deploy a supported web runtime with less server management on AzureApp Service, Application Gateway, Azure SQL DatabaseApplication, plan sizing, private integrations, database permissions and recovery
Run a VM-based application behind global HTTP ingress on Google CloudRegional managed instance group, global Application Load Balancer, Cloud SQL HAImages, patching, group policies, firewall rules and recovery testing

These are design choices, not claims that a cloud only supports that operating model. AWS and Google also offer managed application runtimes; Azure also offers VM scale sets. Start with the simplest service that meets the workload's constraints, then add infrastructure for a specific requirement. Compare managed and self-managed responsibilities.

AWS: Private Compute Across Two Zones

AWS · Keep the application private; recover within a regionTwo zones contain private application and database subnets. A regional ALB reaches either app pool. Both pools use the RDS writer endpoint. The synchronous standby can be promoted but cannot serve application reads.AWS · Keep the application private; recover within a regionDEPLOYMENT VIEW / HTTPS → application pool → one database writerAWS account · selected regionVPC · public ingress and private application/data subnetsAZ A · VPC resources shownAZ B · VPC resources shownApplicationuserAuthenticated HTTPSclientApplication LoadBalancerHTTPS listener; AWSWAF policyAmazon EC2Private app subnet A; AutoScaling poolAmazon EC2Private app subnet B; sameAuto Scaling groupAmazon RDS · writerPrivate DB subnet A;Multi-AZ DB instanceAmazon RDS · standbyPrivate DB subnet B; noapplication readsIngress prerequisitesALB subnets in both zones.Their internet routes use aninternet gateway. App and DBsubnets have no directinternet ingress.When AZ A failsALB health checks remove failed targets. RDS promotes the standby. Applicationsreconnect through the DB endpoint and retry safely; retain capacity in AZ B.Decision and trade-offEC2 gives runtime control, but you own images and patching. The extra zonecosts capacity. This handles a zone outage; backups and regional recoveryremain separate.1 HTTPS2 HTTPS2 HTTPS3 SQL / TLS3 same writerSynchronous replicationSolid arrows: labelled traffic or replication. Dashed arrows: policy/control. Conceptual design; assumptions and sources in the chapter.
Two zones contain private application and database subnets. A regional ALB reaches either app pool. Both pools use the RDS writer endpoint. The synchronous standby can be promoted but cannot serve application reads. Open full-size SVG
  1. DNS resolves the public ALB address; clients connect with HTTPS. Associate a WAF policy with the ALB and configure its TLS certificate. DNS is name resolution, not an inline traffic hop.
  2. The ALB forwards requests to healthy EC2 targets. Use public ALB subnets in two zones and private application subnets. One Auto Scaling group spans the zones; the diagram's boxes represent pools, not a requirement for exactly two instances.
  3. Both application pools connect to the same RDS writer endpoint using encrypted database connections. This example selects a Multi-AZ DB instance with a non-readable standby. The synchronous replication arrow is provider-managed, not application dual-writing.

Allow only the application's port from the ALB security group to the application group, and only the database port from the application group to the database group. Also permit required health checks. Use workload roles for AWS API access. Database authentication remains a separate choice; a VM's IAM role alone does not grant SQL permissions. Define outbound routes and endpoints for updates and dependencies; those paths are omitted from this request view.

Failure behavior: health checks remove unhealthy targets; the application must reconnect when RDS fails over. Keep enough capacity in the surviving zone rather than assuming new capacity appears immediately. A same-region standby does not protect against every data error or regional outage.

Sources: ALB subnet and zone requirements, load-balancer routing, RDS instance replication, RDS failover and DNS.

Azure: Two Different Private Paths

Azure · Private ingress and private egress are separate pathsApplication Gateway reaches App Service through an inbound private endpoint. App Service uses a separate delegated integration subnet to reach the SQL private endpoint. App Service and SQL remain outside the consumer VNet.Azure · Private ingress and private egress are separate pathsDEPLOYMENT VIEW / WAF → inbound endpoint → App Service → outbound integrationAzure subscription · selected regionConsumer virtual network · regionalGateway subnetApp private-endpoint subnetApp integration subnet · delegatedData private-endpoint subnetApplicationuserHTTPS to the publicgatewayApplicationGatewayWAF_v2; zoneredundantApp private endpointInbound HTTPS pathApp ServiceZone-redundant plan;public access disabledVNet integrationOutbound path; not inbound PrivateLinkSQL private endpointPrivate destination addressAzure SQL DatabaseSupported tier; zoneredundancy enabledPrivate DNS is requiredLink the app and SQL privateDNS zones to the VNet.Resolve their service namesto endpoint IPs. An endpointdoes not configure every DNSpath or grant data access.Zone resilience is a configurationEnable it in the gateway, App Service plan and SQL tier. Keep serving capacityafter a zone loss and test connection retries during database failover.Decision and trade-offApp Service reduces server operations. Private Link adds endpoint and DNSmanagement. Use managed identity with database grants; private reachabilityalone is insufficient.1 HTTPS2 HTTPS3 Private Link4 outbound route5 SQL / TLS6 Private LinkSolid arrows: labelled traffic or replication. Dashed arrows: policy/control. Conceptual design; assumptions and sources in the chapter.
Application Gateway reaches App Service through an inbound private endpoint. App Service uses a separate delegated integration subnet to reach the SQL private endpoint. App Service and SQL remain outside the consumer VNet. Open full-size SVG
  1. Clients reach the public Application Gateway over HTTPS.
  2. The zone-redundant WAF_v2 gateway evaluates traffic and uses private DNS to resolve its backend.
  3. An App Service private endpoint provides the inbound path to the web app. Disable App Service public access explicitly.
  4. App Service uses a different, delegated integration subnet for outbound connections.
  5. Private DNS resolves the SQL hostname to a SQL private endpoint.
  6. Private Link connects that endpoint to Azure SQL Database. Disable the SQL public endpoint and configure database permissions for the application's managed identity.

This drawing separates app and SQL private endpoints into two subnets for clarity and policy control. Microsoft’s baseline shares a private-endpoint subnet; splitting it is a design choice, not a Private Link requirement. The delegated integration and gateway subnets remain separate.

Choose supported App Service and SQL tiers, explicitly enable zone redundancy, and size for surviving capacity. The managed application and database are drawn outside the consumer VNet; private endpoints do not move these services into your subnet. The design omits Key Vault, logging paths and administrative access for readability; define them before implementation.

Failure behavior: zone redundancy must exist in every required tier. Application retries must tolerate interrupted database connections. The inbound private endpoint cannot replace outbound VNet integration.

Sources: Microsoft's App Service baseline and network flows, Azure SQL availability and tier support.

Google Cloud: Global Front Door, Regional Dependencies

Google Cloud · Global ingress still has regional dependenciesA global external Application Load Balancer sends traffic to a regional managed instance group. The drawing shows a regional slice of a global VPC. SQL traffic uses private services access to the Cloud SQL service network.Google Cloud · Global ingress still has regional dependenciesDEPLOYMENT VIEW / global HTTPS → regional MIG → Cloud SQL HAGoogle Cloud project · workload ownershipSelected regionGlobal VPC · regional slice shownRegional subnetCloud SQL service networkApplicationuserHTTPS to a globaladdressExternal Application LoadBalancerGlobal frontend and backend serviceCloud ArmorPolicy on the backendserviceCompute EngineVMs in zone A; nopublic IPsCompute EngineVMs in zone B; sameregional MIGCloud SQL · primaryHA configured; public IPdisabledCloud SQL · standbySecond zone; not a readtargetPrivate services accessReserved range and private connection; SQL authentication is separate.What survives a zone lossRegional MIG capacity can continue in another zone. Cloud SQL HA promotes thestandby and closes existing connections; clients reconnect. Load-balancer andautohealing checks serve different purposes.What does not survive a region lossThe global address remains, but this design has no second regional backend ordatabase recovery target. Global ingress is not a multi-region application.Plan backups and test restore separately.1 HTTPSPolicy evaluation2 HTTPS + health checks2 HTTPS + health checks3 SQL / TLS over private connectionSQL / TLSSynchronous replicationSolid arrows: labelled traffic or replication. Dashed arrows: policy/control. Conceptual design; assumptions and sources in the chapter.
A global external Application Load Balancer sends traffic to a regional managed instance group. The drawing shows a regional slice of a global VPC. SQL traffic uses private services access to the Cloud SQL service network. Open full-size SVG
  1. Clients reach the global external Application Load Balancer over HTTPS. Attach a Cloud Armor policy to the appropriate backend service.
  2. A regional managed instance group distributes application VMs across selected zones. Its subnet is regional even though the VPC network is global. Configure firewall rules for the selected load-balancer proxy and health-check sources; do not expose VM public IPs.
  3. Application VMs use the database's private address with encrypted connections and database authentication. Workload service accounts govern permitted Google API calls separately.
  4. This design chooses private services access: allocate an address range and establish the private connection used by Cloud SQL. Cloud SQL remains outside the consumer VPC. Private Service Connect is a different option and is not the path illustrated here.

Choose a Cloud SQL HA configuration in the same region, disable its public IP and configure backups and point-in-time recovery. Separate application health checks, load-balancer health checks and autohealing decisions so a slow dependency does not trigger needless replacement.

Failure behavior: reserve capacity across the selected zones and reconnect after database failover. A global load-balancer address does not make the regional VM group or Cloud SQL instance survive a regional outage. Cloud SQL's HA standby is not a read-scaling endpoint.

Sources: regional instance groups, Cloud Armor and firewall integration, global web-service ingress, Cloud SQL private IP connections, Cloud SQL HA behavior.

Turn the Drawing Into an Operational Design

The following are review questions for all three designs. The team must choose and test the answers for its workload; the boxes alone do not supply them.

ConcernDecision to recordEvidence to collect
User accessAuthentication method, tenant and object-level authorizationOne user cannot read or change another user's objects
Network accessPublic entry points, private DNS, necessary egress and admin pathsApp and database cannot be reached through unintended public paths
AvailabilityMinimum capacity after a zone failure, dependency behaviorLoad test while a zone's application capacity is unavailable
Recovery time (RTO)Maximum acceptable time to restore serviceMeasured failover and restore exercises, including DNS and reconnect time
Recovery point (RPO)Maximum acceptable amount of lost data, measured in timeRestore to a chosen point and reconcile missing or duplicate writes
Data protectionRetention, encryption, deletion protection and restore permissionsA successful isolated restore; replication alone is insufficient
OperationsService owner, latency/error/saturation alerts, runbookAn alert reaches an owner who can diagnose and recover
ChangesDeployment strategy, rollback and database compatibilityRoll back an application change without corrupting stored data
CostBaseline replicas, data transfer, logs, backups and networking chargesEstimate normal and peak demand using selected regions and tiers

For regional recovery, design a second-region data strategy, traffic switching and operational runbook explicitly. Choose the write model and acceptable replication lag before drawing a second region. More replicas alone do not solve conflicting writes or accidental deletion.

What Each Design Gives Up

An architecture that lists only what it provides is a brochure. All three vendors publish a review framework and expect a design to be defensible against it: AWS names six pillars (operational excellence, security, reliability, performance efficiency, cost optimization and sustainability), with equivalents from Azure and Google.

These three designs share a requirement, so they share their trade-offs. Each line is a deliberate choice, not an oversight.

The choiceWhat it buysWhat it costsPillars in tension
Spread compute across zonesSurviving capacity when one zone failsAWS and Google show two pools for clarity; Azure uses service-managed zone distribution. Size the surviving capacity for the actual load; a third zone does not imply a fixed cost increaseReliability against cost
Private application and data accessRestricts direct public access to the origin and databaseDNS, routing and authorization need separate configuration. Internet egress is omitted here; choose endpoints, NAT or a firewall only when dependencies require themSecurity against operational complexity
One regionAvoids cross-region write coordination and a second application footprintA regional outage still interrupts service; recovery requires an explicit second-region strategyReliability against cost and operational excellence
Zone-resilient databaseProvider-managed recovery from a supported zonal failureReplication and additional capacity cost resources; reconnect time remains. The depicted RDS DB-instance and Cloud SQL standbys do not serve reads. Azure behavior depends on the selected SQL tierReliability against performance efficiency and cost
Health-based backend routingDirects requests away from failed application instancesIn-flight requests may fail. Test all-backends-unhealthy behavior and use safe retries; health checks cannot repair bad application stateReliability against application complexity

If a requirement makes one of these unacceptable, change the design rather than the diagram. Measure the bottleneck before adding replicas or regions. A dependency, failed deployment or untested restore can dominate recovery even when compute spans several zones.

Three Things to Explain Back

  • Why does a private endpoint still need both DNS and data permissions?
  • Which dependency would stop this application if its entire region became unavailable?
  • How would you prove that a backup can meet the business's recovery-time target?

A useful answer follows the request through every dependency and names the test that would prove recovery. Continue with failure and identity practice.

Databases: Read Scaling and Surviving Failure

Goal: choose a database deployment based on what must keep working. Prerequisite: cloud foundations. A database stores structured information that the application needs to query or change, such as the owner and caption of a photo.

Three Different Questions

  • Availability: can the application recover when a machine or zone fails?
  • Read scaling: can reporting queries run somewhere other than the writer?
  • Recovery: can we restore data after a mistake, deletion, or larger outage?

A replica is a copy. That word alone tells you neither whether clients can read it nor whether it can become the writer automatically. Replication also copies many mistakes; it is not a substitute for backups and a tested restore procedure.

Read the Deployment Type

RDS: availability and readable replicasA Multi-AZ DB instance has a synchronous unreadable standby. A Multi-AZ DB cluster has semisynchronous replication to two readable standbys in three zones. An ordinary read replica uses asynchronous replication and is not automatic failover for its source.RDS: availability and readable replicasCloud Rosetta | Conceptual architecture | Sources and assumptions in the chapterLegend: dashed box = labelled scope; solid arrow = named relationship;dashed arrow = control or recovery action. Colors identify providers, not security.DB instancePrimary | AZ ASynchronousStandby | AZ BStandby does not serve readsDB clusterWriter | AZ ASemisynchronousReader | AZ BReader | AZ CAlso reader in AZ C; bothreadableOrdinary read replicaSource databaseAsynchronousRead replicaNo automatic source failover
A Multi-AZ DB instance has a synchronous unreadable standby. A Multi-AZ DB cluster has semisynchronous replication to two readable standbys in three zones. An ordinary read replica uses asynchronous replication and is not automatic failover for its source. Open full-size SVG

The other two clouds draw the same distinction with different names:

DeploymentRead from the secondary?What to check
Azure SQL DatabaseTier-dependentZone redundancy, read scale-out, and Hyperscale configuration
Azure SQL active geo-replicationYesAsynchronous copy; failover orchestration is a separate decision
Cloud SQL for MySQL regional HAHA standby is not a read endpointAutomatic failover; add read replicas separately when needed

Sources: RDS deployment types, RDS read replicas, Azure local and zone redundancy, Azure geo-replication, Cloud SQL MySQL HA.

Before and After a Zone Failure

RDS DB instance: before and after a zone outageBefore failure the database endpoint directs clients to the primary in zone A, with synchronous replication to a non-readable standby in zone B. After RDS promotes the standby, clients reconnect using the endpoint; existing sessions are interrupted.RDS DB instance: before and after a zone outageCloud Rosetta | Conceptual architecture | Sources and assumptions in the chapterLegend: dashed box = labelled scope; solid arrow = named relationship;dashed arrow = control or recovery action. Colors identify providers, not security.BEFORE outageApplicationUses DB endpoint; retriessafelyAZ APrimary: reads /writesAZ BStandby: no clientreadsSQL sessionsyncAFTER failoverApplicationUses DB endpoint; retriessafelyAZ AUnavailableAZ BPromoted: reads /writesreconnect
Before failure the database endpoint directs clients to the primary in zone A, with synchronous replication to a non-readable standby in zone B. After RDS promotes the standby, clients reconnect using the endpoint; existing sessions are interrupted. Open full-size SVG

The drawing illustrates a primary/standby pattern, not every database deployment. The application must reconnect and retry safely during failover. A region-wide outage needs a separate recovery plan. Do not label a single-region standby diagram “disaster recovery” without defining the disaster.

Work Through a Decision

Your photo application's database uses an RDS Multi-AZ DB instance. A slow reporting query must move away from the primary. Can it run on the existing standby?

Answer and reasoning:

No. That standby does not serve reads. Evaluate a read replica, a different deployment such as a supported Multi-AZ DB cluster, or a separate analytics path. Keep the availability requirement while deciding how much replication lag reporting can tolerate. “Multi-AZ is never readable” is also wrong: the DB cluster deployment has readable standbys.

Change one constraint: the database must keep writes available after a zone failure. Adding an ordinary asynchronous read replica alone is not enough to claim automatic failover. Specify how failover happens, how clients reconnect, and what data-loss window is acceptable.

The word means something else here

16 terms the three clouds use differently. 7 of them name a different kind of thing rather than the same thing behaving differently, which is why a service comparison table cannot hold them.

ASG

Different kind of thing
AWScompute

Auto Scaling group. A pool of EC2 instances that can scale together; mixed instance types and purchase options are supported.

Azurenetworking

Application security group. A named group of network interfaces that NSG rules can reference instead of listing addresses.

Why the distinction matters

One acronym, two services, different domains entirely, and both are common enough that the abbreviation gets used unqualified in study notes and team chat. Expand it every time.

Related terms: Security group

Availability set

Different kind of thing
AWSno equivalent

AWS does not use the Azure availability-set resource. Placement groups and multi-zone deployment address different placement and failure requirements.

Azureintra-datacentre placement

A grouping using fault domains and update domains inside a single datacentre, protecting against rack failure and host patching.

Google Cloudno equivalent

Google does not use the Azure availability-set resource. Placement policies and distribution across zones must be evaluated against the intended failure domain.

Why the distinction matters

An availability set is not a multi-zone deployment. Surviving loss of a zone requires replicas in other zones and a functioning failover path. Merely placing all resources in one availability zone does not provide that protection.

Container

Different kind of thing
AWScompute packaging

An OCI container image or running container. The storage equivalent is a bucket.

Azurestorage grouping

In Blob Storage, a grouping of blobs inside a storage account. Roughly what the other clouds call a bucket.

Google Cloudcompute packaging

An OCI container image or running container. The storage equivalent is a bucket.

Why the distinction matters

Azure uses the word for both meanings in the same portal. "Create a container" in a storage context means a blob grouping and has nothing to do with Docker, Kubernetes or Container Apps. Reading it as a compute object sends the whole answer wrong.

Endpoint

Different kind of thing
AWSprivate connectivity

For VPC endpoints, gateway endpoints provide route-based S3 and DynamoDB access. Interface endpoints place endpoint interfaces in selected subnets for supported PrivateLink services. There are other endpoint types; identify the product and mode.

Azureprivate connectivity, two variants

Two unrelated things. A service endpoint keeps traffic on the backbone while the service keeps its public IP. A private endpoint puts a private IP from your subnet in front of the service.

Google Cloudprivate connectivity

Private Service Connect endpoints, plus Private Google Access as a separate subnet setting.

Why the distinction matters

For the Azure service-endpoint/private-endpoint pair, only the private endpoint supplies a private address in the consumer VNet. Hybrid clients also need working routing and DNS. Endpoint connectivity does not itself grant permission or disable a service public endpoint.

Policy

Different kind of thing
AWSpermissions document

A JSON document listing actions, resources and conditions, attached to an identity or a resource.

Azureconfiguration governance engine

Azure Policy is a governance engine evaluating resource configuration at write time. It is not the permissions system.

Google Cloudtwo different things

An IAM allow policy binds roles to principals. IAM deny policies and organization policies are separate controls; their scope and supported operations differ.

Why the distinction matters

Specify the policy product and effect. An IAM permission grant, an IAM deny, and a resource-configuration constraint answer different questions. Governance controls do not substitute for application authorization.

Related terms: Role

Resource group

Different kind of thing
AWSsaved view

An optional, tag-driven query that produces a view over resources. It owns nothing.

Azureownership container

A lifecycle and management container for resources deployed at resource-group scope. Deletion requests removal of its contents; locks, dependencies and service behavior can block completion. Not every Azure resource type belongs to a resource group.

Why the distinction matters

Deleting an AWS Resource Group removes the grouping, not its members. Azure resource-group deletion requests deletion of member resources, subject to locks and dependencies. Google projects are a different lifecycle boundary.

Related terms: Stack · Project

Role

Different kind of thing
AWSidentity

An assumable identity with its own temporary credentials issued by STS, and a trust policy naming who may assume it.

Azurepermission set

A named set of permissions, meaningless until assigned to a separate principal at a scope.

Google Cloudpermission set

A named collection of permissions, bound to a member at a resource node.

Why the distinction matters

An AWS role is a thing you become; the other two are lists of verbs pinned to somebody else. Different categories of object behind one word. The nearest AWS equivalent of an Azure or Google role is a managed policy, and the nearest Azure or Google equivalent of an AWS role is a service principal or service account.

Related terms: Policy · Service account

Account

Materially different
AWSboundary

A resource and IAM administration boundary identified by a 12-digit number. Organizations supports consolidated billing; workforce identities can be federated across accounts.

Azureoverloaded

Usually means a sign-in identity. A storage account is something else entirely, and a billing account something else again.

Google Cloudoverloaded

Usually a user identity. A billing account is a separate payable object linked to projects. A service account is a machine identity.

Why the distinction matters

An AWS account holds workload resources and IAM configuration. In Azure and Google, qualify whether account means a person, workload identity, billing object or storage object. Identity, resource and payment boundaries are related but not identical.

Related terms: Project · Service account

Project

Materially different
AWSnot applicable

An AWS account is the relevant workload administration boundary here; individual AWS services can also have objects named projects.

Azurenot applicable

An Azure subscription is the relevant workload administration scope here; a project in another Azure product is not automatically that scope.

Google Cloudisolation boundary

A container for workload resources and API configuration. Organization, folder and billing resources exist outside projects. A project has a mutable name, an immutable unique ID and an assigned number.

Why the distinction matters

Project name, ID and number are different identifiers. The ID cannot be reused after deletion. Choose project boundaries for access, quotas and operations rather than assuming they map exactly to another provider account.

Related terms: Account

Security group

Materially different
AWSinstance firewall

A stateful allow-only filter attached to a network interface. It cannot deny.

Azuresubnet or instance firewall

Network security group, a stateful filter with allow and deny rules evaluated by priority, attachable to a subnet, a NIC, or both.

Google Cloudnetwork firewall

No object by this name. VPC firewall rules do the job, attached to the network and targeted by tag or service account.

Why the distinction matters

The AWS object cannot deny anything, which people consistently forget, and Azure's similarly named object can. In Entra ID, "security group" additionally means a directory group of users, a third unrelated sense.

Related terms: ASG

Service account

Materially different
AWSidentity

Not the term used. The equivalent is an IAM role assumed by a service.

Azureidentity

Not the term used. The equivalent is a service principal, or a managed identity that wraps one.

Google Cloudidentity and resource

A workload identity that is also an IAM-managed resource. Permission to attach it differs from permission to generate access tokens and from the permissions used by the workload.

Why the distinction matters

Service Account User supports attaching a Google service account; Token Creator supports credential generation. A grant to use the identity does not grant that identity permission to the application data. Check the intended authentication path.

Related terms: Role

Tag

Materially different
AWSmetadata

A key-value label for billing, search and access control conditions.

Azuremetadata

A key-value label for billing and search, usable as a condition in Azure Policy.

Google Cloudmetadata and network selector

Three distinct constructs: labels for resource metadata, network tags for firewall and route selection, and Resource Manager tags for governed key-value associations and supported policy conditions.

Why the distinction matters

A network tag is metadata with operational effects: firewall rules and routes can select it. A Resource Manager tag is a different governed construct. Do not treat either as interchangeable with a billing label.

Zone

Materially different
AWSfailure domain

An Availability Zone consists of one or more datacenters. AZ names can map differently between accounts; AZ IDs identify the same physical zone across accounts.

Azurefailure domain

Availability zone, the same idea, but not present in every region and opted into per resource.

Google Cloudfailure domain

A deployment area within a region, named like us-central1-a.

Why the distinction matters

Compare AWS AZ IDs when physical alignment between accounts matters; equal AZ names do not guarantee it. Region and service support determine how zones can be selected. A DNS zone is a different meaning of the word.

Related terms: Availability set

Image

Naming difference
AWSVM template

Amazon Machine Image, an AMI. Regional, and must be copied to be used in another region.

AzureVM template

A managed image, or a version published in an Azure Compute Gallery for replication and versioning.

Google CloudVM template

A custom image, which is a global resource usable from any region without copying.

Why the distinction matters

Scope differs. Google images are global; AMIs are regional and need explicit copying, which is a step people forget in multi-region designs and which exam questions test directly.

Reserved instance

Naming difference
AWSdiscount

An EC2 billing discount for matching usage. Regional Reserved Instances do not reserve capacity; zonal Reserved Instances include a capacity reservation. Savings Plans use a different commitment model.

Azurediscount

A reservation, purchased for one or three years.

Google Clouddiscount

Committed use discounts and capacity reservations are separate mechanisms. Sustained use discounts apply automatically only to eligible usage.

Why the distinction matters

A discount is not necessarily guaranteed capacity. Verify reservation scope and eligible machine families, regions and purchase options. Google sustained use discounts are not a blanket reduction for every VM or for usage already receiving another incompatible discount.

Stack

Naming difference
AWSdeployment unit

A CloudFormation stack, the set of resources created and deleted together from one template.

Azuredeployment unit

An Azure deployment stack manages a set of resources deployed from Bicep or ARM templates. Its deletion and detach behavior is configurable. Azure Stack is a separate hybrid product family.

Google Clouddeployment unit

Infrastructure Manager manages Terraform deployments. A deployment and its state are not a universal equivalent of an AWS CloudFormation stack.

Why the distinction matters

Azure deployment stacks exist and must not be confused with Azure Stack. In every provider, check retain, detach, deletion protection and state ownership rather than assuming deleting a deployment always deletes every resource.

Related terms: Resource group

No term matches.

Service equivalents

38 mappings across 6 domains, 14 of them graded serious. Each row states how far the equivalence can be trusted, and what differs when it cannot.

Compute and Containers

7 mappings, 0 of them graded serious. Each row states how far the equivalence can be trusted; open a note to see what actually differs.

Where it breaks

A Google managed instance group is created as either zonal or regional, and the regional form spreads instances across zones for you. An AWS Auto Scaling group achieves the same thing by being given subnets in several availability zones, because the subnet is what carries the zone. Note the acronym trap: AWS ASG means Auto Scaling group, while Azure ASG means application security group, an unrelated networking object.

SAA-C03SOA-C03AZ-104ACESource 1 Source 2 Source 3Recorded check 2026-09-15

Event-driven function as a service

Regular Behaves differently
Google CloudCloud Run functionswas Cloud Functions, Cloud Functions (2nd gen)
Where it breaks

Cloud Functions (2nd gen) is now Cloud Run functions and uses the Cloud Run service model. The first generation remains distinct. Azure Functions behavior depends on the hosting plan, including timeout, scaling, and cold starts. AWS Lambda has its own invocation and concurrency model. A familiar function name does not establish identical runtime limits; check the generation, trigger, and hosting plan.

CLF-C02DVA-C02AZ-900CDLACESource 1 Source 2 Source 3Recorded check 2026-09-10
Where it breaks

Fargate supplies compute for ECS or EKS, so an orchestrator remains part of the design. Azure Container Apps and Cloud Run expose a managed application deployment experience. Cloud Run services can scale to zero by default, but minimum instances and billing mode change idle behavior and cost. Storage, networking, databases, and other dependencies can still incur charges while application instances are at zero. Compare the whole architecture and the selected hosting plan.

SAA-C03DVA-C02ACESource 1 Source 2 Source 3 Source 4Recorded check 2026-09-10

Managed Kubernetes

Regular Behaves differently
Where it breaks

Compare the operating mode, not just the Kubernetes service name. GKE Autopilot, EKS Auto Mode, and AKS Automatic all reduce infrastructure management, with different node controls, workload constraints, upgrade behavior, and billing. They are relevant alternatives, not identical products. GKE Autopilot billing can depend on workload and compute class; do not assume every workload is billed only by requested pod resources. Check the selected mode, region, and supported features.

SAA-C03DVA-C02AZ-104ACESource 1 Source 2 Source 3Recorded check 2026-09-10

Deploy code, platform manages the runtime

Regular Behaves differently
Where it breaks

The deployment and operating units differ. Azure App Service has deployment slots; Elastic Beanstalk manages visible AWS resources and supports blue/green deployment through environment URL swaps; App Engine supports versions and traffic allocation. These are related release patterns with different configuration, scaling, and rollback behavior. Compare the runtime, plan, and deployment unit rather than claiming that staging exists in only one cloud.

CLF-C02DVA-C02AZ-900CDLSource 1 Source 2 Source 3Recorded check 2026-09-10

Interruptible discounted capacity

Regular Similar purpose
Same everywhere, still caught out

All three can reclaim this discounted capacity. Interruption handling, availability and pricing rules differ. Google Spot VMs and older preemptible VMs are distinct provisioning models: the older model has a 24-hour runtime limit; Spot VMs do not have that fixed limit. Design for loss of instances and uncertain replacement capacity.

CLF-C02SAA-C03AZ-900CDLACESource 1 Source 2 Source 3Recorded check 2026-09-15

Nothing on this page matches.

Databases and Analytics

6 mappings, 1 of them graded serious. Each row states how far the equivalence can be trusted; open a note to see what actually differs.

Managed relational database

Regular Behaves differently
Where it breaks

Azure splits by engine into separate products, whereas RDS and Cloud SQL are one product with an engine choice. Azure SQL Database is also not simply hosted SQL Server: it is a platform service with its own feature set, distinct from Azure SQL Managed Instance, which is the closer match for lifting an existing SQL Server across. Picking between Database, Managed Instance and SQL on a VM is a recurring AZ-305 question.

CLF-C02SAA-C03AZ-900AZ-104AZ-305CDLACESource 1 Source 2 Source 3Recorded check 2026-09-15
Where it breaks

In RDS, a Multi-AZ DB instance has a non-readable standby, while a Multi-AZ DB cluster has two readable standby instances with semisynchronous replication that also act as failover targets. The cluster form is the constraint that bites: it runs only on RDS for MySQL and PostgreSQL and only on NVMe-backed instance classes, so an engine or class chosen first can rule it out. It also applies flow control, throttling writes on the writer to contain replica lag, which trades write throughput for a shorter failover. Ordinary read replicas are a separate asynchronous mechanism; do not infer automatic failover from readability. Azure SQL Database zone redundancy and read scale-out depend on service tier, and active geo-replication is a separate readable asynchronous copy. Cloud SQL regional HA uses a standby for failover with read replicas added separately. Specify engine, deployment type and failure scope before choosing.

CLF-C02SAA-C03SOA-C03AZ-104AZ-305ACESource 1 Source 2 Source 3 Source 4 Source 5 Source 6Recorded check 2026-09-15

Managed key-value or document NoSQL

Regular Different object or architecture
Where it breaks

These products share some workloads but differ in data model and consistency controls. DynamoDB supports key-value and document data; Cosmos DB capabilities depend on the selected API. Firestore is document-oriented; Bigtable uses a wide-column model. Choose from required queries, transactions, consistency, throughput, and regional design, rather than translating a product name. A provider may offer several relevant database products beyond this shortlist.

SAA-C03DVA-C02AZ-305ACESource 1 Source 2 Source 3Recorded check 2026-09-15

Analytical data warehouse

Regular Behaves differently
AzureMicrosoft Fabric Warehouse or Azure Synapse AnalyticsSeparate products and operating models. Exam retirement does not establish service retirement.
Google CloudBigQuery
Where it breaks

Compare the actual deployment model: provisioned or serverless Redshift, Fabric Warehouse or Synapse SQL options, and BigQuery. Provisioned clusters and consumption-oriented services expose different capacity and cost controls. Fabric and Synapse are separate choices; retirement of an exam is not proof that a service is retired. Evaluate existing integrations, workload, governance, and purchasing model.

CLF-C02SAA-C03AZ-900DP-900CDLACESource 1 Source 2 Source 3 Source 4Recorded check 2026-09-10

Managed in-memory cache

Tip Behaves differently
AzureAzure Managed RedisAzure Cache for Redis has a published retirement and migration schedule; consult the FAQ for tier-specific dates.
Google CloudMemorystore
Where it breaks

An in-memory cache is a shared concept, but engine/version support, persistence, clustering, failover, and networking depend on the product and tier. Microsoft is moving Azure Cache for Redis users to Azure Managed Redis on a published schedule. A new design should compare current offerings rather than treating an old cache name as a stable equivalent.

SAA-C03DVA-C02ACESource 1 Source 2 Source 3Recorded check 2026-09-10

Streaming ingestion and pub/sub messaging

Regular Different object or architecture
Where it breaks

Queue processing, event routing, topic fan-out, and replayable streams are distinct requirements. AWS offers Kinesis, SQS, and SNS; Azure offers Event Hubs, Service Bus, and Event Grid; Google Pub/Sub overlaps several of these workloads. Compare ordering scope, acknowledgements, replay/retention, transactions, and delivery semantics for the chosen service. A queue requirement does not by itself select a streaming service.

SAA-C03DVA-C02AZ-305ACESource 1 Source 2 Source 3Recorded check 2026-09-15

Nothing on this page matches.

Resource Hierarchy and Scoping

6 mappings, 5 of them graded serious. Each row states how far the equivalence can be trusted; open a note to see what actually differs.

The primary workload isolation boundary

Serious Behaves differently
Google CloudProject
Where it breaks

An AWS account is a resource and IAM administration boundary, but workforce identities can be federated and Organizations can consolidate charges. Azure subscriptions are resource and billing scopes associated with an Entra tenant. Google projects hold workload resources and link to a billing account. Resource ownership, identity administration and payment responsibility must be designed separately in every cloud.

CLF-C02SAA-C03AZ-900AZ-104CDLACESource 1 Source 2Recorded check 2026-09-14
Where it breaks

OUs, management groups and folders organize workload boundaries and inherited policy; they are not geographic regions. Their nesting limits differ. A Google folder must be empty before deletion. Consult current quotas rather than assuming identical depths or lifecycle behavior.

SAA-C03AZ-104AZ-305ACESource 1 Source 2 Source 3 Source 4Recorded check 2026-09-14

Grouping container below the isolation boundary

Serious Different object or architecture
AWSResource groupOptional resource grouping; deleting the group does not delete members.
AzureResource groupLifecycle container for resources deployed at resource-group scope.
Google Cloudno equivalentNo equivalent. Labels and separate projects do this job.
Where it breaks

An Azure resource group is a lifecycle and management scope for resources deployed at resource-group scope. Deleting the group initiates deletion of its contents, subject to locks, dependencies, and service behavior. An AWS Resource Group is a grouping/query construct; deleting that group does not delete its member resources. Google projects and labels provide different grouping boundaries. Not every Azure resource type is deployed at resource-group scope.

AZ-900AZ-104SAA-C03Source 1 Source 2 Source 3Recorded check 2026-09-15

Scope of the virtual network object

Serious Different object or architecture
Where it breaks

A Google VPC is a global object spanning every region and carries no CIDR of its own; the subnets hold the ranges and are regional. One Google VPC can contain instances in Tokyo and Frankfurt that route to each other over Google's backbone with no peering. AWS and Azure networks are regional, so the same design needs peering or a transit construct. An AWS subnet additionally lives in exactly one availability zone, whereas Azure and Google subnets are regional and span zones.

SAA-C03AZ-104AZ-700ACESource 1 Source 2 Source 3Recorded check 2026-09-15

Independent failure domain within a region

Serious Behaves differently
Where it breaks

An Azure availability set distributes VMs across fault and update domains; it does not provide protection from losing a whole datacenter. Zone resilience requires resources distributed across zones and a working failover design, not simply selecting one zone. AWS AZ names can map differently between accounts; use AZ IDs when physical alignment matters.

CLF-C02SAA-C03AZ-900AZ-104ACESource 1 Source 2 Source 3Recorded check 2026-09-14

Organization-wide preventive guardrail

Serious Behaves differently
Where it breaks

An SCP restricts the permissions available to affected member-account principals and never grants access. SCPs do not restrict the management account or service-linked roles. Azure Policy and Google Organization Policy govern resource configuration; the supported effects and enforcement points differ. Check the applicable control, scope and exceptions rather than treating governance policy as a permission grant.

SAA-C03SAP-C02AZ-104AZ-305ACESource 1 Source 2 Source 3 Source 4Recorded check 2026-09-14

Nothing on this page matches.

Identity and Access

6 mappings, 4 of them graded serious. Each row states how far the equivalence can be trusted; open a note to see what actually differs.

The object called a "role"

Serious Different object or architecture
Where it breaks

These are different categories of object. An AWS role is an identity you assume, with its own temporary credentials issued by STS and a trust policy naming who may assume it. An Azure or Google role is a named set of permissions that carries no credentials and does nothing until assigned to a separate principal at a scope. The nearest AWS equivalent of an Azure or Google role is a managed policy; the nearest Azure or Google equivalent of an AWS role is a service principal or service account.

CLF-C02SAA-C03AZ-900AZ-104CDLACESource 1 Source 2 Source 3Recorded check 2026-09-15
Where it breaks

Azure system-assigned identities follow the resource lifecycle; user-assigned identities are independent. An EC2 role is attached through an instance profile; other AWS runtimes use their own role integration. In Google Cloud, permission to attach a service account (actAs) is distinct from permission to mint its credentials. Neither automatically grants the service account access to application data.

SAA-C03DVA-C02AZ-104ACESource 1 Source 2 Source 3Recorded check 2026-09-14

How a permission decision is reached

Serious Different object or architecture
Where it breaks

AWS evaluates applicable grants and restrictions rather than requiring an allow at every stage of a universal pipeline. Identity-based grants are constrained by boundaries and applicable organization or session policies. Same-account resource-based grants can behave differently depending on whether they name a user, role, or role session; an applicable explicit deny still wins. Azure RBAC and Google IAM allow grants inherit down their resource hierarchies, but deny controls and conditions must also be considered. A narrower role at a child scope does not remove an inherited grant.

SAA-C03SCS-C03AZ-104ACESource 1 Source 2 Source 3 Source 4Recorded check 2026-09-10
Where it breaks

Directory administration and workload access are different responsibilities in all three ecosystems. An Azure Global Administrator does not automatically receive resource permissions: elevation grants User Access Administrator at root scope, from which resource access can be assigned. Google Workspace or Cloud Identity super administrators manage the directory; Organization Administrator manages organization IAM and is not an unrestricted workload superuser. AWS Identity Center administration likewise does not replace the permission sets and IAM roles used to access member-account resources.

AZ-900AZ-104SC-300Source 1 Source 2 Source 3Recorded check 2026-09-10

Workforce single sign-on into the cloud

Regular Behaves differently
AWSIAM Identity Centerwas AWS SSO
AzureMicrosoft Entra IDwas Azure Active Directory, Azure AD
Where it breaks

Azure subscriptions trust an Entra tenant. AWS IAM Identity Center provides workforce access using permission sets and account roles and can connect an external identity provider. Google Cloud Identity and Workforce Identity Federation offer different directory and federation models. Compare the source of identities, federation configuration and resource grants rather than treating a directory as permission to all workloads.

CLF-C02SAA-C03AZ-900AZ-104ACESource 1 Source 2Recorded check 2026-09-14

Storing application secrets

Regular Behaves differently
Where it breaks

Key Vault includes secrets, cryptographic keys and certificates; AWS and Google expose separate services for some of those roles. Secrets Manager supports configured rotation using managed integrations or Lambda, but storing a secret does not automatically configure working rotation. Parameter Store supports secure parameters; rotation and pricing depend on tier and integration. Verify the secret type, rotation mechanism and application behavior.

SAA-C03DVA-C02SCS-C03AZ-104ACESource 1Recorded check 2026-09-14

Nothing on this page matches.

Networking

8 mappings, 2 of them graded serious. Each row states how far the equivalence can be trusted; open a note to see what actually differs.

Instance-level traffic filtering

Serious Behaves differently
Where it breaks

An AWS security group has allow rules, not explicit deny rules. If broad allow rules must remain while one address is blocked, use an appropriate deny-capable control, such as a network ACL, network firewall, or application-layer control where applicable. Azure NSGs and Google VPC firewall rules support allow and deny decisions with priorities. Google VPC firewall rules belong to the network and select targets; do not assume all three attach and evaluate identically.

CLF-C02SAA-C03AZ-104AZ-700ACESource 1 Source 2 Source 3Recorded check 2026-09-10

Stateless subnet-level filtering

Regular Different object or architecture
Azureno equivalentAn NSG on the subnet fills this position but is stateful.
Google Cloudno equivalentVPC firewall rules are stateful; they do not reproduce the AWS network ACL model.
Where it breaks

AWS network ACLs are stateless: allowing an inbound request does not automatically permit its outbound reply. Return traffic needs a matching rule. Azure NSGs and the Google VPC firewall rules compared here are stateful, so their connection tracking differs. This comparison concerns these native controls, not every possible firewall appliance or policy product.

SAA-C03SOA-C03Source 1 Source 2Recorded check 2026-09-15

Reaching a managed service without traversing the internet

Serious Different object or architecture
Where it breaks

The mechanism decides the limits. An AWS gateway endpoint adds a prefix-list route and the instance still reaches the service on its public address, so there is no private address to route to: that is why it cannot be used from on-premises over VPN or Direct Connect, or from a peered VPC. Its route is also regional, so traffic to the same service in another Region leaves through the internet gateway instead. Gateway endpoints serve only S3 and DynamoDB and carry no endpoint charge. An interface endpoint uses PrivateLink to place an address from your subnet in front of the service, which is what makes it reachable from on-premises, and it is billed. Azure draws the same line: a service endpoint keeps the service's public address and does not extend to on-premises clients, while a private endpoint gives it an address in your VNet. Google Private Service Connect and Private Google Access are different mechanisms again. Routing, DNS and authorization must still permit access in every case.

SAA-C03AZ-104AZ-700ACESource 1 Source 2 Source 3 Source 4 Source 5Recorded check 2026-09-15

Global layer 7 load balancing

Regular Behaves differently
Where it breaks

CloudFront and Front Door are global HTTP reverse-proxy services; neither is interchangeable with a regional application load balancer. Google offers a global external Application Load Balancer. Traffic Manager and Route 53 DNS routing select DNS answers rather than carrying application traffic. AWS Global Accelerator handles TCP/UDP traffic and is not a layer-7 routing engine. A global entry point does not make a single-region origin resilient to regional failure.

SAA-C03AZ-104AZ-305AZ-700ACESource 1 Source 2Recorded check 2026-09-14

Connecting two virtual networks

Regular Similar purpose
Same everywhere, still caught out

Peering between A and B and between B and C does not by itself give A a transit path to C in any of these three services. Check address-range overlap and supported route types: peering products have provider-specific restrictions and exceptions. A transitive design requires a supported transit or routing solution, not a chain of ordinary peerings.

SAA-C03AZ-104AZ-700ACESource 1 Source 2 Source 3Recorded check 2026-09-15

Outbound internet for private instances

Regular Behaves differently
Where it breaks

AWS offers zonal and regional NAT gateways. Zonal gateways require an explicit per-zone design for zone resilience; regional gateways support automatic expansion across workload zones, with documented expansion delays and mode restrictions. Regional NAT does not support private NAT. Azure NAT Gateway capabilities depend on SKU and configuration. Google Cloud NAT is distributed translation, not a proxy VM through which packets are routed. NAT is not an inbound publishing or application-authentication mechanism.

SAA-C03SOA-C03AZ-104ACESource 1 Source 2 Source 3Recorded check 2026-09-14

Nothing on this page matches.

Storage

5 mappings, 2 of them graded serious. Each row states how far the equivalence can be trusted; open a note to see what actually differs.

Object storage

Regular Behaves differently
Where it breaks

Azure Blob Storage uses a container within a storage account; the account carries settings such as redundancy and naming. S3 and Cloud Storage expose buckets. An Azure blob container is unrelated to the container image used to package an application. Google bucket location options include regional, dual-region, and multi-region; compare these with replication and redundancy configurations in the other providers rather than assuming identical placement controls.

CLF-C02SAA-C03AZ-900AZ-104CDLACESource 1 Source 2 Source 3Recorded check 2026-09-15

Archival storage and retrieval behavior

Serious Different object or architecture
Where it breaks

Google Archive remains online with low-latency reads. S3 Glacier Deep Archive requires a restore before access; Glacier Instant Retrieval is a different class. Azure Archive needs rehydration before normal reads. Minimum storage durations, retrieval operations, early deletion and data transfer affect total cost, so the lowest storage rate does not establish the cheapest design.

CLF-C02SAA-C03AZ-900AZ-104CDLACESource 1 Source 2 Source 3Recorded check 2026-09-14

Network-attached block storage for a VM

Regular Behaves differently
Where it breaks

EBS volumes are zonal. Azure managed disks offer redundancy options including ZRS on supported disk types. Google regional Persistent Disk and Hyperdisk Balanced High Availability replicate across two zones. Availability does not imply shared-writer safety: multi-attach support, access modes, VM compatibility and clustered filesystems must be checked for the selected disk. Replicated storage still needs application failover and backups.

SAA-C03SOA-C03AZ-104ACESource 1 Source 2 Source 3Recorded check 2026-09-14

Shared network file system

Regular Behaves differently
Where it breaks

Choose the file protocol and service tier explicitly. EFS serves NFS; the FSx family includes separate Windows, Lustre, NetApp ONTAP and OpenZFS offerings. Azure Files supports SMB or NFS shares with different feature support; a share is not automatically dual-protocol. Filestore serves NFS. On-premises access requires supported connectivity, firewall, DNS and authentication configuration.

SAA-C03AZ-104ACESource 1 Source 2 Source 3Recorded check 2026-09-14

Naming the replication and durability setting

Serious Different object or architecture
Where it breaks

Azure configures redundancy on the storage account: LRS is local, ZRS spans zones, and geo-redundant options add asynchronous replication to a second region. Read-access variants expose the secondary. S3 storage classes include both One Zone-IA and Express One Zone as single-zone choices; other classes have different resilience and retrieval characteristics. Google Cloud Storage separates location type from storage class. Choose resilience and access behavior independently where the platform allows it.

AZ-900AZ-104AZ-305Source 1 Source 2 Source 3Recorded check 2026-09-10

Nothing on this page matches.

Which exam, and what it costs

18 current exams and 3 retired ones, each linked to the vendor's own page. An exam retiring and a product retiring are separate events; only the exam is tracked here.

AWS

CodeCertificationLevelVerified
CLF-C02AWS Certified Cloud Practitionerfoundational2026-09-10
DVA-C02AWS Certified Developer - Associateassociate2026-09-10
SAA-C03AWS Certified Solutions Architect - Associateassociate2026-09-10
SOA-C03AWS Certified CloudOps Engineer - Associateassociate2026-09-10
SAP-C02AWS Certified Solutions Architect - Professionalprofessional2026-09-10
SCS-C03AWS Certified Security - Specialtyspecialty2026-09-10

Azure

CodeCertificationLevelVerified
AZ-900Azure Fundamentalsfoundational2026-09-10
DP-900Azure Data Fundamentalsfoundational2026-09-10
AZ-104Azure Administrator Associateassociate2026-09-10
AZ-700Azure Network Engineer Associateassociate2026-09-10
SC-300Identity and Access Administrator Associateassociate2026-09-10
AZ-305Designing Microsoft Azure Infrastructure Solutions (exam toward Architect Expert)expert2026-09-10

Google Cloud

CodeCertificationLevelVerified
CDLCloud Digital Leaderfoundational2026-09-10
GENAI-LGoogle Cloud Generative AI Leaderfoundational2026-09-10
ACEAssociate Cloud Engineerassociate2026-09-10
ADPGoogle Cloud Associate Data Practitionerassociate2026-09-10
PCAGoogle Cloud Professional Cloud Architectprofessional2026-09-10
PDEGoogle Cloud Professional Data Engineerprofessional2026-09-10

Retired

Listed rather than deleted, because course material for them is still on sale.

CodeCertificationCloudNote
AZ-204Azure Developer AssociateAzureCertification and renewal assessment retired; the page carries a retirement banner.
AZ-500Azure Security Engineer AssociateAzureCertification and renewal assessment retired; the page carries a retirement banner.
SCS-C02AWS Certified Security - Specialty (SCS-C02)AWSExam version superseded by SCS-C03. The certification itself is current.

Practice Architectural Decisions

For each scenario, state the constraint, choose an option, and explain what changes when the constraint changes. These are learning exercises, not real exam questions or a score predictor.

An Unreadable Standby

An RDS Multi-AZ DB instance serves a photo application. Reporting queries need to move off the writer. Can they use the existing standby?

Answer: no. That deployment's standby is not a client read endpoint. Evaluate a read replica or a supported DB cluster configuration. Preserve the application's availability requirement. A Multi-AZ DB cluster has readable standbys, so “all Multi-AZ standbys are unreadable” is wrong. Deployment modes and sources.

A Private Address That Does Not Work

An on-premises client resolves an Azure service hostname to its public address, even after a private endpoint was created. Does adding a broader RBAC grant fix the network path?

Answer: no. Inspect DNS resolution and forwarding, routes, endpoint approval and traffic controls. Authorization matters after reachability is established. Creating the endpoint alone does not guarantee public access is disabled. Private access.

A Smaller Role Does Not Remove Access

A principal inherits a broad Azure or Google allow grant. You assign a narrower role on a child resource. Have you reduced the inherited permission?

Answer: no. The child allow grant does not subtract the parent grant. Change the relevant assignment or evaluate applicable deny and condition controls. Check other grants before concluding what the principal can do. Identity.

One Region Is Not a Recovery Plan

A web application has two instances in different zones but one unreplicated database. Is the application now resilient to every zone failure?

Answer: no. The database remains a dependency that can prevent useful service. Define the failure scope, data-loss objective and recovery time, then examine every dependency. Multi-zone resilience also does not establish recovery after a region-wide outage. Architecture assumptions.

One Product Name Can Hide a New Operating Mode

A design review claims that every AWS NAT gateway requires its own public subnet and one customer-managed gateway per Availability Zone. Is the statement current?

Answer: it describes the zonal public NAT pattern, not every mode. Regional NAT gateways support different placement and expansion behavior. Their mode restrictions and expansion delay still matter. NAT modes and sources.

Import the Optional Flashcards

Download the tab-separated deck. In Anki, import it with fields mapped to front, back and tags. Comparison answers include the grade, caveat and sources so a card does not teach a false equivalence. Provider links establish where to investigate; they do not replace reading the applicable conditions.

You can also practise without an account or flashcard application: cover the answer paragraph, write a justification, and check it against the linked chapter and primary sources. Revisit an answer when its source or required service configuration changes.