The Doppler Quarterly (日本語) 春 2018 | Page 57
チームは、このアプリケーションに欠けていた以下の 3 つが問題であることを確認しました。
1. ビルドと展開を自動化するための標準化された CI/CD のパイプライン
3. より小規模かつ頻繁なリリース
2.
安定した繰り返し可能な展開
ベースイメージの作成
私たちはまず、コンテナー化を進める中でのコード変更の量を最小限に抑えたいと考えまし
た。そうすれば複雑性が低減されるうえ、 VM からコンテナーへのプラットフォーム変更の
前後に回帰テストを行うことが可能になります。そして本番環境のコンテナーでアプリケー
ションを実行した後、コンテナーのメリットを活かしてアプリケーションのリファクタリングと
再設計を行う計画を立てました。
これは「リフト & シフト」のシナリオだったため、オペレーティングシステムとライブラリの定
義は既存のアプリケーションで行い、こうした依存関係をコンテナーに組み込む最善のアプ
ローチを決定することを目標としました。アプリケーションには Linux と Java Development
Kit が必要だったため、 Alpine LinuxとOpenJDK をベースとする、 Docker Hub のオープン
ソースイメージを活用しましたが、状況に応じて、サポートが必要な場合は Docker Store の
認証済みのイメージをはじめとする別のオプションを使用したり、社内全体のポリシーとツー
ルを維持するためにゼロからカスタムイメージを作成したり することも可能です。後者は最も
柔軟性に優れていますが、サポートとメンテナンスのための作業が別途必要になります。
私たちは、オープンソースベースのイメージから継承した Dockerfile を作成し、アプリケー
ションの jar をコンテナーのファイルシステムにコピーした後、コマンドで jar を実行してアプ
リケーションを稼働させました。
2018 年春号 | THE DOPPLER | 55