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

Scalaプロダクトのビルド高速化

Kurochan
March 10, 2017

 Scalaプロダクトのビルド高速化

CircleCI Meetup Tokyo #2で話したものです

Kurochan

March 10, 2017
Tweet

More Decks by Kurochan

Other Decks in Technology

Transcript

  1. 黒崎 優太 @kuro_m88 • 株式会社サイバーエージェント ◦ AdTech Studio / Dynalyst

    エンジニア • 新卒2年目 • Scala, AWS, LXD 査読に参加しました 今書いています
  2. Scalaのコンパイルと言えば • 大規模プロジェクトだと遅い ◦ Dynalystの例: ▪ 100+ sub projects ▪

    400K+ lines (Scala) ◦ dotty(次世代コンパイラ)に期待 • 先人の知見
  3. AdTech StudioでのCircleCI • CircleCI Enterpriseを利用 ◦ 物理 ◦ 30+ Node

    ◦ 100+ Build Container ◦ Amebaのと合わせると国内最大規模
  4. Dynalystのビルド方法(高速化前) • キャッシュを使ってビルド時間を短く ◦ (sbtの機能により)差分コンパイルされる ◦ ※ すべてのコンテナで全部のプロジェクトをビルド • コンテナをたくさん使ってテストは並列に

    ◦ コンテナごとにテストするプロジェクトを変えて分散 ◦ DBを使うテストは同一ホスト内で並列に走れない ◦ 実際には12コンテナ使ってます • それでも待たされる(20分くらい)ので改善したい
  5. 困ったので調べた 出典: Cache save/restore algorithm - Build Environment - CircleCI

    Community Discussion https://discuss.circleci.com/t/cache-save-restore-algorithm/759
  6. 困ったので調べた 出典: Cache save/restore algorithm - Build Environment - CircleCI

    Community Discussion https://discuss.circleci.com/t/cache-save-restore-algorithm/759
  7. 改善点 • 並列ビルドをシェルスクリプトで書いてる ◦ sbtでいい感じにしたい • コンテナごとにビルド時間が偏るときがある ◦ 現状たまに手で再配置 •

    S3以外の場所にキャッシュを保存する ◦ DC内にストレージあったほうがコスト/速度的に よさそう ◦ コンテナごとにキャッシュを保存してくれると 嬉しいな(要望)