kakakakakku blog

Weekly Tech Blog: Keep on Learning!

「JAWS-UG コンテナ支部 入門編 #4」に参加して ECS の事例を聞いてきた

3/30(木) に参加して既に3週間もたってしまったけど,ECS の事例を聞きたいなと思って「JAWS-UG コンテナ支部 入門編 #4」に参加してきた.今回は「入門編」だったので,僕のレベル的にちょうど良いなと思った.あと JAWS 系のイベントは “19-21時” でサクッと終わるため,集中して学んで帰れるのも嬉しいポイントだと思う.

jawsug-container.connpass.com

Docker と Docker Hub の操作と概念 @zembutsu

  • 技術(コンテナ)と仕様(Docker)
  • dockerd → containerd → runC → Linux Kernel
  • 通常の Linux では /sbin/init が PID 1 だけど,コンテナの中で httpd など,起動しているプロセスが PID 1 になる
  • コンテナホストから見ると,その httpd は PID 6 になる(例えば)
  • docker v1.13 からコマンドの体系が変わった
    • docker imagesdocker image ls
    • docker psdocker container ls
    • などなど
  • docker container prune
    • 停止しているコンテナを全て削除する
  • docker image prune
    • 使用していないコンテナイメージを全て削除する
  • docker system prune
    • コンテナ,コンテナイメージだけじゃなく,不要なネットワークとボリュームも全て削除する

www.slideshare.net

Docker は少し前から個人利用をしていたし,社内でハンズオン勉強会を主催したこともあるので,ある程度は理解できていた.ただ,v1.13 からコマンドの体系が変わったのは知らなくて,まだ無意識に旧コマンドを打ってしまっている状態.また prune 系のコマンドも知らなくて,今までこまめに消していて非常に面倒だったので,最近はよく使うようにしている.コマンド体系の変更は以下に詳細に載っている.

qiita.com

ECS 概要 / アップデート情報 AWSJ 浅野さん

(資料公開なし)

とある社内ビックデータ基盤にバッチ用コンテナ基盤を構築してみた @Thiro1123

  • 背景
    • 大量のバッチが存在している
    • 大量のサーバが存在している
  • バッチ間の依存を無くして,バージョンアップや,リリースをできるようにする必要があった
    • オンプレ側の JP1 でバッチの実行結果を確認したいという要件もあった
  • JP1 から API Gateway + Lambda に POST することで,curl さえあれば連携できるようにした
  • Lambda が起動して ECS Task を起動する

www.slideshare.net

ECS をバッチ実行に活用する事例は凄く参考になった.ウェブサーバや API サーバでのユースケースがメインなのかなと思っていたけど,前にデータベースマイグレーションを実行するだけのコンテナを動かすという話も聞いたことがあるし,非常にポータビリティがあり良さそう.また,他の機能に影響せず,ジョブごとに順次移行できそうなのも良かった.あと ECS でバッチを動かす事例だと,最近以下の記事も出ていて参考になった.

www.wantedly.com

これから ECS をはじめる人のための ECS ベストプラクティス @sudoyu

  • SpotFleet を使うとコンテナインスタンスのコストを最適化することができる
  • ECS を使うと運用コストが減るため,結果的にエンジニアの稼働を別の開発に当てることができる
  • 勘所
    • 永続化データ (Docker Volume) を使わないように設計する
      • Docker Volume を使ってしまうと,コンテナインスタンスに依存してしまう
      • S3, CloudWatch Logs, RDS, DynamoDB など,特性に応じてデータを置くようにする
    • ログは awslogs ドライバを使う
      • 標準出力を CloudWatch Logs に転送してくれる
      • もしくは Fluentd などのログドライバを使うという選択肢もある
    • ALB でパスベースルーティングができるため,ドメイン名を分けなくても良いような場合は検討する
      • ECS Service だけを変えれば良いようになる
  • 注意点
    • ECS-optimized AMI の更新通知を SNS で受信可能になっている
    • 動的ポートマッピングを使う

www.slideshare.net

まさにこれから ECS の設計をしようとしていたので,非常にコンパクトにまとまっていて参考になった.ログを永続化する仕組みは CloudWatch Logs が良いのか,既存の Fluentd の Aggregator を使うのが良いのか,ログをどのように活用するのかを考えてから決めたいと思う.

ECS 導入における3つの明確な傾向 jhotta さん

www.datadoghq.com

  • トレンド 1 : ECS は静かに着実に人気を獲得している
  • トレンド 2 : コンテナの増加は問題の増加
  • トレンド 3 : オーケストレーション == 多産家系

まとめ

  • Docker の概念,ECS 機能紹介,バッチでの事例,ベストプラクティスなど,発表内容のバランスが非常に良く勉強になった
  • ECS のデプロイ関連の話があまり無かったため,聞きたかった…
  • Amazon ECR Docker Credential Helper はさっそく試してみる
  • ECS を使い倒すぞ!という気持ち

関連記事

「コンテナは20世紀最大の発明」という話を聞いて,コンテナ物語のことを思い出した.Docker のメタファーを学ぶならオススメの1冊かなー!

kakakakakku.hatenablog.com

さっそく ECS に入門して Golang の API を ECS にデプロイする仕組みを試してみた.

kakakakakku.hatenablog.com

関連レポート