DevOpsの最初のステップとして、CI/CDパイプラインの作成から着手するチームは珍しくない。着手に当たっては、CI/CDの基本的なメリットや課題を理解しておく必要がある。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
CI/CD(継続的インテグレーション/継続的デリバリー)は、DevOpsを採用している組織にとって中心的な役割を果たすものだ。CIは、チームが頻繁にコードを統合し、自動でビルドやテストを行うプロセスを指す。CDは、変更が本番環境に安全にデプロイできることを確認するプロセスを指す。
両者を組み合わせてCI/CDフィードバックループを構成することで、運用環境への継続的なアップグレードが可能になり、円滑なソフトウェアデリバリーを通じて自社のニーズに素早く対応できるようになる。
迅速なソフトウェアデリバリーは、CI/CDアプローチのメリットの一つにすぎない。CI/CDを導入した組織は、変更管理の改善、テストサイクルの短縮、フィードバックループの強化といったメリットも享受できる。ただし、課題も伴う。人材、プロセス、テクノロジーに多くのコストがかかる。
これらのメリットと課題を比較して、CI/CDが組織に適しているかどうかを判断する必要がある。
CI/CDパイプラインは、CI/CDの作業を自動化する一連のツールとプロセスで構成される。
このプロセスは、ソフトウェア開発におけるアジャイルアプローチに適しており、ウオーターフォール型のアプローチとは対極にある。ウオーターフォール型のアプローチの場合、開発の後半で問題が見つかると初期段階に戻って作業をやり直す必要があるため、ロールバックに時間がかかることもある。
CI/CDの開発プロセスを導入している場合、変更を加える必要が生じると、提案される変更に優先順位を付け、その中で最も大きなメリットを得られる変更部分に取り組む。定義上、変更部分はウオーターフォール型アプローチに比べて小さなコンポーネント単位にする。小さな粒度のコード変更を既存のコードに盛り込み、具体性が高い機能テストと統合テストを実施して、新たなコードが後工程に望ましくない影響を与えないようにする。
その後、運用環境にリリースする。このプロセスを継続的デプロイメントと呼ぶ。リリースしたソフトウェアが想定通りに機能しない場合は、そのコード単位を単に前のバージョンに戻すことでロールバックをする。
システム管理者がバグを発見して修正を求めたり、業務部門のユーザーが新たな機能を要求したりすると、その要請がCI/CDパイプラインに加えられ、開発ワークフロー内で必要に応じて優先順位が付けられる。
このようにして、CI/CDパイプラインは自社のニーズやユーザーに常時対応するものとなる。そのため、ウオーターフォール型アプローチに比べて対応が迅速になる。
CI/CDパイプラインは、柔軟性の高い反復的な開発アプローチを土台として重要なメリットを数多く提供する。ここからは、CI/CDプロセスの主なメリットを幾つか見ていく。
CI/CDのアプローチには、以下に示すように対処しなければならない課題もある。
CI/CDでは、バックエンドデータベースやビジネスプロセスなどユーザーの目には見えないものの変更も多いが、関数名の変更、メニューバーでの項目の位置移動、確立されている手順の変更など、ユーザーエクスペリエンス(UX)に影響するものもある。
こうしたUXへの絶え間ない変更はユーザーには受け入れられない可能性がある。そのため、UXに影響を与える変更は、可能な限り早くユーザーに通知する。可能なら、画面上にガイドや説明を表示するなど、適切なサポートが重要になる。
UXに関する変更をヘルプデスクに通知しないCI/CDプロセスが時折見受けられるが、この場合、ヘルプデスクはユーザーからの質問や苦情に悪戦苦闘することになる。
CI/CDプロセス全体にヘルプデスクを関与させ、リリース前にヘルプデスクのスタッフが変更を確認してコメントできるようにする必要もある。
マイクロサービス環境では、サービス間に依存関係が存在することもある。そのため、他のマイクロサービスとの連携やデータに変更の影響が及ぶ可能性がある。異なるマイクロサービス間の依存関係の追跡には構成管理ツールが役立つ。
オーケストレーションツールを活用し、任意の変更が他のストリームに影響を及ぼさないようにすること、開発チームが必要に応じて変更をロールバックできるようにすることも重要となる。
CI/CDで行われる変更は、その性質上、リリース先のプラットフォームに影響を及ぼす。問題点を把握し迅速に対応するには、プラットフォームのリアルタイムモニタリングとレポートが必要になる。変更によって問題が生じたら即座に把握し、問題が他のサービスに波及したり、ユーザーの苦情がヘルプデスクに殺到したりするのを防ぐ必要がある。
事前に綿密なテストを行わないと、CI/CDによる変更がリリースされるまで、その変更によって生じるリソースやパフォーマンスへの影響を開発者やテスト担当者が予測できない可能性がある。リソースに関する予期しない問題が発生するのを防ぐには、ワークロードに依存しない形で準備やプロビジョニングをするために、できる限り多くの作業を自動化する。
そのために、レシピやマニフェストを使用してワークロードを準備、プロビジョニングし、オーケストレーションツールを通じて適切に展開することが求められる。
CI/CDはDevOpsと同様、業務から開発、運用へと向かう単純な一方向のプロセスと見なすことはできない。プロセスの各段階にフィードバックループを設け、次の点を判断しなければならない。
CI/CDは環境への変更をより迅速かつ効果的に進めることで、ITが業務をサポートする方法を変えることができる。ただし、万能薬ではない。チームはCI/CDを慎重に追加して運用する必要がある。そうしないと、新たな混乱が生じてしまう。
もしCI/CDが適していると判断した場合は、次のようなベストプラクティスに従ってCI/CDの取り組みを進める必要がある。
Copyright © ITmedia, Inc. All Rights Reserved.