30/Mar/2017 (Thu) - Diary

@ssig33

AWS CodeBuild を使った超分散テストの知見

AWS CodeBuild で大量に Github からソースコードダウンロードすると死亡する

S3 に手順だけ記述された小さなファイルを上げておいて、それをダウンロードするようにしましょう

数百環境同時にプロビジョニングすると CodeBuild がコケがち

まずプロビジョニングはコケるという前提で再開処理をきちんと書く。その上で並列数はせいぜい 100 ぐらいに抑えておく。 100 だとまず失敗しないし、 100 並列でも十分。

Travis とかで Docker ビルドして push みたいなのだとキャッシュきかないのでキツい問題

自前で Jenkins を立てるととりあえず解決するけどだるいからイヤということで考えてみたのだが、

  1. Travis で Docker を使って bundle install とか npm i とかする
    • この結果は Volume とかつかって Travis 側にキャッシュが残るようにする
  2. そのようにして得られたディレクトリ全体を tar.gz で包んで S3 に上げる
  3. CodeBuild では S3 からそれをとってきて展開する

ここでポイントとなるのが Docker には言語その他実行環境だけ入れておいて、しかもそれを Docker Hub などネットワーク的にそこそこ強いところに入れておくということです。

Docker の使用を最小限にすることで、キャッシュ効かないとか Docker pull がそこそこ辛いとかそういう問題をある程度解決する。

ここまでやるメリットがあるかどうかは、よく知らん。

15:11