ビルドフェーズにおける課題とソリューション
次にビルドフェーズにおける典型的な課題と、Tanzu Application Platformが提供するソリューションについて見ていきましょう。
(1) 非機能要件の侵食
本番環境にセキュリティ製品などを導入した結果、これまで問題なくデプロイできていたアプリケーションに、大量のアラートが出てしまった経験はないでしょうか。しかしアラートだけでは修正点が不明確で、場当たり的に対応せざるをえなくなり、開発工程に混乱をきたしてしまいます。これは、まさに非機能要件がビルドフェーズを侵食している状況です。この状況を放置すれば、開発者の生産性を損なってしまいます。
(2) パイプラインの複雑化
CI/CDツールはとても便利なものですが、アクションを自由に定義できるが故に、あらゆる作業をパイプラインに担わせてしまいがちです。テスト・ビルドだけでなく、コンテナ作成やセキュリティの担保など、様々な工程をパイプラインに含めた結果、パイプラインは複雑化・属人化し、一部の「職人」以外は手出しできないブラックボックスと化してしまいます。
(3) 欠けていく柔軟性
パイプラインによる自動化は、Gitリポジトリへのソースコードのコミットをトリガーにしていますが、それ以外のトリガーで開始できる自動化フローも必要です。コミットへの依存は、先ほどのパイプラインの複雑化と合わせ、柔軟な自動化を妨げることに繋がります。
Tanzu Application Platformは、これらのビルドフェーズの課題に対して、以下のようなソリューションを用意しています。
非機能要件の透過的設定
非機能要件のうち、セキュリティ面では、シフトレフトセキュリティ注のコンセプトに沿って、あらかじめインナーループの開発工程にセキュリティを折り込むことで、開発者の負担を軽減します。Tanzu Application Platformでは、Scan, Sign, Storeの3つの機能でシフトレフトセキュリティを実現しています。
- Scan: Anchore Grypeによるソースコード、コンテナイメージの脆弱性検査
- Sign: Cosignを利用したコンテナへのイメージ署名と、検査を経ない不正デプロイの防止
- Store: スキャン結果のSBOM(Software Bills of Materials)への蓄積による高速脆弱性検査
注シフトレフトセキュリティとは
従来のセキュリティ工程は、アプリケーションのリリース前や運用開始後に行われることが一般的でした。しかし問題発見までのリードタイムや手戻り工数は、開発サイクルの高速化を妨げてしまいます。そこで登場したのが、セキュリティ工程を前倒し(シフトレフト)して、開発工程の初期から実施する、シフトレフトセキュリティというコンセプトです。
またコンテナイメージの作成に伴う膨大な設定ファイル作成の問題は、Build Serviceが解消します。これは、HerokuとVMware(旧Pivotal)が開発したCloudNative Buildpacks※OSSを利用し、ソースコードからイメージを作成する作業を完全自動化にし、品質の高いアセットを作ることを可能にします。開発者が、煩雑なDockerfileを書く必要はなくなります。
柔軟性のある自動化と シンプルなパイプラインへの回帰
柔軟性のある自動化を実現する要となるのが、VMwareが中心となって開発している、Cartographer※OSSです。Cartographerは、ビルド、スキャン、マニフェスト作成といった、アプリケーションのイメージやKubernetesの構成に必要なステップを、ユーザーが自由に定義して自動化できるツールです。ビルドやマニフェスト作成といったステップは、Cartographerにテンプレート化されているので、ユーザーが独自に定義する必要はありません。
また独自のパイプラインが必要な場合は、Kubernetesに特化したCI/CDツールであるTektonを使ったシンプルなパイプラインを作成することも可能です。複雑なデプロイ作業を行わせることが難しい分、パイプラインをシンプルに保ち、本来のパイプラインの役割である、テストとビルドの自動化に集中することができます。