AWS 클라우드 디자인 패턴 완전정리 📚¶
🎯 목표: 쉽게 이해할 수 있는 AWS 클라우드 패턴 가이드
📖 목차¶
AWS 클라우드란 무엇인가? 🌩️¶
📍 비유로 이해하기¶
- 전통적인 방식: 집에 발전기를 직접 설치하는 것
- 클라우드 방식: 한국전력에서 전기를 가져다 쓰는 것
💡 AWS의 핵심 장점¶
- 필요할 때만 사용: 전기처럼 쓴 만큼만 돈을 냄
- 언제든 확장 가능: 갑자기 전력이 더 필요하면 바로 증설 가능
- 관리 불필요: 발전소 관리는 한국전력이 알아서 해줌
6가지 핵심 디자인 패턴 🏗️¶
1️⃣ 이벤트 사이트 (단순한 웹사이트)¶
💡 언제 사용?: 한 달 한정 이벤트 페이지, 개인 블로그 등
🏗️ 아키텍처 구조¶
graph TB
User[👤 사용자] --> Internet[🌐 인터넷]
Internet --> Route53[📍 Route 53<br/>DNS 서비스]
Route53 --> IGW[🚪 인터넷 게이트웨이]
IGW --> VPC[🏠 VPC<br/>가상 네트워크]
subgraph VPC
EC2[💻 EC2<br/>웹서버<br/>LAMP 스택]
EC2 --> EBS[💾 EBS<br/>하드디스크]
end
style User fill:#e1f5fe
style EC2 fill:#fff3e0
style EBS fill:#f3e5f5
📦 사용 서비스 설명¶
# EC2 (Elastic Compute Cloud): 가상 컴퓨터
# - 마치 컴퓨터를 빌려 쓰는 것
# - 리눅스나 윈도우 선택 가능
# EBS (Elastic Block Store): 가상 하드디스크
# - EC2에 연결해서 파일 저장
# Route 53: 도메인 네임 서비스
# - www.example.com → IP주소 변환
# - 전화번호부 같은 역할
# VPC (Virtual Private Cloud): 가상 네트워크
# - 내 전용 네트워크 공간
# - 집의 인터넷 공유기 같은 역할
💰 비용 예상 (서울 리전 기준)¶
- EC2 t3.micro: 월 약 1만원
- EBS 8GB: 월 약 1천원
- 총 예상: 월 1.5만원 내외
2️⃣ 기업 웹사이트 (안정적이고 빠른 웹사이트)¶
💡 언제 사용?: 회사 홈페이지, 온라인 쇼핑몰 등
🏗️ 아키텍처 구조¶
graph TB
Users[👥 사용자들] --> CloudFront[⚡ CloudFront<br/>CDN - 전 세계 캐시]
CloudFront --> ALB[⚖️ Application Load Balancer<br/>트래픽 분산]
ALB --> EC2-1[💻 EC2 서버 1<br/>웹 애플리케이션]
ALB --> EC2-2[💻 EC2 서버 2<br/>웹 애플리케이션]
EC2-1 --> RDS-Master[🗄️ RDS 마스터<br/>메인 데이터베이스]
EC2-2 --> RDS-Master
RDS-Master --> RDS-Slave[🗄️ RDS 슬레이브<br/>백업 데이터베이스]
CloudFront --> S3[🪣 S3<br/>이미지, CSS, JS 파일]
style Users fill:#e1f5fe
style CloudFront fill:#e8f5e8
style ALB fill:#fff3e0
style RDS-Master fill:#ffebee
style S3 fill:#f3e5f5
📦 주요 서비스 역할¶
# CloudFront (CDN): 전 세계 캐시 서버
# - 한국 사용자 → 서울 캐시에서 빠르게 제공
# - 미국 사용자 → 버지니아 캐시에서 제공
# Load Balancer: 트래픽 분산기
# - 마치 톨게이트에서 차량을 여러 차선으로 분산
# - 서버 1대가 고장나도 다른 서버가 계속 서비스
# RDS (Relational Database Service): 관리형 데이터베이스
# - MySQL, PostgreSQL 등을 AWS가 관리
# - 백업, 업데이트를 자동으로 해줌
# S3 (Simple Storage Service): 파일 저장소
# - 이미지, 동영상, CSS, JS 파일 저장
# - 용량 제한이 거의 없음
💰 비용 예상 (월 기준)¶
- EC2 t3.medium × 2: 월 약 12만원
- RDS: 월 약 8만원
- CloudFront: 월 약 2만원
- 총 예상: 월 25만원 내외
3️⃣ 성능 중심 인트라넷 (회사 내부 시스템)¶
💡 언제 사용?: 회계시스템, 급여시스템, ERP 등
🏗️ 아키텍처 구조¶
graph TB
subgraph "회사 내부망"
Staff[👨💼 직원들]
end
Staff --> DirectConnect[🔗 Direct Connect<br/>전용선 연결]
DirectConnect --> ALB[⚖️ Load Balancer]
subgraph "Auto Scaling Group"
ALB --> EC2-1[💻 EC2 서버 1]
ALB --> EC2-2[💻 EC2 서버 2]
ALB --> EC2-3[💻 EC2 서버 3<br/>자동 생성/삭제]
end
EC2-1 --> ElastiCache[⚡ ElastiCache<br/>빠른 임시 저장소<br/>Redis/Memcached]
EC2-2 --> ElastiCache
EC2-3 --> ElastiCache
EC2-1 --> Aurora[🚀 Aurora<br/>고성능 데이터베이스]
EC2-2 --> Aurora
EC2-3 --> Aurora
CloudWatch[📊 CloudWatch<br/>모니터링] --> ALB
CloudWatch --> EC2-1
CloudWatch --> EC2-2
CloudWatch --> EC2-3
style Staff fill:#e1f5fe
style ElastiCache fill:#e8f5e8
style Aurora fill:#ffebee
style CloudWatch fill:#fff3e0
📦 고성능을 위한 핵심 기술¶
# Auto Scaling: 자동 서버 증설/축소
# - 점심시간에 사용자 많아지면 서버 자동 증설
# - 야간에는 서버 자동 축소로 비용 절약
# ElastiCache: 초고속 임시 저장소
# - 자주 사용하는 데이터를 메모리에 저장
# - 데이터베이스보다 100배 빠름
# Aurora: AWS 전용 고성능 데이터베이스
# - 기존 MySQL보다 5배 빠름
# - 자동 백업, 자동 복구 기능
# Direct Connect: 전용선
# - 회사와 AWS를 직접 연결하는 전용선
# - 인터넷보다 빠르고 안정적
4️⃣ 백업 시스템 (데이터 보호)¶
💡 언제 사용?: 중요한 데이터의 안전한 보관
🏗️ 아키텍처 구조¶
graph LR
subgraph "회사 데이터센터"
FileServer[📁 파일 서버]
DBServer[🗄️ 데이터베이스 서버]
WebServer[🌐 웹 서버]
end
subgraph "AWS 백업 저장소"
S3[🪣 S3<br/>일반 백업]
Glacier[🧊 S3 Glacier<br/>장기 보관<br/>저렴한 비용]
S3 --> Glacier
end
FileServer -->|자동 백업| S3
DBServer -->|스냅샷| S3
WebServer -->|로그 파일| S3
StorageGateway[🚪 Storage Gateway<br/>온프레미스-클라우드 연결] --> S3
FileServer --> StorageGateway
style S3 fill:#f3e5f5
style Glacier fill:#e1f5fe
style StorageGateway fill:#e8f5e8
📦 백업 전략¶
# S3: 기본 백업 저장소
# - 99.999999999% (11 9s) 내구성
# - 데이터가 절대 손실되지 않음
# S3 Glacier: 장기 보관용
# - S3보다 80% 저렴
# - 복구에 몇 시간 소요 (비상시에만 사용)
# 백업 자동화 스크립트 예시:
# #!/bin/bash
# aws s3 sync /home/data s3://my-backup-bucket/daily/
# aws rds create-db-snapshot --source-db-identifier mydb
5️⃣ 빠른 개발 환경 (CI/CD)¶
💡 언제 사용?: 게임 개발, 앱 개발 스타트업
🏗️ 아키텍처 구조¶
graph TD
Dev[👨💻 개발자] --> GitHub[📂 GitHub<br/>코드 저장소]
GitHub --> CodePipeline[🔄 CodePipeline<br/>자동화 파이프라인]
subgraph "CI/CD 프로세스"
CodePipeline --> CodeBuild[🔨 CodeBuild<br/>코드 빌드 & 테스트]
CodeBuild --> ECR[📦 ECR<br/>도커 이미지 저장소]
ECR --> ECS[🐳 ECS<br/>컨테이너 실행]
end
subgraph "ECS 클러스터"
ECS --> Container1[📦 컨테이너 1<br/>게임 서버 A]
ECS --> Container2[📦 컨테이너 2<br/>게임 서버 B]
ECS --> Container3[📦 컨테이너 3<br/>게임 서버 C]
end
ALB[⚖️ Load Balancer] --> Container1
ALB --> Container2
ALB --> Container3
Users[🎮 게임 유저들] --> ALB
style GitHub fill:#f0f0f0
style CodePipeline fill:#e8f5e8
style ECS fill:#fff3e0
style Users fill:#e1f5fe
📦 개발 자동화 과정¶
# 1단계: 개발자가 코드 커밋
git add .
git commit -m "새로운 기능 추가"
git push origin main
# 2단계: CodePipeline이 자동으로 감지
# → CodeBuild에서 자동 빌드 및 테스트 실행
# 3단계: 테스트 통과 시 도커 이미지 생성
docker build -t my-game-server .
docker push my-ecr-repo/game-server:latest
# 4단계: ECS에서 무중단 배포 (Blue-Green)
# → 새 컨테이너 생성 → 테스트 → 기존 컨테이너 교체
💡 컨테이너의 장점¶
- 표준화: 개발 환경과 운영 환경이 동일
- 효율성: 하나의 서버에 여러 게임 서비스 동시 운영
- 빠른 배포: 몇 초 만에 새 버전 배포 가능
6️⃣ 서버리스 시스템 (서버 관리 없는 시스템)¶
💡 언제 사용?: 신규 서비스, 이벤트성 웹사이트
🏗️ 아키텍처 구조¶
graph TB
Users[👥 사용자] --> CloudFront[⚡ CloudFront<br/>CDN]
CloudFront --> S3Web[🌐 S3 정적 웹호스팅<br/>HTML, CSS, JS]
Users --> APIGateway[🚪 API Gateway<br/>API 관리]
APIGateway --> Lambda1[⚡ Lambda 함수 1<br/>사용자 로그인]
APIGateway --> Lambda2[⚡ Lambda 함수 2<br/>데이터 조회]
APIGateway --> Lambda3[⚡ Lambda 함수 3<br/>결제 처리]
Lambda1 --> DynamoDB[🗄️ DynamoDB<br/>NoSQL 데이터베이스]
Lambda2 --> DynamoDB
Lambda3 --> DynamoDB
Lambda1 --> RDS[🗄️ RDS<br/>관계형 데이터베이스]
Lambda2 --> RDS
style Users fill:#e1f5fe
style Lambda1 fill:#fff3e0
style Lambda2 fill:#fff3e0
style Lambda3 fill:#fff3e0
style DynamoDB fill:#f3e5f5
📦 서버리스의 핵심 개념¶
// Lambda 함수 예시 (Node.js)
exports.handler = async (event) => {
// API Gateway에서 요청을 받음
const userId = event.pathParameters.userId;
// DynamoDB에서 사용자 정보 조회
const user = await dynamodb.get({
TableName: 'Users',
Key: { userId: userId }
}).promise();
// 응답 반환
return {
statusCode: 200,
body: JSON.stringify(user.Item)
};
};
💰 비용 효율성¶
# 기존 서버 방식: 24시간 서버 가동 = 월 10만원
# 서버리스 방식: 요청 있을 때만 실행 = 월 1만원
# Lambda 요금 계산:
# - 월 100만 요청: 무료
# - 실행 시간: 100만 GB-초까지 무료
# → 소규모 서비스는 거의 무료!
실제 기업 사례 🏢¶
🎬 넷플릭스 (Netflix)¶
- 마이그레이션 기간: 2008년 → 2016년 (8년)
- 전환 규모: 수천 대 서버 → 100% 클라우드
- 핵심 성과:
- 전 세계 2억 사용자 서비스 안정화
- 하루 수백 번의 배포 가능
- 99.99% 가용성 달성
timeline
title 넷플릭스 AWS 마이그레이션 여정
2008 : 데이터센터 장애 발생
: 클라우드 검토 시작
2009 : 백엔드 시스템 일부 이전
2012 : 추천 시스템 클라우드 이전
2014 : 대부분 서비스 AWS 운영
2016 : 100% 클라우드 전환 완료
: 마지막 데이터센터 폐쇄
🏭 삼성전자¶
- 대상 시스템: SAP ERP, HANA 데이터베이스
- 핵심 성과:
- 분석 리포트 속도 3배 향상
- 장애 복구 시간: 수 시간 → 수 분
- 글로벌 법인 지원 체계 개선
📱 LG전자 (ThinQ 플랫폼)¶
- 전환 대상: IoT 플랫폼 (1,000대 서버)
- 핵심 성과:
- 운영 비용 80% 절감
- 개발자 인프라 관리 부담 해소
- 전 세계 스마트 가전 연결 서비스
현업에서 자주 사용하는 패턴 ⭐¶
🥇 1위: 3-Tier 웹 아키텍처 (기업 웹사이트 패턴)¶
graph TB
subgraph "Presentation Tier"
CloudFront[CDN + S3]
end
subgraph "Application Tier"
ALB[Load Balancer]
EC2[EC2 Auto Scaling]
end
subgraph "Data Tier"
RDS[(RDS Database)]
ElastiCache[(Cache)]
end
Users --> CloudFront
Users --> ALB
ALB --> EC2
EC2 --> RDS
EC2 --> ElastiCache
🎯 사용 빈도: 90% 💡 이유: 대부분의 웹서비스에 적용 가능한 범용 패턴
🥈 2위: 마이크로서비스 + 컨테이너 패턴¶
graph TB
API[API Gateway] --> Service1[User Service<br/>Container]
API --> Service2[Order Service<br/>Container]
API --> Service3[Payment Service<br/>Container]
Service1 --> DB1[(User DB)]
Service2 --> DB2[(Order DB)]
Service3 --> DB3[(Payment DB)]
🎯 사용 빈도: 70% 💡 이유: 대규모 서비스 개발에 필수
🥉 3위: 서버리스 패턴¶
🎯 사용 빈도: 50% 💡 이유: 신규 서비스, 이벤트성 서비스에 적합
AWS 기반 접근 방법 🛠️¶
🎯 단계별 접근 전략¶
1단계: 학습 및 실습 (1-2개월)¶
# AWS 무료 계정 생성
aws configure # CLI 설정
# 기본 서비스 실습
# - EC2 인스턴스 생성/종료
# - S3 버킷 생성/파일 업로드
# - RDS 데이터베이스 연결
2단계: 간단한 프로젝트 구현 (1개월)¶
- 이벤트 사이트 패턴 구현
- 정적 웹사이트 배포 (S3 + CloudFront)
- 간단한 REST API (Lambda + API Gateway)
3단계: 실무 프로젝트 적용 (2-3개월)¶
- 3-Tier 아키텍처 구현
- CI/CD 파이프라인 구축
- 모니터링 및 로깅 설정
💡 학습 순서 추천¶
- EC2, S3 (기본 컴퓨팅과 스토리지)
- VPC, Security Groups (네트워크와 보안)
- RDS, DynamoDB (데이터베이스)
- Lambda, API Gateway (서버리스)
- CloudFormation (인프라 자동화)
- ECS, EKS (컨테이너)
📚 추천 학습 자료¶
- AWS 공식 문서: https://docs.aws.amazon.com/
- AWS Training: https://aws.amazon.com/training/
- AWS 아키텍처 센터: https://aws.amazon.com/architecture/
- 실습 예제: AWS Well-Architected Framework
마무리 정리 📝¶
✅ 핵심 포인트¶
- 단순함에서 시작: 이벤트 사이트 → 기업 웹사이트 → 고성능 시스템 순서로 학습
- 비용 관리가 중요: 태깅, 예산 알림, 예약 인스턴스 활용
- 보안 우선: IAM, 암호화, 모니터링을 처음부터 고려
- 자동화 필수: Infrastructure as Code, CI/CD 파이프라인 구축
🚀 실무 적용 팁¶
- 작게 시작하기: 핵심 기능부터 클라우드로 이전
- 점진적 확장: 트래픽 증가에 따라 서비스 확장
- 모니터링 강화: CloudWatch, 비용 분석 대시보드 활용
- 팀 역량 강화: AWS 교육, 자격증 취득 권장
💡 기억하세요: 클라우드는 기술이 아닌 비즈니스 전략입니다!
📞 도움이 필요하다면?¶
- AWS Support: 기술 지원 및 컨설팅
- AWS 파트너: 구축 및 운영 지원
- 커뮤니티: AWSKRUG, Stack Overflow 활용