Amazon EC2 Container Service...2015/06/24  · 18 Amazon EC2 Container Serviceの利点...

Post on 29-May-2020

13 views 0 download

Transcript of Amazon EC2 Container Service...2015/06/24  · 18 Amazon EC2 Container Serviceの利点...

1

Amazon EC2 Container Service

AWS Black Belt Tech Webinar 2015Amazon Web Services JapanSolutions Architect, Ryosuke Iwanaga

2015/6/24

※2015/11/20更新

2

Agenda

• Containerとは?

• Amazon EC2 Container Service - Basic

• Amazon EC2 Container Service - Update

• Amazon EC2 Container Service - Advanced

• まとめ

3

Containerとは?

4

ProcessProcess

Containerとは?

• OS仮想化

• Process隔離

• Image

• 自動化

Server

Bins/Libs Bins/Libs

OS

App1 App2

Dockerfile

OS: Ubuntu

Apache, PHP

Dockerfile

OS: CentOS

Nginx, Ruby

Images

Build

Run Run

5

Containerの利点

• 可搬性– 不変なImage

• 柔軟性– 削除、再生成が容易

• 速度– OSは既に起動済

• 効率– オーバーヘッド少ない

ProcessProcess

Server

Bins/Libs Bins/Libs

OS

App1 App2

Dockerfile

OS: Ubuntu

Apache, PHP

Dockerfile

OS: CentOS

Nginx, Ruby

Images

Build

Run Run

6

作業単位としてのContainer

Base

image

Patches

インフラ担当 開発者

Ruby

Redis

Logger

Utilities

App

ローカル開発環境 本番環境

7

Amazon EC2 Container Service - Basic

8

Amazon EC2 Container Serviceとは?

• Amazon ECS

• Docker Container群をAmazon EC2のCluster上で管理できるサービス

• 高いスケーラビリティ

• AWSの他の機能・サービスとの連携

9

Dockerは1台のOSでは非常に簡単に使える

Server

Bins/Libs Bins/Libs

OS

App1 App2

10

Containerをただ起動するだけの場合

• 今までのアプリケーションと同じ

– 所詮ただのプロセス

• AWS Elastic Beanstalk

• Cluster管理は特に必要ない

・・・

Deploy

11

何百台ものOSではContainer管理は非常に困難

12

リソースの利用率問題

• 枠割でInstanceをグルーピングすると、無駄が生じる

• リソース自体とアプリが密結合

35%

85%

13

Cluster管理の必要性

• Instance毎にアプリ管理しない– リソースの仮想化

• Clusterとして管理すると、適切な配置が可能– Scheduler– Containerならどこ

でも簡単に配置

~80%

14

Cluster管理とScheduler

• Cluster管理

– 計算機群のリソース、状態を常に管理

• Scheduler

– Cluster全体を見て適切にContainerを配置

CPU: 500

Mem: 300

CPU: 10

Mem: 30 CPU: 2000

Mem: 1000

CPU: 10

Mem: 30CPU: 10

Mem: 30

Scheduler

Cluster Manager

15 Source: eurosys2013.tudos.org/wp-content/uploads/2013/paper/Schwarzkopf.pdf

16

Docker

Task

Container Instance

Amazon

ECS

Container

ECS Agent

ELB

Internet

ELB

User / Scheduler

API

Cluster Management Engine

Task

Container

Docker

Task

Container Instance

Container

ECS Agent

Task

Container

Docker

Task

Container Instance

Container

ECS Agent

Task

Container

AZ 1 AZ 2

Key/Value Store

Agent Communication Service

http://aws.typepad.com/sajp/2015/07/under-the-hood-of-the-amazon-ec2-container-service.html

17

Cluster管理のユースケース

• Service & Application– シンプルなモデル Docker imageをbuild, test, deploy

– Microservices

– Blue-Greenデプロイ

• Batch Jobs– リソースを共有することで、バーストにも対応しやすい

– Auto Scaling/RI/Spotを使って、よりコストを下げる

18

Amazon EC2 Container Serviceの利点

Cluster管理はお任せ状態管理、操作、監視スケーラブル

簡単に、どんなスケールのClusterも管理できる

柔軟なContainerの配置

他のAWSサービスとの連携がデザインされている

拡張性の高さアプリケーションバッチジョブ複数のScheduler

Elastic Load Balancing, Amazon EBS, Amazon VPC, AWS IAM, AWS CloudTrail

包括的なAPIオープンソースAgentカスタムScheduler

19

必要な要素

• Cluster管理– Cluster全体の状態管理

• グループ化– 同一マシンで動かしたい

Container群の管理

• Scheduler– タスク配置、状態管理、

デプロイ

20

Cluster

Container Instance

Amazon ECSにおけるContainer管理の概要図

• Cluster管理– Cluster, Container

Instance, Agent

• グループ化– Task Definition, Task,

Container

• Scheduler– Run Task, Service

Agent

Task

Container

Container

Task

Service

Task Definition

Agent

Task

Task Definition

Run Task

21

Amazon ECSチュートリアル

• Container Instanceを起動し、Agentを稼働させる

Container Instance

Agent Agent

22

Amazon ECSチュートリアル

• 指定したClusterにContainer Instanceが登録される

Cluster

Container Instance

Agent Agent

23

Cluster

Container Instance

Amazon ECSチュートリアル

• Task Definitionを定義する

Agent Agent

Task DefinitionTask Definition

24

Cluster

Container Instance

Amazon ECSチュートリアル

• Run TaskでBatch Taskを開始

Agent Agent

Task DefinitionTask Definition

Run Task

25

Cluster

Container Instance

Amazon ECSチュートリアル

• 自動でContainer InstanceにTaskが割り振られる

Agent Agent

Task Definition

Task

Task Definition

Run Task

26

Cluster

Container Instance

Amazon ECSチュートリアル

• Task内のContainerが起動する

Agent Agent

Task Definition

Task

Task Definition

Run Task

27

Cluster

Container Instance

Amazon ECSチュートリアル

• ServiceでWeb Taskを開始する

Agent Agent

Task

Task Definition

Run Task Service

Task Definition

28

Cluster

Container Instance

Amazon ECSチュートリアル

• 自動でContainer InstanceにTaskが割り振られる

Agent Agent

Task

Task Definition

Run Task

Task

Service

Task Definition

Task

29

Cluster

Container Instance

Amazon ECSチュートリアル

• Task内のContainerが起動する

• もし設定していれば、Elastic Load Balancingに登録

Agent Agent

Task

Task Definition

Run Task

Task

Container

Container

Service

Task Definition

Task

30

Amazon ECS Components

31

Run Task

Amazon ECS: Cluster管理

• Cluster管理– Cluster, Container

Instance, Agent

• グループ化– Task Definition, Task,

Container

• Scheduler– Run Task, Service

Service

Task DefinitionTask Definition

Cluster

Container Instance

Task

Container

Container

Task

Agent

Task

Agent

32

Amazon ECS: Cluster

• Container Instanceの集合体

• Cluster内のInstanceが持つリソースをまとめて管理

33

Amazon ECS: Container Instance

• ContainerのホストとなるAmazon EC2

• VPC内の任意のInstanceを利用可能– Docker+ECS Agentが

動いていることが必要

– Amazon ECS-optimized AMI

34

Amazon ECS: Agent

• Amazon ECSのendpointと通信するAgent

• Go言語製のDockerimage

• Docker Hubで提供

35

Run Task

Amazon ECS: グループ化

• Cluster管理– Cluster, Container

Instance, Agent

• グループ化– Task Definition, Task,

Container

• Scheduler– Run Task, Service

Service

Cluster

Container Instance

Agent Agent

Task

Container

Container

Task Task

Task DefinitionTask Definition

36

Amazon ECS: Task Definition

• Containerの集合を定義

– 必ず同じInstanceで稼働

– 要求するリソースを指定

• CPU, memory, (Port)

• ボリュームも定義可能

– Instanceのファイルシステムを利用できる

• バージョニングが可能

37

Task Definition: Overview

Volume definitions

Container definitions

Container Instanceのファイルシステムをマウントする場合、定義する

稼働させるContainerの情報を定義する

38

Task Definition: Overview

Shared data volume

PHP AppTime of day

App

Task Definition

39

Task Definition: Overview

Container

Instance

Schedule

Shared data volume

PHP AppTime of day

App

Task Definition Task

40

Task Definition: Container Definition{"name": "simple-demo","image": "foo/my-demo","cpu": 10,"memory": 500,"portMappings": [{"containerPort": 80,"hostPort": 80

}],"mountPoints": [{"sourceVolume": "my-vol","containerPath": "/var/www/my-vol"

}],"entryPoint": ["/usr/sbin/apache2","-D","FOREGROUND"

],"essential": true

},

{

"name": "busybox",

"image": "busybox",

"cpu": 10,

"memory": 500,

"volumesFrom": [

{

"sourceContainer": "simple-demo"

}

],

"entryPoint": [

"sh",

"-c"

],

"command": [

"while true; do /bin/date > /var/www/my-vol/date; sleep 1; done"

],

"essential": false

}

41

{"name": "simple-demo","image": "foo/my-demo","cpu": 10,"memory": 500,"portMappings": [{"containerPort": 80,"hostPort": 80

}],"mountPoints": [{"sourceVolume": "my-vol","containerPath": "/var/www/my-vol"

}],"entryPoint": ["/usr/sbin/apache2","-D","FOREGROUND"

],"essential": true

},

[

{

"image": "mysql",

"name": "db",

"cpu": 10,

"memory": 500,

"essential": true,

"entryPoint": [

"/entrypoint.sh"

],

"environment": [

{

"name": "MYSQL_ROOT_PASSWORD",

"value": "pass"

}

],

"portMappings": []

}

]Essential to our Task

Mount volumes

Expose port 80 in container

to port 80 on host

10 CPU Units (1024 is full CPU),

500 Megabytes of Memory

Task Definition: Container Definition

42

{

"name": "busybox",

"image": "busybox",

"cpu": 10,

"memory": 500,

"volumesFrom": [

{

"sourceContainer": "simple-demo"

}

],

"entryPoint": [

"sh",

"-c"

],

"command": [

"while true; do /bin/date > /var/www/my-vol/date; sleep 1; done"

],

"essential": false

}

[

{

"image": "tutum/wordpress-stackable",

"name": "wordpress",

"cpu": 10,

"memory": 500,

"essential": true,

"links": [

"db"

],

"entryPoint": [

"/bin/sh",

"-c"

],

"environment": [

],

"portMappings": [

{

"containerPort": 80,

"hostPort": 80

}

]

},

]

From Docker Hub

Mount volume from other container

Command to exec

Task Definition: Container Definition

43

Amazon ECS: Task

• Task Definitionが実体化されたもの– 1つのTask Definition

から複数のTaskが生成

• リソースに余裕のあるContainer Instanceで実行される

44

Amazon ECS: Container

• Taskの実体であるDocker Container

– 1つのTaskに複数のContainerが含まれる

• Container Instance上で実行される

45

Amazon ECS: Scheduler

• Cluster管理– Cluster, Container

Instance, Agent

• グループ化– Task Definition, Task,

Container

• Scheduler– Run Task, Service Cluster

Container Instance

Agent Agent

Task

Container

Container

Task Task

Task DefinitionTask Definition

ServiceRun Task

46

Amazon ECS: Run Task

• Batchジョブの様なワークロードに最適

• Task Definitionから指定した数のTaskを実行する– Container Instance

は自動的に選ばれる

47

Amazon ECS: Service

• Web/APIの様に長期稼働するワークロードに最適

• Taskを必要数保ってくれるスケジューラ– 自動復旧にも対応

• 新しいTask Definitionをデプロイしつつ切替

• Elastic Load Balancingとの連携も可能

48

Amazon ECS: Serviceの例

49

Amazon ECS: ServiceのUpdate

• Serviceが使うTask DefinitionをUpdateすると、新しいTaskをデプロイできる

• 空いているリソースで新しいTaskを起動しながら、徐々に古いTaskを止めていく– 中間では、新旧のTaskが混在する

50

Cluster

Amazon ECS: ServiceのUpdate

Service

Task Definition:1

Task:1Task:1 Task:1

51

Cluster

Amazon ECS: ServiceのUpdate

Service

Task Definition:1 Task Definition:2

Task:1Task:1 Task:1

52

Cluster

Amazon ECS: ServiceのUpdate

Service

Task Definition:1 Task Definition:2

Task:1Task:1 Task:1Task:2 Task:2

53

Cluster

Amazon ECS: ServiceのUpdate

Service

Task Definition:1 Task Definition:2

Task:1Task:2 Task:2

54

Cluster

Amazon ECS: ServiceのUpdate

Service

Task Definition:1 Task Definition:2

Task:1Task:2 Task:2Task:2

55

Cluster

Amazon ECS: ServiceのUpdate

Service

Task Definition:1 Task Definition:2

Task:2 Task:2Task:2

56

Amazon ECS: 利用料金

• Amazon ECS自体の利用料は不要

• Container Instanceとして使用するAmazon EC2の料金– On-demand/RI/Spotの料金、Amazon EBSの料金

– Spotを利用する場合はTerminateされる可能性を考慮する

• Elastic Load Balancingを利用する場合はElastic Load Balancingの料金

57

Amazon EC2 Container Service - Update

58

New: Amazon EC2 Container Registry

• 完全マネージドなDocker containe registry

• Amazon ECSと連携

• 通信経路、保存時に暗号化

• IAMユーザ、ロール

• 高い可用性とスケーラビリティ

• 複数のリージョンで利用可能

• $0.10/GB/月 + AWSデータ転送料

• もう間もなくです! サインアップすると、通知や早期アクセスの可能性aws.amazon.com/ecr

59

New: Amazon EC2 Container Registry

aws.amazon.com/ecr

• 完全マネージドなDocker containe registry

• Amazon ECSと連携

• 通信経路、保存時に暗号化

• IAMユーザ、ロール

• 高い可用性とスケーラビリティ

• 複数のリージョンで利用可能

• $0.10/GB/月 + AWSデータ転送料

• もう間もなくです! サインアップすると、通知や早期アクセスの可能性

60

New: AZを意識したScheduling

• Service Schedulerの機能

• 可用性の向上、より効率の良い負荷分散

• 新しいTaskがAZにまたがってバランスが保たれる

61

New: ECS CLI

• 最初のリリース

• ローカルでの開発を簡素に

• ECS Clusterを簡単に構築

• Docker Composeをサポート

• オープンソース

github.com/aws/amazon-ecs-cli

$ ecs-cli configure -i$ ecs-cli up$ ecs-cli compose up$ ecs-cli compose ps

62

New: Docker Containerの設定オプション等の改善

• ECSのTask Definitionでより多くのオプションをサポート

• アドバンスドなDockerユーザに最適

• 新しく追加された項目

– Hostname

– Docker labels

– Working directory

– Privileged execution

– Log configuration

– …この他にも!

– (ドキュメントをご覧ください)

• UDP対応

http://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/task_definition_parameters.html

63

New: Amazon CloudWatchメトリクス追加

• Cluster Utilization– CPU/Memoryの利用率を、

Cluster全体を100%して計算

– Instance Type毎の違いを正規化するので、複数Type混合でもok

• Service Utilization– CPU/Memoryの利用率を、Task

Definitionの数値×Task数を100%として計算

– Data Samplesを見ると、RUNNINGなTask数も分かる

Amazon ECSのコンソール

CloudWatch Dashboard

http://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/cloudwatch-metrics.html

64

Amazon EC2 Container Service - Advanced

65

Amazon ECS: Volumes

• HostのfilesystemをContainerでmountできる仕組み※

– Container間の共有storageとして

– 永続storageとして

• Task Definitionでvolumesを定義する

Host

Container 1

Container 2

※ http://docs.aws.amazon.com/AmazonECS/latest/developerguide/using_data_volumes.html

66

Amazon ECS: Volumesの永続化/非永続化

• Hostに永続化する時– volumesでHostのパスを

host.sourcePathで定義する

• Hostに永続化しない時– 上記を指定しないと、Task

起動時に空のvolumeが作成される

– 使っているContainerが無くなったらDockerに回収される

←永続化する

←永続化しない

※ http://docs.aws.amazon.com/AmazonECS/latest/developerguide/using_data_volumes.html

67

Amazon ECS: Volumesのmount方法

• mountPointsで指定– volumesをContainerの

どこにmountするか

– readOnlyにもできる

• volumesFromで指定– sourceContainerと同じ

様にmountさせる指定方法

←何をどこにmountするか定義

←webと同じ様にmountする定義

※ http://docs.aws.amazon.com/AmazonECS/latest/developerguide/using_data_volumes.html

68

Amazon ECS: CPU/Memory

• CPUの単位は「1024 unit = 1 core」※

– unitを指定すると、最低それだけは使えることが保証される

– もし指定量以上を使おうとした時は、CPUに空きがあれば使える

– CPUに空きがなくなると、unitを元にキャップがかかる

• Memoryの単位は「MiB」※

– もし指定量以上を確保しようとすると、Containerは殺される

※ http://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definition_parameters.html

69

Amazon ECS: Dynamic Port Mapping

• Task起動時にHost上の空きポートが自動的にマッピングされる

– OSのephemeral port

• Task DefinitionでhostPortを0または指定しないと利用可能※ Container Instance

Task

Container

Task

Container

49200

Task Definition

※ http://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definition_parameters.html

80

49201 80

70

Amazon ECS: Dynamic Port Mapping制約

• Elastic Load Balancing連携では、現状利用できない– Elastic Load Balancing側の

仕様でDynamic Portに対応していないため

• この場合、hostPortを固定する必要がある– 同一Taskは、1つの

Container Instance上に1つまで

49200

49201

49202✘

・Instance毎にポート変更できない・1 Instanceの複数ポートを登録できない

8080

8080✔※ http://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-load-balancing.html

71

Amazon ECS: IAM Roles

• Instance Role– Container InstanceのProfileに指定

• AWS Managed Policy: AmazonEC2ContainerServiceforEC2Role

– Amazon ECSのAPIを実行できること

• Service Role– Serviceが利用するRoleを指定

• AWS Managed Policy: AmazonEC2ContainerServiceRole

– Amazon EC2, Elastic Load BalancingのAPIを実行できること

• いずれもGetting Startedで自動作成される

※ http://docs.aws.amazon.com/AmazonECS/latest/developerguide/IAM_policies.html

72

Amazon ECS: Auto Scaling

• Container InstanceのAuto Scaling増減にServiceのDesired Tasksは追従しない– Container Instanceの数が増減したからといって、自動でTask

の数が増減するということはない

• 自動で増減させたければ、何かしらのAPI連携が必要– 例: Auto Scaling Groupの増減→Amazon SNS→AWS

Lambda→Amazon ECS ServiceのDesiredCountを増減※

※ http://dev.classmethod.jp/cloud/ecs-integrate-autoscaling-by-lambda/

73

Amazon ECS: Agent Update

• マネージメントコンソールやCLIから、Agentをアップデート可能

• Amazon ECS-optimized AMIで利用可能

※ http://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-agent-update.html

74

Amazon ECS: Task Override

• Run TaskではTask Definitionの一部をOverride可能※

– Command

– Environment

• Serviceでは未対応

※ http://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs_run_task.html

75 https://aws.amazon.com/docker/

AWS Container Partners

76

まとめ

77

Amazon ECSでCluster管理を実現しよう

• Docker ContainerのためのCluster管理サービス

• マネージドで提供されるのが大きな特徴

• シンプルな仕組みなので、拡張性が高い

78

参考資料(英語)

• Amazon EC2 Container Service Developer Guidehttp://docs.aws.amazon.com/AmazonECS/latest/developerguide/Welcome.html

• Amazon EC2 Container Service FAQhttp://aws.amazon.com/ecs/faqs/

• AWS CLI – ecshttp://docs.aws.amazon.com/cli/latest/reference/ecs/index.html

79

Q&A

次回Webinarのお申し込みhttp://aws.amazon.com/jp/event_schedule/

80

Webinar資料の配置場所

• AWS クラウドサービス活用資料集– http://aws.amazon.com/jp/aws-jp-introduction/

81

公式Twitter/FacebookAWSの最新情報をお届けします

@awscloud_jp

検索

最新技術情報、イベント情報、お役立ち情報、お得なキャンペーン情報などを日々更新しています!

もしくはhttp://on.fb.me/1vR8yWm

82

ご参加ありがとうございました。

83

Appendix

84

Resource Utility of Heterogeneous Instances

Amazon ECSAmazon EC2

Spot Fleet+

c3.xlarge

c3.xlarge

c3.xlarge

r3.8xlarge

r3.8xlarge

r3.8xlarge

c3.8xlarge

c3.8xlarge

c3.8xlarge

c3.4xlarge

c3.4xlarge

c3.4xlarge

r3.2xlarge

r3.2xlarge

r3.2xlarge

85

Amazon ECS: Per Instance Limitation

• 現時点ではContainer単位ではなくInstance単位となっているもの

• Security Group– 全てのContainerの最大公約数的な指定が必要– Elastic Load Balancingを通せば外部からの通信は絞れる

• IAM Roles– 全てのContainerの最大公約数的な指定が必要

• AWS CloudWatch metrics– Container毎のメトリクスは取得されない (Cluster/Service毎は取得される)– 必要であれば、他のソリューションとの組み合わせ

86

Amazon ECS: AWS Elastic Beanstalk

• Multicontainer DockerEnvironment

• 実は裏側でAmazon ECSを使っている– Cluster, Container

Instance, Task Definition, Taskが自動生成される

※ http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_docker_ecs.html

87

Amazon ECS: AWS Elastic Beanstalk

• Dockerrun.aws.jsonの記述は、Task Definitionとほぼ同じ※

– AWSEBDockerrunVersionに"2"を指定

– Single container Docker Environment(Version 1)とは違う形式

• Auto Scalingで増えたInstanceにもTaskが自動で配置される– Service/Run Taskスケジューラは使用していない

– startTask APIでContainer Instanceを指定してTaskを実行

※ http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_docker_v2config.html

88

Cluster

Amazon ECS: Docker Registry

• Amazon EC2 Container Registry (Coming soon)

• Docker Hub等のprivate image利用可能※

– AgentにECS_ENGINE_AUTH_* 環境変数で認証情報を渡す

• Amazon ECS上にPrivate Registryを立てることも可能

※ http://docs.aws.amazon.com/AmazonECS/latest/developerguide/private-auth.html

Service

Task Definition

registry:2

Service

Task Definition

docker.local/foo

docker.local

89

Amazon ECS: Logging

• Containerのログを集める必要がある– Containerが終了すると

ファイルは消えてしまう

• 例: Task DefinitionでLogger Containerを定義– rsyslogでログを受け取っ

て送る※

– 共有Volumeを使って書かれたログを送る

※ https://blogs.aws.amazon.com/application-management/post/TxFRDMTMILAA8X/Send-ECS-Container-Logs-to-CloudWatch-Logs-for-Centralized-Monitoring

例: Logger Containerはrsyslogでログを受け取り、CloudWatch Logs agentでログを転送する

90

Amazon ECS: Service Discovery

• Dynamic Port Mappingを活用したい時に必要– IPアドレス+hostPortのリス

トを動的に管理する

• 例: consul + registrator※

– registrator経由でconsulにHostのIPアドレスとhostPortが保存される

– DNSのSRVレコードでIPアドレスとPortが取り出せる

※ https://aws.amazon.com/blogs/compute/service-discovery-via-consul-with-amazon-ecs/

例: stock-priceとweatherはregistratorによってconsulにIPアドレスとportが登録されるので、portalはDNSのSRVレコードでdiscoveryできる

91

ContainerとDevOps

92

DevOpsとは?

DevOps = ライフサイクルを高速化する効率の良さ

開発者 顧客

releasetestbuild

plan monitor

デリバリのパイプライン

フィードバックループ

ソフトウェア開発のライフサイクル

93

DevOps lifecycle

Build Test ProductionDevelopment

<>

<>

Application

CodeArtifact

94

DevOps lifecycle

Build Test ProductionDevelopment

<>

<>

Application

CodeArtifact

AWS

CodePipeline

AWS

CodeDeploy

95

DevOps lifecycle

Build Test ProductionDevelopment

<>

<>

+AMI Provisioning

Code

Application

CodeArtifact

Provisioning

Code

{}Config

{}Config

{}Config

AWS

CodePipeline

AWS

CodeDeploy

96

DevOps lifecycle

Build Test ProductionDevelopment

<>

<>

+AMI Provisioning

Code

Application

CodeArtifact

Provisioning

Code

{}Config

{}Config

{}Config

AWS

Elastic Beanstalk

AWS

OpsWorks

AWS

CodePipeline

AWS

CodeDeploy

97

After Docker…

+ <>+

Build Test ProductionDevelopment

<>

<>

+{} {} {}

98

After Docker…

+Provisioning

Code

<>

Application

Code

Docker

Image

+

DockerfileDocker

Image

Build Test ProductionDevelopment

99

After Docker…

Build Test ProductionDevelopment

+Provisioning

Code

<>

Application

Code

Docker

Image

+

DockerfileDocker

Image

Amazon ECS

Amazon ECR