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

いかにしてコンテナを活用するに至ったか

2matz
November 06, 2017

 いかにしてコンテナを活用するに至ったか

2matz

November 06, 2017
Tweet

Other Decks in Technology

Transcript

  1. システム規模 • ECS:40 クラスタ(開発, QA環境などを含む) ◦ EC2インスタンス数: 63 インスタンス ◦

    コンテナ数: 189 コンテナ • ECSを使用している開発者:5 人 ◦ ECS と意識せずに使用している開発者は多数
  2. [初期] ローカル開発環境として 2015/4頃 開発者が自然発生的に使い始める • ミドルウェアの設定動作確認 ◦ 設定変更時の挙動確認 ◦ CentOS

    イメージを使えば本番とほぼ同じ環境がローカルで手軽に作れる • 開発環境抽象化 ◦ Dockerfile による開発者間の環境同期 ◦ 最終的に本番もコンテナで実装する場合もある 開発者はWindows / macOS / Linux(Gentoo) … 避けられない流れだった
  3. [初期] CI におけるビルド環境として • Jenkins/Gitlab にいろいろな言語のいろんなバージョンと アプリごとのいろいろなバージョンのライブラリをいれて・・・管理大変 • ビルド環境をコンテナで抽象化(CI as

    a Service つかえば・・・) ◦ 開発者が使いたいミドルウェア、言語、バージョンを選択できる ◦ Dockerfile自体の学習コストは低い • TerraformもCIから実行 ◦ docker run -i -t -v $(pwd):/app/ -w /app/ hashicorp/terraform:light init ◦ docker run -i -t -v $(pwd):/app/ -w /app/ hashicorp/terraform:light plan
  4. ECS

  5. 活用の流れをまとめると・・・ 1. 小さく始める ◦ まずは docker run -it centos:latest /bin/bash

    ◦ 開発環境で使い始める 2. デプロイパイプラインを整える ◦ コンテナをデプロイする仕組みはCIに任せる  => チームがスケールする 3. 本番環境で活用する ◦ コンテナモニタリング  => Mackerel便利 ◦ ログ収集  => LogDriverにFluentdを指定してElasticsearchになげたり    タグを忘れずに
  6. コンテナモニタリング • Mackerel => 便利 • Datadog • Prometheus •

    google/cAdvisor ホストとコンテナの両方を監視するなら、普通にホストにエージェントを導入したらよい。
  7. Tips • Automated Task and Image Cleanup は有効にしましょう ◦ コンテナの起動、終了を繰り返しているとコンテナとイメージが溜まっていく

    ◦ Disk Full になるのを防ぐために有効にしましょう ※コンテナで大量のディスク書き込みを行った後は特に http://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/automated_image_clea nup.html ◦ https://aws.amazon.com/premiumsupport/knowledge-center/container-image-cleanup-ecs/ • CloudTrail を有効にしましょう ◦ ECS のコンソールだと古い記録が削除されている場合がある ◦ RunTask の API コールが記録されているので、後から失敗原因を追跡することができる ▪ ECS のコンソールと同じ情報は取れないが、リソースが確保できなかった類については記録 されている
  8. なんとかしたいコンテナあるある • コンテナ原理主義 ◦ 何事にも向き不向きがある ◦ それ Ansible / Chef

    で良くないですか? ◦ コンテナでやりたいことのスコープを明確にする • リソースをオーバープロビジョニングしがち ◦ 例)Webアプリ向けのオートスケーリング ECSクラスタ • リソースが足りない ◦ ギリギリでサーバをプロビジョニングしていると、バッチの起動タイミングがかぶったり、前のバッチ が終了していなかったりでコンテナが起動できないことがある • コンテナホストを自分で管理 ◦ しんどいのでおすすめしない