29
AWS CloudFormation 을 을을을 을을을을을 을을 을을을 김김김 김김김 | Partner Solutions Architect Amazon Web Services

AWS Partner Techshift - AWS CloudFormation을 활용한 소프트웨어 배포 자동화 (김용우 솔루션즈 아키텍트)

Embed Size (px)

Citation preview

Page 1: AWS Partner Techshift - AWS CloudFormation을 활용한 소프트웨어 배포 자동화 (김용우 솔루션즈 아키텍트)

AWS CloudFormation 을 활용한 소프트웨어 배포 자동화

김용우 매니저 | Partner Solutions ArchitectAmazon Web Services

Page 2: AWS Partner Techshift - AWS CloudFormation을 활용한 소프트웨어 배포 자동화 (김용우 솔루션즈 아키텍트)

소프트웨어 배포 방식의 변화

Page 3: AWS Partner Techshift - AWS CloudFormation을 활용한 소프트웨어 배포 자동화 (김용우 솔루션즈 아키텍트)

Software 배포 ( 판매 ) , 어떻게 할 것인가 ?

PKG S/W

맞춤형 구축(SI)

On-premise

PKG S/W Lic

맞춤형 구축(SI)

Cloud

SaaS

Retail On-line On-site On-line On-line

Page 4: AWS Partner Techshift - AWS CloudFormation을 활용한 소프트웨어 배포 자동화 (김용우 솔루션즈 아키텍트)

AWS CloudFormation

Infrastructure as Code (IaC)

Page 5: AWS Partner Techshift - AWS CloudFormation을 활용한 소프트웨어 배포 자동화 (김용우 솔루션즈 아키텍트)

AWS CloudFormation 구성요소

Template CloudFormation Stack

JSON/YAML 형식의 파일

Parameter 정의

Resource 생성

실제 구성 액션

구성된 AWS 서비스

포괄적인 AWS 서비스 ( 제품 ) 지원

Service event awareCustomisable

프레임 워크

Stack 생성

Stack 업데이트

에러감지 및 롤백

Page 6: AWS Partner Techshift - AWS CloudFormation을 활용한 소프트웨어 배포 자동화 (김용우 솔루션즈 아키텍트)

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

Page 7: AWS Partner Techshift - AWS CloudFormation을 활용한 소프트웨어 배포 자동화 (김용우 솔루션즈 아키텍트)

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 설정을 위해 사용자가 직접

타이핑 하거나 , 선택옵션을 통해 선택

( 생성 리소스 수량 , 크기 설정 등 )

Page 8: AWS Partner Techshift - AWS CloudFormation을 활용한 소프트웨어 배포 자동화 (김용우 솔루션즈 아키텍트)

{ "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 파라미터 값에대한

참조를 포함

Page 9: AWS Partner Techshift - AWS CloudFormation을 활용한 소프트웨어 배포 자동화 (김용우 솔루션즈 아키텍트)

{ "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 주소 등 )

Page 10: AWS Partner Techshift - AWS CloudFormation을 활용한 소프트웨어 배포 자동화 (김용우 솔루션즈 아키텍트)

JSON 템플릿 vs YAML 템플릿

JSON 53 Lines

YAML31 Lines

//YAML 은 inline comment 도 가능

Page 11: AWS Partner Techshift - AWS CloudFormation을 활용한 소프트웨어 배포 자동화 (김용우 솔루션즈 아키텍트)

AWS CloudFormation 디자이너 (JSON Only)

자원 Drag & Drop | 관계 연결 | 속성 입력

JSON 편집기 창

리소스유형창

오류 창

캔버스 창

자원유형

템플릿 편집기

Page 13: AWS Partner Techshift - AWS CloudFormation을 활용한 소프트웨어 배포 자동화 (김용우 솔루션즈 아키텍트)

Sophos UTM Autoscaling Cluster 배포

Page 14: AWS Partner Techshift - AWS CloudFormation을 활용한 소프트웨어 배포 자동화 (김용우 솔루션즈 아키텍트)

고객에게 직접 전달 (CF Template Link)

Public Private

CloudFormation 템플릿 (Software) 배포 ( 판매 ) 방식

QuickStart

Page 15: AWS Partner Techshift - AWS CloudFormation을 활용한 소프트웨어 배포 자동화 (김용우 솔루션즈 아키텍트)

AWS Marketplace

비즈니스 /IT 소프트웨어를 위한 AWS 앱 스토어

약 3000 여개 이상의 다양한 솔루션 등록

몇 번의 마우스 클릭으로 해당 솔루션 구성

통합된 구매 및 결재 시스템

지난 5 년간 검증된 플랫폼

PoC 에서 Production 환경 까지 손쉽게 S/W 구축

다양한 기업의 비즈니스 어플리케이션

무료 , Trial , 기업용 버전까지 다양한 솔루션들 : 손쉽게 테스트후 정식 버전으로 구축이 용이함

모든 규모의 고객이 사용가능

Page 16: AWS Partner Techshift - AWS CloudFormation을 활용한 소프트웨어 배포 자동화 (김용우 솔루션즈 아키텍트)

서비스 소개 – 비용 , 용도 , 특 장점 아키텍쳐 및 디자인 고려사항 단계별 설정 , 구축 및 테스트 방법 자동 보안설정 및 안전한 수정 트러블 슈팅 및 관련 자료 링크

AWS Quick Starts

Page 17: AWS Partner Techshift - AWS CloudFormation을 활용한 소프트웨어 배포 자동화 (김용우 솔루션즈 아키텍트)

원 클릭 구축 수분 내에 스택 구축

AWS CloudFormation 템플릿AWS 인프라상에 해당 솔루션에 대한 설정 과 구축을 자동화

구성 가이드 아키텍쳐 설명 , 구축 , 최적화 , Best Practice

AWS Quick Starts

QuickStarts

Page 18: AWS Partner Techshift - AWS CloudFormation을 활용한 소프트웨어 배포 자동화 (김용우 솔루션즈 아키텍트)

AWS TestDrive 페이지를 통한 솔루션 홍보

수 분 내로 클라우드 인프라 및 사전 정의된 애플리케이션 자동 구성

솔루션 체험 AWS TestDrive Program

AWS Test Drive

Page 19: AWS Partner Techshift - AWS CloudFormation을 활용한 소프트웨어 배포 자동화 (김용우 솔루션즈 아키텍트)

소프트웨어 개발 및 배포 절차

Page 20: AWS Partner Techshift - AWS CloudFormation을 활용한 소프트웨어 배포 자동화 (김용우 솔루션즈 아키텍트)

계획 요구사항 분석 설계 개발 /구축 테스팅 유지보수

일반적인 SI 프로젝트 워크 플로우

최신 Web 기반 서비스 개발 / 운영 플로우

데브 옵스Dev Ops

Page 21: AWS Partner Techshift - AWS CloudFormation을 활용한 소프트웨어 배포 자동화 (김용우 솔루션즈 아키텍트)

MonitorProvisionDeployTestBuildCode

Code-Commit

CodePipeline

CodeDeploy

CloudFormation

CloudWatch

OpsWorks

Elastic Beanstalk

Code-Build

AWS DevOps 서비스 포트폴리오

Page 22: AWS Partner Techshift - AWS CloudFormation을 활용한 소프트웨어 배포 자동화 (김용우 솔루션즈 아키텍트)

AWS 서비스를 이용한 Delivery Pipeline 구성

Testing Staging Production

deploy

deploy

deploy

Source Build

release

AWS CodeDeployAWS CloudFormation

AWS CodePipeline

AWSCodeCommit

AWSCodeBuild

Page 23: AWS Partner Techshift - AWS CloudFormation을 활용한 소프트웨어 배포 자동화 (김용우 솔루션즈 아키텍트)

AWS Code Pipeline 구성

Test선택

Build선택

Deploy선택

Source선택

Page 24: AWS Partner Techshift - AWS CloudFormation을 활용한 소프트웨어 배포 자동화 (김용우 솔루션즈 아키텍트)

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

Page 25: AWS Partner Techshift - AWS CloudFormation을 활용한 소프트웨어 배포 자동화 (김용우 솔루션즈 아키텍트)

AWS 서비스를 이용한 Delivery Pipeline 구성

CLOUDFORMATION TEMPLATE

CODECOM-MIT CODEPIPELINE

Page 26: AWS Partner Techshift - AWS CloudFormation을 활용한 소프트웨어 배포 자동화 (김용우 솔루션즈 아키텍트)

개발사

고객 A Pipeline

고객 B Pipeline

고객 C Pipeline

완성 (SW+ 환경 )

피드백

테스트

S/W개발

구성 테스트 운영

구성 테스트 운영

구성 테스트 운영

설계Design

목표 : Continuous Delivery

템플릿 파라미터

Page 27: AWS Partner Techshift - AWS CloudFormation을 활용한 소프트웨어 배포 자동화 (김용우 솔루션즈 아키텍트)

2. 고객 AWS S3 소스 Bucket 에 접근 권한 설정 Cross account bucket access 설정

1. 고객사 AWS 계정에 Code Pipeline 환경구성1) Pipeline 소스용 S3 Bucket 구성 (Versioning 설정 )2) Pipeline 구성용 CF 템플릿 실행 ( 또는 , 수동구성 )

데모 : Code Pipeline 을 통한 템플릿 배포

고객 소스 버킷 개발사 AWS 계정

Page 28: AWS Partner Techshift - AWS CloudFormation을 활용한 소프트웨어 배포 자동화 (김용우 솔루션즈 아키텍트)

데모시연

Page 29: AWS Partner Techshift - AWS CloudFormation을 활용한 소프트웨어 배포 자동화 (김용우 솔루션즈 아키텍트)

감사합니다 .