3 Tier 아키텍처 구축

    728x90

    안녕하세요, devyu입니다.
    저는 현재 AWS DDWU 에서 Final Project의 인프라를 담당하고 있는데요, 해당 프로젝트에서는 3-Tier 아키텍처를 구축함으로써, 각 계층의 독립적인 개발과 확장이 가능한 모듈성을 확보하고, 보안성을 강화하며, 유지보수의 용이성을 높였습니다.

    또한 이 구조를 통해 각 계층별 성능 최적화와 리소스의 효율적 관리가 가능해져, 프로젝트의 전반적인 안정성과 확장성을 크게 향상시켰습니다.

    프로젝트 아키텍처 설계

    요구사항 및 시나리오 정의

    • 수강신청 서비스는 새학기가 시작될 때 사용자가 몰릴 것이다.
      • 특정 기간에 사용자 트래픽이 과중된다.
      • 트래픽 분산이 필요하다.
    • 사용자의 데이터와 서비스의 안정성을 위해 이중화 구성(Multi - AZ)이 필요하다.
      • 사용자 1 ~ n 명의 경우 인스턴스 경량화가 필요하다.
      • 사용자가 100명이 될 경우, 관리형 서비스가 필요할 것이다.
      • 사용자가 1000명 이상이 될 경우, 부하를 줄이기 위한 아키텍처 구성이 필요하다.우리 프로젝트에서는 1000명 이상의 사용자를 가졍하여 설계를 진행하였습니다.

    적은 사용자에 대한 고려

    1000명 이상의 사용자 이전에, 그보다 적은 수의 사용자가 접속하는 아키텍처에 대해 구상하여 Bottom-Up 방식으로 구현을 생각해보기로 하였습니다.

    [ 고려 사항 ]

    • 기본 아키텍처
      • 적절한 인스턴스 선택
      • 인스턴스 경량화 - 데이터베이스 분리, web/was 분리 → 3 Tier 구축
      • 기본 보안 및 모니터링
    • 비용 효율적인 구성

    [아키텍처 구성]

    • 단일 퍼블릭 서브넷 → Public과 Private으로 분리함으로써 외부 사용자가 접근하는 네트워크와 데이터가 저장된 네트워크를 나눈다.
    • 인스턴스 경량화를 위해 WEB/WAS 역할을 하는 인스턴스와 DB 역할을 하는 인스턴스를 분리한다.
    • 사용자는 Route53이라고 하는 DNS서비스를 통해 Public IP를 찾아서 AWS VPC 안에 구성된 인스턴스와 연결하여 서비스를 이용한다.
    • 퍼블릭 서브넷에 있는 탄력적 ip 가 사용되는 Instance는 Web과 WAS 역할을 하고 프라이빗 서브넷에 있는 인스턴스는 데이터베이스 역할을 한다.
    • 기본 모니터링
      • CloudWatch를 통한 리소스 메트릭 및 로그 모니터링
      • 자동 대시보드 생성, 임계치 초과 알람(Slack 연결)
        • 2계층 구성
      • 인스턴스 경량화 - 3tier 분리 구축
        • public subnet
          • web server
        • private subnet
          • was
          • db

    따라서, 최종적으로는 위와 같은 간단한 아키텍처를 구상해볼 수 있다.

    사용자가 1000명인 경우

    여전히 소규모 서비스이기는 하지만 사용자와 트래픽 증가에 대한 대비를 미리 해보자!

    → 고 가용성에 집중을 하자

    [ 아키텍처 설계 ]

    1. HA(고가용성)을 위한 방안

    • 이중화
    • 다중 가용영역 (Multi -AZ)
      서비스를 보다 안전하게 구성하려면 1개 이상의 가용 영역을 사용해야 한다.
      단일 인스턴스, 단일 데이터베이스 개수를 늘리는 Scale Out
      • 인스턴스 개수가 여러 개일 때 트래픽을 어떻게 처리할까? → 인스턴스 앞 단에서 사용자 트래픽을 받아서 각 인스턴스에게 분배해줘야 한다.
      • ELB를 사용함으로써 트래픽을 받아 부하를 분산시키고 가용성을 높여줄 수 있다.
    • ELB를 이용한 수평적 확장

    2. 트래픽 분산

    • 트래픽 분산 대상
      1. EC2 인스턴스
      2. 컨테이너
      3. IP 주소
    • 다중 가용 영역 지원
    • 자동으로 용량 확장
    • 오토 스케일 그룹 지원(자동으로 인스턴스를 ELB에 등록하고 제외)
    • ELB Service
      • ALB(Application Load Balancer)
        • 고가용성, 자동확장
        • L7기반 로드 밸런서
        • 컨텐츠 기반 라우팅
        • HTTP, HTTPS, HTTP/2 지원
        • 헬스 체크
        • 세션 유지
        • 모니터링/로깅

    트러블 슈팅

    WEB 구축 중 프리티어 스펙을 가용영역 b2에서 사용할 수 없음을 몰랐다

    ALB

    WAF 설정

    'Cloud > AWS' 카테고리의 다른 글

    SAA 합격 후기  (0) 2024.03.22
    [AWS 세션] EKS IRSA 와 Lambda Serverless  (0) 2023.11.27
    [SAA] EC2 인스턴스 스토리지  (0) 2023.10.07

    댓글