狠狠撸

狠狠撸Share a Scribd company logo
Docker初めての方への
ECSとFargate?
自己绍介
Introduction
Name: HisayukiMori
Company: Cloud9 Holdings Inc.
Post : CTO
Community : JAWS-UG 名古屋,JP-Stripe
Facebook : 森 久由生
Twitter : @hisayuki_mori
Agenda
今日のレシピ
?Dockerってなんだろう?
?Dockerってどんなメリットあるの?
?ECSって何してくれるの?
?ECSを使うとどうHappyになるの?
?Fargateってなに?
?EC2とFargateの違いは?
?まとめ
今日の目的
?初めての方に?Docker素晴らしい!?
って思ってもらう事
顿辞肠办别谤使うようになって3ヶ月ほどですが
初めての方に?Docker素晴らしい!?って
思ってもらう事を目的とします。
Docker
そもそも顿辞肠办别谤って何?
What ‘s Docker
?Container型の仮想環境を作成、配布、実
行するためのOSS Platform
?MiddlewareのInstallや各種環境設定をCode
化して管理可能
?仮想環境作成や起動は速く、性能劣化が
ほとんどない
?技術ではなく仕様
仮想マシンとの違い
?仮想MachineはHostMachine上でHypervisorを
利用しGuest OSを動かして、その上で
Middlewareなどを動かす。
?DockerはHostMachineのKernelとProcessを利用
→そのためGuestOSを必要とせず、Host Machine
のResourcesを共有できる。
?1つのOS上で複数のApplicationを分離した
環境で動かすことが可能
20180925 docker ecs_fargate
ContainerのProcess
仮想Machine Container
Infrastructure as Code
?構成はすべてcode化する→Dockerfile
?構成管理はほとんど不要になった
?DockerImageを共有することで、同じ環境が
作れる
?どこでも、誰でも、OS関係なく
?構成変更もDockerfileの修正のみで可能
?変更したDockerfileでDockerImageをbuild
ImageとContainer
?DockerImageはDockerfileをbuildすることで
出来るContainer雛形
?DockerImageはRegistryで共有可能
→DockerHubやECR
?DockerImageをDockerEngine上で動かすと、
実行環境のDockerContainerが立ち上がる
?同時に複数Containerを立ち上げることも可能
顿辞肠办别谤を使えば1厂别谤惫别谤に复数役割を当てられる
1厂别谤惫别谤に奥别产も础辫辫も顿叠厂别谤惫别谤も配置できる
しかも、别环境として立ち上がっている
まぁ、実际こういう构成は作りますが
Dockerの良いところ
?Resourcesの有効活用
?ポータビリティ
?Stateless
?Speed(高速な起動)
?柔軟性
?再利用性が高い
DockerImageを配布することで
完全な同一環境を作成可能
イミュータブルな環境構築
?DockerfileはGithubでVersion管理可能
?DockerImageはECRやDockerHubで
Version管理可能(tag付けも)
?同一DockerImageからは同一環境の構築が
必ず出来る
開発環境で動作してるContainerと同じ
DockerImageをそのまま本番環境へ配置する
ことが出来る。
注意点
?DockerContainer内に起動中に保存した
ファイルは停止と同時に消える
→正確にはProcessを切ったら
?そのためHOST側portと繋いで、ファイル
保存などはHOST側にする必要あり
?ファイル同様に起動後に変更した設定な
ども停止と同時に戻る
→こっちも正確にはProcessを切ったら
僕も数ヶ月前までDockerfile書くのに
アレルギーありました
使ってみると便利すぎて手放せなくなります
Happyになること多くないです?(*?▽ ?*)
ECS
贰颁厂ってどんな事してくれるの?
What ‘s ECS
?DockerContainerのOrchestrationService
?どのServerでどのContainerを実行するか管理
?ServerResourcesの状況に応じた配置戦略
?大量のServerでContainerを実装できる
まずは贰颁厂の用语説明から
Cluster
?ECSでのGroup定義
Cluster
?ECSでのGroup定義
あまり語ることがない?
Task
?実際にインスタンス上で動くContainer
?TaskはTaskDefinitionsを元に作られる
?Container実行や停止が行える
Task
?実際にインスタンス上で動くContainer
?TaskはTaskDefinitionsを元に作られる
?Container実行や停止が行える
あまり語ることがない?
Task Definitions
?Taskについての定義
?どのContainer使うの?いくつ設定する?
?CPUどれくらい?Memoryどれくらい?
?内部Volume使う?使わない?
?logはどこに吐く?
?環境変数はなに設定する?
?更新するごとに強制的にRevisionUP
Service
?ECSの中枢定義
?どのTask使うの?
?Platformのversionは?
?どのClusterで、いくつ配置する?
?HealthCheckは?
?どのVPC?
?ELBどれつかう?
?Scalingどうする? 等など???
ECSがあると何がHappy?(*?▽ ?*)
なぜContainerServiceが必要か
これらの作業を”自分たち”で行うことからの開放
?Serverが増えたときに他のServerと同じ設定
→これはEC2でAMI作っておけばよいかも
?ContainerImageをすべてのServerに配布
?Server増えたときには新規Serverにも
?ContainerImage更新したら再配布
?HostのCPU、Memoryに応じたContainer配置
?Host/Containerの死活監視
例えばEC2をHostにして、
ContainerをScalingしたい場合
20180925 docker ecs_fargate
20180925 docker ecs_fargate
20180925 docker ecs_fargate
20180925 docker ecs_fargate
ScaleするEC2に毎回Docker Image入れて
起動させます?
あとDocker Image更新したら???
まぁ、颁辞苍迟补颈苍别谤を使う上でほぼ必须です?
Happyになること多くないです?(*?▽ ?*)
Fargate
What ‘s Fargate
?正式にはAWS FargateforECS
?Containerの実行環境
?Containerの運用、Container内のApplication開発
にFocus出来るようにしたService
EC2とFargateの違い
?もうServerすら意識する必要がない
?パッチ適用などの定期業務から開放
?気にするのはCPUと利用Memory
?あとAutoScaling時のContainerを何台にする
か
→HOSTインスタンスは気にしなくてOK
一応、Serverlessの一貫だと思ってる
Fargateのメリット
?インスタンス管理が不要
?ClusterLevelでのResourcesの過不足は
考慮しなくていい
?TaskLevelでSeamlessなScalingが可能
?EC2の場合Containerが動いて無くても
EC2の料金がかかっていたが、実際に
使ったResources分しかかからない
つまり
20180925 docker ecs_fargate
20180925 docker ecs_fargate
20180925 docker ecs_fargate
20180925 docker ecs_fargate
HOSTInstanceのScalingは
気にしなくて良い!!
ストレージについて①
?重要データは外部ストレージへ
→S3やRDSなど
?現時点ではEBSやEFSを直接マウント出来ない
?レイヤーストレージはTaskにつき
MAX10Gまで
→但しDockerImageの容量も含む
→Container間での書き込みは不可
ストレージについて②
?ボリュームストレージはTask内で4G
?複数のContainerをまたいで保存可能
?TaskDefinitionでボリューム定義をして、
Container定義でマウントする
但し、レイヤーストレージもボリュームス
トレージも停止とともにデータが消滅する
Logについて
?あとから参照するものはContainer内
には残さないこと
→消滅します/(^o^)\
?CloudWatch Logsに吐き出す
→LogGroupは作っておく必要あり
?Task実行Rollに忘れずにLog書き込み権限を
付けましょう
→Logが吐き出されなくなります
Metricsについて
?最初から用意されているのはServiceレベルの
CPU/メモリ使用率のみ
?TaskやContainerの詳細情報を得るための
エンドポイントが用意されている
?但し、アクセス権限はTask内で動いている
Containerの中からのみ
環境変数について
?Task定義にて環境変数を設定可能
→DockerImageは不変だが、環境変数は
環境ごとに変わることには注意
?機密情報はSystemManagerのParameterStoreへ
Fargateの注意点
?WindowsContainerは使えない
?GPUサポートなし
?Containerインスタンスにログインは出来ない
?docker execなどのデバッグは不可
?ホスト側とコンテナ側が同一portのみ設定可能
?DockerHubのPrivateRepositoryは使えない
→使えるようになりました。
?常時起動で利用する場合はEC2よりも少々お高い
开発者が颁辞苍迟补颈苍别谤と础辫辫濒颈肠补迟颈辞苍のみに集中できる!
これかなりHappyじゃないですか?(*?▽ ?*)
まとめ
Summary
?Docker超便利
?ECSでContainer管理を自動化しましょ!
?FargateでServer管理から開放されましょう!
Happy?(*?▽ ?*)
ご清聴ありがとうございました?

More Related Content

20180925 docker ecs_fargate