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

とある会社のビルドデプロイ / A certain company's application...

とある会社のビルドデプロイ / A certain company's application building

hayasshi

April 14, 2020
Tweet

More Decks by hayasshi

Other Decks in Programming

Transcript

  1. 自己紹介 • こんにちは。林です。 ◦ Twitter: @hayasshi_ ◦ GitHub: hayasshi •

    Chatwork株式会社 • 最近は既存のScalaプロダクトのお手入れ 2
  2. とある会社のビルド • ビルド内容はいたって普通です ◦ CIサーバー上でシェルスクリプトを実行してScalaアプリケーションのパッキ ングをおこない、Dockerイメージを作成する ▪ ビルドに対してイメージタグを付与 ◦ Dockerイメージタグに対応したGitタグを作成し、

    どの時点のコミットでビルドしたものかを追跡できるようにしている • 一点だけ工夫している点としては、CIサーバーの実行モデルに合わせた sbtのビルドキャッシュを作成管理している ◦ ~/.ivy2/cache (ivy cache) ◦ ~/.sbt (boot directory) ◦ ~/cache/.coursier (coursier cache, sbt 1.3.X) 23
  3. とある会社のビルドの工夫 • とある会社のCIサーバーでのシェルスクリプトの実行はDockerコンテナ上でおこな われる • sbtビルドキャッシュのファイル・システムのみのDockerイメージを作成してお き、実行するDockerコンテナにマウントすることで、ビルドキャッシュを利用して いる • 問題点も...

    ◦ アプリケーションビルドのたびにキャッシュ更新しているとビルドが遅くなる ◦ 定期的な手動更新の必要性 • 対策(検証検討中) ◦ Docker レイヤーキャッシュ ◦ ビルドのみCI SaaS等に切り出す 24
  4. まとめ • sbt-native-packager ◦ Dockerfileのプラクティスがよくわからないアプリケーション開発者でも正し いDockerイメージをつくってくれる ◦ とある会社ではパッケージングされたアプリケーションを様々な場所で動かせ れるような工夫を行っている ◦

    コンテナベースイメージには jdk8u191 以降を利用する • ビルド ◦ ビルドキャッシュの管理をいかに楽に正しくおこなえるかで 全体のビルド体験がよくなる ◦ ビルドはSaaSに乗れるのであればのるのが良さそう ▪ キャッシュの扱い等がやはり優れている 26