Upload
amazon-web-services-korea
View
486
Download
2
Embed Size (px)
Citation preview
AWS CloudFormation 을 활용한 소프트웨어 배포 자동화
김용우 매니저 | Partner Solutions ArchitectAmazon Web Services
소프트웨어 배포 방식의 변화
Software 배포 ( 판매 ) , 어떻게 할 것인가 ?
PKG S/W
맞춤형 구축(SI)
On-premise
PKG S/W Lic
맞춤형 구축(SI)
Cloud
SaaS
Retail On-line On-site On-line On-line
AWS CloudFormation
Infrastructure as Code (IaC)
AWS CloudFormation 구성요소
Template CloudFormation Stack
JSON/YAML 형식의 파일
Parameter 정의
Resource 생성
실제 구성 액션
구성된 AWS 서비스
포괄적인 AWS 서비스 ( 제품 ) 지원
Service event awareCustomisable
프레임 워크
Stack 생성
Stack 업데이트
에러감지 및 롤백
CloudFormation Template 구성사항 { "AWSTemplateFormatVersion" : "version date",
"Description" : "JSON string",
"Metadata" : { template metadata : 템플릿에대한 추가 정보 }, "Parameters" : { set of parameters : 템플릿 실행시 전달할 파라미터 값 }, "Mappings" : { set of mappings : 템플릿 실행시 선택하게 되는 값 ( 특정 리전 , 인스턴스 )}, "Conditions" : { set of conditions : 특정 자원에 대한 생성 여부를 판단하는 조건 }, "Transform" : { set of transforms : Serverless 어플리케이션 용 }, "Resources” : { ( 필수 ) set of resources : 생성될 AWS 자원 나열 }, "Outputs" : { set of outputs : 템플릿 실행후 만들어진 자원 결과값 ( 자원 ID, IP 등 ) } }
JSON
EC2 인스터스 생성 JSON 템플릿 예시 { "AWSTemplateFormatVersion": "2010-09-09"
"Description": "Create an EC2 instance running the latest Amazon Linux AMI.", "Parameters": { "KeyPair": { "Description": "The EC2 Key Pair to allow SSH access to the instance", "Type": "String" } }, "Resources": { "Ec2Instance": { "Properties": { "ImageId": "ami-9d23aeea", "InstanceType" : "m3.medium", "KeyName": { "Ref": "KeyPair" } }, "Type": "AWS::EC2::Instance" } }, "Outputs": { "InstanceId": { "Description": "The InstanceId of the newly created EC2 instance", "Value": { "Ref": "Ec2Instance" } } },}
Parameter 설정을 위해 사용자가 직접
타이핑 하거나 , 선택옵션을 통해 선택
( 생성 리소스 수량 , 크기 설정 등 )
{ "AWSTemplateFormatVersion": "2010-09-09"
"Description": "Create an EC2 instance running the latest Amazon Linux AMI.", "Parameters": { "KeyPair": { "Description": "The EC2 Key Pair to allow SSH access to the instance", "Type": "String" } }, "Resources": { "Ec2Instance": { "Properties": { "ImageId": "ami-9d23aeea", "InstanceType" : "m3.medium", "KeyName": { "Ref": "KeyPair" } }, "Type": "AWS::EC2::Instance" } }, "Outputs": { "InstanceId": { "Description": "The InstanceId of the newly created EC2 instance", "Value": { "Ref": "Ec2Instance" } } },}
EC2 인스터스 생성 JSON 템플릿 예시
지정된 속성값 (ImageID & Instance Type) 및 KeyPair 파라미터 값에대한
참조를 포함
{ "AWSTemplateFormatVersion": "2010-09-09"
"Description": "Create an EC2 instance running the latest Amazon Linux AMI.", "Parameters": { "KeyPair": { "Description": "The EC2 Key Pair to allow SSH access to the instance", "Type": "String" } }, "Resources": { "Ec2Instance": { "Properties": { "ImageId": "ami-9d23aeea", "InstanceType" : "m3.medium", "KeyName": { "Ref": "KeyPair" } }, "Type": "AWS::EC2::Instance" } }, "Outputs": { "InstanceId": { "Description": "The InstanceId of the newly created EC2 instance", "Value": { "Ref": "Ec2Instance" } } },}
EC2 인스터스 생성 JSON 템플릿 예시
템플릿 실행 후 결과 값 표시 (IP 주소 등 )
JSON 템플릿 vs YAML 템플릿
JSON 53 Lines
YAML31 Lines
//YAML 은 inline comment 도 가능
AWS CloudFormation 디자이너 (JSON Only)
자원 Drag & Drop | 관계 연결 | 속성 입력
JSON 편집기 창
리소스유형창
오류 창
캔버스 창
자원유형
템플릿 편집기
CloudFormation 을 이용한 S/W Cluster 배포(Splunk)
Sophos UTM Autoscaling Cluster 배포
고객에게 직접 전달 (CF Template Link)
Public Private
CloudFormation 템플릿 (Software) 배포 ( 판매 ) 방식
QuickStart
AWS Marketplace
비즈니스 /IT 소프트웨어를 위한 AWS 앱 스토어
약 3000 여개 이상의 다양한 솔루션 등록
몇 번의 마우스 클릭으로 해당 솔루션 구성
통합된 구매 및 결재 시스템
지난 5 년간 검증된 플랫폼
PoC 에서 Production 환경 까지 손쉽게 S/W 구축
다양한 기업의 비즈니스 어플리케이션
무료 , Trial , 기업용 버전까지 다양한 솔루션들 : 손쉽게 테스트후 정식 버전으로 구축이 용이함
모든 규모의 고객이 사용가능
서비스 소개 – 비용 , 용도 , 특 장점 아키텍쳐 및 디자인 고려사항 단계별 설정 , 구축 및 테스트 방법 자동 보안설정 및 안전한 수정 트러블 슈팅 및 관련 자료 링크
AWS Quick Starts
원 클릭 구축 수분 내에 스택 구축
AWS CloudFormation 템플릿AWS 인프라상에 해당 솔루션에 대한 설정 과 구축을 자동화
구성 가이드 아키텍쳐 설명 , 구축 , 최적화 , Best Practice
AWS Quick Starts
QuickStarts
AWS TestDrive 페이지를 통한 솔루션 홍보
수 분 내로 클라우드 인프라 및 사전 정의된 애플리케이션 자동 구성
솔루션 체험 AWS TestDrive Program
AWS Test Drive
소프트웨어 개발 및 배포 절차
계획 요구사항 분석 설계 개발 /구축 테스팅 유지보수
일반적인 SI 프로젝트 워크 플로우
최신 Web 기반 서비스 개발 / 운영 플로우
데브 옵스Dev Ops
MonitorProvisionDeployTestBuildCode
Code-Commit
CodePipeline
CodeDeploy
CloudFormation
CloudWatch
OpsWorks
Elastic Beanstalk
Code-Build
AWS DevOps 서비스 포트폴리오
AWS 서비스를 이용한 Delivery Pipeline 구성
Testing Staging Production
deploy
deploy
deploy
Source Build
release
AWS CodeDeployAWS CloudFormation
AWS CodePipeline
AWSCodeCommit
AWSCodeBuild
AWS Code Pipeline 구성
Test선택
Build선택
Deploy선택
Source선택
AWS 서비스를 이용한 Code Pipeline 구성
Auto Scaling group
Availability Zone
security group
Security group
root volume
data volume
appserver
승인 / 검증 CloudFormation( 기본환경 구성 )
CodeBuild
CodePipeline
CodeCommit
개발팀
Git PushGit Pull
CodeDeploy
AWS 서비스를 이용한 Delivery Pipeline 구성
CLOUDFORMATION TEMPLATE
CODECOM-MIT CODEPIPELINE
개발사
고객 A Pipeline
고객 B Pipeline
고객 C Pipeline
완성 (SW+ 환경 )
피드백
테스트
S/W개발
구성 테스트 운영
구성 테스트 운영
구성 테스트 운영
설계Design
목표 : Continuous Delivery
템플릿 파라미터
2. 고객 AWS S3 소스 Bucket 에 접근 권한 설정 Cross account bucket access 설정
1. 고객사 AWS 계정에 Code Pipeline 환경구성1) Pipeline 소스용 S3 Bucket 구성 (Versioning 설정 )2) Pipeline 구성용 CF 템플릿 실행 ( 또는 , 수동구성 )
데모 : Code Pipeline 을 통한 템플릿 배포
고객 소스 버킷 개발사 AWS 계정
데모시연
감사합니다 .