Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Repro_Tech_Meetup__1_Docker.pdf

kei-q
July 27, 2018

 Repro_Tech_Meetup__1_Docker.pdf

kei-q

July 27, 2018
Tweet

More Decks by kei-q

Other Decks in Programming

Transcript

  1. Repro とECS Repro とECS の今と昔 の今と昔 Repro Tech Meetup #1

    Docker 2018-07-27 當間竜也@kei_q #reprotech
  2. ECS について ECS について Amazon Elastic Container Service コンテナ管理サービス 2015-04

    ECS 初登場 Amazon EC2 Container Service is Now Generally Available
  3. 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
  4. ruby/go でのwebapp uentd batch 処理 並列テスト環境 検証環境 社内ツール oneshot task

    ほかにもいろいろ clusters : 27 services : 100 tasks : たくさん containers : task の 倍以上 Repro でのECS 利用状況 Repro でのECS 利用状況 2016-06 弊社でECS の利用開始
  5. 今と昔 今と昔 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
  6. 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
  7. 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/
  8. ClassicLB port は固定 同一のcontainer instance ではport が 衝突 ApplicationLB 異なるport

    もOK 同一port を使用する task が同居できる Dynamic Port Mapping Dynamic Port Mapping
  9. 自前の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 を利用
  10. task の柔軟な配置によるcluster の整理 task の柔軟な配置によるcluster の整理 昔: Cluster を細かく分離 昔:

    Cluster を細かく分離 task の起動を分けるためにcluster 単位で分離 instance の種類ごとにcluster を分けて運用してい た 今: task 配置戦略でtask を配置 今: task 配置戦略でtask を配置 配置制約によってtask がどのcontainer instance に 配置されるか制御 2016-12-29~
  11. 定期実行タスクの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
  12. 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
  13. 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
  14. 新しい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
  15. デーモンタスク起動の自動化 デーモンタスク起動の自動化 昔: 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
  16. 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 ブログ
  17. fargate fargate pros container instance からの開放 cons 性能が厳しい コストが厳しい awslogs

    driver しかつかえない 本番環境で実運用している方ぜひお話させてください
  18. おさらい おさらい 今回出てきた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
  19. これから これから EKS service discovery Code Pipeline AWS Batch Beanstalk

    X-Ray EFS ecs-cli ECR lifecycle 他にもいろいろ AWS 以外のcontainer 関連技術