Slide 1

Slide 1 text

Repro とECS Repro とECS の今と昔 の今と昔 Repro Tech Meetup #1 Docker 2018-07-27 當間竜也@kei_q #reprotech

Slide 2

Slide 2 text

発表の趣旨 発表の趣旨 話すこと 話すこと ECS の変化と自社に取り込んだ機能を時系列で紹介 当時の状況や課題 検証・活用した技術と現状 話さないこと 話さないこと docker そのものの技術 container 運用 各技術の詳細 未来の話

Slide 3

Slide 3 text

弊社紹介 弊社紹介 repro.io

Slide 4

Slide 4 text

自己紹介 自己紹介 當間 竜也 @kei_q 2016 年11 月入社 入社後障害一次対応とリリース担当 その後インフラ中心 今は権限周りや開発の支援

Slide 5

Slide 5 text

ECS について ECS について Amazon Elastic Container Service コンテナ管理サービス 2015-04 ECS 初登場 Amazon EC2 Container Service is Now Generally Available

Slide 6

Slide 6 text

task de nition container やその関連の設計図 task task de nition の実体化されたも の service 特定の数のtask を同時に実行、管 理するサービス container instance cluster に登録されているEC2 instance cluster task を配置できるcontainer instance のグループ ECS 概要 ECS 概要 https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

ruby/go でのwebapp uentd batch 処理 並列テスト環境 検証環境 社内ツール oneshot task ほかにもいろいろ clusters : 27 services : 100 tasks : たくさん containers : task の 倍以上 Repro でのECS 利用状況 Repro でのECS 利用状況 2016-06 弊社でECS の利用開始

Slide 9

Slide 9 text

今と昔 今と昔 2016-06 ~ 2018-07 topics 2016-07-13 Task IAM Role 2016-08-11 ApplicationLB 2016-08-15 ECR Tokyo Region 2016-12-29 Task Placement Policy 2017-06-07 Scheduled Tasks 2017-09-07 NetworkLB 2017-11-14 awsvpc network mode 2018-04-09 c5/m5 instance 2018-06-12 DAEMON SET 2018-07-04 Fargate Tokyo Region

Slide 10

Slide 10 text

ECS task の権限分離 ECS task の権限分離 昔: Instance Pro le 昔: Instance Pro le 権限がごった煮 instance の管理権限 + task の起動権限 + task 自体 に必要な権限 今: Task IAM Role 今: Task IAM Role 直接task にrole を割り当てられるように 2016-07-13~ Help Secure Container-Enabled Applications with IAM Roles for ECS Tasks

Slide 11

Slide 11 text

InstancePro le で実行 必要以上の権限が行 使できてしまう task IAM Role で実行 自身のtask に必要な 権限だけがある Task IAM Role Task IAM Role

Slide 12

Slide 12 text

No content

Slide 13

Slide 13 text

port の動的割当による衝突回避 port の動的割当による衝突回避 昔: ClassicLB 昔: ClassicLB port が衝突しないように注意して設計・運用 今: ApplicationLB 今: ApplicationLB dynamic port mapping でport の衝突回避 2016-08-11~ https://aws.amazon.com/jp/blogs/aws/new-aws-application-load-balancer/

Slide 14

Slide 14 text

ClassicLB port は固定 同一のcontainer instance ではport が 衝突 ApplicationLB 異なるport もOK 同一port を使用する task が同居できる Dynamic Port Mapping Dynamic Port Mapping

Slide 15

Slide 15 text

自前のdocker registry からの開放 自前のdocker registry からの開放 昔: 自前のdocker registry 昔: 自前のdocker registry EC2 のinstance を立てて自前で管理 今: ECR(Amazon Elastic Container Registry) 今: ECR(Amazon Elastic Container Registry) 自前のprivate registory を管理しなくてよくなった 2016-08-15~ Tokyo Region は2016-08-15 に利用可能に push 時にawslabs のcredential helper を利用

Slide 16

Slide 16 text

task の柔軟な配置によるcluster の整理 task の柔軟な配置によるcluster の整理 昔: Cluster を細かく分離 昔: Cluster を細かく分離 task の起動を分けるためにcluster 単位で分離 instance の種類ごとにcluster を分けて運用してい た 今: task 配置戦略でtask を配置 今: task 配置戦略でtask を配置 配置制約によってtask がどのcontainer instance に 配置されるか制御 2016-12-29~

Slide 17

Slide 17 text

task placement policy の図 task placement policy の図 https://aws.amazon.com/jp/blogs/compute/introducing-amazon-ecs-task-placement-policies/

Slide 18

Slide 18 text

定期実行タスクのdocker 化 定期実行タスクのdocker 化 昔: 秘伝のタレ化したinstance 上で動くCron 昔: 秘伝のタレ化したinstance 上で動くCron docker 化されてないinstance にdeploy して動作 今: Scheduled Tasks 今: Scheduled Tasks 一定時間ごとにECS のtask を定期実行 定期実行する処理の環境が明確に 2017-06-07~ Amazon ECS Now Supports Time and Event-Based Task Scheduling

Slide 19

Slide 19 text

uentd cluster のload balancing uentd cluster のload balancing 昔: Route53 で複数DNS record 登録 昔: Route53 で複数DNS record 登録 task の起動・終了時にDNS record を更新 le bu er の関係でservice を使わずtask を管理 今: NLB 今: NLB task placement policy でdeploy 改善したので合わ せてNLB を利用するように 2017-09-07~ New Network Load Balancer – E ortless Scaling to Millions of Requests per Second | AWS News Blog NLB で uentd のforward パケットを分散させてみた - Qiita

Slide 20

Slide 20 text

ECS task ごとのnetwork interface ECS task ごとのnetwork interface 昔: bridge/host network mode 昔: bridge/host network mode コンテナインスタンスのnetwork interface に依存 今: awsvpc network mode 今: awsvpc network mode task ごとにENI がattach される port の衝突回避, security group の分離 検証中 2017-11-14~ Amazon ECS Introduces Task Networking for Containers

Slide 21

Slide 21 text

新しいinstance type によるコスト低下と性能向上 新しいinstance type によるコスト低下と性能向上 昔: 当時使えるinstance を用途に合わせて利用 昔: 当時使えるinstance を用途に合わせて利用 コンピューティング最適化やメモリ最適化インスタ ンスなど c4, r4, m4, t2, etc... 今: container instance にc5/m5 instance の使用 今: container instance にc5/m5 instance の使用 性能が向上し単価が安価に 2018-04-09~ (c5/m5 instance) Amazon EC2 C5 Instances Are Now Available in Seoul and Tokyo Regions

Slide 22

Slide 22 text

デーモンタスク起動の自動化 デーモンタスク起動の自動化 昔: UserData によるdatadog-agent task の起動 昔: UserData によるdatadog-agent task の起動 instance の起動時にtask を起動するscript を仕込む 必要がある 今: DaemonSet によるtask の起動・維持 今: DaemonSet によるtask の起動・維持 ECS 側でcontainer instance の数に合わせてtask を 維持してくれる 2018-06-12~ Amazon ECS Adds Daemon Scheduling

Slide 23

Slide 23 text

container instance からの開放 container instance からの開放 昔: container instance 上でのtask の起動 昔: container instance 上でのtask の起動 container instance の管理 ecs-agent やdocker, その他yum update や security group, IAM など 今: fargate 検証中 今: fargate 検証中 一部社内用のツールで試験中 2018-07-04~ AWS Fargate 東京リージョン サービス開始のお知らせ | Amazon Web Services ブログ

Slide 24

Slide 24 text

fargate fargate pros container instance からの開放 cons 性能が厳しい コストが厳しい awslogs driver しかつかえない 本番環境で実運用している方ぜひお話させてください

Slide 25

Slide 25 text

おさらい おさらい 今回出てきたECS 関係のtopics 2016-07-13 Task IAM Role 2016-08-11 ApplicationLB 2016-08-15 ECR Tokyo Region 2016-12-29 Task Placement Policy 2017-06-07 Scheduled Tasks 2017-09-07 NetworkLB 2017-11-14 awsvpc network mode 2018-04-09 c5/m5 instance 2018-06-12 DAEMON SET 2018-07-04 Fargate Tokyo Region

Slide 26

Slide 26 text

これから これから EKS service discovery Code Pipeline AWS Batch Beanstalk X-Ray EFS ecs-cli ECR lifecycle 他にもいろいろ AWS 以外のcontainer 関連技術

Slide 27

Slide 27 text

最後に 最後に いかにして問題をとくか より この繰り返しが今になり明日になる 問題を理解すること 計画を立てること 計画を実行すること 振り返ってみること

Slide 28

Slide 28 text

No content