프로젝트 목록

2026.01 ~ 2026.02 · 클라우드스퀘어 인턴십 1차 과제 · 개인 과제

방명록 서비스 NCP 3-Tier 구축

WEB · WAS · DB를 나누고 이중화해, 서버 1대가 죽어도 끊기지 않는 서비스를 Terraform으로 구축

Stack

NCP
VPCApplication Load BalancerAuto ScalingCloud DB for PostgreSQLObject StorageGlobal CDNKMSNAT GatewayACG
IaC · CI/CD
TerraformGitHub Actions
운영
Cloud InsightWeb Service Monitoring SystemGrafanaPrometheusBackupSlack Webhook
01

내 역할

아키텍처 설계
WEB · WAS · DB를 Public / Private Subnet으로 나누고, WEB · WAS를 각 2대로 이중화한 뒤 외부 · 내부 Load Balancer와 Auto Scaling을 붙이는 구조를 설계
보안
DB를 Private Subnet에 격리하고 ACG로 필요한 포트 · 출처만 허용해 외부에서 직접 접근할 수 없게 구성
IaC
VPC, Subnet 6개, NAT, Load Balancer, ACG 등 리소스 42개를 Terraform 코드로 작성
CI/CD
GitHub Actions로 main 브랜치에 push하면 Bastion을 거쳐 Private 서버까지 자동 배포되는 파이프라인 구성
성능 측정
Object Storage 앞에 Global CDN을 적용하고, 동시 50명 · 총 500회 요청으로 전후를 비교해 처리량 +11%, 평균 응답 138 → 124ms 확인
모니터링 · 장애 검증
Grafana · Slack · Email 알림을 연결하고, CPU 100% 부하 · 서버 장애 · 파일 삭제를 직접 일으켜 Auto Scaling, 자동 절체, 백업 복원이 동작하는지 확인
발표
설계 근거, 측정 결과, 장애 검증 과정을 정리해 발표
02

아키텍처

외부·내부 ALB 뒤에 WEB·WAS 각 2대, 정적 파일은 Object Storage + Global CDN
  • WEB · WAS를 각 2대로 이중화하고 외부 · 내부 Load Balancer와 Auto Scaling을 붙여, 서버 1대가 죽어도 서비스가 끊기지 않게 했다.
  • DB는 Private Subnet에 두고 ACG로 필요한 포트 · 출처만 열어 외부에서 직접 접근할 수 없게 했다.
  • VPC, Subnet 6개, NAT, LB, ACG 등 리소스 42개를 Terraform으로 코드화했다.
  • GitHub Actions로 main 브랜치 push 시 Bastion을 거쳐 Private 서버까지 자동 배포되도록 구성했다.
03

Global CDN 적용 효과 측정

  • 이미지 요청이 WEB 서버와 스토리지에 몰리는 것을 줄이려고 Object Storage 앞에 Global CDN을 붙였다.
  • 동시 50명 · 총 500회 요청으로 적용 전후를 비교해 처리량 360 → 400 req/s(+11%), 평균 응답 138 → 124ms를 확인했다.
04

장애 시나리오 검증

  • CPU 100% 부하 → Auto Scaling으로 서버 증설, Grafana가 감지해 Slack · Email 알림 발송
  • 서버 장애 → Load Balancer가 남은 서버로 자동 절체
  • 파일 삭제 → Backup(일 증분 + 주간 전체)에서 특정 파일 복원