amazon ec2 container service...2015/06/24 · 18 amazon ec2 container serviceの利点...
TRANSCRIPT
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
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