1차 인프라 아키텍처 다이어그램

graph LR
    %% 테마 설정
    %%{init: {'theme': 'dark', 'themeVariables': { 'primaryColor': '#2c3e50', 'primaryTextColor': '#ffffff', 'lineColor': '#bdc3c7'}}}%%

    %% 외부 사용자 및 개발자
    Users(("일반 사용자<br>(인터넷)"))
    Dev(("개발자<br>(로컬 PC)"))
    
    %% CI/CD 파이프라인
    subgraph CI_CD ["CI/CD 파이프라인"]
        GithubActions["GitHub Actions<br>(빌드 및 배포)"]
    end

    %% AWS 클라우드 영역
    subgraph AWS ["AWS 클라우드 (ap-northeast-2)"]
        
        subgraph VPC ["VPC (가상 사설망)"]
            
            subgraph Public ["퍼블릭 서브넷 (외부 접근 가능)"]
                direction TB
                ALB["애플리케이션 로드 밸런서<br>(ALB)"]
                Bastion["베스천 호스트<br>(관리용 서버)"]
            end

            subgraph Private ["프라이빗 서브넷 (외부 접근 차단)"]
                direction TB
                subgraph ECS_Cluster ["ECS 클러스터"]
                    subgraph ASG ["오토 스케일링 그룹"]
                        App["스프링 부트 앱<br>(컨테이너)"]
                    end
                end
                RDS[("Amazon RDS<br>(PostgreSQL DB)")]
            end
        end

        %% VPC 외부 AWS 서비스
        ECR["Amazon ECR<br>(도커 이미지 저장소)"]
        S3["Amazon S3<br>(썸네일 저장소)"]
    end

    %% 네트워크 연결 흐름
    Users -- "HTTP 요청 (80)" --> ALB
    Dev -- "Git Push (코드 변경)" --> GithubActions
    GithubActions -- "도커 이미지 푸시" --> ECR
    
    %% 내부 흐름
    ALB -- "트래픽 분배 (8080 포트)<br>상태 확인 (/actuator/health)" --> App
    
    %% 관리자 접속 흐름
    Dev -. "SSH 접속 (22)" .-> Bastion
    Bastion -. "SSH 터널링 (DB 우회 접속)" .-> RDS
    
    %% 앱 연동 흐름
    App -- "JDBC 연결 (5432)" --> RDS
    ECS_Cluster -. "이미지 풀<br> (최신 이미지 다운로드)" .-> ECR
    App -- "파일 업로드/다운로드" --> S3

    %% 스타일링
    classDef default fill:#34495e,stroke:#95a5a6,stroke-width:1px,color:#ffffff;
    classDef aws fill:#232f3e,stroke:#ff9900,stroke-width:2px,color:#ffffff;
    classDef network fill:#154360,stroke:#3498db,stroke-width:2px,stroke-dasharray: 5 5,color:#ffffff;
    classDef cicd fill:#5b2c6f,stroke:#9b59b6,stroke-width:2px,color:#ffffff;

    class ECR,S3,RDS,ALB,Bastion,ECS_Cluster,ASG aws;
    class Public,Private network;
    class GithubActions cicd;

image.png

image.png

최종 인프라 아키텍처 다이어그램

image.png

제목 없는 다이어그램.drawio (5).png