Connecting Backend and Database in AWS

Published on: September 24, 2025

Tags: #aws #vpc #backend-service #database


Backend Service and Database in the Same VPC

graph TD

    %% Define the user at the top level
    InternetUser[Internet User]

    %% Define an invisible subgraph to control the side-by-side layout
    subgraph overall_architecture[Overall Architecture]
        direction LR %% Layout direction for the main blocks is Left-to-Right

        %% Security Subgraph (Now defined FIRST to appear on the LEFT)
        subgraph Security
            direction TB
            SG_Backend(Backend Security Group)
            SG_DB(Database Security Group)

            SG_Backend -- "Allows inbound traffic 
from SG_Backend" --> SG_DB end %% VPC Subgraph (Now defined SECOND to appear on the RIGHT) subgraph VPC [VPC] direction TB subgraph public_subnet[Public Subnet] B(Backend Service
EC2/ECS/EKS) end subgraph private_subnet[Private Subnet] DB[(Database
RDS/EC2)] end end end %% --- Define Relationships Between All Elements --- InternetUser --> B B -- "Private IP
TCP/5432" --> DB B -- "Uses SG_Backend" --> SG_Backend DB -- "Uses SG_DB" --> SG_DB %% --- Styling to Match the Image --- style VPC fill:#ffffde,stroke:#333,stroke-width:2px style Security fill:#ffffde,stroke:#333,stroke-width:2px style public_subnet fill:#f9f9f9,stroke:#aaa style private_subnet fill:#f9f9f9,stroke:#aaa style B fill:#e6e6fa,stroke:#333 style DB fill:#e6e6fa,stroke:#333 style InternetUser fill:#e6e6fa,stroke:#333 style SG_Backend fill:#e6e6fa,stroke:#333 style SG_DB fill:#e6e6fa,stroke:#333 style overall_architecture fill:none,stroke:none

Using VPC Peering

graph TD
    subgraph vpc_a["VPC A (Backend)"]
        B(Backend Service)
    end

    subgraph vpc_b["VPC B (Database)"]
        DB[(Database)]
    end

    subgraph Legend
        direction LR
        Peering(VPC Peering Connection)
    end

    B <-->|Private IP Traffic| Peering
    Peering <-->|Private IP Traffic| DB

    linkStyle 0,1 stroke-width:2px,stroke:blue,stroke-dasharray: 5 5;

    style vpc_a fill:#e6f7ff,stroke:#333
    style vpc_b fill:#fff0f0,stroke:#333

Using AWS Transit Gateway

graph TD
    subgraph AWS Cloud
        TGW(AWS Transit Gateway)

        subgraph vpc_a["VPC A (Backend)"]
            B(Backend Service)
        end

        subgraph vpc_b["VPC B (Database)"]
            DB[(Database)]
        end

        B -- "TGW Attachment" --> TGW
        DB -- "TGW Attachment" --> TGW
    end

    style TGW fill:#ffc,stroke:#333,stroke-width:2px
    style vpc_a fill:#e6f7ff,stroke:#333
    style vpc_b fill:#fff0f0,stroke:#333

Using AWS PrivateLink

graph LR

    %% --- Define the VPCs and their contents ---

    %% VPC B (Service Provider) - Defined first to appear on the left
    subgraph vpc_b["VPC B (Service Provider)"]
        direction TB %% Internal direction is Top-Down
        NLB(Network Load Balancer)
        DB[(Database)]

        %% The Endpoint Service is defined separately for better layout control
        EndpointService["Endpoint Service 
(Powered by NLB)"] %% Define internal connections NLB -- "Forwards traffic to" --> DB end %% VPC A (Service Consumer) - Defined second to appear on the right subgraph vpc_a["VPC A (Service Consumer)"] direction TB %% Internal direction is Top-Down B(Backend Service) ENI["Interface Endpoint
(Elastic Network Interface)"] %% Define internal connections B -- "Connects to local ENI" --> ENI end %% --- Define the main connection between the VPCs --- ENI -- "AWS PrivateLink
Secure Tunnel" --> EndpointService %% --- Styling to Match the Image --- %% Container Styling style vpc_a fill:#e6f7ff,stroke:#333,stroke-width:2px style vpc_b fill:#fff0f0,stroke:#333,stroke-width:2px %% Node Styling style B fill:#e6e6fa,stroke:#333 style NLB fill:#e6e6fa,stroke:#333 style DB fill:#e6e6fa,stroke:#333 style EndpointService fill:#e6e6fa,stroke:#333 style ENI fill:#ccffcc,stroke:#333

Share this post

Share on X  •  Share on LinkedIn  •  Share via Email