2022年8月18日

Continuous Integration

継続的インテグレーションの重要性とそのメリット

継続的インテグレーションは、開発者のエクスペリエンスや開発者の生産性を向上させるなど、多くのメリットを誇ります。詳しくはこちら。

62d0eec99db3dd32fafc7372_02.-Design_Blog-header-4 (1).png

Forrester 社のアナリストである Chris Condo 氏によれば,「金融サービスのようなリスクを嫌う業種であっても,すべての組織がソフトウェアをより速く提供する必要性を感じている」そうです.

 

この言葉は実に的を射ていると思います。大きな絵に論理を加えてみましょう。どの企業も、自分たちがやっていることで一番になろうと努力するものです。そして、より優れた(あるいは最高の)ソフトウェア企業になるためには、CIを実施する必要があります。

 

「でも、なぜ?」と聞かれるかもしれません。そして私はこう答えるでしょう。「信頼できるソフトウェアをより速く提供できるからです。すると、次のような反論が返ってくるかもしれません。「規制市場や高度なコンプライアンスの枠組みを持つ企業は、そう思わないかもしれません。規制された市場や高いコンプライアンスに対応しなければならない企業は、トラブルに巻き込まれる前に慎重に計画を立て、納品するべきだと考えているのです」。そして私は、「また間違っている!」と答えるでしょう。

 

だから、クリス・コンドウは、「金融サービスのようなリスクを嫌う業界の人たちも」という注意書きを付け加えたのだろう。なぜなら、現実の世界とは異なり、ソフトウェアの世界では、スピードはセキュリティと品質を意味し、遅さはビジネスを殺すからです。すべてのソフトウェア会社の最終目標は、開発者が反復可能で検証可能なプロセスを確保し、高速かつ軽量に実行することによって、迅速に行動することです。これにより、新しい変更の統合が負担ではなく、むしろ歓迎される風となることを保証します。モダンCIはそれを担っている。

 

この記事では、なぜCIが重要なのか、そしてなぜCIがソフトウェアを効率的に提供する企業にとって大きな価値をもたらすのかについて掘り下げていきます。しかしその前に、CIが初めての方は、「Continuous Integrationとは何か」ブログをお読みください。このブログでは、継続的インテグレーションの長所と短所についても触れています。

62d0ef38e8be950b9441a148_image-3-1024x321 (1).png

初日:継続的インテグレーションの主なメリットとは?

非常に高いレベルで、CIの利点は、開発者の生産性、短いフィードバックループ、およびCD(現代のソフトウェア開発の聖杯)への最初の確実なステップと簡潔に説明することができます。

 

自動化は、最新のCIツールおよびプロセスが提供する最も直接的なメリットと考えられている。開発者に、ソフトウェアコードが簡単に実行できる、堅実で、再現可能で、検証可能なプロセスを提供することによって、彼らの焦点は、彼らが得意とするコードベースへの付加価値から離れることはないのである。最新のCIツールは、ポリシーをすべてのパイプラインに簡単に拡張し、コンプライアンスとセキュリティを確保することで、これらの利点を提供します。そして、開発者はセルフサービスで、エフェメラルでクラウドネイティブなプラットフォーム上で実行することができ、あらゆるキャパシティ要件をカバーするために弾力的に拡張することができます。基本的に、モダンCIは、信頼性と拡張性の高いビルド自動化プロセスを提供し、開発者の生産性を驚異的に向上させます。モダンCIが導入されると、開発者は定期的にマージを行います。

 

しかし、CIは一方通行のメカニズムではありません。最近のCIは、ビルド時に、統合される新しいコードが安全で、コンプライアンスに適合し、実際に問題を解決しているかどうかを検証するためにテストを実行する。ビルド時にこれを行うことは、品質向上の基本である。実行時のバグフィックス、ネガティブな結果、手動タスクは、本番環境でエラーが発生したときに、常に解決が厳しくなります。 (もしもの時はHarnessでカバーしますので、ご安心ください)。このようなフィードバックの仕組みは、開発者の信頼を得るために非常に重要であり、頻繁にテストを行うことは、すべてのビルドを重要視する唯一の方法です。

 

問題は、通常、テストスイートが管理できなくなったときに発生します。パイプラインはよりもろくなり、テストは不安定になり、テストスイート全体が毎回実行するモンスターとなる。最新のCIツールは、より失敗しやすいテストを最初に実行することで、自動ビルドにおけるテストを効率的なプロセスにすることができる。これは開発者に即時のフィードバックを提供し、障害切り分けや、最終的には手動テストへのフォールバックに関わるステップを減らすことができる。さらに、CIパイプラインは効率的にテストを行うべきである。すなわち、変更されたテストのみを実行し、変更されたコードに対してのみテストを実行する。一言で言えば、最新のCIツールはテストスイートをインテリジェントに実行する。

 

継続的インテグレーションと継続的デリバリーは密接に関係しているというのが、最新のCIツールを使ってすぐに実感できることだ。自動的にビルドされ、自動的にデリバリーされるソフトウェアは、より優れたソフトウェアである。自動テストを含むビルドステージは、開発者だけでなく、プロダクトマネージャやデザイナーなど、ソフトウェアリリースプロセスに深く関わるすべての人に利益をもたらす、すべてのソフトウェアプロジェクトの基本的な部分となるのです。継続的デリバリーは、継続的インテグレーションによってよりよく実現されます。

2日目:デベロッパーエクスペリエンスギャップを埋めるために

より広いレベルでは、最新のCIは会社全体に予期せぬ利益をもたらす。私は、変化とソフトウェア開発のベストプラクティス採用の原動力としての、DevOpsにおけるCIの性質について話しているのです。CIがハードルでなくテコになれば、開発者は自信を持ってより速く、より頻繁に、高品質のコードを提供できるようになります。また、DevOpsエンジニアにとっても、開発プロセスのメンテナンスではなく、他の分野に集中できるメリットがあります。  

 

しかし、CIユーザーとして最初に「ハッ」としたのは、最新のCIが持つ圧倒的なアウトプットでした。開発プロセス、少なくともビルドプロセスに含まれる部分は、電光石火の速さである。コードの変更から自動テストまで、最新のCIツールは開発チームに新たなアウトプットのレベルを提供する力を与えてくれる。CIを利用するエンドユーザーである開発者が最初に驚くのは、その能力である。時間が経つにつれて、継続的インテグレーションの利点はますます明白になっていきます。

 

開発者は、コードの形で価値をカプセル化します。開発者は、自分たちのコードが効果を発揮していることを確認する必要があります。開発した機能を使うエンドユーザーが、その価値を認識し、簡単に使えることを知る必要があります。クリティカルな欠陥もノンクリティカルな欠陥もないこと、コードの品質が高いこと、そして迅速なフィードバックが提供されることが必要です。これは、CIがパフォーマンスだけでなく、ソフトウェアデリバリプラットフォームの一部である場合にのみ実現されます。継続的なフィードバックというプロセス全体が開発者の信頼を築き、そのポジティブな開発者体験が、あらゆる企業のソフトウェア開発実践における大きな原動力となるのです。

62d0ef386e8bed4b71104ba2_image-2-1024x321 (1).png

開発者が、自分たちのコード変更が必要なところにインパクトを与えているという確信を持てば、継続的デリバリーは実現可能です。コード変更のサイズは小さくなり、統合の回数も増える。結局のところ、最新のCIは弾力的なインフラストラクチャ上で動作し、自動テストを実行する効率的な(つまり漸進的な)方法を持っています。実際、定期的に統合することで、CIツールの中でも最先端のものがコードカバレッジ分析やテストのフレーク性のインテリジェントな分析を行うようになり、これら(およびそれ以上の)テストカバレッジメトリクスが強調され、開発者は自信を持って左遷することができるようになるのだ。

また、DevOps、プラットフォームエンジニア、ビルドツールチェーンマネージャなどにとっても、継続的インテグレーションには多くの利点がある。彼らはすぐに、CIをセットアップして稼働させるために必要なメンテナンスがいかに少ないかを理解する。メンテナンスにかかる労力のほとんど、いや、すべてではないにせよ、コンプライアンスや価値あるベストプラクティスをCIのすべてのパイプラインとステージに拡張するなど、より価値のある活動に専念することができる。

結論 一生使える

CIの2日目のメリットを超えて、最も成熟したCI実行者が注目するのは、CIの効率性とハイブリッド展開モデルである。CIが定着すると、多くの企業はそのプロセスを可能な限り効率化することを選択する。これは通常、より効率的なテスト方法を理解するためにプロセス全体にインテリジェンスを追加し、弾力的でスケーラブルなプラットフォームでCIファームを実行できるようにすることを意味する。

ハイブリッドモデルでは、成熟したCIユーザはメンテナンスの負担をすべて取り除き、できるだけ多くのターゲットプラットフォームでビルドを提供できるようになる(マネージドサービスでは、これは非常に高価になりかねない)。同時に、サーバーがクラウドからすべてを実行することで、チーム間の透明性が向上し、メンテナンスとスケールに専念できる人数が少なくてすむ。

 

結論として、CIは開発者にとってすぐに役立つものであり、徐々に他の重要なステークホルダーにも影響を与え、成熟したCI実行者がCDを採用するのは当然のことであり、その結果多くのCI/CDビジネスベネフィットをもたらす。

 

CIツールについてもっと詳しく知りたいですか?Harness CIについてもっと知りたい、またはベストCIツールをチェックして、競合との比較検討をしてみたい。


この記事はHarness社のウェブサイトで公開されているものをDigital Stacksが日本語に訳したものです。無断複製を禁じます。原文はこちらです。

Harnessに関するお問い合わせはお気軽にお寄せください。

お問い合わせ