Upload
amazon-web-services-korea
View
877
Download
11
Embed Size (px)
Citation preview
© 2016, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
이경안 매니저 (AWS), 이성수 CTO (MobilFactory), 최병주 차장 (Smilegate), 최양민 차장 (NZIN)
2016년 5월 17일
게임 고객 사례를 통해 살펴보는 AWS 활용 전략
MobilFactory / Smilegate / NZIN의 활용 사례
1. Gaming Intro
2. 고객 사례1 (MobilFactroy, 이성수 CTO)
- MobilFactory의 DynamoDB 활용 사례
3. 고객 사례 2 (스마일게이트, 최병주 차장)
- 스마일게이트의 AWS Elastic Beanstalk 및 Amazon Elasticsearch Service활용 사례
4. 고객 사례 3 (NZIN, 최양민 차장)
- NZIN의 AWS CloudFormation 활용 사례
5. 게임 개발과 운영, AWS와 함께하세요.
발표 순서
AWS Korea Game Reference
한국 Game Reference
MMORPG SOCIAL/CASUAL FPS/PC
Global Game Reference
Mobile PC/Console
왜 게임 고객들은 AWS에 열광할까요?
게임 산업의 벨류 체인에 맞춘 AWS (1/4)
기획 개발 배포 및 운영 해외 진출
서버 구성 및 운영
컨텐츠 배포 (업데이트) 및 글로벌 진출
게임 분석 / 빅데이터
게임 커뮤니티 (Social Platform)
게임 수익화
Gaming Workloads
개발
게임 산업의 벨류 체인에 맞춘 AWS (2/4)
기획 개발 배포 및 운영 해외 진출
Gaming Workloads
원 클릭 앱 개발
DevOps 리소스 관리
콘테이너 서비스
컴퓨팅VMs, Auto-scaling, Load Balancing, Containers, Cloud functions
스토리지Object, Blocks, File, Archival, Import/Export
데이터베이스Relational, NoSQL, Caching, Migration
네트워킹VPC, DX, DNS
글로벌 리전(Region)
콘텐츠 배포지점(Edges)
콘텐츠 배포(CDN)
데이터웨어하우스
Hadoop/Spark
머신 러닝
Elastic Search서비스
실시간 데이터분석
비지니스인텔리전스
Amazon GameLift
게임 산업의 벨류 체인에 맞춘 AWS (2/4)
기획 개발 배포 및 운영 해외 진출
Gaming Workloads
원 클릭 앱 개발
DevOps 리소스 관리
콘테이너 서비스
컴퓨팅VMs, Auto-scaling, Load Balancing, Containers, Cloud functions
스토리지Object, Blocks, File, Archival, Import/Export
데이터베이스Relational, NoSQL, Caching, Migration
네트워킹VPC, DX, DNS
글로벌 리전(Region)
콘텐츠 배포지점(Edges)
콘텐츠 배포(CDN)
데이터웨어하우스
Hadoop/Spark
머신 러닝
Elastic Search서비스
실시간 데이터분석
비지니스인텔리전스
Amazon GameLift
게임 산업의 벨류 체인에 맞춘 AWS (4/4)
기획 개발 배포 및 운영 해외 진출
Gaming Workloads
원 클릭 앱 개발
DevOps 리소스 관리
콘테이너 서비스
컴퓨팅VMs, Auto-scaling, Load Balancing, Containers, Cloud functions
스토리지Object, Blocks, File, Archival, Import/Export
데이터베이스Relational, NoSQL, Caching, Migration
네트워킹VPC, DX, DNS
글로벌 리전(Region)
콘텐츠 배포지점(Edges)
콘텐츠 배포(CDN)
데이터웨어하우스
Hadoop/Spark
머신 러닝
Elastic Search서비스
실시간 데이터분석
비지니스인텔리전스
Amazon GameLift
AWS 게임 고객 사례 발표
Managed DB - DynamoDB
배포 및 로그 수집 –AWS Elastic Beanstalk 및Amazon Elasticsearch Service
개발/서비스 환경 구축 자동화 -CloudFormation
MOBILFACTORY의 DynamoDB 활용 사례
이성수 CTO, MOBILFACTORY
• 모빌팩토리 및 마이리틀팜 소개
• 마이리틀팜 AWS Architecture
• 런칭 시 고민
• DynamoDB 활용
• DynamoDB 활용 시 유의 할 점
순서
모빌팩토리 소개
- 2012. 11 설립
- 마이리틀팜
- 슈팅히어로
- 소녀와디저트
마이리틀팜
마이리틀팜 소개
• 농장 시뮬레이션 게임
마이리틀팜 지표
- Download: 500K
- Google Play Ranking*
- 66th Top Grossing(Games)
- 4th Download (Games)
- 1st Download (Games)
(* 2016.2.2 ~ 3.31)
AWS Architecture (AP-northeast-2)
AWS Architecture (AP-northeast-2)
Main User Database : NoSQL
User {
Info {
Level, Exp, Cash, Gold, …
}
Facility {
Location, Producing, …
}
Storage {
Items, …
}
Information {
LastLoginTime, …
}
}
Main User Database : NoSQL
User {
Info {
Level, Exp, Cash, Gold, …
}
Facility {
Location, Producing, …
}
Storage {
Items, …
}
Information {
LastLoginTime, …
}
}
> 100KB
Main User Database : NoSQL
- Q. NoSQL DB서버부하는 어떻게 대응하나요?
Main User Database : NoSQL
- Q. NoSQL DB서버부하는 어떻게 대응하나요?
- A. 더 높은 단계의 instance를새로 올려서,
Data 를 Sync 하고기존 서버는 Failover 처리를 하면 됩니다.
Main User Database : NoSQL
- Q. Failover시 Downtime은 얼마나 발생하나요?
- Q. Sync 상태는 어떻게 파악하죠? 얼마나 걸릴까요?
- Q. Data Sync는 오류 나는 일이 없나요?
- Q. 장애 발생하면 이전 상태로 돌아갈 수 있나요?
- Q. binary log 같은 걸로 복구할 수 있나요?
- Q. 해당 DB는 얼마나 버틸 수 있나요?
- Q. 우리한테 적당한 instance Type은 무엇일까요?
- Q. 나중에 줄이는 것도 가능하겠죠?
- …
DynamoDB 로 해결!
Amazon DynamoDB란?
• 완전 관리형 NoSQL 데이터베이스 서비스
• 높은 확장성, 낮은 대기시간
• 고가용성– 3x 복제
• 심플하면서 강력한 API
• 저장 용량 제한이 없음
• 운영관리가 필요없음
DynamoDB: 클릭 한 번으로 Capacity 조절 가능!
클릭과 동시에 즉시 변경은 아님. (1~5)분 내에 적용
DynamoDB: API Provisioning
DynamoDB: Burst Mode
갑작스럽게발생하는과도한요청증가는 Burst Mode가일부분버텨줌
DynamoDB: Pricing
- DynamoDB 생각보다 많이 나온다던데?
DynamoDB: Pricing
- 서비스 오픈 첫 달 (2월)
- DAU: 40K ~ 70K
- 1 Read / request
- 1 Write / request
- Item Size: 8kB ~ 30kB
DynamoDB: Pricing
- 서비스 오픈 첫 달 (2월)
- DAU: 40K ~ 70K
- 1 Read / request
- 1 Write / request
- Item Size: 8kB ~ 30kB
- $3500 수준 (Monthly)
DynamoDB: Pricing RI
- 용량 예약 시 할인 가능
- 1Year: 53% (한 달 약 $1,750)
- 3Year: 76% (한 달 약 $840)
- Cache Layer 를 두는 것도 도움
- Ex. 친구 농장 정보를 불러올 때 Redis 에서 Read Cache
- 더저렴 하게쓸수 있어요
DynamoDB 사용 시 주의점
DynamoDB
- Provisioned Throughput limit
- MAX Throughput 이 10,000 으로 으로 제한 되어 있음 (Soft Limit)
- 초과 사용 시 AWS에 추가 요청이 필요함
DynamoDB
- Provisioned Throughput limit
- Item Max Size: 400 KB
- 아이템 분리 및 테이블 데이터 설계 시 주의
- 마이리틀팜에서는 JSON 압축해서 BLOB 처럼 사용하고 있음
DynamoDB
- Provisioned Throughput limit
- Item Max Size: 400 KB
- Throughput Scale down limit : 4회- DynamoDB 파티션 동작 방식에 의한 제한
- Throughput 줄이는 시점에 대한 정책을 잘 결정할 필요가 있음
DynamoDB
- Provisioned Throughput limit
- Item Max Size: 400 KB
- Throughput Scale down limit : 4회
- Throughput Exceeded Exception
- Burst mode 허용치를 넘어서는 요청에 대해서는 Exception이 발생
- Application에서 지연 시도 혹은 장애 처리 필요
DynamoDB
- Provisioned Throughput limit
- Item Max Size: 400 KB
- Throughput Scale down limit : 4회
- Throughput Exceeded Exception
- Back-up: data-pipeline (AP-northeast-2)
DynamoDB
- Provisioned Throughput limit
- Item Max Size: 400 KB
- Throughput Scale down limit : 4회
- Throughput Exceeded Exception
- Back-up: data-pipeline (AP-northeast-2)
- AWS Documentation(http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Limits.html )
Dynamic DynamoDB (3rd party)
Dynamic DynamoDB
- Scale up and down DynamoDB automatically
Dynamic DynamoDB: Scale-up
서비스안정성을 위해 잘 늘리는 것이 중요
- 최근 5분 내 사용량이
- 80%를 넘으면
- 현재 사용량의 20% 증가
Dynamic DynamoDB: Scale-up
비용절감을 위해 잘 줄이는 것이 중요
- 최근 5분 내 사용량이
- 30% 이하인 경우가
- 6번 연속 확인된 경우
- 현재 사용량의 50%로 감소
Dynamic DynamoDB: 주의점
- 빠른 증가 대응 어려움 (push, event, daily refresh 등)
Dynamic DynamoDB: 주의점
- 빠른 증가 대응 어려움 (push, event, daily refresh 등)
- 서버 장애 발생시 지나친 감소로 2차 장애 가능성
Dynamic DynamoDB: 주의점
- 빠른 증가 대응 어려움 (push, event, daily refresh 등)
- 서버 장애 발생시 지나친 감소로 2차 장애 가능성
- 서버 점검 등에 의한 감소 지연
Dynamic DynamoDB: 주의점
- 빠른 증가 대응 어려움 (push, event, daily refresh 등)
- 서버 장애 발생시 지나친 감소로 2차 장애 가능성
- 서버 점검 등에 의한 감소 지연
- 감소 횟수 제한으로 인한 어려움
Dynamic DynamoDB: 망한 하루
Dynamic DynamoDB: 개선
- Lambda로 직접 구현
- 서비스패턴에맞는정책결정
- 낮 시간에는 감소 없이 항상 증가
- 새벽 2시, 3시, 4시 등 현재 사용량 수준으로 감소
- 사용량이 급격히 낮을 때는 장애나 점검으로 탐지
정리
정리
- NoSQL DB라면, DynamoDB 쓰세요
- 잘 아껴 쓰려면, Dynamic DynamoDB 쓰세요
- 더 잘 쓰려면, Dynamic DynamoDB보다 Lambda를통해 직접구현해서 쓰세요!
Links
AWS DynamoDB documentationhttps://aws.amazon.com/ko/documentation/dynamodb/
AWS Blog - Dynamic DynamoDBhttps://aws.amazon.com/ko/blogs/aws/auto-scale-dynamodb-with-dynamic-dynamodb/
Dynamic-DynamoDBhttp://dynamic-dynamodb.readthedocs.org/en/latest/
Visualize cloud architecturehttps://cloudcraft.co/
스마일게이트의 AWS Elastic Beanstalk 및Amazon Elasticsearch Service활용 사례- Deploy, Log -
최병주 차장, Smilegate, InfraTech Team
• NTL / NCSoft / Nexon Infra Engineer
• Smilegate InfraTech Team
발표자 소개
Agenda
Elastic Beanstalk+Docker 를 이용한 배포
통합 로그수집 및 알람시스템(AWS+On Premise)
EB+Docker 를 이용한 배포
Stove - About
• Mobile Game Open Platform
• API Base Service
• Auth / Billing / Push / Chat / Coupon / Item / Membership / Admin 등
Stove
Stove - About
Stove – Architecture(Tokyo)
Stove
Stove – Architecture
• Micro Service Architecture 적용
• Elastic Beanstalk / Docker / Jenkins 를이용한 배포 자동화
• 1 VPC / Multi-AZ
• VPC 내 Public / Private Subnet 분리
• Service Request 는 모두 ELB 를 통해 L/B
• Proxy(AutoScale) 를 통한 서비스별 URL
Redirect
• 관리목적 접근은 VPN을 통한 Private IP 로만가능
Elastic? Elastic!!
AWS?? Cloud?? 하면 생각나는 것은?
Elastic? Elastic!!
AutoScalingELB EC2
Auto Scaling group
Availability Zone
#1
security group
EC2 instance
Launch Configuration
Availability Zone
#2
security group
EC2 instance
security group
ELB
Elastic Beanstalk – Before
• ELB 와 Instance 연계 수동 관리
• 별도 배포 : AMI 로 배포…
• AutoScale 된 Instance 의 배포는?
• Nginx(Tomcat) 새버전이 나왔는데?
• EC2 구성 후 접근용 URL 설정은?
AMI
Elastic Beanstalk – After
• ELB 와 Instance 자동 연동
• 배포 지원(Rolling Update)
• AutoScaling 설정 자동
• Application Health 자동 체크
• 기본모니터링자동
• 접근용 URL 자동 생성
Elastic Beanstalk Environment
Auto Scaling group
Availability Zone
#1
security group
EC2 instance
Launch Configuration
Availability Zone
#2
security group
EC2 instance
security group
ELB
AMI
Simplify of Deploy - Docker
Deploy – EB with Docker
Deploy Automation
• 배포의 고민거리 Configuration
• 소스만 달라지는게 아님
• 소스파일만 Docker 에 Push
• Docker 를 사용하므로 다른 변경점에대한 관리가 가능해짐
1
Image push
2
3
./ebextensions
elasticbeanstalk
Template Config
Update
docker registry
tomcat image
Push
Build Server
4 5
67
Jenkins Build
Deploy – Demo
Next Step
• MultiDocker 로 전환 : Application 과 OS Level 의 완전격리
• AWS Elastic Beanstalk 에서는 ECS 로 지원
• ECR(Tokyo 미출시) + ECS(Elastic Beanstalk) 으로 전환예정
통합 로그수집 및 알람시스템
Log, Log, Log…
Log, Log, Log…
• 서비스가 커지면 로그는 기하급수적으로 증가
• Windows, Linux Log
syslog-ng, rsyslog 도 좋은 Solution
• ELB, CloudTrail, VPC Flow Log 까지 다 모으려면?
AWS Elasticsearch Service + LogStash + Kibana (ELK)
• 전체로그가 다 모이면 용량이..
S3
• 모은 다음에 조회는 어떻게..
AWS Elasticsearch Service
Challenge – Challenge 1
• 모든 로그 수집
• 매번 S3 로 Export 해야 함
• On Premise Log는?
Cloudwatch Logs
Challenge – Challenge 2
• On Premise Log 도 수집
• Linux/Windows 모두 지원
• 단점 : Logstash 부하가 높음
LogStash
Solution – Beats
Beats
Solution – Solution
• Service Instance 부하 해소
• Plugin 지원으로 간단한 설정
• System Log 의 Bucket 분리
AWS Log 와 System Log 별도 저장
Alarm
로그수집 – Alarm
• Elastic Search Service 의 Plugin 제한
• Watcher 를 사용할 수 없음
• Lambda Function 자체 구현
로그수집 – Lambda# /usr/bin/env python
# -*- coding: utf-8 -*-
from __future__ import print_function
from elasticsearch import Elasticsearch, RequestsHttpConnection
from requests_aws4auth import AWS4Auth
import slackweb
YOUR_ACCESS_KEY = 'YOUR_ACCESS_KEY'
YOUR_SECRET_KEY = 'YOUR_SECRET_KEY'
REGION = 'ap-northeast-1'
SLACK_URL = 'WEBHOOK URL'
host = '엘라스틱서치주소.ap-northeast-1.es.amazonaws.com'
auth = AWS4Auth(YOUR_ACCESS_KEY, YOUR_SECRET_KEY, REGION, 'es')
def lambda_handler(event, context):
es = Elasticsearch(
hosts=[{'host': host, 'port': 443}],
http_auth=auth,
use_ssl=True,
verify_certs=True,
connection_class=RequestsHttpConnection)
res = es.search(index="*_syslog_*", doc_type="secure",
body={
"query": {
"filtered": {
"query": {
"query_string": {
"query": "message:failure",
"default_field": "message"
}
},
"filter": {
"range": {
"@timestamp": {
"from": "now-5m/m",
"to": "now"
}
}
}
}
},
"size": 0,
"aggs": {
"group_by_host.raw": {
"terms": {
"field": "host.raw"
}
}
}
})
로그수집 – Lambda
items = res["aggregations"]["group_by_host.raw"]["buckets"]
for item in items:
if item["doc_count"] >= 3:
print(item)
message = item["doc_count"]
slack = slackweb.Slack(url=SLACK_URL)
slack.notify(text=message)
print(" Remaining time (ms): " + str(context.get_remaining_time_in_millis()) + "\n")
AutoScaling
로그수집 – LogStash AutoScaling
• Logstash 의 AutoScaling
• 부하의 주범 ELB Access Log
• S3-Logstash Plugin 중복처리S3 Plugin
AutoScaling
로그수집 – Next Step
• SQS 로 중복처리문제 해결
• Logstash 의 AutoScaling 확대
Summary – Logging with ELK
• 수집/전송/조회 를 한번에
• 지원하는 Plugin 이 많아 구현 난이도가 쉽다
Slack 과의 연동도 매우 간편
• S3 와 조합시 아무리 장기간 고용량의 Log 가 쌓여도 무관
• AWS Elasticsearch Service(AWS Managed)
HA / 도메인 추가 / 노드교체 / 백업 등에 소요되는 리소스가 절감
Kibana 자동 설치 : 설정이 필요 없고 URL 로 접속만 하면 사용가능
Plugin 제한은 불편
Reserved Instance 요금을 적용할 수 없어 비용이 상승
NZIN의 AWS CloudFormation 활용- 개발/서비스환경 구축 자동화 -
최양민 차장, NZIN, 인프라 운영팀
• NZIN Publishing Platform
• Publishing Service 런칭 프로세스
• Common Service Infrastructure
• Configure Common Service Infrastructure
• CloudFormation을 통한 자동화
• Automation Common Service Infrastructure
• CloudFormation - Designer
• CloudFormation - JSON Template
• Best Practices for CloudFormation Templates
순서
NZIN Publishing Platform
비즈니스
투자
비즈니스 모델
마케팅
PR
기술지원
Service Platform
Scalable Infra
Security
서비스 운영
Quality Assurance
Customer Service
Service Operations (GM)
폴리싱
UX GUIDE
Balancing
Focus Group Test
Closed Beta Test
엔진은 비즈니스, 폴리싱, 기술, 서비스 운영에 이르기까지게임 서비스를 위한 인프라를 제공합니다.
서비스 런칭을 위해 유기적이고 분업화된 업무 프로세스가 진행됨.
Publishing Service 런칭 프로세스
• 서비스 Owership, 개발사 접속 권한 분리, 서비스 단위 비용 산정의 이유로 서비스 단위로 AWS 계정 생성하여 구성
• 서비스 단계( Beta/Live ) 별 VPC 를 구성하며, AZ 고려 Public 2개, Private 2개 의 Subnet 구성하여 고유의 IP 대역을 할당
Common Service Infrastructure
- 약 30가지의 AWS 리소스를 구성해야 함.
서비스 DNS Zone 구성, CloudFront 구성, S3 구성, Beta/Live Key Pair 파일 생성, IAM Role 생성, IAM User 생성,
Beta/Live VPC 구성 (Public Subnet, Private Subnet, Routing, Network ACL, EC2 Security Group,
RDS Security Group, RDS Subnet, ElastiCache Subnet ), Bastion Host, NAT Gateway, EIP 할당 등…
- VPC 생성에 약 1000회의 마우스 클릭과 최소 2시간 가량의 작업 시간 소요
- 각 AWS 리소스 간 유기적인 구조를 고려하며 작업.
‘우리 올해 17개 서비스를 런칭 할 꺼야 ~ 잘 할 수 있지!!’
‘VPC 작업을 Beta/Live 합쳐서 32회를 해야 한다는 건데…. ‘
Configure Common Service Infrastructure
AWS
CloudFormation
AWS CloudFormation은 AWS 리소스 모음을 쉽게 생성 및 관리하고,
인프라스트럭처의 프로비저닝과 업데이트할 수 있는 간편한 방법을 제공 합니다.
• 초기 인프라 구성 요소들을 템플릿화, 빠르게 프로비저닝 가능
• 대부분의 AWS 리소스를 지원하며, JSON 포멧으로 구성됨.
• 인프라스트럭처의 자동화하고 구성 실수/누락를 방지
• 인프라스트럭처의 버전 관리와 통합 환경을 마련할 수 있음.
CloudFormation을 통한 자동화
Automation Common Service Infrastructure
- CDN, Beta, Live 서비스 등 3가지 Stack 을 사전 구성 .
- 약 50회의 마우스 클릭과 15분 가량의 작업
CloudFormation Designer 특징
- Resources의시각화
- drag-and-drop을통한 간단한 작성
- JSON Editor 와 통합
Canvas paneResource pane
JSON editor
Errors pane
CloudFormation - Designer
{
"AWSTemplateFormatVersion" : "2010-09-09",
"Description" : " ",
"Mappings" : { },
"Parameters" : { },
"Resources" : { },
"Outputs" : { },
}
설명을 추가 할 수 있는 섹션, String 최대 1024 byte까지가능
Template의버전을 설정하는 섹션
Region마다 AMI ID가 차이가 있는데 mapping을사용, OS와 AMI를 테이블 형식으로 명시.
Stack을 생성할 때 사용자로부터 값을 전달 받을 수 있는 섹션
Stack에 포함되는 AWS 리소스를 정의 하는 부분
stack에 대한 리소스 정보를 Return 받고 싶을 때 사용
CloudFormation - JSON Template
"Mappings" : {
"AWSRegionArch2AMI" : {
"ap-northeast-1" : { " t2.micro ": "ami-f885ae96", "t2.medium": "ami-1ecae776" },
"ap-southeast-1" : { " t2.micro ": "ami-c9b572aa", "t2.medium": "ami-d7hude73" },
"ap-northeast-2" : { " t2.micro ": "ami-249b554a", "t2.medium": "ami-81efa384" },
"us-east-1" : { " t2.micro ": "ami-8fcee4e5", "t2.medium": "ami-7a11e213" },
"us-west-1" : { " t2.micro ": "ami-d5ea86b5", "t2.medium": "ami-6411e20d" },
"us-west-2" : { " t2.micro ": "ami-f0091d91", "t2.medium": "ami-5343e46a" }
}
},
CloudFormation - JSON Template
"Parameters" : {
"KeyName" : {
"Description" : "Name of an existing EC2 KeyPair ex) xxx-xx-key ",
"Type" : "String",
"Default" : "xxx-xx-key"
},
"BastionInstanceType" : {
"Description" : "Bastion instance type",
"Type" : "String",
"Default" : "t2.micro",
"AllowedValues" : [ "t2.micro" ],
},
"dnsHostZone" : {
"Type" : "String",
"Default" : "xxx.nzincorp.com"
}
},
CloudFormation - JSON Template
"Resources" : {"LiveBastionHost" : {
"Type" : "AWS::EC2::Instance","DependsOn" : "GatewayToInternet","Properties" : {
"InstanceType" : { "Ref" : "BastionInstanceType" },"KeyName" : { "Ref" : "KeyName" },"ImageId" : { "Fn::FindInMap" : [ "AWSRegionArch2AMI", { "Ref" : "AWS::Region" }, "AMI" ] },"NetworkInterfaces" : [{
"GroupSet" : [{ "Ref" : "BastionSG" }], "DeleteOnTermination" : "true", "SubnetId" : { "Ref" : "LivePubZone" } }],"Tags" : [ {"Key" : "Name", "Value" : “xxxxxxxxxxxxxxxxxxx"} ],"IamInstanceProfile": { "Ref": "MgmtProfile" },"BlockDeviceMappings" : [{
"DeviceName" : "/dev/xvda", "Ebs" : { "VolumeSize" : "20", "VolumeType":"gp2", "DeleteOnTermination":"true"} }]} }
"BastionSG" : { "Type" : "AWS::EC2::SecurityGroup","Properties" : {
"GroupDescription" : "Enable access to the bastion host","VpcId" : { "Ref" : "VPC" },"SecurityGroupIngress" : [
{ "IpProtocol" : "tcp", "FromPort" : "22", "ToPort" : "22", "CidrIp" : "xxx.xxx.xxx.xxx/32"},{ "IpProtocol" : "tcp", "FromPort" : "22", "ToPort" : "22", "CidrIp" : " xxx.xxx.xxx.xxx/32"},{ "IpProtocol" : "udp", "FromPort" : "123", "ToPort" : "123", "CidrIp" : "0.0.0.0/0"} ] } }, }
},
Ref, Fn::Join, Fn::Select , Fn::GetAtt, Fn::GetAZs
CloudFormation - JSON Template
- CloudFormation templates의관리를 위해 버전 관리툴을 사용하세요.
- Metadata 의 Comment 를 활용하여 주석을 작성하세요. JSON 은 주석 작성이 불가능 합니다.
- Stack 생성 후 주요 정보를 바로 확인하고 싶다면, Outputs 섹션을 사용하세요.
- Resources 생성 시 Tag 속성값을 이용하여 그룹화 하세요.
- 반복적인 구성이 필요한 리소스는 Stack 단위로 구성하세요.
- Cloudformation 내장 함수 ( Ref, Fn::GetAtt, Fn::GetAZs, Fn::Join, Fn::Select )을 사용하세요.
CloudFormation는 손쉽게 인프라스트럭처를 구성하고,
효율적인 관리/운영 할 수 있도록 해 드릴 것 입니다.
어려워 하지 마시고, 지금 사용해 보세요.
Best Practices for CloudFormation Templates
- AWS CloudFormation Template
- https://aws.amazon.com/ko/cloudformation/aws-cloudformation-templates/
- CloudFormation Template Snippets
- http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/CHAP_TemplateQuickRef.html
- CloudFormation Template Reference
- http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-reference.html
- CloudFormation Template Anatomy
- http://docs.aws.amazon.com/ko_kr/AWSCloudFormation/latest/UserGuide/template-anatomy.html
- Intrinsic Function Reference
- http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference.html
참고
아직도 남아 있는 많은 AWS에 대한 고민들
게임 개발과 운영, AWS와 함께 하세요.
고객 기술지원 프로페셔널컨설팅 서비스
전담 영업담당 조직
파트너를 통한지원 체계
솔루션스 아키텍트기술 지원
교육 및인증 프로그램
Thank you!