SlideShare uma empresa Scribd logo
1 de 101
Baixar para ler offline
AWS Fargate와 Amazon ECS 활용한
CI/CD 모범사례
유재석 | Solutions Architect
강연 중 질문하는 방법 AWS Builders
Go to Webinar “Questions” 창에 자신이 질문한
내역이 표시됩니다. 기본적으로 모든 질문은
공개로 답변 됩니다만 본인만 답변을 받고 싶으면
(비공개)라고 하고 질문해 주시면 됩니다.
본 컨텐츠는 고객의 편의를 위해 AWS 서비스 설명을 위해 온라인 세미나용으로 별도로 제작, 제공된 것입니다. 만약 AWS
사이트와 컨텐츠 상에서 차이나 불일치가 있을 경우, AWS 사이트(aws.amazon.com)가 우선합니다. 또한 AWS 사이트
상에서 한글 번역문과 영어 원문에 차이나 불일치가 있을 경우(번역의 지체로 인한 경우 등 포함), 영어 원문이 우선합니다.
AWS는 본 컨텐츠에 포함되거나 컨텐츠를 통하여 고객에게 제공된 일체의 정보, 콘텐츠, 자료, 제품(소프트웨어 포함) 또는 서비스를 이용함으로 인하여 발생하는 여하한 종류의 손해에
대하여 어떠한 책임도 지지 아니하며, 이는 직접 손해, 간접 손해, 부수적 손해, 징벌적 손해 및 결과적 손해를 포함하되 이에 한정되지 아니합니다.
고지 사항(Disclaimer)
컨테이너와 CI/CD
컨테이너와 CI/CD
FROM node:12
WORKDIR /opt/app
COPY package.json package-lock.json ./
RUN npm ci
COPY ./app /opt/app
EXPOSE 80
CMD [ "node", "service.js" ]
컨테이너와 CI/CD
CI/CD 모범사례
3.
반복 가능한
인프라 변경
Repeatable
infrastructure
changes
1.
릴리스 자동화
Automated
releases
2.
안전한
배포
Safe
deployments
CI/CD 모범사례
3.
반복 가능한
인프라 변경
1.
릴리스 자동화
2.
안전한
배포
1억 9천만번의 배포
1억 9천만번의 배포
(매 초마다 6번의 배포)
소스
소스
App code
Infrastructure
as code
Configuration
Base image
소스 빌드
App code
Infrastructure
as code
Configuration
Base image
소스 빌드
Artifacts
App code
Infrastructure
as code
Configuration
Base image
소스 빌드 알파
준비단계
Artifacts
Automated
tests
App code
Infrastructure
as code
Configuration
Base image
소스 빌드 알파 베타
준비단계
Artifacts
Automated
tests
Automated
integration
tests
Automated
load/perf
tests
Automated
browser
tests
App code
Infrastructure
as code
Configuration
Base image
소스 빌드 알파 베타 감마
준비단계
Artifacts
Automated
tests
Automated
integration
tests
Automated
load/perf
tests
Automated
integration
tests
Automated
synthetic
tests
API smoke
tests
Automated
browser
tests
App code
Infrastructure
as code
Configuration
Base image
소스 빌드 알파 베타 감마
준비단계 프로덕션
Artifacts
Automated
tests
Automated
integration
tests
Automated
load/perf
tests
Automated
integration
tests
Automated
synthetic
tests
API smoke
tests
Automated
browser
tests
App code
Infrastructure
as code
Configuration
Base image
소스 빌드 알파 베타 감마
준비단계 프로덕션
Artifacts
Automated
tests
Automated
integration
tests
Automated
load/perf
tests
Automated
integration
tests
Automated
synthetic
tests
API smoke
tests
Automated
browser
tests
App code
Infrastructure
as code
Configuration
Base image
소스 빌드 알파 베타 감마
준비단계 프로덕션
Artifacts
Automated
tests
Automated
integration
tests
Automated
load/perf
tests
Automated
integration
tests
Automated
synthetic
tests
API smoke
tests
Automated
browser
tests
App code
Infrastructure
as code
Configuration
Base image
소스 빌드 알파 베타 감마
준비단계 프로덕션
Artifacts
Automated
tests
Automated
integration
tests
Automated
load/perf
tests
Automated
integration
tests
Automated
synthetic
tests
API smoke
tests
Automated
browser
tests
App code
Infrastructure
as code
Configuration
Base image
소스 빌드 알파 베타 감마
준비단계 프로덕션
Artifacts
Automated
tests
Automated
integration
tests
Automated
load/perf
tests
Automated
integration
tests
Automated
synthetic
tests
API smoke
tests
Automated
browser
tests
App code
Infrastructure
as code
Configuration
Base image
소스 빌드 알파 베타 감마
준비단계 프로덕션
Artifacts
Automated
tests
Automated
integration
tests
Automated
load/perf
tests
Automated
integration
tests
Automated
synthetic
tests
API smoke
tests
Automated
browser
tests
App code
Infrastructure
as code
Configuration
Base image
…
소스 빌드 알파 베타 감마
준비단계 프로덕션
Artifacts
Automated
tests
Automated
integration
tests
Automated
load/perf
tests
Automated
integration
tests
Automated
synthetic
tests
API smoke
tests
Automated
browser
tests
App code
Infrastructure
as code
Configuration
Base image
…
파이프라인 방해물: 코드 커버리지, 코드 리뷰, 보안 검색, 의존성 업데이트, 시간대, 파이프라인 정책, 기타 여러가지
릴리스 프로세스 단계
소스 빌드 테스트 프로덕션
릴리스 프로세스 단계
소스 빌드 테스트 프로덕션
• Check-in source
code such as
.java files and
Dockerfile
• Peer review new
code
릴리스 프로세스 단계
소스 빌드 테스트 프로덕션
• Check-in source
code such as
.java files and
Dockerfile
• Peer review new
code
• Compile code
• Unit tests
• Style checkers
• Create container
images
릴리스 프로세스 단계
소스 빌드 테스트 프로덕션
• Integration tests
with other
systems
• Load testing
• UI tests
• Security testing
• Check-in source
code such as
.java files and
Dockerfile
• Peer review new
code
• Compile code
• Unit tests
• Style checkers
• Create container
images
릴리스 프로세스 단계
소스 빌드 테스트 프로덕션
• Integration tests
with other
systems
• Load testing
• UI tests
• Security testing
• Check-in source
code such as
.java files and
Dockerfile
• Peer review new
code
• Compile code
• Unit tests
• Style checkers
• Create container
images
• Deploy to
production
environments
• Monitor code in
production in
order to quickly
detect errors
릴리스 프로세스 단계
소스 빌드 테스트 프로덕션
• Integration tests
with other
systems
• Load testing
• UI tests
• Security testing
• Check-in source
code such as
.java files and
Dockerfile
• Peer review new
code
• Compile code
• Unit tests
• Style checkers
• Create container
images
• Deploy to
production
environments
• Monitor code in
production in
order to quickly
detect errors
Amazon ECS를 위한 CI/CD 툴
AWS CodePipeline
• 릴리스 프로세스를 모델링, 시각화
• 코드 변경이 있을 때마다 애플리케이션을 빌드,
테스트, 배포
• 파트너 도구 및 Amazon ECS를 비롯한
AWS서비스들과 통합
AWS CodePipeline: 릴리스 프로세스 단계
소스 빌드 테스트 프로덕션
AWS CodePipeline: 릴리스 프로세스 단계
소스 빌드 테스트 프로덕션
AWS CodePipeline: 지원하는 소스
브랜치 선택
AWS CodeCommit
GitHub
오브젝트나 폴더
선택
Amazon Simple Storage
Service (Amazon S3)
도커 태그 선택
Amazon Elastic
Container Registry
(Amazon ECR)
릴리스를 자동으로 시작하고 최신 소스 코드를 가져옵니다
AWS CodePipeline: 릴리스 프로세스 단계
소스 빌드 테스트 프로덕션
AWS CodeBuild
• 완전 관리형 소프트웨어 빌드 서비스
• 지속적으로 확장되며 여러 빌드를 동시에 처리
• 관리할 빌드 서버가 없음
• 빌드에 소모되는 시간만큼만 분당 요금을 지불
AWS CodeBuild for containers
• 도커 이미지를 빌드, 푸시, 확인
• 도커와 AWS CLI가 모든 CodeBuild 이미지에 기본
탑재 되어 있음
• Docker 이미지를 Amazon ECR로 푸시하기 위해
빌드 환경에 채워진 역할 자격 증명
• Amazon ECR에 이미지를 푸시하기위한 역할
자격증명이 빌드 환경에 포함
• 사용자 지정 빌드 이미지 사용 가능
AWS CodeBuild: Container buildspec
version: 0.2
phases:
build:
commands:
- $(aws ecr get-login --no-include-email)
- docker build -t $IMAGE_NAME:$IMAGE_TAG .
- docker tag $IMAGE_NAME:$IMAGE_TAG $ECR_REPO:$IMAGE_TAG
- docker push $ECR_REPO:$IMAGE_TAG
컨테이너 이미지 태깅
컨테이너 이미지 태깅
빌드가 “latest” 이미지를 새로 푸시
Image: sha256@22222... (“latest”)
컨테이너 이미지 태깅
서비스 확대, 새로운 작업들을 시작
Image: sha256@22222... (“latest”)
AWS CodeBuild: 컨테이너 이미지 태깅
version: 0.2
phases:
build:
commands:
- export IMAGE_TAG=build-`echo build-$CODEBUILD_BUILD_ID
| awk –F":" ‘{print $2}‘`
- $(aws ecr get-login --no-include-email)
- docker build -t $IMAGE_NAME:$IMAGE_TAG .
- docker tag $IMAGE_NAME:$IMAGE_TAG $ECR_REPO:$IMAGE_TAG
- docker push $ECR_REPO:$IMAGE_TAG
Amazon ECR 변경 불가능한 이미지 태그
$ aws ecr put-image-tag-mutability 
--repository-name my-ecr-repo 
--image-tag-mutability IMMUTABLE
$ docker push $ECR_REPO:latest
Tag invalid: The image tag ‘latest’ already exists in the ‘my-
ecr-repo’ repository and cannot be overwritten because the
repository is immutable.
Amazon ECR 이미지 스캐닝
$ aws ecr put-image-scanning-configuration 
--repository-name my-ecr-repo 
--image-scanning-configuration scanOnPush=true
$ docker push $ECR_REPO:$BUILD_ID_TAG
$ aws ecr describe-image-scan-findings 
--repository-name my-ecr-repo 
--image-id imageTag=$BUILD_ID_TAG
AWS CodePipeline: 릴리스 프로세스 단계
소스 빌드 테스트 프로덕션
AWS CodePipeline: 릴리스 프로세스 단계
소스 빌드 테스트 프로덕션
Amazon ECS
AWS CodePipeline: 샘플 파이프라인
Source code:
“master” 브랜치
CodeBuild:
어플리케이션 이미지
빌드 및 푸시
Amazon ECS:
이미지를
테스트 환경에
배포
소스 빌드 테스트 프로덕션
Amazon ECS:
이미지를
프로덕션
환경에 배포
AWS CodePipeline: 이미지 파이프라인
Source code:
“master”
브랜치
CodeBuild:
베이스 이미지나
사이드카 이미지
빌드 및 푸시
Amazon ECR 베이스
이미지나 사이드카
이미지 저장소:
“release” 태그
AWS CodePipeline: 샘플 파이프라인
Source code:
“master”
브랜치
CodeBuild:
어플리케이션 이미지
빌드 및 푸시
Amazon ECS:
이미지를 테스트와
프로덕션에 순차적
배포
AWS CodePipeline: 샘플 파이프라인
Source code:
“master”
branch
Amazon ECR base
image repository:
“release” tag
CodeBuild:
Build and push
application image
Amazon ECS:
Deploy image to
test, then
production
AWS CodePipeline: 샘플 파이프라인
Source code:
“master”
branch
Amazon ECR base
image repository:
“release” tag
CodeBuild:
Build and push
application image
Amazon ECR sidecar
image repository:
“release” tag
Amazon ECS:
Deploy image to
test, then
production
릴리스 프로세스 단계
소스 빌드 테스트 프로덕션
GitHub Actions 워크플로우
steps:
- name: Checkout
uses: actions/checkout@v1
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: us-east-2
- name: Deploy Amazon ECS task definition
uses: aws-actions/amazon-ecs-deploy-task-definition@v1
with:
task-definition: task-definition.json
service: my-ecs-service
cluster: my-ecs-cluster
Jenkinsfile
stage('Deploy to ECS Test Service') {
steps {
script {
sh '''#!/bin/bash -ex
sed -i s/BUILD/${BUILD_NUMBER}/g taskdef.json
REV=$(aws ecs register-task-definition --cli-input-json file://taskdef.json | 
jq '.taskDefinition.taskDefinitionArn')
aws ecs update-service --cluster ${CLUSTER} --service ${APP} 
--task-definition ${REV}
aws ecs wait services-stable --cluster ${ECS_CLUSTER} --services ${ECS_SERVICE}
'''
}
}
}
Spinnaker pipeline
"stages": [
{
"name": "Deploy to Test ECS Service",
"type": "deploy"
"clusters": [
{
“cloudProvider": “ecs",
"strategy": "redblack",
"rollback": { "onFailure": true },
"ecsClusterName": “test-cluster",
"imageDescription": {
"account": "my-ecr-registry",
"fromTrigger": true,
"registry": "123456789012.dkr.ecr.eu-central-1.amazonaws.com",
"repository": "spinnaker-deployment-images"
CI/CD 모범사례
3.
반복 가능한
인프라 변경
1.
릴리스 자동화
2.
안전한 배포
CI/CD 모범사례
3.
반복 가능한
인프라 변경
1.
릴리스 자동화
2.
안전한 배포
CI/CD를 위한 아마존의 안전 기준
1. 알람과 테스트에 기반한자동 롤백
2. 빠른 롤백
3. 배포 후 “뜸들이기”
4. 배포는 작게 시작, 점점 크게
AWS CodeDeploy
• EC2, ECS, Lambda에 소프트웨어 자동 배포
• 애플리케이션을 배포하는 동안 가동 중지 시간을
최소화
• 오류가 발생하는 경우 자동으로 롤백
• 트래픽 관리를 통한 사용자 영향 최소화
CodeDeploy ECS 블루/그린 배포
블루 작업:
v1 code
블루
대상
그룹
100%
프로덕션
트래픽
100%
프로덕션
트래픽
CodeDeploy ECS 블루/그린 배포
블루
대상
그룹
블루 작업:
v1 code
CodeDeploy ECS 블루/그린 배포
블루 작업:
v1 code
블루
대상
그룹
100%
프로덕션
트래픽
100%
테스트
트래픽
CodeDeploy ECS 블루/그린 배포
테스트
트래픽
리스너
(포트 9000)
그린
대상
그룹
블루 작업:
v1 code
블루
대상
그룹
100%
프로덕션
트래픽
CodeDeploy ECS 블루/그린 배포
그린 작업:
v2 code
그린 작업 준비
블루
대상
그룹
블루 작업:
v1 code
그린
대상
그룹
100%
test
traffic
100%
프로덕션
트래픽
100%
테스트
리스너
CodeDeploy ECS 블루/그린 배포
그린 작업:
v2 code
테스트 트래픽을 그린으로 변경; 테스트 엔드포인트를 대상으로 검증 테스트
블루
대상
그룹
블루 작업:
v1 code
그린
대상
그룹
100%
프로덕션
트래픽
CodeDeploy ECS AppSpec file
version: 1.0
Hooks:
- BeforeInstall: "LambdaFunctionToExecuteAnythingBeforeNewRevisionInstalltion"
- AfterInstall: "LambdaFunctionToExecuteAnythingAfterNewRevisionInstallation"
- AfterAllowTestTraffic: "LambdaFunctionToValidateAfterTestTrafficShift"
- BeforeAllowTraffic: "LambdaFunctionToValidateBeforeTrafficShift"
- AfterAllowTraffic: "LambdaFunctionToValidateAfterTrafficShift"
Resources:
- TargetService:
Type: AWS::ECS::Service
Properties:
- TaskDefinition: "my_task_definition:8"
LoadBalancerInfos:
- ContainerName: "SampleApp"
ContainerPort: 80
CodeDeploy 수명주기 후크
exports.handler = async function (event, context, callback) {
var params = {
deploymentId: event.DeploymentId,
lifecycleEventHookExecutionId: event.LifecycleEventHookExecutionId,
status: 'Succeeded'
};
const response = await axios(http://my-service.com:9000/api);
if (response.status != 200) {
params.status = 'Failed';
}
await codedeploy.putLifecycleEventHookExecutionStatus(params).promise();
}
100%
테스트
트래픽
CodeDeploy ECS 블루/그린 배포
그린 작업:
v2 code
테스트 트래픽을 그린으로 변경; 테스트 엔드포인트를 대상으로 검증 테스트
블루
대상
그룹
블루 작업:
v1 code
그린
대상
그룹
100%
프로덕션
트래픽
100%
테스트
트래픽
CodeDeploy ECS 블루/그린 배포
그린 작업:
v2 code
프로덕션 트래픽을 그린으로 변경; 알람 발생시 롤백
블루
대상
그룹
블루 작업:
v1 code
그린
대상
그룹
100%
프로덕션
트래픽
CodeDeploy 배포 그룹 구성
"alarmConfiguration": {
"enabled": true,
"ignorePollAlarmFailure": false,
"alarms": [
{
"name": "MyCloudWatchAlarm_Http5xx"
},
{
"name": "MyCloudWatchAlarm_UnhealthyHosts"
},
{
"name": "MyCloudWatchAlarm_ErrorLogging"
}
]
}
CodeDeploy 배포 그룹 구성
"blueGreenDeploymentConfiguration": {
"terminateBlueInstancesOnDeploymentSuccess": {
"action": "TERMINATE",
"terminationWaitTimeInMinutes": 60
}
},
100%
테스트
트래픽
CodeDeploy ECS 블루/그린 배포
그린 작업:
v2 code
프로덕션 트래픽을 그린으로 변경; 알람 발생시 롤백
블루
대상
그룹
블루 작업:
v1 code
그린
대상
그룹
100%
프로덕션
트래픽
100%
테스트
트래픽
CodeDeploy ECS 블루/그린 배포
그린 작업:
v2 code
블루 작업을 제거
블루
대상
그룹
그린
대상
그룹
100%
프로덕션
트래픽
CodeDeploy ECS 블루/그린 배포
• CodePipeline에서 “CodeDeploy-ECS” 배포 작업 사용
• Jenkins나 다른 CI/CD 툴에서 “aws ecs deploy” 커맨드 사용
aws ecs deploy 
--service MyEcsService 
--codedeploy-deployment-group MyDeploymentGroup 
--task-definition task-definition.json 
--codedeploy-appspec appspec.yml
CI/CD 모범사례
3.
반복 가능한
인프라 변경
1.
릴리스 자동화
2.
안전한 배포
CI/CD 모범사례
3.
반복 가능한
인프라 변경
1.
릴리스 자동화
2.
안전한 배포
나의 앱
이미지
나의 앱
이미지
트래픽
(port 443)
나의 앱
이미지
트래픽
(port 8080)
상태 확인
(/health)
Traffic
(port 443)
나의 앱
이미지
트래픽
(port 8080)
상태 확인
(/health)
트래픽
(port 8080)
상태 확인
(/health)
테스트 환경
트래픽
(port 8080)
프로덕트 환경
상태 확인
(/)
아!
AWS CloudFormation을 사용한 인프라 코드
자동화TargetGroup:
Type: AWS::ElasticLoadBalancingV2::TargetGroup
Properties:
HealthCheckIntervalSeconds: 6
HealthCheckPath: /health
HealthCheckProtocol: HTTP
HealthCheckTimeoutSeconds: 5
HealthyThresholdCount: 2
TargetType: ip
Name: !Ref 'ServiceName'
Port: !Ref 'ContainerPort'
Protocol: HTTP
UnhealthyThresholdCount: 2
Amazon의 CI/CD 사용과 인프라 코드 자동화
Repo(s) contain
app code & CFN
template file
소스 단계 빌드 단계 테스트 단계 프로덕션 단계
Build & push
image; update
CFN template
file
Deploy CFN
template file;
run tests
Deploy CFN
template file;
monitor
Insert image ID into infrastructure as code
templateTaskDef:
Type: AWS::ECS::TaskDefinition
Properties:
ContainerDefinitions:
- - Image: my-app-image:<PLACEHOLDER>
+ - Image: my-app-image@sha256:e3b0c44298fc1c149afbf4c87...
Amazon의 CI/CD 사용과 인프라 코드 자동화
Repo(s) contain
app code & CFN
template file
소스 단계 빌드 단계 테스트 단계 프로덕션 단계
Build & push
image; update
CFN template
file
Deploy CFN
template file;
run tests
Deploy CFN
template file;
monitor
트래픽
(port 443)
나의 앱
이미지
트래픽
(port 8080)
상태 확인
(/health)
AWS Cloud Development Kit (AWS CDK)
• 익숙한 프로그래밍 언어를 사용하여 클라우드
인프라를 정의할 수 있는 오픈 소스 소프트웨어
개발 프레임워크
• JavaScript, TypeScript, Python, Java 및 C# 지원
• AWS CloudFormation을 통해 리소스를 프로비저닝
• CloudFormation 리소스를 모두 지원
• AWS의 노하우가 담겨있는 풍부한 상위 레벨 구문을
제공
AWS CDK ECS constructs
const cluster = new ecs.Cluster(this, 'Cluster');
const taskDef = new ecs.FargateTaskDefinition(this, "MyTaskDefinition", {
memoryLimitMiB: 512,
cpu: 256,
});
taskDef.addContainer("AppContainer", {
image: ecs.ContainerImage.fromRegistry("amazon/amazon-ecs-sample"),
});
new ecs.FargateService(this, "FargateService", {
cluster,
taskDefinition: taskDef
});
AWS CDK ECS 패턴
• 애플리케이션 로드
밸런스 서비스
• 네트워크 로드 밸런스
서비스
• 큐 프로세싱 서비스
• 예약된 작업 (Cron job)
트래픽
(port 443)
내 앱
이미지
트래픽
(port 80)
상태 확인
(/)
AWS CDK ECS 패턴
import { ApplicationLoadBalancedFargateService } from '@aws-cdk/aws-ecs-patterns';
import { ContainerImage } from 'aws-cdk/aws-ecs';
import cdk = require('@aws-cdk/core');
class BonjourFargate extends cdk.Stack {
constructor(parent: cdk.App, name: string, props: cdk.StackProps) {
super(parent, name, props);
new ApplicationLoadBalancedFargateService(this, 'Service', {
taskImageOptions: { image: ContainerImage.fromAsset(‘../src') }
});
}
}
const app = new cdk.App();
new BonjourFargate(app, 'Bonjour', {});
app.synth();
ECS 패턴 포함 항목:
• VPC
• ECS 클러스터
• ECS 작업 정의
• AWS Fargate 서비스
• Amazon CloudWatch Logs
• 로드 밸런서
• 보안 그룹
AWS CDK ECS 패턴
import { ApplicationLoadBalancedFargateService } from '@aws-cdk/aws-ecs-patterns';
import { ContainerImage } from 'aws-cdk/aws-ecs';
import cdk = require('@aws-cdk/core');
class BonjourFargate extends cdk.Stack {
constructor(parent: cdk.App, name: string, props: cdk.StackProps) {
super(parent, name, props);
new ApplicationLoadBalancedFargateService(this, 'Service', {
taskImageOptions: { image: ContainerImage.fromAsset(‘../src') }
});
}
}
const app = new cdk.App();
new BonjourFargate(app, 'Bonjour', {});
app.synth();
AWS CDK는 ECR
리포지토리를
만들고, 여러분의
도커 이미지를 빌드
하고 푸시 할 겁니다.
AWS CDK ECS 패턴
import { ApplicationLoadBalancedFargateService } from '@aws-cdk/aws-ecs-patterns';
import { ContainerImage } from 'aws-cdk/aws-ecs';
import cdk = require('@aws-cdk/core');
class BonjourFargate extends cdk.Stack {
constructor(parent: cdk.App, name: string, props: cdk.StackProps) {
super(parent, name, props);
new ApplicationLoadBalancedFargateService(this, 'Service', {
taskImageOptions: { image: ContainerImage.fromAsset('../src') }
});
}
}
const app = new cdk.App();
new BonjourFargate(app, 'Bonjour', {});
app.synth();
수백줄에 달하는 AWS
CloudFormation Template 을
생성합니다.
AWS CDK CLI
npm install -g aws-cdk
cdk init --language typescript
cdk synth
cdk deploy
AWS CDK code를 위한 CI/CD
Repo(s) contain
app code & CDK
code
소스 단계 빌드 단계 테스트 단계 프로덕션 단계
Build & push
image;
synthesize CDK
template
Deploy CFN
template file;
run tests
Deploy CFN
template file;
monitor
AWS CDK CodeBuild buildspec
version: 0.2
phases:
install:
commands:
# Install CDK
- npm install -g aws-cdk
build:
commands:
# Compile code & synthesize CloudFormation templates
- npm ci
- tsc
- cdk synth --app 'node ecs-service.js'
AWS CDK CodePipeline pipelines
class DeployCDKPipeline extends cdk.Stack {
constructor(parent: cdk.App, name: string, props: MyMicroservicePipelineProps) {
super(parent, name, props);
const pipeline = new codepipeline.Pipeline(this, 'Pipeline', {
pipelineName: props.serviceName,
});
const githubAccessToken = cdk.SecretValue.secretsManager('GitHubToken');
const sourceOutput = new codepipeline.Artifact('SourceArtifact');
const sourceAction = new actions.GitHubSourceAction({
actionName: 'GitHubSource', output: sourceOutput,
owner: ‘my-github-org’, repo: props.serviceName,
oauthToken: githubAccessToken
});
AWS CDK CodePipeline pipelines
class MyMicroservicePipelinesStack extends cdk.Stack {
constructor(parent: cdk.App, name: string, props?: cdk.StackProps) {
super(parent, name, props);
new DeployCDKPipeline(this, 'Pipeline1', { 'serviceName': 'Microservice1' });
new DeployCDKPipeline(this, 'Pipeline2', { 'serviceName': 'Microservice2' });
new DeployCDKPipeline(this, 'Pipeline3', { 'serviceName': 'Microservice3' });
new DeployCDKPipeline(this, 'Pipeline4', { 'serviceName': 'Microservice4' });
}
}
CI/CD 모범사례
3.
반복 가능한
인프라 변경
1.
릴리스 자동화
2.
안전한 배포
더 나은 세미나를 위해
여러분의 의견을 남겨주세요!
▶ 질문에 대한 답변 드립니다.
▶ 발표자료/녹화영상을 제공합니다.
http://bit.ly/awskr-webinar
감사합니다.

Mais conteúdo relacionado

Mais procurados

Security on AWS :: 이경수 솔루션즈아키텍트
Security on AWS :: 이경수 솔루션즈아키텍트Security on AWS :: 이경수 솔루션즈아키텍트
Security on AWS :: 이경수 솔루션즈아키텍트Amazon Web Services Korea
 
DMS와 SCT를 활용한 Oracle에서 Open Source DB로의 전환
DMS와 SCT를 활용한 Oracle에서 Open Source DB로의 전환DMS와 SCT를 활용한 Oracle에서 Open Source DB로의 전환
DMS와 SCT를 활용한 Oracle에서 Open Source DB로의 전환Amazon Web Services Korea
 
AWS Networking Fundamentals - SVC304 - Anaheim AWS Summit
AWS Networking Fundamentals - SVC304 - Anaheim AWS SummitAWS Networking Fundamentals - SVC304 - Anaheim AWS Summit
AWS Networking Fundamentals - SVC304 - Anaheim AWS SummitAmazon Web Services
 
AWS Summit Seoul 2015 -CloudFront와 Route53 기반 콘텐츠 배포 전략 (GS네오텍-박정수)
AWS Summit Seoul 2015 -CloudFront와 Route53 기반 콘텐츠 배포 전략 (GS네오텍-박정수)AWS Summit Seoul 2015 -CloudFront와 Route53 기반 콘텐츠 배포 전략 (GS네오텍-박정수)
AWS Summit Seoul 2015 -CloudFront와 Route53 기반 콘텐츠 배포 전략 (GS네오텍-박정수)Amazon Web Services Korea
 
금융권 고객을 위한 클라우드 보안 및 규정 준수 가이드 - 이대근 시큐리티 어슈어런스 매니저, AWS :: AWS Summit Seoul ...
금융권 고객을 위한 클라우드 보안 및 규정 준수 가이드 - 이대근 시큐리티 어슈어런스 매니저, AWS :: AWS Summit Seoul ...금융권 고객을 위한 클라우드 보안 및 규정 준수 가이드 - 이대근 시큐리티 어슈어런스 매니저, AWS :: AWS Summit Seoul ...
금융권 고객을 위한 클라우드 보안 및 규정 준수 가이드 - 이대근 시큐리티 어슈어런스 매니저, AWS :: AWS Summit Seoul ...Amazon Web Services Korea
 
(DVO315) Log, Monitor and Analyze your IT with Amazon CloudWatch
(DVO315) Log, Monitor and Analyze your IT with Amazon CloudWatch(DVO315) Log, Monitor and Analyze your IT with Amazon CloudWatch
(DVO315) Log, Monitor and Analyze your IT with Amazon CloudWatchAmazon Web Services
 
워크로드 특성에 따른 안전하고 효율적인 Data Lake 운영 방안
워크로드 특성에 따른 안전하고 효율적인 Data Lake 운영 방안워크로드 특성에 따른 안전하고 효율적인 Data Lake 운영 방안
워크로드 특성에 따른 안전하고 효율적인 Data Lake 운영 방안Amazon Web Services Korea
 
금융권을 위한 AWS Direct Connect 기반 하이브리드 구성 방법 - AWS Summit Seoul 2017
금융권을 위한 AWS Direct Connect 기반 하이브리드 구성 방법 - AWS Summit Seoul 2017금융권을 위한 AWS Direct Connect 기반 하이브리드 구성 방법 - AWS Summit Seoul 2017
금융권을 위한 AWS Direct Connect 기반 하이브리드 구성 방법 - AWS Summit Seoul 2017Amazon Web Services Korea
 
20200526 AWS Black Belt Online Seminar AWS X-Ray
20200526 AWS Black Belt Online Seminar AWS X-Ray20200526 AWS Black Belt Online Seminar AWS X-Ray
20200526 AWS Black Belt Online Seminar AWS X-RayAmazon Web Services Japan
 
[AWS Builders 온라인 시리즈] AWS 서비스를 활용하여 파일 스토리지 빠르게 마이그레이션 하기 - 서지혜, AWS 솔루션즈 아키텍트
[AWS Builders 온라인 시리즈]  AWS 서비스를 활용하여 파일 스토리지 빠르게 마이그레이션 하기 - 서지혜, AWS 솔루션즈 아키텍트[AWS Builders 온라인 시리즈]  AWS 서비스를 활용하여 파일 스토리지 빠르게 마이그레이션 하기 - 서지혜, AWS 솔루션즈 아키텍트
[AWS Builders 온라인 시리즈] AWS 서비스를 활용하여 파일 스토리지 빠르게 마이그레이션 하기 - 서지혜, AWS 솔루션즈 아키텍트Amazon Web Services Korea
 
AWS CloudFront 가속 및 DDoS 방어
AWS CloudFront 가속 및 DDoS 방어AWS CloudFront 가속 및 DDoS 방어
AWS CloudFront 가속 및 DDoS 방어Kyle(KY) Yang
 
Aws glue를 통한 손쉬운 데이터 전처리 작업하기
Aws glue를 통한 손쉬운 데이터 전처리 작업하기Aws glue를 통한 손쉬운 데이터 전처리 작업하기
Aws glue를 통한 손쉬운 데이터 전처리 작업하기Amazon Web Services Korea
 
더욱 진화하는 AWS 네트워크 보안 - 신은수 AWS 시큐리티 스페셜리스트 솔루션즈 아키텍트 :: AWS Summit Seoul 2021
더욱 진화하는 AWS 네트워크 보안 - 신은수 AWS 시큐리티 스페셜리스트 솔루션즈 아키텍트 :: AWS Summit Seoul 2021더욱 진화하는 AWS 네트워크 보안 - 신은수 AWS 시큐리티 스페셜리스트 솔루션즈 아키텍트 :: AWS Summit Seoul 2021
더욱 진화하는 AWS 네트워크 보안 - 신은수 AWS 시큐리티 스페셜리스트 솔루션즈 아키텍트 :: AWS Summit Seoul 2021Amazon Web Services Korea
 
AWS Summit Seoul 2023 | Amazon EKS, 중요한 건 꺾이지 않는 안정성
AWS Summit Seoul 2023 | Amazon EKS, 중요한 건 꺾이지 않는 안정성AWS Summit Seoul 2023 | Amazon EKS, 중요한 건 꺾이지 않는 안정성
AWS Summit Seoul 2023 | Amazon EKS, 중요한 건 꺾이지 않는 안정성Amazon Web Services Korea
 
Introduction to AWS Cost Management
Introduction to AWS Cost ManagementIntroduction to AWS Cost Management
Introduction to AWS Cost ManagementAmazon Web Services
 
AWS Backup을 이용한 데이터베이스의 백업 자동화와 편리한 복구방법
AWS Backup을 이용한 데이터베이스의 백업 자동화와 편리한 복구방법AWS Backup을 이용한 데이터베이스의 백업 자동화와 편리한 복구방법
AWS Backup을 이용한 데이터베이스의 백업 자동화와 편리한 복구방법Amazon Web Services Korea
 
Amazon OpenSearch Deep dive - 내부구조, 성능최적화 그리고 스케일링
Amazon OpenSearch Deep dive - 내부구조, 성능최적화 그리고 스케일링Amazon OpenSearch Deep dive - 내부구조, 성능최적화 그리고 스케일링
Amazon OpenSearch Deep dive - 내부구조, 성능최적화 그리고 스케일링Amazon Web Services Korea
 
AWS X-Ray를 통한 서버리스 분산 애플리케이션 추적하기 - 윤석찬 (AWS 테크에반젤리스트)
AWS X-Ray를 통한 서버리스 분산 애플리케이션 추적하기 - 윤석찬 (AWS 테크에반젤리스트)AWS X-Ray를 통한 서버리스 분산 애플리케이션 추적하기 - 윤석찬 (AWS 테크에반젤리스트)
AWS X-Ray를 통한 서버리스 분산 애플리케이션 추적하기 - 윤석찬 (AWS 테크에반젤리스트)Amazon Web Services Korea
 

Mais procurados (20)

Security on AWS :: 이경수 솔루션즈아키텍트
Security on AWS :: 이경수 솔루션즈아키텍트Security on AWS :: 이경수 솔루션즈아키텍트
Security on AWS :: 이경수 솔루션즈아키텍트
 
DMS와 SCT를 활용한 Oracle에서 Open Source DB로의 전환
DMS와 SCT를 활용한 Oracle에서 Open Source DB로의 전환DMS와 SCT를 활용한 Oracle에서 Open Source DB로의 전환
DMS와 SCT를 활용한 Oracle에서 Open Source DB로의 전환
 
AWS Networking Fundamentals - SVC304 - Anaheim AWS Summit
AWS Networking Fundamentals - SVC304 - Anaheim AWS SummitAWS Networking Fundamentals - SVC304 - Anaheim AWS Summit
AWS Networking Fundamentals - SVC304 - Anaheim AWS Summit
 
AWS Summit Seoul 2015 -CloudFront와 Route53 기반 콘텐츠 배포 전략 (GS네오텍-박정수)
AWS Summit Seoul 2015 -CloudFront와 Route53 기반 콘텐츠 배포 전략 (GS네오텍-박정수)AWS Summit Seoul 2015 -CloudFront와 Route53 기반 콘텐츠 배포 전략 (GS네오텍-박정수)
AWS Summit Seoul 2015 -CloudFront와 Route53 기반 콘텐츠 배포 전략 (GS네오텍-박정수)
 
금융권 고객을 위한 클라우드 보안 및 규정 준수 가이드 - 이대근 시큐리티 어슈어런스 매니저, AWS :: AWS Summit Seoul ...
금융권 고객을 위한 클라우드 보안 및 규정 준수 가이드 - 이대근 시큐리티 어슈어런스 매니저, AWS :: AWS Summit Seoul ...금융권 고객을 위한 클라우드 보안 및 규정 준수 가이드 - 이대근 시큐리티 어슈어런스 매니저, AWS :: AWS Summit Seoul ...
금융권 고객을 위한 클라우드 보안 및 규정 준수 가이드 - 이대근 시큐리티 어슈어런스 매니저, AWS :: AWS Summit Seoul ...
 
(DVO315) Log, Monitor and Analyze your IT with Amazon CloudWatch
(DVO315) Log, Monitor and Analyze your IT with Amazon CloudWatch(DVO315) Log, Monitor and Analyze your IT with Amazon CloudWatch
(DVO315) Log, Monitor and Analyze your IT with Amazon CloudWatch
 
워크로드 특성에 따른 안전하고 효율적인 Data Lake 운영 방안
워크로드 특성에 따른 안전하고 효율적인 Data Lake 운영 방안워크로드 특성에 따른 안전하고 효율적인 Data Lake 운영 방안
워크로드 특성에 따른 안전하고 효율적인 Data Lake 운영 방안
 
금융권을 위한 AWS Direct Connect 기반 하이브리드 구성 방법 - AWS Summit Seoul 2017
금융권을 위한 AWS Direct Connect 기반 하이브리드 구성 방법 - AWS Summit Seoul 2017금융권을 위한 AWS Direct Connect 기반 하이브리드 구성 방법 - AWS Summit Seoul 2017
금융권을 위한 AWS Direct Connect 기반 하이브리드 구성 방법 - AWS Summit Seoul 2017
 
20200526 AWS Black Belt Online Seminar AWS X-Ray
20200526 AWS Black Belt Online Seminar AWS X-Ray20200526 AWS Black Belt Online Seminar AWS X-Ray
20200526 AWS Black Belt Online Seminar AWS X-Ray
 
[AWS Builders 온라인 시리즈] AWS 서비스를 활용하여 파일 스토리지 빠르게 마이그레이션 하기 - 서지혜, AWS 솔루션즈 아키텍트
[AWS Builders 온라인 시리즈]  AWS 서비스를 활용하여 파일 스토리지 빠르게 마이그레이션 하기 - 서지혜, AWS 솔루션즈 아키텍트[AWS Builders 온라인 시리즈]  AWS 서비스를 활용하여 파일 스토리지 빠르게 마이그레이션 하기 - 서지혜, AWS 솔루션즈 아키텍트
[AWS Builders 온라인 시리즈] AWS 서비스를 활용하여 파일 스토리지 빠르게 마이그레이션 하기 - 서지혜, AWS 솔루션즈 아키텍트
 
AWS CloudFront 가속 및 DDoS 방어
AWS CloudFront 가속 및 DDoS 방어AWS CloudFront 가속 및 DDoS 방어
AWS CloudFront 가속 및 DDoS 방어
 
Aws glue를 통한 손쉬운 데이터 전처리 작업하기
Aws glue를 통한 손쉬운 데이터 전처리 작업하기Aws glue를 통한 손쉬운 데이터 전처리 작업하기
Aws glue를 통한 손쉬운 데이터 전처리 작업하기
 
더욱 진화하는 AWS 네트워크 보안 - 신은수 AWS 시큐리티 스페셜리스트 솔루션즈 아키텍트 :: AWS Summit Seoul 2021
더욱 진화하는 AWS 네트워크 보안 - 신은수 AWS 시큐리티 스페셜리스트 솔루션즈 아키텍트 :: AWS Summit Seoul 2021더욱 진화하는 AWS 네트워크 보안 - 신은수 AWS 시큐리티 스페셜리스트 솔루션즈 아키텍트 :: AWS Summit Seoul 2021
더욱 진화하는 AWS 네트워크 보안 - 신은수 AWS 시큐리티 스페셜리스트 솔루션즈 아키텍트 :: AWS Summit Seoul 2021
 
AWS Summit Seoul 2023 | Amazon EKS, 중요한 건 꺾이지 않는 안정성
AWS Summit Seoul 2023 | Amazon EKS, 중요한 건 꺾이지 않는 안정성AWS Summit Seoul 2023 | Amazon EKS, 중요한 건 꺾이지 않는 안정성
AWS Summit Seoul 2023 | Amazon EKS, 중요한 건 꺾이지 않는 안정성
 
Introduction to AWS Cost Management
Introduction to AWS Cost ManagementIntroduction to AWS Cost Management
Introduction to AWS Cost Management
 
AWS Backup을 이용한 데이터베이스의 백업 자동화와 편리한 복구방법
AWS Backup을 이용한 데이터베이스의 백업 자동화와 편리한 복구방법AWS Backup을 이용한 데이터베이스의 백업 자동화와 편리한 복구방법
AWS Backup을 이용한 데이터베이스의 백업 자동화와 편리한 복구방법
 
Amazon OpenSearch Deep dive - 내부구조, 성능최적화 그리고 스케일링
Amazon OpenSearch Deep dive - 내부구조, 성능최적화 그리고 스케일링Amazon OpenSearch Deep dive - 내부구조, 성능최적화 그리고 스케일링
Amazon OpenSearch Deep dive - 내부구조, 성능최적화 그리고 스케일링
 
AWS X-Ray를 통한 서버리스 분산 애플리케이션 추적하기 - 윤석찬 (AWS 테크에반젤리스트)
AWS X-Ray를 통한 서버리스 분산 애플리케이션 추적하기 - 윤석찬 (AWS 테크에반젤리스트)AWS X-Ray를 통한 서버리스 분산 애플리케이션 추적하기 - 윤석찬 (AWS 테크에반젤리스트)
AWS X-Ray를 통한 서버리스 분산 애플리케이션 추적하기 - 윤석찬 (AWS 테크에반젤리스트)
 
AWS 101
AWS 101AWS 101
AWS 101
 
Amazon services ec2
Amazon services ec2Amazon services ec2
Amazon services ec2
 

Semelhante a AWS Fargate와 Amazon ECS를 사용한 CI/CD 베스트 프랙티스 - 유재석, AWS 솔루션즈 아키텍트 :: AWS Builders 300

AWS Fargate와 Amazon ECS를 활용한 CI/CD 모범사례 - 유재석, AWS 솔루션즈 아키텍트 :: AWS Game Mast...
AWS Fargate와 Amazon ECS를 활용한 CI/CD 모범사례 - 유재석, AWS 솔루션즈 아키텍트 :: AWS Game Mast...AWS Fargate와 Amazon ECS를 활용한 CI/CD 모범사례 - 유재석, AWS 솔루션즈 아키텍트 :: AWS Game Mast...
AWS Fargate와 Amazon ECS를 활용한 CI/CD 모범사례 - 유재석, AWS 솔루션즈 아키텍트 :: AWS Game Mast...Amazon Web Services Korea
 
AWS DevOps와 ECR을 통한 Elastic Beanstalk 배포 환경 구축 및 타 환경과의 비교
AWS DevOps와 ECR을 통한 Elastic Beanstalk 배포 환경 구축 및 타 환경과의 비교AWS DevOps와 ECR을 통한 Elastic Beanstalk 배포 환경 구축 및 타 환경과의 비교
AWS DevOps와 ECR을 통한 Elastic Beanstalk 배포 환경 구축 및 타 환경과의 비교ssuserd4f9ff
 
클라이드 네이티브 기반 Twelve Factor 앱 개발 - 윤석찬, AWS 테크에반젤리스트 :: AWS Summit Online Kore...
클라이드 네이티브 기반 Twelve Factor 앱 개발 - 윤석찬, AWS 테크에반젤리스트 :: AWS Summit Online Kore...클라이드 네이티브 기반 Twelve Factor 앱 개발 - 윤석찬, AWS 테크에반젤리스트 :: AWS Summit Online Kore...
클라이드 네이티브 기반 Twelve Factor 앱 개발 - 윤석찬, AWS 테크에반젤리스트 :: AWS Summit Online Kore...Amazon Web Services Korea
 
[AWS Builders] AWS Cloud Development Kit을 이용한 Code 기반의 인프라 구축 - 김현수, AWS 솔루션즈...
[AWS Builders] AWS Cloud Development Kit을 이용한 Code 기반의 인프라 구축 - 김현수, AWS 솔루션즈...[AWS Builders] AWS Cloud Development Kit을 이용한 Code 기반의 인프라 구축 - 김현수, AWS 솔루션즈...
[AWS Builders] AWS Cloud Development Kit을 이용한 Code 기반의 인프라 구축 - 김현수, AWS 솔루션즈...Amazon Web Services Korea
 
효과적인 데브옵스를 위한 AWS 개발 도구 활용하기 - AWS Summit Seoul 2017
효과적인 데브옵스를 위한 AWS 개발 도구 활용하기 - AWS Summit Seoul 2017효과적인 데브옵스를 위한 AWS 개발 도구 활용하기 - AWS Summit Seoul 2017
효과적인 데브옵스를 위한 AWS 개발 도구 활용하기 - AWS Summit Seoul 2017Amazon Web Services Korea
 
[애플리케이션 현대화 및 개발] 현대적 애플리케이션 개발의 필수, 앱 배포 및 인프라 구성 자동화 - 김필중, AWS 솔루션즈 아키텍트
[애플리케이션 현대화 및 개발] 현대적 애플리케이션 개발의 필수, 앱 배포 및 인프라 구성 자동화 - 김필중, AWS 솔루션즈 아키텍트[애플리케이션 현대화 및 개발] 현대적 애플리케이션 개발의 필수, 앱 배포 및 인프라 구성 자동화 - 김필중, AWS 솔루션즈 아키텍트
[애플리케이션 현대화 및 개발] 현대적 애플리케이션 개발의 필수, 앱 배포 및 인프라 구성 자동화 - 김필중, AWS 솔루션즈 아키텍트Amazon Web Services Korea
 
[AWS Dev Day] 앱 현대화 | 코드 기반 인프라(IaC)를 활용한 현대 애플리케이션 개발 가속화, 우리도 할 수 있어요 - 김필중...
[AWS Dev Day] 앱 현대화 | 코드 기반 인프라(IaC)를 활용한 현대 애플리케이션 개발 가속화, 우리도 할 수 있어요 - 김필중...[AWS Dev Day] 앱 현대화 | 코드 기반 인프라(IaC)를 활용한 현대 애플리케이션 개발 가속화, 우리도 할 수 있어요 - 김필중...
[AWS Dev Day] 앱 현대화 | 코드 기반 인프라(IaC)를 활용한 현대 애플리케이션 개발 가속화, 우리도 할 수 있어요 - 김필중...Amazon Web Services Korea
 
AWS Code 서비스 특집 - 아마존 DevOps와 CodeDeploy, CodePipeline (윤석찬)
AWS Code 서비스 특집 - 아마존 DevOps와 CodeDeploy, CodePipeline (윤석찬)AWS Code 서비스 특집 - 아마존 DevOps와 CodeDeploy, CodePipeline (윤석찬)
AWS Code 서비스 특집 - 아마존 DevOps와 CodeDeploy, CodePipeline (윤석찬)Amazon Web Services Korea
 
10월 웨비나 - AWS에서 MS Windows 운영, 관리 및 개발 손쉽게 하기 (박철수 솔루션즈 아키텍트)
10월 웨비나 - AWS에서 MS Windows 운영, 관리 및 개발 손쉽게 하기 (박철수 솔루션즈 아키텍트)10월 웨비나 - AWS에서 MS Windows 운영, 관리 및 개발 손쉽게 하기 (박철수 솔루션즈 아키텍트)
10월 웨비나 - AWS에서 MS Windows 운영, 관리 및 개발 손쉽게 하기 (박철수 솔루션즈 아키텍트)Amazon Web Services Korea
 
[AWS Builders] AWS 서버리스 서비스를 활용한 웹 애플리케이션 구축 및 배포 방법 - 정창호, AWS 솔루션즈 아키텍트
[AWS Builders] AWS 서버리스 서비스를 활용한 웹 애플리케이션 구축 및 배포 방법 - 정창호, AWS 솔루션즈 아키텍트[AWS Builders] AWS 서버리스 서비스를 활용한 웹 애플리케이션 구축 및 배포 방법 - 정창호, AWS 솔루션즈 아키텍트
[AWS Builders] AWS 서버리스 서비스를 활용한 웹 애플리케이션 구축 및 배포 방법 - 정창호, AWS 솔루션즈 아키텍트Amazon Web Services Korea
 
데브옵스 엔지니어를 위한 신규 운영 서비스 - 김필중, AWS 개발 전문 솔루션즈 아키텍트 / 김현민, 메가존클라우드 솔루션즈 아키텍트 :...
데브옵스 엔지니어를 위한 신규 운영 서비스 - 김필중, AWS 개발 전문 솔루션즈 아키텍트 / 김현민, 메가존클라우드 솔루션즈 아키텍트 :...데브옵스 엔지니어를 위한 신규 운영 서비스 - 김필중, AWS 개발 전문 솔루션즈 아키텍트 / 김현민, 메가존클라우드 솔루션즈 아키텍트 :...
데브옵스 엔지니어를 위한 신규 운영 서비스 - 김필중, AWS 개발 전문 솔루션즈 아키텍트 / 김현민, 메가존클라우드 솔루션즈 아키텍트 :...Amazon Web Services Korea
 
컨테이너와 서버리스 기반 CI/CD 파이프라인 구성하기 - 김필중 솔루션즈 아키텍트, AWS / 강승욱 솔루션즈 아키텍트, AWS :: A...
컨테이너와 서버리스 기반 CI/CD 파이프라인 구성하기 - 김필중 솔루션즈 아키텍트, AWS / 강승욱 솔루션즈 아키텍트, AWS :: A...컨테이너와 서버리스 기반 CI/CD 파이프라인 구성하기 - 김필중 솔루션즈 아키텍트, AWS / 강승욱 솔루션즈 아키텍트, AWS :: A...
컨테이너와 서버리스 기반 CI/CD 파이프라인 구성하기 - 김필중 솔루션즈 아키텍트, AWS / 강승욱 솔루션즈 아키텍트, AWS :: A...Amazon Web Services Korea
 
데브옵스(DevOps) 문화 모범 사례와 구현 도구 살펴보기 – 박선준 :: AWS Builders Online Series
데브옵스(DevOps) 문화 모범 사례와 구현 도구 살펴보기 – 박선준 :: AWS Builders Online Series데브옵스(DevOps) 문화 모범 사례와 구현 도구 살펴보기 – 박선준 :: AWS Builders Online Series
데브옵스(DevOps) 문화 모범 사례와 구현 도구 살펴보기 – 박선준 :: AWS Builders Online SeriesAmazon Web Services Korea
 
[AWS Dev Day] 실습워크샵 | Amplify 와 AI 서비스를 활용한 서버리스 기반 소셜 안드로이드 앱 만들기
 [AWS Dev Day] 실습워크샵 | Amplify 와 AI 서비스를 활용한 서버리스 기반 소셜 안드로이드 앱 만들기 [AWS Dev Day] 실습워크샵 | Amplify 와 AI 서비스를 활용한 서버리스 기반 소셜 안드로이드 앱 만들기
[AWS Dev Day] 실습워크샵 | Amplify 와 AI 서비스를 활용한 서버리스 기반 소셜 안드로이드 앱 만들기Amazon Web Services Korea
 
[애플리케이션 현대화 및 개발] 현대적 애플리케이션 개발을 위한 AWS 컨테이너 활용사례 및 주요 도구 알아보기 - 정영준, AWS 솔루션...
[애플리케이션 현대화 및 개발] 현대적 애플리케이션 개발을 위한 AWS 컨테이너 활용사례 및 주요 도구 알아보기 - 정영준, AWS 솔루션...[애플리케이션 현대화 및 개발] 현대적 애플리케이션 개발을 위한 AWS 컨테이너 활용사례 및 주요 도구 알아보기 - 정영준, AWS 솔루션...
[애플리케이션 현대화 및 개발] 현대적 애플리케이션 개발을 위한 AWS 컨테이너 활용사례 및 주요 도구 알아보기 - 정영준, AWS 솔루션...Amazon Web Services Korea
 
[웨비나] 다중 AWS 계정에서의 CI/CD 구축
[웨비나] 다중 AWS 계정에서의 CI/CD 구축[웨비나] 다중 AWS 계정에서의 CI/CD 구축
[웨비나] 다중 AWS 계정에서의 CI/CD 구축BESPIN GLOBAL
 
AWS와 함께하는 DevOps이야기 :: 박선용 :: AWS Summit Seoul 2016
AWS와 함께하는 DevOps이야기 :: 박선용 :: AWS Summit Seoul 2016AWS와 함께하는 DevOps이야기 :: 박선용 :: AWS Summit Seoul 2016
AWS와 함께하는 DevOps이야기 :: 박선용 :: AWS Summit Seoul 2016Amazon Web Services Korea
 
AWS 관리형 서비스를 활용하여 Kubernetes 를 위한 Devops 환경 구축하기 - 김광영, AWS솔루션즈 아키텍트:: AWS S...
AWS 관리형 서비스를 활용하여 Kubernetes 를 위한 Devops 환경 구축하기 - 김광영, AWS솔루션즈 아키텍트::  AWS S...AWS 관리형 서비스를 활용하여 Kubernetes 를 위한 Devops 환경 구축하기 - 김광영, AWS솔루션즈 아키텍트::  AWS S...
AWS 관리형 서비스를 활용하여 Kubernetes 를 위한 Devops 환경 구축하기 - 김광영, AWS솔루션즈 아키텍트:: AWS S...Amazon Web Services Korea
 
introduction of IaC using CloudFormation
introduction of IaC using CloudFormationintroduction of IaC using CloudFormation
introduction of IaC using CloudFormationHongkiYim
 
DevOps (AWS, Docker, Ansible, Jenkins)
DevOps (AWS, Docker, Ansible, Jenkins)DevOps (AWS, Docker, Ansible, Jenkins)
DevOps (AWS, Docker, Ansible, Jenkins)완철 김
 

Semelhante a AWS Fargate와 Amazon ECS를 사용한 CI/CD 베스트 프랙티스 - 유재석, AWS 솔루션즈 아키텍트 :: AWS Builders 300 (20)

AWS Fargate와 Amazon ECS를 활용한 CI/CD 모범사례 - 유재석, AWS 솔루션즈 아키텍트 :: AWS Game Mast...
AWS Fargate와 Amazon ECS를 활용한 CI/CD 모범사례 - 유재석, AWS 솔루션즈 아키텍트 :: AWS Game Mast...AWS Fargate와 Amazon ECS를 활용한 CI/CD 모범사례 - 유재석, AWS 솔루션즈 아키텍트 :: AWS Game Mast...
AWS Fargate와 Amazon ECS를 활용한 CI/CD 모범사례 - 유재석, AWS 솔루션즈 아키텍트 :: AWS Game Mast...
 
AWS DevOps와 ECR을 통한 Elastic Beanstalk 배포 환경 구축 및 타 환경과의 비교
AWS DevOps와 ECR을 통한 Elastic Beanstalk 배포 환경 구축 및 타 환경과의 비교AWS DevOps와 ECR을 통한 Elastic Beanstalk 배포 환경 구축 및 타 환경과의 비교
AWS DevOps와 ECR을 통한 Elastic Beanstalk 배포 환경 구축 및 타 환경과의 비교
 
클라이드 네이티브 기반 Twelve Factor 앱 개발 - 윤석찬, AWS 테크에반젤리스트 :: AWS Summit Online Kore...
클라이드 네이티브 기반 Twelve Factor 앱 개발 - 윤석찬, AWS 테크에반젤리스트 :: AWS Summit Online Kore...클라이드 네이티브 기반 Twelve Factor 앱 개발 - 윤석찬, AWS 테크에반젤리스트 :: AWS Summit Online Kore...
클라이드 네이티브 기반 Twelve Factor 앱 개발 - 윤석찬, AWS 테크에반젤리스트 :: AWS Summit Online Kore...
 
[AWS Builders] AWS Cloud Development Kit을 이용한 Code 기반의 인프라 구축 - 김현수, AWS 솔루션즈...
[AWS Builders] AWS Cloud Development Kit을 이용한 Code 기반의 인프라 구축 - 김현수, AWS 솔루션즈...[AWS Builders] AWS Cloud Development Kit을 이용한 Code 기반의 인프라 구축 - 김현수, AWS 솔루션즈...
[AWS Builders] AWS Cloud Development Kit을 이용한 Code 기반의 인프라 구축 - 김현수, AWS 솔루션즈...
 
효과적인 데브옵스를 위한 AWS 개발 도구 활용하기 - AWS Summit Seoul 2017
효과적인 데브옵스를 위한 AWS 개발 도구 활용하기 - AWS Summit Seoul 2017효과적인 데브옵스를 위한 AWS 개발 도구 활용하기 - AWS Summit Seoul 2017
효과적인 데브옵스를 위한 AWS 개발 도구 활용하기 - AWS Summit Seoul 2017
 
[애플리케이션 현대화 및 개발] 현대적 애플리케이션 개발의 필수, 앱 배포 및 인프라 구성 자동화 - 김필중, AWS 솔루션즈 아키텍트
[애플리케이션 현대화 및 개발] 현대적 애플리케이션 개발의 필수, 앱 배포 및 인프라 구성 자동화 - 김필중, AWS 솔루션즈 아키텍트[애플리케이션 현대화 및 개발] 현대적 애플리케이션 개발의 필수, 앱 배포 및 인프라 구성 자동화 - 김필중, AWS 솔루션즈 아키텍트
[애플리케이션 현대화 및 개발] 현대적 애플리케이션 개발의 필수, 앱 배포 및 인프라 구성 자동화 - 김필중, AWS 솔루션즈 아키텍트
 
[AWS Dev Day] 앱 현대화 | 코드 기반 인프라(IaC)를 활용한 현대 애플리케이션 개발 가속화, 우리도 할 수 있어요 - 김필중...
[AWS Dev Day] 앱 현대화 | 코드 기반 인프라(IaC)를 활용한 현대 애플리케이션 개발 가속화, 우리도 할 수 있어요 - 김필중...[AWS Dev Day] 앱 현대화 | 코드 기반 인프라(IaC)를 활용한 현대 애플리케이션 개발 가속화, 우리도 할 수 있어요 - 김필중...
[AWS Dev Day] 앱 현대화 | 코드 기반 인프라(IaC)를 활용한 현대 애플리케이션 개발 가속화, 우리도 할 수 있어요 - 김필중...
 
AWS Code 서비스 특집 - 아마존 DevOps와 CodeDeploy, CodePipeline (윤석찬)
AWS Code 서비스 특집 - 아마존 DevOps와 CodeDeploy, CodePipeline (윤석찬)AWS Code 서비스 특집 - 아마존 DevOps와 CodeDeploy, CodePipeline (윤석찬)
AWS Code 서비스 특집 - 아마존 DevOps와 CodeDeploy, CodePipeline (윤석찬)
 
10월 웨비나 - AWS에서 MS Windows 운영, 관리 및 개발 손쉽게 하기 (박철수 솔루션즈 아키텍트)
10월 웨비나 - AWS에서 MS Windows 운영, 관리 및 개발 손쉽게 하기 (박철수 솔루션즈 아키텍트)10월 웨비나 - AWS에서 MS Windows 운영, 관리 및 개발 손쉽게 하기 (박철수 솔루션즈 아키텍트)
10월 웨비나 - AWS에서 MS Windows 운영, 관리 및 개발 손쉽게 하기 (박철수 솔루션즈 아키텍트)
 
[AWS Builders] AWS 서버리스 서비스를 활용한 웹 애플리케이션 구축 및 배포 방법 - 정창호, AWS 솔루션즈 아키텍트
[AWS Builders] AWS 서버리스 서비스를 활용한 웹 애플리케이션 구축 및 배포 방법 - 정창호, AWS 솔루션즈 아키텍트[AWS Builders] AWS 서버리스 서비스를 활용한 웹 애플리케이션 구축 및 배포 방법 - 정창호, AWS 솔루션즈 아키텍트
[AWS Builders] AWS 서버리스 서비스를 활용한 웹 애플리케이션 구축 및 배포 방법 - 정창호, AWS 솔루션즈 아키텍트
 
데브옵스 엔지니어를 위한 신규 운영 서비스 - 김필중, AWS 개발 전문 솔루션즈 아키텍트 / 김현민, 메가존클라우드 솔루션즈 아키텍트 :...
데브옵스 엔지니어를 위한 신규 운영 서비스 - 김필중, AWS 개발 전문 솔루션즈 아키텍트 / 김현민, 메가존클라우드 솔루션즈 아키텍트 :...데브옵스 엔지니어를 위한 신규 운영 서비스 - 김필중, AWS 개발 전문 솔루션즈 아키텍트 / 김현민, 메가존클라우드 솔루션즈 아키텍트 :...
데브옵스 엔지니어를 위한 신규 운영 서비스 - 김필중, AWS 개발 전문 솔루션즈 아키텍트 / 김현민, 메가존클라우드 솔루션즈 아키텍트 :...
 
컨테이너와 서버리스 기반 CI/CD 파이프라인 구성하기 - 김필중 솔루션즈 아키텍트, AWS / 강승욱 솔루션즈 아키텍트, AWS :: A...
컨테이너와 서버리스 기반 CI/CD 파이프라인 구성하기 - 김필중 솔루션즈 아키텍트, AWS / 강승욱 솔루션즈 아키텍트, AWS :: A...컨테이너와 서버리스 기반 CI/CD 파이프라인 구성하기 - 김필중 솔루션즈 아키텍트, AWS / 강승욱 솔루션즈 아키텍트, AWS :: A...
컨테이너와 서버리스 기반 CI/CD 파이프라인 구성하기 - 김필중 솔루션즈 아키텍트, AWS / 강승욱 솔루션즈 아키텍트, AWS :: A...
 
데브옵스(DevOps) 문화 모범 사례와 구현 도구 살펴보기 – 박선준 :: AWS Builders Online Series
데브옵스(DevOps) 문화 모범 사례와 구현 도구 살펴보기 – 박선준 :: AWS Builders Online Series데브옵스(DevOps) 문화 모범 사례와 구현 도구 살펴보기 – 박선준 :: AWS Builders Online Series
데브옵스(DevOps) 문화 모범 사례와 구현 도구 살펴보기 – 박선준 :: AWS Builders Online Series
 
[AWS Dev Day] 실습워크샵 | Amplify 와 AI 서비스를 활용한 서버리스 기반 소셜 안드로이드 앱 만들기
 [AWS Dev Day] 실습워크샵 | Amplify 와 AI 서비스를 활용한 서버리스 기반 소셜 안드로이드 앱 만들기 [AWS Dev Day] 실습워크샵 | Amplify 와 AI 서비스를 활용한 서버리스 기반 소셜 안드로이드 앱 만들기
[AWS Dev Day] 실습워크샵 | Amplify 와 AI 서비스를 활용한 서버리스 기반 소셜 안드로이드 앱 만들기
 
[애플리케이션 현대화 및 개발] 현대적 애플리케이션 개발을 위한 AWS 컨테이너 활용사례 및 주요 도구 알아보기 - 정영준, AWS 솔루션...
[애플리케이션 현대화 및 개발] 현대적 애플리케이션 개발을 위한 AWS 컨테이너 활용사례 및 주요 도구 알아보기 - 정영준, AWS 솔루션...[애플리케이션 현대화 및 개발] 현대적 애플리케이션 개발을 위한 AWS 컨테이너 활용사례 및 주요 도구 알아보기 - 정영준, AWS 솔루션...
[애플리케이션 현대화 및 개발] 현대적 애플리케이션 개발을 위한 AWS 컨테이너 활용사례 및 주요 도구 알아보기 - 정영준, AWS 솔루션...
 
[웨비나] 다중 AWS 계정에서의 CI/CD 구축
[웨비나] 다중 AWS 계정에서의 CI/CD 구축[웨비나] 다중 AWS 계정에서의 CI/CD 구축
[웨비나] 다중 AWS 계정에서의 CI/CD 구축
 
AWS와 함께하는 DevOps이야기 :: 박선용 :: AWS Summit Seoul 2016
AWS와 함께하는 DevOps이야기 :: 박선용 :: AWS Summit Seoul 2016AWS와 함께하는 DevOps이야기 :: 박선용 :: AWS Summit Seoul 2016
AWS와 함께하는 DevOps이야기 :: 박선용 :: AWS Summit Seoul 2016
 
AWS 관리형 서비스를 활용하여 Kubernetes 를 위한 Devops 환경 구축하기 - 김광영, AWS솔루션즈 아키텍트:: AWS S...
AWS 관리형 서비스를 활용하여 Kubernetes 를 위한 Devops 환경 구축하기 - 김광영, AWS솔루션즈 아키텍트::  AWS S...AWS 관리형 서비스를 활용하여 Kubernetes 를 위한 Devops 환경 구축하기 - 김광영, AWS솔루션즈 아키텍트::  AWS S...
AWS 관리형 서비스를 활용하여 Kubernetes 를 위한 Devops 환경 구축하기 - 김광영, AWS솔루션즈 아키텍트:: AWS S...
 
introduction of IaC using CloudFormation
introduction of IaC using CloudFormationintroduction of IaC using CloudFormation
introduction of IaC using CloudFormation
 
DevOps (AWS, Docker, Ansible, Jenkins)
DevOps (AWS, Docker, Ansible, Jenkins)DevOps (AWS, Docker, Ansible, Jenkins)
DevOps (AWS, Docker, Ansible, Jenkins)
 

Mais de Amazon Web Services Korea

AWS Modern Infra with Storage Roadshow 2023 - Day 2
AWS Modern Infra with Storage Roadshow 2023 - Day 2AWS Modern Infra with Storage Roadshow 2023 - Day 2
AWS Modern Infra with Storage Roadshow 2023 - Day 2Amazon Web Services Korea
 
AWS Modern Infra with Storage Roadshow 2023 - Day 1
AWS Modern Infra with Storage Roadshow 2023 - Day 1AWS Modern Infra with Storage Roadshow 2023 - Day 1
AWS Modern Infra with Storage Roadshow 2023 - Day 1Amazon Web Services Korea
 
사례로 알아보는 Database Migration Service : 데이터베이스 및 데이터 이관, 통합, 분리, 분석의 도구 - 발표자: ...
사례로 알아보는 Database Migration Service : 데이터베이스 및 데이터 이관, 통합, 분리, 분석의 도구 - 발표자: ...사례로 알아보는 Database Migration Service : 데이터베이스 및 데이터 이관, 통합, 분리, 분석의 도구 - 발표자: ...
사례로 알아보는 Database Migration Service : 데이터베이스 및 데이터 이관, 통합, 분리, 분석의 도구 - 발표자: ...Amazon Web Services Korea
 
Amazon DocumentDB - Architecture 및 Best Practice (Level 200) - 발표자: 장동훈, Sr. ...
Amazon DocumentDB - Architecture 및 Best Practice (Level 200) - 발표자: 장동훈, Sr. ...Amazon DocumentDB - Architecture 및 Best Practice (Level 200) - 발표자: 장동훈, Sr. ...
Amazon DocumentDB - Architecture 및 Best Practice (Level 200) - 발표자: 장동훈, Sr. ...Amazon Web Services Korea
 
Amazon Elasticache - Fully managed, Redis & Memcached Compatible Service (Lev...
Amazon Elasticache - Fully managed, Redis & Memcached Compatible Service (Lev...Amazon Elasticache - Fully managed, Redis & Memcached Compatible Service (Lev...
Amazon Elasticache - Fully managed, Redis & Memcached Compatible Service (Lev...Amazon Web Services Korea
 
Internal Architecture of Amazon Aurora (Level 400) - 발표자: 정달영, APAC RDS Speci...
Internal Architecture of Amazon Aurora (Level 400) - 발표자: 정달영, APAC RDS Speci...Internal Architecture of Amazon Aurora (Level 400) - 발표자: 정달영, APAC RDS Speci...
Internal Architecture of Amazon Aurora (Level 400) - 발표자: 정달영, APAC RDS Speci...Amazon Web Services Korea
 
[Keynote] 슬기로운 AWS 데이터베이스 선택하기 - 발표자: 강민석, Korea Database SA Manager, WWSO, A...
[Keynote] 슬기로운 AWS 데이터베이스 선택하기 - 발표자: 강민석, Korea Database SA Manager, WWSO, A...[Keynote] 슬기로운 AWS 데이터베이스 선택하기 - 발표자: 강민석, Korea Database SA Manager, WWSO, A...
[Keynote] 슬기로운 AWS 데이터베이스 선택하기 - 발표자: 강민석, Korea Database SA Manager, WWSO, A...Amazon Web Services Korea
 
Demystify Streaming on AWS - 발표자: 이종혁, Sr Analytics Specialist, WWSO, AWS :::...
Demystify Streaming on AWS - 발표자: 이종혁, Sr Analytics Specialist, WWSO, AWS :::...Demystify Streaming on AWS - 발표자: 이종혁, Sr Analytics Specialist, WWSO, AWS :::...
Demystify Streaming on AWS - 발표자: 이종혁, Sr Analytics Specialist, WWSO, AWS :::...Amazon Web Services Korea
 
Amazon EMR - Enhancements on Cost/Performance, Serverless - 발표자: 김기영, Sr Anal...
Amazon EMR - Enhancements on Cost/Performance, Serverless - 발표자: 김기영, Sr Anal...Amazon EMR - Enhancements on Cost/Performance, Serverless - 발표자: 김기영, Sr Anal...
Amazon EMR - Enhancements on Cost/Performance, Serverless - 발표자: 김기영, Sr Anal...Amazon Web Services Korea
 
Amazon OpenSearch - Use Cases, Security/Observability, Serverless and Enhance...
Amazon OpenSearch - Use Cases, Security/Observability, Serverless and Enhance...Amazon OpenSearch - Use Cases, Security/Observability, Serverless and Enhance...
Amazon OpenSearch - Use Cases, Security/Observability, Serverless and Enhance...Amazon Web Services Korea
 
Enabling Agility with Data Governance - 발표자: 김성연, Analytics Specialist, WWSO,...
Enabling Agility with Data Governance - 발표자: 김성연, Analytics Specialist, WWSO,...Enabling Agility with Data Governance - 발표자: 김성연, Analytics Specialist, WWSO,...
Enabling Agility with Data Governance - 발표자: 김성연, Analytics Specialist, WWSO,...Amazon Web Services Korea
 
Amazon Redshift Deep Dive - Serverless, Streaming, ML, Auto Copy (New feature...
Amazon Redshift Deep Dive - Serverless, Streaming, ML, Auto Copy (New feature...Amazon Redshift Deep Dive - Serverless, Streaming, ML, Auto Copy (New feature...
Amazon Redshift Deep Dive - Serverless, Streaming, ML, Auto Copy (New feature...Amazon Web Services Korea
 
From Insights to Action, How to build and maintain a Data Driven Organization...
From Insights to Action, How to build and maintain a Data Driven Organization...From Insights to Action, How to build and maintain a Data Driven Organization...
From Insights to Action, How to build and maintain a Data Driven Organization...Amazon Web Services Korea
 
[Keynote] Accelerating Business Outcomes with AWS Data - 발표자: Saeed Gharadagh...
[Keynote] Accelerating Business Outcomes with AWS Data - 발표자: Saeed Gharadagh...[Keynote] Accelerating Business Outcomes with AWS Data - 발표자: Saeed Gharadagh...
[Keynote] Accelerating Business Outcomes with AWS Data - 발표자: Saeed Gharadagh...Amazon Web Services Korea
 
Amazon DynamoDB - Use Cases and Cost Optimization - 발표자: 이혁, DynamoDB Special...
Amazon DynamoDB - Use Cases and Cost Optimization - 발표자: 이혁, DynamoDB Special...Amazon DynamoDB - Use Cases and Cost Optimization - 발표자: 이혁, DynamoDB Special...
Amazon DynamoDB - Use Cases and Cost Optimization - 발표자: 이혁, DynamoDB Special...Amazon Web Services Korea
 
LG전자 - Amazon Aurora 및 RDS 블루/그린 배포를 이용한 데이터베이스 업그레이드 안정성 확보 - 발표자: 이은경 책임, L...
LG전자 - Amazon Aurora 및 RDS 블루/그린 배포를 이용한 데이터베이스 업그레이드 안정성 확보 - 발표자: 이은경 책임, L...LG전자 - Amazon Aurora 및 RDS 블루/그린 배포를 이용한 데이터베이스 업그레이드 안정성 확보 - 발표자: 이은경 책임, L...
LG전자 - Amazon Aurora 및 RDS 블루/그린 배포를 이용한 데이터베이스 업그레이드 안정성 확보 - 발표자: 이은경 책임, L...Amazon Web Services Korea
 
KB국민카드 - 클라우드 기반 분석 플랫폼 혁신 여정 - 발표자: 박창용 과장, 데이터전략본부, AI혁신부, KB카드│강병억, Soluti...
KB국민카드 - 클라우드 기반 분석 플랫폼 혁신 여정 - 발표자: 박창용 과장, 데이터전략본부, AI혁신부, KB카드│강병억, Soluti...KB국민카드 - 클라우드 기반 분석 플랫폼 혁신 여정 - 발표자: 박창용 과장, 데이터전략본부, AI혁신부, KB카드│강병억, Soluti...
KB국민카드 - 클라우드 기반 분석 플랫폼 혁신 여정 - 발표자: 박창용 과장, 데이터전략본부, AI혁신부, KB카드│강병억, Soluti...Amazon Web Services Korea
 
SK Telecom - 망관리 프로젝트 TANGO의 오픈소스 데이터베이스 전환 여정 - 발표자 : 박승전, Project Manager, ...
SK Telecom - 망관리 프로젝트 TANGO의 오픈소스 데이터베이스 전환 여정 - 발표자 : 박승전, Project Manager, ...SK Telecom - 망관리 프로젝트 TANGO의 오픈소스 데이터베이스 전환 여정 - 발표자 : 박승전, Project Manager, ...
SK Telecom - 망관리 프로젝트 TANGO의 오픈소스 데이터베이스 전환 여정 - 발표자 : 박승전, Project Manager, ...Amazon Web Services Korea
 
코리안리 - 데이터 분석 플랫폼 구축 여정, 그 시작과 과제 - 발표자: 김석기 그룹장, 데이터비즈니스센터, 메가존클라우드 ::: AWS ...
코리안리 - 데이터 분석 플랫폼 구축 여정, 그 시작과 과제 - 발표자: 김석기 그룹장, 데이터비즈니스센터, 메가존클라우드 ::: AWS ...코리안리 - 데이터 분석 플랫폼 구축 여정, 그 시작과 과제 - 발표자: 김석기 그룹장, 데이터비즈니스센터, 메가존클라우드 ::: AWS ...
코리안리 - 데이터 분석 플랫폼 구축 여정, 그 시작과 과제 - 발표자: 김석기 그룹장, 데이터비즈니스센터, 메가존클라우드 ::: AWS ...Amazon Web Services Korea
 
LG 이노텍 - Amazon Redshift Serverless를 활용한 데이터 분석 플랫폼 혁신 과정 - 발표자: 유재상 선임, LG이노...
LG 이노텍 - Amazon Redshift Serverless를 활용한 데이터 분석 플랫폼 혁신 과정 - 발표자: 유재상 선임, LG이노...LG 이노텍 - Amazon Redshift Serverless를 활용한 데이터 분석 플랫폼 혁신 과정 - 발표자: 유재상 선임, LG이노...
LG 이노텍 - Amazon Redshift Serverless를 활용한 데이터 분석 플랫폼 혁신 과정 - 발표자: 유재상 선임, LG이노...Amazon Web Services Korea
 

Mais de Amazon Web Services Korea (20)

AWS Modern Infra with Storage Roadshow 2023 - Day 2
AWS Modern Infra with Storage Roadshow 2023 - Day 2AWS Modern Infra with Storage Roadshow 2023 - Day 2
AWS Modern Infra with Storage Roadshow 2023 - Day 2
 
AWS Modern Infra with Storage Roadshow 2023 - Day 1
AWS Modern Infra with Storage Roadshow 2023 - Day 1AWS Modern Infra with Storage Roadshow 2023 - Day 1
AWS Modern Infra with Storage Roadshow 2023 - Day 1
 
사례로 알아보는 Database Migration Service : 데이터베이스 및 데이터 이관, 통합, 분리, 분석의 도구 - 발표자: ...
사례로 알아보는 Database Migration Service : 데이터베이스 및 데이터 이관, 통합, 분리, 분석의 도구 - 발표자: ...사례로 알아보는 Database Migration Service : 데이터베이스 및 데이터 이관, 통합, 분리, 분석의 도구 - 발표자: ...
사례로 알아보는 Database Migration Service : 데이터베이스 및 데이터 이관, 통합, 분리, 분석의 도구 - 발표자: ...
 
Amazon DocumentDB - Architecture 및 Best Practice (Level 200) - 발표자: 장동훈, Sr. ...
Amazon DocumentDB - Architecture 및 Best Practice (Level 200) - 발표자: 장동훈, Sr. ...Amazon DocumentDB - Architecture 및 Best Practice (Level 200) - 발표자: 장동훈, Sr. ...
Amazon DocumentDB - Architecture 및 Best Practice (Level 200) - 발표자: 장동훈, Sr. ...
 
Amazon Elasticache - Fully managed, Redis & Memcached Compatible Service (Lev...
Amazon Elasticache - Fully managed, Redis & Memcached Compatible Service (Lev...Amazon Elasticache - Fully managed, Redis & Memcached Compatible Service (Lev...
Amazon Elasticache - Fully managed, Redis & Memcached Compatible Service (Lev...
 
Internal Architecture of Amazon Aurora (Level 400) - 발표자: 정달영, APAC RDS Speci...
Internal Architecture of Amazon Aurora (Level 400) - 발표자: 정달영, APAC RDS Speci...Internal Architecture of Amazon Aurora (Level 400) - 발표자: 정달영, APAC RDS Speci...
Internal Architecture of Amazon Aurora (Level 400) - 발표자: 정달영, APAC RDS Speci...
 
[Keynote] 슬기로운 AWS 데이터베이스 선택하기 - 발표자: 강민석, Korea Database SA Manager, WWSO, A...
[Keynote] 슬기로운 AWS 데이터베이스 선택하기 - 발표자: 강민석, Korea Database SA Manager, WWSO, A...[Keynote] 슬기로운 AWS 데이터베이스 선택하기 - 발표자: 강민석, Korea Database SA Manager, WWSO, A...
[Keynote] 슬기로운 AWS 데이터베이스 선택하기 - 발표자: 강민석, Korea Database SA Manager, WWSO, A...
 
Demystify Streaming on AWS - 발표자: 이종혁, Sr Analytics Specialist, WWSO, AWS :::...
Demystify Streaming on AWS - 발표자: 이종혁, Sr Analytics Specialist, WWSO, AWS :::...Demystify Streaming on AWS - 발표자: 이종혁, Sr Analytics Specialist, WWSO, AWS :::...
Demystify Streaming on AWS - 발표자: 이종혁, Sr Analytics Specialist, WWSO, AWS :::...
 
Amazon EMR - Enhancements on Cost/Performance, Serverless - 발표자: 김기영, Sr Anal...
Amazon EMR - Enhancements on Cost/Performance, Serverless - 발표자: 김기영, Sr Anal...Amazon EMR - Enhancements on Cost/Performance, Serverless - 발표자: 김기영, Sr Anal...
Amazon EMR - Enhancements on Cost/Performance, Serverless - 발표자: 김기영, Sr Anal...
 
Amazon OpenSearch - Use Cases, Security/Observability, Serverless and Enhance...
Amazon OpenSearch - Use Cases, Security/Observability, Serverless and Enhance...Amazon OpenSearch - Use Cases, Security/Observability, Serverless and Enhance...
Amazon OpenSearch - Use Cases, Security/Observability, Serverless and Enhance...
 
Enabling Agility with Data Governance - 발표자: 김성연, Analytics Specialist, WWSO,...
Enabling Agility with Data Governance - 발표자: 김성연, Analytics Specialist, WWSO,...Enabling Agility with Data Governance - 발표자: 김성연, Analytics Specialist, WWSO,...
Enabling Agility with Data Governance - 발표자: 김성연, Analytics Specialist, WWSO,...
 
Amazon Redshift Deep Dive - Serverless, Streaming, ML, Auto Copy (New feature...
Amazon Redshift Deep Dive - Serverless, Streaming, ML, Auto Copy (New feature...Amazon Redshift Deep Dive - Serverless, Streaming, ML, Auto Copy (New feature...
Amazon Redshift Deep Dive - Serverless, Streaming, ML, Auto Copy (New feature...
 
From Insights to Action, How to build and maintain a Data Driven Organization...
From Insights to Action, How to build and maintain a Data Driven Organization...From Insights to Action, How to build and maintain a Data Driven Organization...
From Insights to Action, How to build and maintain a Data Driven Organization...
 
[Keynote] Accelerating Business Outcomes with AWS Data - 발표자: Saeed Gharadagh...
[Keynote] Accelerating Business Outcomes with AWS Data - 발표자: Saeed Gharadagh...[Keynote] Accelerating Business Outcomes with AWS Data - 발표자: Saeed Gharadagh...
[Keynote] Accelerating Business Outcomes with AWS Data - 발표자: Saeed Gharadagh...
 
Amazon DynamoDB - Use Cases and Cost Optimization - 발표자: 이혁, DynamoDB Special...
Amazon DynamoDB - Use Cases and Cost Optimization - 발표자: 이혁, DynamoDB Special...Amazon DynamoDB - Use Cases and Cost Optimization - 발표자: 이혁, DynamoDB Special...
Amazon DynamoDB - Use Cases and Cost Optimization - 발표자: 이혁, DynamoDB Special...
 
LG전자 - Amazon Aurora 및 RDS 블루/그린 배포를 이용한 데이터베이스 업그레이드 안정성 확보 - 발표자: 이은경 책임, L...
LG전자 - Amazon Aurora 및 RDS 블루/그린 배포를 이용한 데이터베이스 업그레이드 안정성 확보 - 발표자: 이은경 책임, L...LG전자 - Amazon Aurora 및 RDS 블루/그린 배포를 이용한 데이터베이스 업그레이드 안정성 확보 - 발표자: 이은경 책임, L...
LG전자 - Amazon Aurora 및 RDS 블루/그린 배포를 이용한 데이터베이스 업그레이드 안정성 확보 - 발표자: 이은경 책임, L...
 
KB국민카드 - 클라우드 기반 분석 플랫폼 혁신 여정 - 발표자: 박창용 과장, 데이터전략본부, AI혁신부, KB카드│강병억, Soluti...
KB국민카드 - 클라우드 기반 분석 플랫폼 혁신 여정 - 발표자: 박창용 과장, 데이터전략본부, AI혁신부, KB카드│강병억, Soluti...KB국민카드 - 클라우드 기반 분석 플랫폼 혁신 여정 - 발표자: 박창용 과장, 데이터전략본부, AI혁신부, KB카드│강병억, Soluti...
KB국민카드 - 클라우드 기반 분석 플랫폼 혁신 여정 - 발표자: 박창용 과장, 데이터전략본부, AI혁신부, KB카드│강병억, Soluti...
 
SK Telecom - 망관리 프로젝트 TANGO의 오픈소스 데이터베이스 전환 여정 - 발표자 : 박승전, Project Manager, ...
SK Telecom - 망관리 프로젝트 TANGO의 오픈소스 데이터베이스 전환 여정 - 발표자 : 박승전, Project Manager, ...SK Telecom - 망관리 프로젝트 TANGO의 오픈소스 데이터베이스 전환 여정 - 발표자 : 박승전, Project Manager, ...
SK Telecom - 망관리 프로젝트 TANGO의 오픈소스 데이터베이스 전환 여정 - 발표자 : 박승전, Project Manager, ...
 
코리안리 - 데이터 분석 플랫폼 구축 여정, 그 시작과 과제 - 발표자: 김석기 그룹장, 데이터비즈니스센터, 메가존클라우드 ::: AWS ...
코리안리 - 데이터 분석 플랫폼 구축 여정, 그 시작과 과제 - 발표자: 김석기 그룹장, 데이터비즈니스센터, 메가존클라우드 ::: AWS ...코리안리 - 데이터 분석 플랫폼 구축 여정, 그 시작과 과제 - 발표자: 김석기 그룹장, 데이터비즈니스센터, 메가존클라우드 ::: AWS ...
코리안리 - 데이터 분석 플랫폼 구축 여정, 그 시작과 과제 - 발표자: 김석기 그룹장, 데이터비즈니스센터, 메가존클라우드 ::: AWS ...
 
LG 이노텍 - Amazon Redshift Serverless를 활용한 데이터 분석 플랫폼 혁신 과정 - 발표자: 유재상 선임, LG이노...
LG 이노텍 - Amazon Redshift Serverless를 활용한 데이터 분석 플랫폼 혁신 과정 - 발표자: 유재상 선임, LG이노...LG 이노텍 - Amazon Redshift Serverless를 활용한 데이터 분석 플랫폼 혁신 과정 - 발표자: 유재상 선임, LG이노...
LG 이노텍 - Amazon Redshift Serverless를 활용한 데이터 분석 플랫폼 혁신 과정 - 발표자: 유재상 선임, LG이노...
 

AWS Fargate와 Amazon ECS를 사용한 CI/CD 베스트 프랙티스 - 유재석, AWS 솔루션즈 아키텍트 :: AWS Builders 300

  • 1. AWS Fargate와 Amazon ECS 활용한 CI/CD 모범사례 유재석 | Solutions Architect
  • 2. 강연 중 질문하는 방법 AWS Builders Go to Webinar “Questions” 창에 자신이 질문한 내역이 표시됩니다. 기본적으로 모든 질문은 공개로 답변 됩니다만 본인만 답변을 받고 싶으면 (비공개)라고 하고 질문해 주시면 됩니다. 본 컨텐츠는 고객의 편의를 위해 AWS 서비스 설명을 위해 온라인 세미나용으로 별도로 제작, 제공된 것입니다. 만약 AWS 사이트와 컨텐츠 상에서 차이나 불일치가 있을 경우, AWS 사이트(aws.amazon.com)가 우선합니다. 또한 AWS 사이트 상에서 한글 번역문과 영어 원문에 차이나 불일치가 있을 경우(번역의 지체로 인한 경우 등 포함), 영어 원문이 우선합니다. AWS는 본 컨텐츠에 포함되거나 컨텐츠를 통하여 고객에게 제공된 일체의 정보, 콘텐츠, 자료, 제품(소프트웨어 포함) 또는 서비스를 이용함으로 인하여 발생하는 여하한 종류의 손해에 대하여 어떠한 책임도 지지 아니하며, 이는 직접 손해, 간접 손해, 부수적 손해, 징벌적 손해 및 결과적 손해를 포함하되 이에 한정되지 아니합니다. 고지 사항(Disclaimer)
  • 3.
  • 5. 컨테이너와 CI/CD FROM node:12 WORKDIR /opt/app COPY package.json package-lock.json ./ RUN npm ci COPY ./app /opt/app EXPOSE 80 CMD [ "node", "service.js" ]
  • 7. CI/CD 모범사례 3. 반복 가능한 인프라 변경 Repeatable infrastructure changes 1. 릴리스 자동화 Automated releases 2. 안전한 배포 Safe deployments
  • 8. CI/CD 모범사례 3. 반복 가능한 인프라 변경 1. 릴리스 자동화 2. 안전한 배포
  • 10. 1억 9천만번의 배포 (매 초마다 6번의 배포)
  • 13. 소스 빌드 App code Infrastructure as code Configuration Base image
  • 14. 소스 빌드 Artifacts App code Infrastructure as code Configuration Base image
  • 15. 소스 빌드 알파 준비단계 Artifacts Automated tests App code Infrastructure as code Configuration Base image
  • 16. 소스 빌드 알파 베타 준비단계 Artifacts Automated tests Automated integration tests Automated load/perf tests Automated browser tests App code Infrastructure as code Configuration Base image
  • 17. 소스 빌드 알파 베타 감마 준비단계 Artifacts Automated tests Automated integration tests Automated load/perf tests Automated integration tests Automated synthetic tests API smoke tests Automated browser tests App code Infrastructure as code Configuration Base image
  • 18. 소스 빌드 알파 베타 감마 준비단계 프로덕션 Artifacts Automated tests Automated integration tests Automated load/perf tests Automated integration tests Automated synthetic tests API smoke tests Automated browser tests App code Infrastructure as code Configuration Base image
  • 19. 소스 빌드 알파 베타 감마 준비단계 프로덕션 Artifacts Automated tests Automated integration tests Automated load/perf tests Automated integration tests Automated synthetic tests API smoke tests Automated browser tests App code Infrastructure as code Configuration Base image
  • 20. 소스 빌드 알파 베타 감마 준비단계 프로덕션 Artifacts Automated tests Automated integration tests Automated load/perf tests Automated integration tests Automated synthetic tests API smoke tests Automated browser tests App code Infrastructure as code Configuration Base image
  • 21. 소스 빌드 알파 베타 감마 준비단계 프로덕션 Artifacts Automated tests Automated integration tests Automated load/perf tests Automated integration tests Automated synthetic tests API smoke tests Automated browser tests App code Infrastructure as code Configuration Base image
  • 22. 소스 빌드 알파 베타 감마 준비단계 프로덕션 Artifacts Automated tests Automated integration tests Automated load/perf tests Automated integration tests Automated synthetic tests API smoke tests Automated browser tests App code Infrastructure as code Configuration Base image
  • 23. 소스 빌드 알파 베타 감마 준비단계 프로덕션 Artifacts Automated tests Automated integration tests Automated load/perf tests Automated integration tests Automated synthetic tests API smoke tests Automated browser tests App code Infrastructure as code Configuration Base image …
  • 24. 소스 빌드 알파 베타 감마 준비단계 프로덕션 Artifacts Automated tests Automated integration tests Automated load/perf tests Automated integration tests Automated synthetic tests API smoke tests Automated browser tests App code Infrastructure as code Configuration Base image … 파이프라인 방해물: 코드 커버리지, 코드 리뷰, 보안 검색, 의존성 업데이트, 시간대, 파이프라인 정책, 기타 여러가지
  • 25. 릴리스 프로세스 단계 소스 빌드 테스트 프로덕션
  • 26. 릴리스 프로세스 단계 소스 빌드 테스트 프로덕션 • Check-in source code such as .java files and Dockerfile • Peer review new code
  • 27. 릴리스 프로세스 단계 소스 빌드 테스트 프로덕션 • Check-in source code such as .java files and Dockerfile • Peer review new code • Compile code • Unit tests • Style checkers • Create container images
  • 28. 릴리스 프로세스 단계 소스 빌드 테스트 프로덕션 • Integration tests with other systems • Load testing • UI tests • Security testing • Check-in source code such as .java files and Dockerfile • Peer review new code • Compile code • Unit tests • Style checkers • Create container images
  • 29. 릴리스 프로세스 단계 소스 빌드 테스트 프로덕션 • Integration tests with other systems • Load testing • UI tests • Security testing • Check-in source code such as .java files and Dockerfile • Peer review new code • Compile code • Unit tests • Style checkers • Create container images • Deploy to production environments • Monitor code in production in order to quickly detect errors
  • 30. 릴리스 프로세스 단계 소스 빌드 테스트 프로덕션 • Integration tests with other systems • Load testing • UI tests • Security testing • Check-in source code such as .java files and Dockerfile • Peer review new code • Compile code • Unit tests • Style checkers • Create container images • Deploy to production environments • Monitor code in production in order to quickly detect errors
  • 31. Amazon ECS를 위한 CI/CD 툴
  • 32. AWS CodePipeline • 릴리스 프로세스를 모델링, 시각화 • 코드 변경이 있을 때마다 애플리케이션을 빌드, 테스트, 배포 • 파트너 도구 및 Amazon ECS를 비롯한 AWS서비스들과 통합
  • 33. AWS CodePipeline: 릴리스 프로세스 단계 소스 빌드 테스트 프로덕션
  • 34. AWS CodePipeline: 릴리스 프로세스 단계 소스 빌드 테스트 프로덕션
  • 35. AWS CodePipeline: 지원하는 소스 브랜치 선택 AWS CodeCommit GitHub 오브젝트나 폴더 선택 Amazon Simple Storage Service (Amazon S3) 도커 태그 선택 Amazon Elastic Container Registry (Amazon ECR) 릴리스를 자동으로 시작하고 최신 소스 코드를 가져옵니다
  • 36. AWS CodePipeline: 릴리스 프로세스 단계 소스 빌드 테스트 프로덕션
  • 37. AWS CodeBuild • 완전 관리형 소프트웨어 빌드 서비스 • 지속적으로 확장되며 여러 빌드를 동시에 처리 • 관리할 빌드 서버가 없음 • 빌드에 소모되는 시간만큼만 분당 요금을 지불
  • 38. AWS CodeBuild for containers • 도커 이미지를 빌드, 푸시, 확인 • 도커와 AWS CLI가 모든 CodeBuild 이미지에 기본 탑재 되어 있음 • Docker 이미지를 Amazon ECR로 푸시하기 위해 빌드 환경에 채워진 역할 자격 증명 • Amazon ECR에 이미지를 푸시하기위한 역할 자격증명이 빌드 환경에 포함 • 사용자 지정 빌드 이미지 사용 가능
  • 39. AWS CodeBuild: Container buildspec version: 0.2 phases: build: commands: - $(aws ecr get-login --no-include-email) - docker build -t $IMAGE_NAME:$IMAGE_TAG . - docker tag $IMAGE_NAME:$IMAGE_TAG $ECR_REPO:$IMAGE_TAG - docker push $ECR_REPO:$IMAGE_TAG
  • 41. 컨테이너 이미지 태깅 빌드가 “latest” 이미지를 새로 푸시 Image: sha256@22222... (“latest”)
  • 42. 컨테이너 이미지 태깅 서비스 확대, 새로운 작업들을 시작 Image: sha256@22222... (“latest”)
  • 43. AWS CodeBuild: 컨테이너 이미지 태깅 version: 0.2 phases: build: commands: - export IMAGE_TAG=build-`echo build-$CODEBUILD_BUILD_ID | awk –F":" ‘{print $2}‘` - $(aws ecr get-login --no-include-email) - docker build -t $IMAGE_NAME:$IMAGE_TAG . - docker tag $IMAGE_NAME:$IMAGE_TAG $ECR_REPO:$IMAGE_TAG - docker push $ECR_REPO:$IMAGE_TAG
  • 44. Amazon ECR 변경 불가능한 이미지 태그 $ aws ecr put-image-tag-mutability --repository-name my-ecr-repo --image-tag-mutability IMMUTABLE $ docker push $ECR_REPO:latest Tag invalid: The image tag ‘latest’ already exists in the ‘my- ecr-repo’ repository and cannot be overwritten because the repository is immutable.
  • 45. Amazon ECR 이미지 스캐닝 $ aws ecr put-image-scanning-configuration --repository-name my-ecr-repo --image-scanning-configuration scanOnPush=true $ docker push $ECR_REPO:$BUILD_ID_TAG $ aws ecr describe-image-scan-findings --repository-name my-ecr-repo --image-id imageTag=$BUILD_ID_TAG
  • 46. AWS CodePipeline: 릴리스 프로세스 단계 소스 빌드 테스트 프로덕션
  • 47. AWS CodePipeline: 릴리스 프로세스 단계 소스 빌드 테스트 프로덕션 Amazon ECS
  • 48. AWS CodePipeline: 샘플 파이프라인 Source code: “master” 브랜치 CodeBuild: 어플리케이션 이미지 빌드 및 푸시 Amazon ECS: 이미지를 테스트 환경에 배포 소스 빌드 테스트 프로덕션 Amazon ECS: 이미지를 프로덕션 환경에 배포
  • 49. AWS CodePipeline: 이미지 파이프라인 Source code: “master” 브랜치 CodeBuild: 베이스 이미지나 사이드카 이미지 빌드 및 푸시 Amazon ECR 베이스 이미지나 사이드카 이미지 저장소: “release” 태그
  • 50. AWS CodePipeline: 샘플 파이프라인 Source code: “master” 브랜치 CodeBuild: 어플리케이션 이미지 빌드 및 푸시 Amazon ECS: 이미지를 테스트와 프로덕션에 순차적 배포
  • 51. AWS CodePipeline: 샘플 파이프라인 Source code: “master” branch Amazon ECR base image repository: “release” tag CodeBuild: Build and push application image Amazon ECS: Deploy image to test, then production
  • 52. AWS CodePipeline: 샘플 파이프라인 Source code: “master” branch Amazon ECR base image repository: “release” tag CodeBuild: Build and push application image Amazon ECR sidecar image repository: “release” tag Amazon ECS: Deploy image to test, then production
  • 53. 릴리스 프로세스 단계 소스 빌드 테스트 프로덕션
  • 54. GitHub Actions 워크플로우 steps: - name: Checkout uses: actions/checkout@v1 - name: Configure AWS credentials uses: aws-actions/configure-aws-credentials@v1 with: aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} aws-region: us-east-2 - name: Deploy Amazon ECS task definition uses: aws-actions/amazon-ecs-deploy-task-definition@v1 with: task-definition: task-definition.json service: my-ecs-service cluster: my-ecs-cluster
  • 55. Jenkinsfile stage('Deploy to ECS Test Service') { steps { script { sh '''#!/bin/bash -ex sed -i s/BUILD/${BUILD_NUMBER}/g taskdef.json REV=$(aws ecs register-task-definition --cli-input-json file://taskdef.json | jq '.taskDefinition.taskDefinitionArn') aws ecs update-service --cluster ${CLUSTER} --service ${APP} --task-definition ${REV} aws ecs wait services-stable --cluster ${ECS_CLUSTER} --services ${ECS_SERVICE} ''' } } }
  • 56. Spinnaker pipeline "stages": [ { "name": "Deploy to Test ECS Service", "type": "deploy" "clusters": [ { “cloudProvider": “ecs", "strategy": "redblack", "rollback": { "onFailure": true }, "ecsClusterName": “test-cluster", "imageDescription": { "account": "my-ecr-registry", "fromTrigger": true, "registry": "123456789012.dkr.ecr.eu-central-1.amazonaws.com", "repository": "spinnaker-deployment-images"
  • 57. CI/CD 모범사례 3. 반복 가능한 인프라 변경 1. 릴리스 자동화 2. 안전한 배포
  • 58. CI/CD 모범사례 3. 반복 가능한 인프라 변경 1. 릴리스 자동화 2. 안전한 배포
  • 59. CI/CD를 위한 아마존의 안전 기준 1. 알람과 테스트에 기반한자동 롤백 2. 빠른 롤백 3. 배포 후 “뜸들이기” 4. 배포는 작게 시작, 점점 크게
  • 60. AWS CodeDeploy • EC2, ECS, Lambda에 소프트웨어 자동 배포 • 애플리케이션을 배포하는 동안 가동 중지 시간을 최소화 • 오류가 발생하는 경우 자동으로 롤백 • 트래픽 관리를 통한 사용자 영향 최소화
  • 61. CodeDeploy ECS 블루/그린 배포 블루 작업: v1 code 블루 대상 그룹 100% 프로덕션 트래픽
  • 62. 100% 프로덕션 트래픽 CodeDeploy ECS 블루/그린 배포 블루 대상 그룹 블루 작업: v1 code
  • 63. CodeDeploy ECS 블루/그린 배포 블루 작업: v1 code 블루 대상 그룹 100% 프로덕션 트래픽
  • 64. 100% 테스트 트래픽 CodeDeploy ECS 블루/그린 배포 테스트 트래픽 리스너 (포트 9000) 그린 대상 그룹 블루 작업: v1 code 블루 대상 그룹 100% 프로덕션 트래픽
  • 65. CodeDeploy ECS 블루/그린 배포 그린 작업: v2 code 그린 작업 준비 블루 대상 그룹 블루 작업: v1 code 그린 대상 그룹 100% test traffic 100% 프로덕션 트래픽
  • 66. 100% 테스트 리스너 CodeDeploy ECS 블루/그린 배포 그린 작업: v2 code 테스트 트래픽을 그린으로 변경; 테스트 엔드포인트를 대상으로 검증 테스트 블루 대상 그룹 블루 작업: v1 code 그린 대상 그룹 100% 프로덕션 트래픽
  • 67. CodeDeploy ECS AppSpec file version: 1.0 Hooks: - BeforeInstall: "LambdaFunctionToExecuteAnythingBeforeNewRevisionInstalltion" - AfterInstall: "LambdaFunctionToExecuteAnythingAfterNewRevisionInstallation" - AfterAllowTestTraffic: "LambdaFunctionToValidateAfterTestTrafficShift" - BeforeAllowTraffic: "LambdaFunctionToValidateBeforeTrafficShift" - AfterAllowTraffic: "LambdaFunctionToValidateAfterTrafficShift" Resources: - TargetService: Type: AWS::ECS::Service Properties: - TaskDefinition: "my_task_definition:8" LoadBalancerInfos: - ContainerName: "SampleApp" ContainerPort: 80
  • 68. CodeDeploy 수명주기 후크 exports.handler = async function (event, context, callback) { var params = { deploymentId: event.DeploymentId, lifecycleEventHookExecutionId: event.LifecycleEventHookExecutionId, status: 'Succeeded' }; const response = await axios(http://my-service.com:9000/api); if (response.status != 200) { params.status = 'Failed'; } await codedeploy.putLifecycleEventHookExecutionStatus(params).promise(); }
  • 69. 100% 테스트 트래픽 CodeDeploy ECS 블루/그린 배포 그린 작업: v2 code 테스트 트래픽을 그린으로 변경; 테스트 엔드포인트를 대상으로 검증 테스트 블루 대상 그룹 블루 작업: v1 code 그린 대상 그룹 100% 프로덕션 트래픽
  • 70. 100% 테스트 트래픽 CodeDeploy ECS 블루/그린 배포 그린 작업: v2 code 프로덕션 트래픽을 그린으로 변경; 알람 발생시 롤백 블루 대상 그룹 블루 작업: v1 code 그린 대상 그룹 100% 프로덕션 트래픽
  • 71. CodeDeploy 배포 그룹 구성 "alarmConfiguration": { "enabled": true, "ignorePollAlarmFailure": false, "alarms": [ { "name": "MyCloudWatchAlarm_Http5xx" }, { "name": "MyCloudWatchAlarm_UnhealthyHosts" }, { "name": "MyCloudWatchAlarm_ErrorLogging" } ] }
  • 72. CodeDeploy 배포 그룹 구성 "blueGreenDeploymentConfiguration": { "terminateBlueInstancesOnDeploymentSuccess": { "action": "TERMINATE", "terminationWaitTimeInMinutes": 60 } },
  • 73. 100% 테스트 트래픽 CodeDeploy ECS 블루/그린 배포 그린 작업: v2 code 프로덕션 트래픽을 그린으로 변경; 알람 발생시 롤백 블루 대상 그룹 블루 작업: v1 code 그린 대상 그룹 100% 프로덕션 트래픽
  • 74. 100% 테스트 트래픽 CodeDeploy ECS 블루/그린 배포 그린 작업: v2 code 블루 작업을 제거 블루 대상 그룹 그린 대상 그룹 100% 프로덕션 트래픽
  • 75. CodeDeploy ECS 블루/그린 배포 • CodePipeline에서 “CodeDeploy-ECS” 배포 작업 사용 • Jenkins나 다른 CI/CD 툴에서 “aws ecs deploy” 커맨드 사용 aws ecs deploy --service MyEcsService --codedeploy-deployment-group MyDeploymentGroup --task-definition task-definition.json --codedeploy-appspec appspec.yml
  • 76. CI/CD 모범사례 3. 반복 가능한 인프라 변경 1. 릴리스 자동화 2. 안전한 배포
  • 77. CI/CD 모범사례 3. 반복 가능한 인프라 변경 1. 릴리스 자동화 2. 안전한 배포
  • 82. 트래픽 (port 8080) 상태 확인 (/health) 테스트 환경 트래픽 (port 8080) 프로덕트 환경 상태 확인 (/) 아!
  • 83. AWS CloudFormation을 사용한 인프라 코드 자동화TargetGroup: Type: AWS::ElasticLoadBalancingV2::TargetGroup Properties: HealthCheckIntervalSeconds: 6 HealthCheckPath: /health HealthCheckProtocol: HTTP HealthCheckTimeoutSeconds: 5 HealthyThresholdCount: 2 TargetType: ip Name: !Ref 'ServiceName' Port: !Ref 'ContainerPort' Protocol: HTTP UnhealthyThresholdCount: 2
  • 84. Amazon의 CI/CD 사용과 인프라 코드 자동화 Repo(s) contain app code & CFN template file 소스 단계 빌드 단계 테스트 단계 프로덕션 단계 Build & push image; update CFN template file Deploy CFN template file; run tests Deploy CFN template file; monitor
  • 85. Insert image ID into infrastructure as code templateTaskDef: Type: AWS::ECS::TaskDefinition Properties: ContainerDefinitions: - - Image: my-app-image:<PLACEHOLDER> + - Image: my-app-image@sha256:e3b0c44298fc1c149afbf4c87...
  • 86. Amazon의 CI/CD 사용과 인프라 코드 자동화 Repo(s) contain app code & CFN template file 소스 단계 빌드 단계 테스트 단계 프로덕션 단계 Build & push image; update CFN template file Deploy CFN template file; run tests Deploy CFN template file; monitor
  • 88. AWS Cloud Development Kit (AWS CDK) • 익숙한 프로그래밍 언어를 사용하여 클라우드 인프라를 정의할 수 있는 오픈 소스 소프트웨어 개발 프레임워크 • JavaScript, TypeScript, Python, Java 및 C# 지원 • AWS CloudFormation을 통해 리소스를 프로비저닝 • CloudFormation 리소스를 모두 지원 • AWS의 노하우가 담겨있는 풍부한 상위 레벨 구문을 제공
  • 89. AWS CDK ECS constructs const cluster = new ecs.Cluster(this, 'Cluster'); const taskDef = new ecs.FargateTaskDefinition(this, "MyTaskDefinition", { memoryLimitMiB: 512, cpu: 256, }); taskDef.addContainer("AppContainer", { image: ecs.ContainerImage.fromRegistry("amazon/amazon-ecs-sample"), }); new ecs.FargateService(this, "FargateService", { cluster, taskDefinition: taskDef });
  • 90. AWS CDK ECS 패턴 • 애플리케이션 로드 밸런스 서비스 • 네트워크 로드 밸런스 서비스 • 큐 프로세싱 서비스 • 예약된 작업 (Cron job) 트래픽 (port 443) 내 앱 이미지 트래픽 (port 80) 상태 확인 (/)
  • 91. AWS CDK ECS 패턴 import { ApplicationLoadBalancedFargateService } from '@aws-cdk/aws-ecs-patterns'; import { ContainerImage } from 'aws-cdk/aws-ecs'; import cdk = require('@aws-cdk/core'); class BonjourFargate extends cdk.Stack { constructor(parent: cdk.App, name: string, props: cdk.StackProps) { super(parent, name, props); new ApplicationLoadBalancedFargateService(this, 'Service', { taskImageOptions: { image: ContainerImage.fromAsset(‘../src') } }); } } const app = new cdk.App(); new BonjourFargate(app, 'Bonjour', {}); app.synth(); ECS 패턴 포함 항목: • VPC • ECS 클러스터 • ECS 작업 정의 • AWS Fargate 서비스 • Amazon CloudWatch Logs • 로드 밸런서 • 보안 그룹
  • 92. AWS CDK ECS 패턴 import { ApplicationLoadBalancedFargateService } from '@aws-cdk/aws-ecs-patterns'; import { ContainerImage } from 'aws-cdk/aws-ecs'; import cdk = require('@aws-cdk/core'); class BonjourFargate extends cdk.Stack { constructor(parent: cdk.App, name: string, props: cdk.StackProps) { super(parent, name, props); new ApplicationLoadBalancedFargateService(this, 'Service', { taskImageOptions: { image: ContainerImage.fromAsset(‘../src') } }); } } const app = new cdk.App(); new BonjourFargate(app, 'Bonjour', {}); app.synth(); AWS CDK는 ECR 리포지토리를 만들고, 여러분의 도커 이미지를 빌드 하고 푸시 할 겁니다.
  • 93. AWS CDK ECS 패턴 import { ApplicationLoadBalancedFargateService } from '@aws-cdk/aws-ecs-patterns'; import { ContainerImage } from 'aws-cdk/aws-ecs'; import cdk = require('@aws-cdk/core'); class BonjourFargate extends cdk.Stack { constructor(parent: cdk.App, name: string, props: cdk.StackProps) { super(parent, name, props); new ApplicationLoadBalancedFargateService(this, 'Service', { taskImageOptions: { image: ContainerImage.fromAsset('../src') } }); } } const app = new cdk.App(); new BonjourFargate(app, 'Bonjour', {}); app.synth(); 수백줄에 달하는 AWS CloudFormation Template 을 생성합니다.
  • 94. AWS CDK CLI npm install -g aws-cdk cdk init --language typescript cdk synth cdk deploy
  • 95. AWS CDK code를 위한 CI/CD Repo(s) contain app code & CDK code 소스 단계 빌드 단계 테스트 단계 프로덕션 단계 Build & push image; synthesize CDK template Deploy CFN template file; run tests Deploy CFN template file; monitor
  • 96. AWS CDK CodeBuild buildspec version: 0.2 phases: install: commands: # Install CDK - npm install -g aws-cdk build: commands: # Compile code & synthesize CloudFormation templates - npm ci - tsc - cdk synth --app 'node ecs-service.js'
  • 97. AWS CDK CodePipeline pipelines class DeployCDKPipeline extends cdk.Stack { constructor(parent: cdk.App, name: string, props: MyMicroservicePipelineProps) { super(parent, name, props); const pipeline = new codepipeline.Pipeline(this, 'Pipeline', { pipelineName: props.serviceName, }); const githubAccessToken = cdk.SecretValue.secretsManager('GitHubToken'); const sourceOutput = new codepipeline.Artifact('SourceArtifact'); const sourceAction = new actions.GitHubSourceAction({ actionName: 'GitHubSource', output: sourceOutput, owner: ‘my-github-org’, repo: props.serviceName, oauthToken: githubAccessToken });
  • 98. AWS CDK CodePipeline pipelines class MyMicroservicePipelinesStack extends cdk.Stack { constructor(parent: cdk.App, name: string, props?: cdk.StackProps) { super(parent, name, props); new DeployCDKPipeline(this, 'Pipeline1', { 'serviceName': 'Microservice1' }); new DeployCDKPipeline(this, 'Pipeline2', { 'serviceName': 'Microservice2' }); new DeployCDKPipeline(this, 'Pipeline3', { 'serviceName': 'Microservice3' }); new DeployCDKPipeline(this, 'Pipeline4', { 'serviceName': 'Microservice4' }); } }
  • 99. CI/CD 모범사례 3. 반복 가능한 인프라 변경 1. 릴리스 자동화 2. 안전한 배포
  • 100. 더 나은 세미나를 위해 여러분의 의견을 남겨주세요! ▶ 질문에 대한 답변 드립니다. ▶ 발표자료/녹화영상을 제공합니다. http://bit.ly/awskr-webinar