AWS를 이용한 서버 운영
2013. 07. 12.
최재영
AWS 소개
Chapter 1.
2
• Cloud & AWS
• EC2, S3, CloudFront, RDS
• Server Limits
• Pricing
• Console & SDK
AWS?
• Amazon Web Service
• Cloud computing
3
http://aws.amazon.com/
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/
AWS Game hosting
5
http://aws.amazon.com/ko/game-hosting/
낮은 비용
클라우드 리소스 종량 과금제
확장 가능
몇 분만에 가상 머신 추가
빠른 배포 시간
하드웨어 도착을 기다릴 필요 없이 바로 배포
고가용성
안정성이 높은 서비스와 내결함성이 우수한 여러 가용 영역
Region & AZ
• 하나의 지리적 구역에 있는 가용 영역
• 독립된 전력망, 네트워크를 갖춤
• 지역에 따라 사용 금액이 다르고,
네트워크 반응성 차이가 있음
• 한 지역(Region)에는
여러 가용 구역(Available Zone)을 갖음
6
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
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
CloudFront
• Web service for content delivery
• S3 bucket으로 CloudFront Distribution 생성
• 변경된 S3 bucket object가 반영되려면 시간이 필요함(동기화 주기)
혹은 직접 invalidation 수행. edge location 동기화 완료 예측 어려움
• 데이터 전송 비용이 S3에 비해 저렴
9
RDS (Relational Database Service)
• 관계형 데이터베이스를 Cloud service로 제공
• MSSQL, MySQL, Oracle을 지원함
• Scaling Up(upgrade instance) & Out(sharding, replica)
10
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/
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
Pricing (Example)
• Game Server (EC2, RDS)
– Windows EC2 M1 Extra Large (8ECUs, 15GiB MEM) $0.7/h → $504
– MSSQL Large Instance (4ECUs, 7.5GiB MEM) $1.167/h → $840
– Network (Out) 1MiB/s = 2.6TiB/month → $520
• CDN (S3, CloudFront)
– 1GB (Client) $0.1/GB → $0.1
– 10TB (10,000 Download) $0.137/GB → $1,370
• CloudFront (Korea) $0.120/GB → $1,200
13
http://aws.amazon.com/ko/pricing/
Charges
• 사용한 자원에 따른 요금
14
https://portal.aws.amazon.com/gp/aws/developer/account/index.html
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/
http://aws.amazon.com/ko/console/
AWS Management Console
• Web interface의 Management Console
16
.NET AWS SDK
• AWS API에 대한 .NET Wrapper
• AWS Explorer
17
http://aws.amazon.com/ko/sdkfornet/
게임 서버 운영
Chapter 2.
18
• Step by Step
• Cloud Design Pattern
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
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 구동 및 빠른 서버 확장
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로부터 다운로드 해야 함
운영 패턴
• 준비된 AMI로 Instance 생성 및 서버 구동 후 Elastic IP 연결
• 동기화할 데이터가 있다면 EBS로 구성하고, 장애 서버의 EBS를 분리한
후 새 서버에 연결해서 사용
• 더 높은 사양의 Instance에서 서버 구동 후 Elastic IP 연결 (Scale Up)
• 추가 Instance 구동 후 (Scale Out) 처리 분산 (ELB)
22
Floating IP
• 서버 패치, 장애 복구, 업그레이드 작업 등을 처리할 때 정지 시간 최소화
• EIP 변경이므로 DNS의 TTL에 영향을 주지 않고 바로 변경 가능
23
Route 53
Elastic IP
EC2 EC2
IP 교체서버 장애
(1) (2)
Server Swapping
• 새 Instance에 기존 가상 디스크(EBS)를 연결하여 장애 복구
• EBS 장애를 고려하여 snapshot 백업도 필요
24
EC2 EC2
EBS를 새로운
EC2에 장착
EC2 장애
Amazon EBS
AMI
동일한 AMI에서
EM2 가동
(1)
(3)
(2)
Scale up / down
• 서버 자원에 맞는 Instance 변경
25
EC2
EC2
Change Instance Type
EC2
small
micro
xlarge
Scale out / in
• 로드 밸런서를 사용해 트래픽 양에 따라 가상 서버 수를 동적으로 변경
• 갑작스런 트래픽 변동은 대응하기 어려움
26
EC2 EC2
감사
AMI
(1)
Auto scaling Group
EC2
ELB
CloudWatch
Alarm Auto Scaling
설정 조건으로
알람 가동
(2)
통지
(3)
서버 가동
(4)
Scheduled Scale out
• 트래픽이 급증하는 시간을 알 경우 사전에 Scale out을 수행
• 트래픽이 떨어지는 시간대를 지정하여 Scale in을 수행
27
EC2 EC2
AMI
Auto scaling Group
EC2ELB
Auto Scaling
정해진 시각에
가동 지시
참고
• AWS 한국 사용자 모임
https://www.facebook.com/groups/189675924467773/
• 아마존 웹 서비스 완벽 활용법, 위키북스
• 아마존 웹 서비스 클라우드 디자인 패턴 설계 가이드, JPub
28
EOF
29
:)

AWS GameServer Management

  • 1.
    AWS를 이용한 서버운영 2013. 07. 12. 최재영
  • 2.
    AWS 소개 Chapter 1. 2 •Cloud & AWS • EC2, S3, CloudFront, RDS • Server Limits • Pricing • Console & SDK
  • 3.
    AWS? • Amazon WebService • Cloud computing 3 http://aws.amazon.com/
  • 4.
    Cloud computing? • theon-demand delivery of IT resources via the Internet with pay- as-you-go pricing 4 http://aws.amazon.com/what-is-cloud-computing/
  • 5.
    AWS Game hosting 5 http://aws.amazon.com/ko/game-hosting/ 낮은비용 클라우드 리소스 종량 과금제 확장 가능 몇 분만에 가상 머신 추가 빠른 배포 시간 하드웨어 도착을 기다릴 필요 없이 바로 배포 고가용성 안정성이 높은 서비스와 내결함성이 우수한 여러 가용 영역
  • 6.
    Region & AZ •하나의 지리적 구역에 있는 가용 영역 • 독립된 전력망, 네트워크를 갖춤 • 지역에 따라 사용 금액이 다르고, 네트워크 반응성 차이가 있음 • 한 지역(Region)에는 여러 가용 구역(Available Zone)을 갖음 6
  • 7.
    EC2 (Elastic ComputeCloud) • Virtual servers in the Cloud • AMI(Amazon Machine Instance)를 실행하는 서버 인스턴스 가동 • EBS(Elastic Block Storage) 사용, EIP(Elasic IP) 부여 • EIP 미설정 시 서버 재시작마다 Public/Private DNS가 변경됨 7
  • 8.
    S3 (Simple StorageService) • 내고장성(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 servicefor content delivery • S3 bucket으로 CloudFront Distribution 생성 • 변경된 S3 bucket object가 반영되려면 시간이 필요함(동기화 주기) 혹은 직접 invalidation 수행. edge location 동기화 완료 예측 어려움 • 데이터 전송 비용이 S3에 비해 저렴 9
  • 10.
    RDS (Relational DatabaseService) • 관계형 데이터베이스를 Cloud service로 제공 • MSSQL, MySQL, Oracle을 지원함 • Scaling Up(upgrade instance) & Out(sharding, replica) 10
  • 11.
    Service Limits • EC2on-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
  • 13.
    Pricing (Example) • GameServer (EC2, RDS) – Windows EC2 M1 Extra Large (8ECUs, 15GiB MEM) $0.7/h → $504 – MSSQL Large Instance (4ECUs, 7.5GiB MEM) $1.167/h → $840 – Network (Out) 1MiB/s = 2.6TiB/month → $520 • CDN (S3, CloudFront) – 1GB (Client) $0.1/GB → $0.1 – 10TB (10,000 Download) $0.137/GB → $1,370 • CloudFront (Korea) $0.120/GB → $1,200 13 http://aws.amazon.com/ko/pricing/
  • 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/
  • 16.
  • 17.
    .NET AWS SDK •AWS API에 대한 .NET Wrapper • AWS Explorer 17 http://aws.amazon.com/ko/sdkfornet/
  • 18.
    게임 서버 운영 Chapter2. 18 • Step by Step • Cloud Design Pattern
  • 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
  • 29.