4. Cloud computing?
• the on-demand delivery of IT resources via the Internet with pay-
as-you-go pricing
4
http://aws.amazon.com/what-is-cloud-computing/
6. Region & AZ
• 하나의 지리적 구역에 있는 가용 영역
• 독립된 전력망, 네트워크를 갖춤
• 지역에 따라 사용 금액이 다르고,
네트워크 반응성 차이가 있음
• 한 지역(Region)에는
여러 가용 구역(Available Zone)을 갖음
6
7. EC2 (Elastic Compute Cloud)
• Virtual servers in the Cloud
• AMI(Amazon Machine Instance)를 실행하는 서버 인스턴스 가동
• EBS(Elastic Block Storage) 사용, EIP(Elasic IP) 부여
• EIP 미설정 시 서버 재시작마다 Public/Private DNS가 변경됨
7
8. S3 (Simple Storage Service)
• 내고장성(fault-tolerant) 데이터 저장소
• bucket 내 object로 파일 관리 (folder 개념 없음)
– Console이나 Toolkit마다 Folder를 emulation 해줌 (_$FOLDER$_)
• ACL을 통한 permission 부여
• 데이터 전송 부담이 EC2에 비해 낮음 (비용은 동일)
• EC2와의 데이터 전송 비용은 없음
8
http://lzclient.s3-ap-northeast-1.amazonaws.com/UpdateHistory.txt
bucket object
9. CloudFront
• Web service for content delivery
• S3 bucket으로 CloudFront Distribution 생성
• 변경된 S3 bucket object가 반영되려면 시간이 필요함(동기화 주기)
혹은 직접 invalidation 수행. edge location 동기화 완료 예측 어려움
• 데이터 전송 비용이 S3에 비해 저렴
9
11. Service Limits
• EC2 on-demand instances (보통) 20개
• EC2 spot instances 100개
• Elastic IP Address 5개
• RDS 40개
• VPC는 별도
• 한도 증가 요청 시 업무일 2-3일 소요
11
http://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html
http://aws.amazon.com/ko/ec2/faqs/#How_many_instances_can_I_run_in_Amazon_EC2
https://aws.amazon.com/ko/contact-us/ec2-request/
https://aws.amazon.com/ko/contact-us/eip_limit_request/
12. Pricing
• CPU 사용 시간(%/sec), 전송 데이터 양(GB/s), 월간 데이터 스토리지(GB/s)
• Oregon보다 Tokyo가 더 비쌈
• EC2 Windows가 Linux보다 비쌈
• S3 PUT, COPY, POST, LIST 요청에도 요금이 부과됨
• CloudFront HTTP보다 HTTPS가 더 비쌈
12
http://aws.amazon.com/ko/pricing/
EC2
CloudFront
14. Charges
• 사용한 자원에 따른 요금
14
https://portal.aws.amazon.com/gp/aws/developer/account/index.html
15. Free tier
• 신규 AWS 고객 첫 12개월 대상으로 적용
• EC2
– Linux/Unix/RHEL/Windows Micro instance 매달 750시간 무료
• S3
– 5GB, GET 20,000건, PUT 2,000건 무료
• RDS
– MSSQL Express Edition Micro instance 20GB, 매달 750시간 무료
15
http://aws.amazon.com/ko/free/
19. Game Hosting!
• EC2를 사용한 게임 서버 운영
• 바이너리 배포를 위한 S3/CloudFront 사용
• RDS/DynamoDB를 사용한 데이터 저장
19
Auto scaling Group
Availability Zone #1
Logs
EC2 Instance
Game
Server
CloudFront
Distribution
MSSQL
Instance
DynamoDB
Elastic Load
Balancing
Game Data
EC2 Instance
Game
Server
AMI
Game Client
Packages
Upload
Download
Amazon
S3 Bucket
20. Step 1. 서버 구동
1) 적절한 OS를 선택하여 Instance 생성
2) 필요한 프로그램 설치 (.NET Framework 나 mono 등)
3) 기타 환경 설정 (필요에 따라 EBS mount)
4) AMI 생성
5) 서버 바이너리 업로드
6) 서버 구동
7) Elastic IP 부여
20
장애 발생 시 해당 Instance에서 EBS 분리
새 Instance에 mount한 뒤 대응 서버 구동
새 Instance 구동 준비 노력 절감
빠른 장애 대응 Instance 구동 및 빠른 서버 확장
21. Step 2. CDN 구축
1) S3 Bucket 생성
2) AWS API 등을 사용하여 배포 파일 업로드
3) S3를 CloudFront에 Distribution
4) CloudFront 전달 위해 Invalidation
5) Launcher는 CloudFront 혹은 S3로부터 다운로드
21
언제 edge location으로 전달될지 모름
CloudFront의 Invalidation이 InProgress 상태이면
최신 내용이 아니라는 것이므로 S3로부터 다운로드 해야 함
22. 운영 패턴
• 준비된 AMI로 Instance 생성 및 서버 구동 후 Elastic IP 연결
• 동기화할 데이터가 있다면 EBS로 구성하고, 장애 서버의 EBS를 분리한
후 새 서버에 연결해서 사용
• 더 높은 사양의 Instance에서 서버 구동 후 Elastic IP 연결 (Scale Up)
• 추가 Instance 구동 후 (Scale Out) 처리 분산 (ELB)
22
23. Floating IP
• 서버 패치, 장애 복구, 업그레이드 작업 등을 처리할 때 정지 시간 최소화
• EIP 변경이므로 DNS의 TTL에 영향을 주지 않고 바로 변경 가능
23
Route 53
Elastic IP
EC2 EC2
IP 교체서버 장애
(1) (2)
24. Server Swapping
• 새 Instance에 기존 가상 디스크(EBS)를 연결하여 장애 복구
• EBS 장애를 고려하여 snapshot 백업도 필요
24
EC2 EC2
EBS를 새로운
EC2에 장착
EC2 장애
Amazon EBS
AMI
동일한 AMI에서
EM2 가동
(1)
(3)
(2)
25. Scale up / down
• 서버 자원에 맞는 Instance 변경
25
EC2
EC2
Change Instance Type
EC2
small
micro
xlarge
26. Scale out / in
• 로드 밸런서를 사용해 트래픽 양에 따라 가상 서버 수를 동적으로 변경
• 갑작스런 트래픽 변동은 대응하기 어려움
26
EC2 EC2
감사
AMI
(1)
Auto scaling Group
EC2
ELB
CloudWatch
Alarm Auto Scaling
설정 조건으로
알람 가동
(2)
통지
(3)
서버 가동
(4)
27. Scheduled Scale out
• 트래픽이 급증하는 시간을 알 경우 사전에 Scale out을 수행
• 트래픽이 떨어지는 시간대를 지정하여 Scale in을 수행
27
EC2 EC2
AMI
Auto scaling Group
EC2ELB
Auto Scaling
정해진 시각에
가동 지시
28. 참고
• AWS 한국 사용자 모임
https://www.facebook.com/groups/189675924467773/
• 아마존 웹 서비스 완벽 활용법, 위키북스
• 아마존 웹 서비스 클라우드 디자인 패턴 설계 가이드, JPub
28