検索
特集/連載

継続的な改善の基盤となるCI/CDパイプライン活用術CI/CDパイプラインの活用【後編】

CI/CDパイプラインをいかに使うか。チェックインやリリースのタイミングはいつにするか。CI/CDパイプラインにどのような機能を持たせるか。識者の意見を聞いた。

Share
Tweet
LINE
Hatena

 前編(Computer Weekly日本語版 1月22日号掲載)では、CI/CDの全体像とCI/CDパイプラインを紹介した。

 後編では、CI/CDパイプラインの活用法を掘り下げる。

ロールバックの実施

 本誌が話を聞いた専門家は、コードの増加を可能な限り最小限に抑えてCI/CDパイプラインを始めることをアプリケーションチームに推奨する。GitLabで製品管理とCI/CD担当のディレクターを務めるジェイソン・レニー氏は次のように語る。「変更が小さいほど、問題発生時のコードレビュー、テスト、ロールバックが容易になる。その結果、運用環境でのバグや不具合が少なくなる。だがコードレビューを実施しない、十分なテストを行わない、ロールバックする時機を判断するための監視を行わないという状態ではこのようなメリットは得られない」

変更の厳密な管理

 CI/CDパイプラインへの取り込みは、新しいコードがソースコードリポジトリにチェックインされるたびに行われることもあれば、特定のアプリケーションに合わせて毎時間や毎日行われることもある。ベンモシェ氏は次のように話す。「ただし、毎回のイテレーションに行われる変更の数を厳しく管理するには開発者の統制が必要になる。ささいな変更でも重要な機能に影響を与える恐れがある。統合の問題が発生する恐れを減らすには、複数の層で厳密なテストを実施しなければならない。また、単体テスト、静的コードテスト、機能テスト、負荷テスト、耐久テストを高い割合でカバーする必要がある」

 GitLabのレニー氏は次のように述べる。「CI/CDパイプラインの完了にかかる時間が大きな制限因子になる。リリースの頻度をCI/CDパイプラインの時間よりも短くすると、マスター(ソースブランチ)が破損するリスクがある。CI/CDパイプラインで以前の変更が実装されている間に新たな変更が結合されると競合の恐れが生じる。速度を上げると、ステージングでは全てが成功してもマスターでは失敗することになる。Google、Facebook、Uberなどの洗練されたエンジニアリング企業は、これを緩和するために変更をキューに入れて並べる複雑なカスタム機能を構築して、CI/CDパイプライン開始後は変更より前の部分に別のコードを結合できないようにしている」

セキュリティ

 QualysでEMEA担当の最高技術セキュリティ責任者を務めるマルコ・ロッティーニ氏は、迅速にリリースを提供するためCI/CDパイプラインでは自動化を利用すると指摘し、次のように話す。「セキュリティチームはこのプロセスをサポートするためにデータをCI/CDパイプラインに提供して、必要な強化点と潜在的な問題が検出された場所について開発チームに指針を示せる。新しい脆弱(ぜいじゃく)性の検出プロセスを自動化するのも一つの方法だが、セキュリティアラートが大量発生する事態につながる恐れがある」

 変更の数が非常に多いため、プロセス末端のゲートキーパーはITセキュリティだけでは不十分だ。代わりにセキュリティをソフトウェア開発アプローチ全体に埋め込む必要があるとロッティーニ氏は話す。

 「セキュリティを開発に組み込むには、脆弱性追跡ツールをCI/CDパイプラインで使いやすくする必要がある。これらのツールを別個に提供するのではなく、必要なアップデートや推奨事項を開発環境に直接提供すべきだ。これにより、開発者はこの情報を他のバグや機能リクエストと同じように使って修正に取り掛かることができる」

 同様に、ログ管理はCI/CDパイプラインにおけるアプリケーション機能の継続的な改善に重要な役割を果たす。Sumo Logicでテクニカルサービス担当バイスプレジデントを務めるマーク・ピジョン氏は次のように話す。「開発プロセスの各段階でデータを作成する。これを開発、導入、ビジネスチーム用のさらに正確なフィードバックループをサポートするために利用できる」。同氏によると、リリース前のアプリケーションコンポーネントのデータセットを運用環境とつなげることにより、強力な「前後の」データセットが生成される。これは運用環境への移行の一環として、変更がもたらす影響を調べるのに便利だという。「どのような開発でもデータは継続的に生み出される。そしてこのデータは、ソフトウェアプロセス全体でより良い決断を下すために長期的に使用できる」と同氏は話す。

 全ての企業がソフトウェア企業というわけではない。だが、CI/CDはコードの構築とリリースを以前よりも格段に素早く行えるようにする。ITの意思決定者は、小さなコード変更を段階的に行うCI/CDを実行し、顧客からのフィードバックを次のコードリリースに速やかに組み込めるようにしなければならない。CI/CDを使って構築されたアプリケーションが継続的に改良されるよう、CI/CDパイプラインはコーディングツール、テストの全ての側面、導入の分析、導入後の分析に強いつながりが必要だ。

Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る