<?xml version="1.0" encoding="UTF-8"?>
<mxfile host="app.diagrams.net" modified="2026-07-15" version="21.0.0">
  <diagram id="ha-wordpress" name="HA WordPress on AWS">
    <mxGraphModel dx="1422" dy="762" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1700" pageHeight="1350" math="0" shadow="0">
      <root>
        <mxCell id="0"/>
        <mxCell id="1" parent="0"/>

        <!-- TITLE -->
        <mxCell id="2" value="Highly Available WordPress on AWS — 3-AZ, Zero-SPOF Architecture" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=18;fontStyle=1;fontColor=#232F3E;" vertex="1" parent="1">
          <mxGeometry x="100" y="20" width="1500" height="40" as="geometry"/>
        </mxCell>

        <!-- ============ INTERNET / GLOBAL LAYER ============ -->

        <!-- Internet Users -->
        <mxCell id="3" value="Internet Users" style="outlineConnect=0;fontColor=#232F3E;gradientColor=none;strokeColor=none;fillColor=#232F3E;labelBackgroundColor=#ffffff;align=center;html=1;fontSize=11;fontStyle=0;aspect=fixed;verticalLabelPosition=bottom;verticalAlign=top;shape=mxgraph.aws4.user;" vertex="1" parent="1">
          <mxGeometry x="820" y="70" width="60" height="60" as="geometry"/>
        </mxCell>

        <!-- Route 53 -->
        <mxCell id="4" value="Route 53&#xa;Health-Check Failover" style="outlineConnect=0;fontColor=#232F3E;gradientColor=none;strokeColor=none;fillColor=#8C4FFF;labelBackgroundColor=#ffffff;align=center;html=1;fontSize=11;fontStyle=0;aspect=fixed;verticalLabelPosition=bottom;verticalAlign=top;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.route_53;" vertex="1" parent="1">
          <mxGeometry x="820" y="185" width="60" height="60" as="geometry"/>
        </mxCell>
        <mxCell id="e1" value="DNS" style="edgeStyle=orthogonalEdgeStyle;html=1;strokeColor=#8C4FFF;fontSize=10;" edge="1" source="3" target="4" parent="1"><mxGeometry relative="1" as="geometry"/></mxCell>

        <!-- CloudFront CDN -->
        <mxCell id="5" value="CloudFront CDN&#xa;HTTPS :443 | OAC" style="outlineConnect=0;fontColor=#232F3E;gradientColor=none;strokeColor=none;fillColor=#8C4FFF;labelBackgroundColor=#ffffff;align=center;html=1;fontSize=11;fontStyle=0;aspect=fixed;verticalLabelPosition=bottom;verticalAlign=top;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.cloudfront;" vertex="1" parent="1">
          <mxGeometry x="540" y="305" width="60" height="60" as="geometry"/>
        </mxCell>
        <mxCell id="e2" value="HTTPS :443" style="edgeStyle=orthogonalEdgeStyle;html=1;strokeColor=#8C4FFF;fontSize=10;" edge="1" source="4" target="5" parent="1"><mxGeometry relative="1" as="geometry"/></mxCell>

        <!-- WAF -->
        <mxCell id="6" value="AWS WAF&#xa;OWASP | SQLi | XSS" style="outlineConnect=0;fontColor=#232F3E;gradientColor=none;strokeColor=none;fillColor=#DD344C;labelBackgroundColor=#ffffff;align=center;html=1;fontSize=11;fontStyle=0;aspect=fixed;verticalLabelPosition=bottom;verticalAlign=top;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.waf;" vertex="1" parent="1">
          <mxGeometry x="820" y="305" width="60" height="60" as="geometry"/>
        </mxCell>
        <mxCell id="e3" value="Inspects" style="edgeStyle=orthogonalEdgeStyle;html=1;dashed=1;strokeColor=#DD344C;fontSize=10;" edge="1" source="5" target="6" parent="1"><mxGeometry relative="1" as="geometry"/></mxCell>

        <!-- S3 Media Bucket -->
        <mxCell id="7" value="S3 Bucket&#xa;wp-content/uploads&#xa;OAC — No Public ACL" style="outlineConnect=0;fontColor=#232F3E;gradientColor=none;strokeColor=none;fillColor=#3F8624;labelBackgroundColor=#ffffff;align=center;html=1;fontSize=11;fontStyle=0;aspect=fixed;verticalLabelPosition=bottom;verticalAlign=top;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.s3;" vertex="1" parent="1">
          <mxGeometry x="280" y="305" width="60" height="60" as="geometry"/>
        </mxCell>
        <mxCell id="e4" value="OAC Only" style="edgeStyle=orthogonalEdgeStyle;html=1;strokeColor=#3F8624;fontSize=10;" edge="1" source="5" target="7" parent="1"><mxGeometry relative="1" as="geometry"/></mxCell>

        <!-- Internet Gateway -->
        <mxCell id="igw" value="Internet Gateway" style="outlineConnect=0;fontColor=#232F3E;gradientColor=none;strokeColor=none;fillColor=#8C4FFF;labelBackgroundColor=#ffffff;align=center;html=1;fontSize=11;fontStyle=0;aspect=fixed;verticalLabelPosition=bottom;verticalAlign=top;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.internet_gateway;" vertex="1" parent="1">
          <mxGeometry x="820" y="425" width="60" height="60" as="geometry"/>
        </mxCell>
        <mxCell id="eigw" value="HTTPS :443" style="edgeStyle=orthogonalEdgeStyle;html=1;strokeColor=#DD344C;fontSize=10;" edge="1" source="6" target="igw" parent="1"><mxGeometry relative="1" as="geometry"/></mxCell>

        <!-- ============ VPC ============ -->
        <mxCell id="9" value="AWS VPC — us-east-1  |  CIDR: 10.0.0.0/16" style="points=[[0,0],[0.25,0],[0.5,0],[0.75,0],[1,0],[1,0.25],[1,0.5],[1,0.75],[1,1],[0.75,1],[0.5,1],[0.25,1],[0,1],[0,0.75],[0,0.5],[0,0.25]];shape=mxgraph.aws4.group;grIcon=mxgraph.aws4.group_vpc;strokeColor=#8C4FFF;fillColor=none;verticalLabelPosition=top;verticalAlign=bottom;align=center;html=1;whiteSpace=wrap;fontSize=12;fontStyle=1;" vertex="1" parent="1">
          <mxGeometry x="60" y="505" width="1580" height="590" as="geometry"/>
        </mxCell>

        <!-- ALB (spans all AZs, lives in public subnets) -->
        <mxCell id="8" value="Application Load Balancer&#xa;Public Subnets | SG: :443 from 0.0.0.0/0" style="outlineConnect=0;fontColor=#232F3E;gradientColor=none;strokeColor=none;fillColor=#8C4FFF;labelBackgroundColor=#ffffff;align=center;html=1;fontSize=11;fontStyle=0;aspect=fixed;verticalLabelPosition=bottom;verticalAlign=top;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.application_load_balancer;" vertex="1" parent="1">
          <mxGeometry x="820" y="530" width="60" height="60" as="geometry"/>
        </mxCell>
        <mxCell id="ealb" value="HTTPS :443" style="edgeStyle=orthogonalEdgeStyle;html=1;strokeColor=#8C4FFF;fontSize=10;" edge="1" source="igw" target="8" parent="1"><mxGeometry relative="1" as="geometry"/></mxCell>

        <!-- ============ AZ-A (us-east-1a) ============ -->
        <mxCell id="10" value="Availability Zone A (us-east-1a)" style="points=[[0,0],[0.25,0],[0.5,0],[0.75,0],[1,0],[1,0.25],[1,0.5],[1,0.75],[1,1],[0.75,1],[0.5,1],[0.25,1],[0,1],[0,0.75],[0,0.5],[0,0.25]];shape=mxgraph.aws4.group;grIcon=mxgraph.aws4.group_availability_zone;strokeColor=#147EBA;fillColor=#E6F2F8;verticalLabelPosition=top;verticalAlign=bottom;align=center;html=1;whiteSpace=wrap;fontSize=11;" vertex="1" parent="1">
          <mxGeometry x="80" y="525" width="440" height="540" as="geometry"/>
        </mxCell>

        <!-- Public Subnet A -->
        <mxCell id="pub-a" value="Public Subnet A  10.0.1.0/24" style="points=[[0,0],[0.25,0],[0.5,0],[0.75,0],[1,0],[1,0.25],[1,0.5],[1,0.75],[1,1],[0.75,1],[0.5,1],[0.25,1],[0,1],[0,0.75],[0,0.5],[0,0.25]];shape=mxgraph.aws4.group;grIcon=mxgraph.aws4.group_public_subnet;strokeColor=#147EBA;fillColor=#DDEEFF;verticalLabelPosition=top;verticalAlign=bottom;align=left;html=1;whiteSpace=wrap;fontSize=10;" vertex="1" parent="1">
          <mxGeometry x="100" y="575" width="400" height="120" as="geometry"/>
        </mxCell>
        <mxCell id="natA" value="NAT Gateway A&#xa;Elastic IP" style="outlineConnect=0;fontColor=#232F3E;gradientColor=none;strokeColor=none;fillColor=#8C4FFF;labelBackgroundColor=#ffffff;align=center;html=1;fontSize=10;fontStyle=0;aspect=fixed;verticalLabelPosition=bottom;verticalAlign=top;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.nat_gateway;" vertex="1" parent="1">
          <mxGeometry x="200" y="600" width="50" height="50" as="geometry"/>
        </mxCell>

        <!-- Private Subnet A -->
        <mxCell id="priv-a" value="Private Subnet A  10.0.4.0/24" style="points=[[0,0],[0.25,0],[0.5,0],[0.75,0],[1,0],[1,0.25],[1,0.5],[1,0.75],[1,1],[0.75,1],[0.5,1],[0.25,1],[0,1],[0,0.75],[0,0.5],[0,0.25]];shape=mxgraph.aws4.group;grIcon=mxgraph.aws4.group_private_subnet;strokeColor=#147EBA;fillColor=#F0F8FF;verticalLabelPosition=top;verticalAlign=bottom;align=left;html=1;whiteSpace=wrap;fontSize=10;" vertex="1" parent="1">
          <mxGeometry x="100" y="725" width="400" height="130" as="geometry"/>
        </mxCell>
        <mxCell id="11" value="EC2 Auto Scaling&#xa;IMDSv2 | SSM Agent&#xa;SG: :80 from ALB only" style="outlineConnect=0;fontColor=#232F3E;gradientColor=none;strokeColor=none;fillColor=#E7157B;labelBackgroundColor=#ffffff;align=center;html=1;fontSize=10;fontStyle=0;aspect=fixed;verticalLabelPosition=bottom;verticalAlign=top;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.ec2;" vertex="1" parent="1">
          <mxGeometry x="210" y="755" width="50" height="50" as="geometry"/>
        </mxCell>
        <mxCell id="e6" value="HTTP :80" style="edgeStyle=orthogonalEdgeStyle;html=1;strokeColor=#E7157B;fontSize=10;" edge="1" source="8" target="11" parent="1"><mxGeometry relative="1" as="geometry"/></mxCell>

        <!-- Data Subnet A -->
        <mxCell id="data-a" value="Data Subnet A  10.0.7.0/24" style="points=[[0,0],[0.25,0],[0.5,0],[0.75,0],[1,0],[1,0.25],[1,0.5],[1,0.75],[1,1],[0.75,1],[0.5,1],[0.25,1],[0,1],[0,0.75],[0,0.5],[0,0.25]];shape=mxgraph.aws4.group;grIcon=mxgraph.aws4.group_private_subnet;strokeColor=#2E73B8;fillColor=#E8F0FA;verticalLabelPosition=top;verticalAlign=bottom;align=left;html=1;whiteSpace=wrap;fontSize=10;" vertex="1" parent="1">
          <mxGeometry x="100" y="885" width="400" height="110" as="geometry"/>
        </mxCell>
        <mxCell id="18" value="ElastiCache Redis&#xa;Session Cache | :6379&#xa;SG: from private subnets" style="outlineConnect=0;fontColor=#232F3E;gradientColor=none;strokeColor=none;fillColor=#2E73B8;labelBackgroundColor=#ffffff;align=center;html=1;fontSize=10;fontStyle=0;aspect=fixed;verticalLabelPosition=bottom;verticalAlign=top;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.elasticache;" vertex="1" parent="1">
          <mxGeometry x="210" y="910" width="50" height="50" as="geometry"/>
        </mxCell>
        <mxCell id="ecache-e" value=":6379" style="edgeStyle=orthogonalEdgeStyle;html=1;strokeColor=#2E73B8;fontSize=10;dashed=1;" edge="1" source="11" target="18" parent="1"><mxGeometry relative="1" as="geometry"/></mxCell>

        <!-- ============ AZ-B (us-east-1b) ============ -->
        <mxCell id="12" value="Availability Zone B (us-east-1b)" style="points=[[0,0],[0.25,0],[0.5,0],[0.75,0],[1,0],[1,0.25],[1,0.5],[1,0.75],[1,1],[0.75,1],[0.5,1],[0.25,1],[0,1],[0,0.75],[0,0.5],[0,0.25]];shape=mxgraph.aws4.group;grIcon=mxgraph.aws4.group_availability_zone;strokeColor=#147EBA;fillColor=#E6F2F8;verticalLabelPosition=top;verticalAlign=bottom;align=center;html=1;whiteSpace=wrap;fontSize=11;" vertex="1" parent="1">
          <mxGeometry x="580" y="525" width="440" height="540" as="geometry"/>
        </mxCell>

        <!-- Public Subnet B -->
        <mxCell id="pub-b" value="Public Subnet B  10.0.2.0/24" style="points=[[0,0],[0.25,0],[0.5,0],[0.75,0],[1,0],[1,0.25],[1,0.5],[1,0.75],[1,1],[0.75,1],[0.5,1],[0.25,1],[0,1],[0,0.75],[0,0.5],[0,0.25]];shape=mxgraph.aws4.group;grIcon=mxgraph.aws4.group_public_subnet;strokeColor=#147EBA;fillColor=#DDEEFF;verticalLabelPosition=top;verticalAlign=bottom;align=left;html=1;whiteSpace=wrap;fontSize=10;" vertex="1" parent="1">
          <mxGeometry x="600" y="575" width="400" height="120" as="geometry"/>
        </mxCell>
        <mxCell id="natB" value="NAT Gateway B&#xa;Elastic IP" style="outlineConnect=0;fontColor=#232F3E;gradientColor=none;strokeColor=none;fillColor=#8C4FFF;labelBackgroundColor=#ffffff;align=center;html=1;fontSize=10;fontStyle=0;aspect=fixed;verticalLabelPosition=bottom;verticalAlign=top;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.nat_gateway;" vertex="1" parent="1">
          <mxGeometry x="700" y="600" width="50" height="50" as="geometry"/>
        </mxCell>

        <!-- Private Subnet B -->
        <mxCell id="priv-b" value="Private Subnet B  10.0.5.0/24" style="points=[[0,0],[0.25,0],[0.5,0],[0.75,0],[1,0],[1,0.25],[1,0.5],[1,0.75],[1,1],[0.75,1],[0.5,1],[0.25,1],[0,1],[0,0.75],[0,0.5],[0,0.25]];shape=mxgraph.aws4.group;grIcon=mxgraph.aws4.group_private_subnet;strokeColor=#147EBA;fillColor=#F0F8FF;verticalLabelPosition=top;verticalAlign=bottom;align=left;html=1;whiteSpace=wrap;fontSize=10;" vertex="1" parent="1">
          <mxGeometry x="600" y="725" width="400" height="130" as="geometry"/>
        </mxCell>
        <mxCell id="13" value="EC2 Auto Scaling&#xa;IMDSv2 | SSM Agent&#xa;SG: :80 from ALB only" style="outlineConnect=0;fontColor=#232F3E;gradientColor=none;strokeColor=none;fillColor=#E7157B;labelBackgroundColor=#ffffff;align=center;html=1;fontSize=10;fontStyle=0;aspect=fixed;verticalLabelPosition=bottom;verticalAlign=top;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.ec2;" vertex="1" parent="1">
          <mxGeometry x="710" y="755" width="50" height="50" as="geometry"/>
        </mxCell>
        <mxCell id="e7" value="HTTP :80" style="edgeStyle=orthogonalEdgeStyle;html=1;strokeColor=#E7157B;fontSize=10;" edge="1" source="8" target="13" parent="1"><mxGeometry relative="1" as="geometry"/></mxCell>

        <!-- Data Subnet B — RDS Primary -->
        <mxCell id="data-b" value="Data Subnet B  10.0.8.0/24" style="points=[[0,0],[0.25,0],[0.5,0],[0.75,0],[1,0],[1,0.25],[1,0.5],[1,0.75],[1,1],[0.75,1],[0.5,1],[0.25,1],[0,1],[0,0.75],[0,0.5],[0,0.25]];shape=mxgraph.aws4.group;grIcon=mxgraph.aws4.group_private_subnet;strokeColor=#2E73B8;fillColor=#E8F0FA;verticalLabelPosition=top;verticalAlign=bottom;align=left;html=1;whiteSpace=wrap;fontSize=10;" vertex="1" parent="1">
          <mxGeometry x="600" y="885" width="400" height="110" as="geometry"/>
        </mxCell>
        <mxCell id="16" value="RDS MySQL Primary&#xa;Multi-AZ | :3306&#xa;SG: from private subnets only" style="outlineConnect=0;fontColor=#232F3E;gradientColor=none;strokeColor=none;fillColor=#2E73B8;labelBackgroundColor=#ffffff;align=center;html=1;fontSize=10;fontStyle=0;aspect=fixed;verticalLabelPosition=bottom;verticalAlign=top;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.rds;" vertex="1" parent="1">
          <mxGeometry x="710" y="910" width="50" height="50" as="geometry"/>
        </mxCell>
        <mxCell id="e9" value=":3306" style="edgeStyle=orthogonalEdgeStyle;html=1;strokeColor=#2E73B8;fontSize=10;" edge="1" source="11" target="16" parent="1"><mxGeometry relative="1" as="geometry"/></mxCell>
        <mxCell id="e10" value=":3306" style="edgeStyle=orthogonalEdgeStyle;html=1;strokeColor=#2E73B8;fontSize=10;" edge="1" source="13" target="16" parent="1"><mxGeometry relative="1" as="geometry"/></mxCell>

        <!-- ============ AZ-C (us-east-1c) ============ -->
        <mxCell id="14" value="Availability Zone C (us-east-1c)" style="points=[[0,0],[0.25,0],[0.5,0],[0.75,0],[1,0],[1,0.25],[1,0.5],[1,0.75],[1,1],[0.75,1],[0.5,1],[0.25,1],[0,1],[0,0.75],[0,0.5],[0,0.25]];shape=mxgraph.aws4.group;grIcon=mxgraph.aws4.group_availability_zone;strokeColor=#147EBA;fillColor=#E6F2F8;verticalLabelPosition=top;verticalAlign=bottom;align=center;html=1;whiteSpace=wrap;fontSize=11;" vertex="1" parent="1">
          <mxGeometry x="1080" y="525" width="440" height="540" as="geometry"/>
        </mxCell>

        <!-- Public Subnet C -->
        <mxCell id="pub-c" value="Public Subnet C  10.0.3.0/24" style="points=[[0,0],[0.25,0],[0.5,0],[0.75,0],[1,0],[1,0.25],[1,0.5],[1,0.75],[1,1],[0.75,1],[0.5,1],[0.25,1],[0,1],[0,0.75],[0,0.5],[0,0.25]];shape=mxgraph.aws4.group;grIcon=mxgraph.aws4.group_public_subnet;strokeColor=#147EBA;fillColor=#DDEEFF;verticalLabelPosition=top;verticalAlign=bottom;align=left;html=1;whiteSpace=wrap;fontSize=10;" vertex="1" parent="1">
          <mxGeometry x="1100" y="575" width="400" height="120" as="geometry"/>
        </mxCell>
        <mxCell id="natC" value="NAT Gateway C&#xa;Elastic IP" style="outlineConnect=0;fontColor=#232F3E;gradientColor=none;strokeColor=none;fillColor=#8C4FFF;labelBackgroundColor=#ffffff;align=center;html=1;fontSize=10;fontStyle=0;aspect=fixed;verticalLabelPosition=bottom;verticalAlign=top;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.nat_gateway;" vertex="1" parent="1">
          <mxGeometry x="1200" y="600" width="50" height="50" as="geometry"/>
        </mxCell>

        <!-- Private Subnet C -->
        <mxCell id="priv-c" value="Private Subnet C  10.0.6.0/24" style="points=[[0,0],[0.25,0],[0.5,0],[0.75,0],[1,0],[1,0.25],[1,0.5],[1,0.75],[1,1],[0.75,1],[0.5,1],[0.25,1],[0,1],[0,0.75],[0,0.5],[0,0.25]];shape=mxgraph.aws4.group;grIcon=mxgraph.aws4.group_private_subnet;strokeColor=#147EBA;fillColor=#F0F8FF;verticalLabelPosition=top;verticalAlign=bottom;align=left;html=1;whiteSpace=wrap;fontSize=10;" vertex="1" parent="1">
          <mxGeometry x="1100" y="725" width="400" height="130" as="geometry"/>
        </mxCell>
        <mxCell id="15" value="EC2 Auto Scaling&#xa;IMDSv2 | SSM Agent&#xa;SG: :80 from ALB only" style="outlineConnect=0;fontColor=#232F3E;gradientColor=none;strokeColor=none;fillColor=#E7157B;labelBackgroundColor=#ffffff;align=center;html=1;fontSize=10;fontStyle=0;aspect=fixed;verticalLabelPosition=bottom;verticalAlign=top;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.ec2;" vertex="1" parent="1">
          <mxGeometry x="1210" y="755" width="50" height="50" as="geometry"/>
        </mxCell>
        <mxCell id="e8" value="HTTP :80" style="edgeStyle=orthogonalEdgeStyle;html=1;strokeColor=#E7157B;fontSize=10;" edge="1" source="8" target="15" parent="1"><mxGeometry relative="1" as="geometry"/></mxCell>

        <!-- Data Subnet C — RDS Standby -->
        <mxCell id="data-c" value="Data Subnet C  10.0.9.0/24" style="points=[[0,0],[0.25,0],[0.5,0],[0.75,0],[1,0],[1,0.25],[1,0.5],[1,0.75],[1,1],[0.75,1],[0.5,1],[0.25,1],[0,1],[0,0.75],[0,0.5],[0,0.25]];shape=mxgraph.aws4.group;grIcon=mxgraph.aws4.group_private_subnet;strokeColor=#2E73B8;fillColor=#E8F0FA;verticalLabelPosition=top;verticalAlign=bottom;align=left;html=1;whiteSpace=wrap;fontSize=10;" vertex="1" parent="1">
          <mxGeometry x="1100" y="885" width="400" height="110" as="geometry"/>
        </mxCell>
        <mxCell id="17" value="RDS MySQL Standby&#xa;Sync Replication&#xa;Auto-Failover &lt; 2 min" style="outlineConnect=0;fontColor=#232F3E;gradientColor=none;strokeColor=none;fillColor=#2E73B8;labelBackgroundColor=#ffffff;align=center;html=1;fontSize=10;fontStyle=0;aspect=fixed;verticalLabelPosition=bottom;verticalAlign=top;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.rds;" vertex="1" parent="1">
          <mxGeometry x="1210" y="910" width="50" height="50" as="geometry"/>
        </mxCell>
        <mxCell id="e11" value=":3306" style="edgeStyle=orthogonalEdgeStyle;html=1;strokeColor=#2E73B8;fontSize=10;" edge="1" source="15" target="17" parent="1"><mxGeometry relative="1" as="geometry"/></mxCell>
        <mxCell id="e12" value="Sync Replication" style="edgeStyle=orthogonalEdgeStyle;html=1;dashed=1;strokeColor=#DD344C;fontColor=#DD344C;fontSize=10;" edge="1" source="16" target="17" parent="1"><mxGeometry relative="1" as="geometry"/></mxCell>

        <!-- EFS — Shared File System (cross-AZ) -->
        <mxCell id="efs" value="Amazon EFS&#xa;Shared File System&#xa;wp-content/ | NFS :2049&#xa;Encrypted at rest (KMS CMK)" style="outlineConnect=0;fontColor=#232F3E;gradientColor=none;strokeColor=none;fillColor=#3F8624;labelBackgroundColor=#ffffff;align=center;html=1;fontSize=10;fontStyle=0;aspect=fixed;verticalLabelPosition=bottom;verticalAlign=top;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.efs;" vertex="1" parent="1">
          <mxGeometry x="820" y="840" width="60" height="60" as="geometry"/>
        </mxCell>
        <mxCell id="efs-e1" value="NFS :2049" style="edgeStyle=orthogonalEdgeStyle;html=1;strokeColor=#3F8624;fontSize=10;dashed=1;" edge="1" source="11" target="efs" parent="1"><mxGeometry relative="1" as="geometry"/></mxCell>
        <mxCell id="efs-e2" value="NFS :2049" style="edgeStyle=orthogonalEdgeStyle;html=1;strokeColor=#3F8624;fontSize=10;dashed=1;" edge="1" source="13" target="efs" parent="1"><mxGeometry relative="1" as="geometry"/></mxCell>
        <mxCell id="efs-e3" value="NFS :2049" style="edgeStyle=orthogonalEdgeStyle;html=1;strokeColor=#3F8624;fontSize=10;dashed=1;" edge="1" source="15" target="efs" parent="1"><mxGeometry relative="1" as="geometry"/></mxCell>

        <!-- SSM Session Manager VPC Endpoint -->
        <mxCell id="ssm" value="SSM Session Manager&#xa;VPC Endpoint (PrivateLink)&#xa;No Bastion | No SSH" style="outlineConnect=0;fontColor=#232F3E;gradientColor=none;strokeColor=none;fillColor=#DD344C;labelBackgroundColor=#ffffff;align=center;html=1;fontSize=10;fontStyle=0;aspect=fixed;verticalLabelPosition=bottom;verticalAlign=top;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.systems_manager;" vertex="1" parent="1">
          <mxGeometry x="490" y="840" width="50" height="50" as="geometry"/>
        </mxCell>

        <!-- ============ GLOBAL SERVICES (outside VPC) ============ -->

        <!-- KMS CMK -->
        <mxCell id="19" value="KMS CMK&#xa;Encrypts: RDS | EFS | S3" style="outlineConnect=0;fontColor=#232F3E;gradientColor=none;strokeColor=none;fillColor=#DD344C;labelBackgroundColor=#ffffff;align=center;html=1;fontSize=11;fontStyle=0;aspect=fixed;verticalLabelPosition=bottom;verticalAlign=top;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.key_management_service;" vertex="1" parent="1">
          <mxGeometry x="200" y="1120" width="60" height="60" as="geometry"/>
        </mxCell>

        <!-- CloudWatch -->
        <mxCell id="20" value="CloudWatch&#xa;p99 Latency | 5xx Rate&#xa;Auto Scaling Triggers" style="outlineConnect=0;fontColor=#232F3E;gradientColor=none;strokeColor=none;fillColor=#E7157B;labelBackgroundColor=#ffffff;align=center;html=1;fontSize=11;fontStyle=0;aspect=fixed;verticalLabelPosition=bottom;verticalAlign=top;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.cloudwatch;" vertex="1" parent="1">
          <mxGeometry x="820" y="1120" width="60" height="60" as="geometry"/>
        </mxCell>

        <!-- Auto Scaling Policy label -->
        <mxCell id="asg-note" value="Auto Scaling Group&#xa;Min: 3 | Max: 9 | Desired: 3&#xa;Scale-out: CPU &gt; 70% or p99 &gt; 1s" style="text;html=1;strokeColor=#E7157B;fillColor=#FFF0F7;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=1;fontSize=10;" vertex="1" parent="1">
          <mxGeometry x="610" y="1120" width="180" height="60" as="geometry"/>
        </mxCell>

        <!-- WELL-ARCHITECTED LEGEND -->
        <mxCell id="21" value="&lt;b&gt;Reliability&lt;/b&gt; — 3-AZ deployment (us-east-1a/b/c), RDS Multi-AZ auto-failover &lt; 2 min, EC2 Auto Scaling (min 3 / max 9), ALB health checks, Route 53 failover routing&#xa;&lt;b&gt;Security&lt;/b&gt; — WAF (OWASP managed rules, SQLi, XSS), KMS CMK encrypts RDS + EFS + S3, IMDSv2 enforced, SSM PrivateLink (no bastion, no SSH), S3 OAC (no public ACL), SGs least-privilege&#xa;&lt;b&gt;Performance&lt;/b&gt; — CloudFront reduces origin load ~60%, ElastiCache Redis offloads session reads (:6379), EFS shared wp-content across all instances (NFS :2049)&#xa;&lt;b&gt;Cost&lt;/b&gt; — NAT Gateway per AZ for HA egress, CloudFront reduces data transfer cost, Reserved Instances for EC2/RDS baseline, CloudWatch alarms prevent over-scaling" style="text;html=1;strokeColor=#8C4FFF;fillColor=#F4ECFF;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=1;fontSize=11;spacingLeft=10;spacingRight=10;" vertex="1" parent="1">
          <mxGeometry x="60" y="1220" width="1580" height="100" as="geometry"/>
        </mxCell>

      </root>
    </mxGraphModel>
  </diagram>
</mxfile>
