迅速なソフトウェア配布のためによく利用される手法は、いわゆる継続的インテグレーションとデプロイメント、または略して CI/CD です。
プログレスの Alex Oliveri 技術サービス部長に、CI/CD に関するインタビューを行いました。詳細は、以下のポッドキャストをお聴きください。
過去には、ウォーターフォールプログラミングが最も一般的でしたが、今日では、世界中の IT 部門が新しい手法を模索しています。
CI/CD とは何か?
CI/CD は、ソフトウェア開発ライフサイクルの2つのステップに対応しています。
継続的インテグレーションは、ソフトウェア開発ライフサイクルの中の、自動化と統合に関連する部分です。ビルドと、新しいビルドに追加されたコードベースの各部分が正しく、共有リポジトリに統合されていることを証明するのに必要なコーディングとテストが含まれます。
継続的インテグレーションとの関連で、継続的デプロイメント (continuous deployment) という用語もよく使われます。継続的デプロイメントとは、ソフトウェアがいつでも確実に本番環境にデプロイ可能である状態に保つことです。これには、必要に応じていつでもテスト環境にデプロイできることも含まれます。回帰テストやパフォーマンステストなどのテスト自動化によって、関与する誰でも必要なソフトウェアをいつでも使えるよう、環境を整備しておく必要があります。
関係者には、顧客、経営幹部、株主なども含まれます。昨今のアジャイル要請もあって、作成されるアプリケーションの機能やデザインはいつでも変更され得るので、整合性、機能、デザインの要件が満たされていることを確認できる必要があると同時に、状況に応じて調整もしやすいことが求められます。
ソフトウェアをリリースする前に、エラーを早期に発見して修正する必要があるので、テストの重要性は言を俟ちません。エラーがあれば、エラー箇所以降のコード、少なくともエラー箇所に関連する部分の見直しが必要になり、発見が遅れれば問題はより深刻化します。さらに悪いことに、ソフトウェアがすでにリリースされていると、顧客がバグを見つける可能性もあります。
継続的デリバリーという用語もありますが、これは、ソフトウェアをいつでも本番環境にプッシュできることを指します。継続的デプロイメントと継続的デリバリーは、頭字語 CI/CD においてほぼ同じ意味で使用できます。CD は、継続的デプロイメント、継続的テスト、および継続的デリバリーのフェーズを示します。
CI/CD の有用性
従来の「ソフトウェアを配信するためのウォーターフォールアプローチ」とのプロセスの違いを考えれば、CI/CD の重要性は自明ですが、プログレスの Alex Oliveri 技術サービス部長は、ポッドキャストのインタビューで、CI/CD のセットアップ手法について説明しています。
ウォーターフォールアプローチでは、プログラム作成のプロセスが線形プロセスなので、単一のバグでも本番環境に入り込んでしまえば、重大な問題が発生することがあり得ます。開発部門や IT 部門の貴重な時間が無駄になる可能性があり、その脅威をできる限り抑えることは、プログレスの理念の1つでもあります。多くのソフトウェア会社の多くが、そのためにアジャイル手法を実践しようとしており、Oliveri 技術サービス部長のチームも、それに必要なツールをプログレスのクライアントに提供しています。
これには、ソフトウェア開発フェーズでの問題を最小限に抑えるためのコミュニケーションツールが含まれます。真に有用でスケーラブルであるためには、ソフトウェア開発ライフサイクルのできるだけ多くを自動化する必要があり、それが CI/CD 実現のための必須事項です。自動化は、ソフトウェアのスケジュール通りのリリースに大きな役割を果たし、重大なバグやエラーの防止や検出につながります。
プログレスの CI/CD 方策
プログレスの中核となるコンピテンシーは、クライアントの IT 部門のアップグレードに寄与することです。プログレスは、クライアントに、日常業務を詳細に管理して処理するために必要な、効率とスケーラビリティを備えた仕組み、ソフトウェアやツールを提供します。その中でも重要視しているのが、CI/CD システムの実装です。自動化と組み合わせてアジャイル手法を実装し始めたばかりの企業も、非常に高度な CI/CD 実装を行っている企業もあります。
テクノロジーの世界では、遅れをとることの危険性は計り知れません。例えば、ソフトウェアのリリースが18〜24か月ごとに行われるようなサイクルでは、戦略的な観点からは大きなリスクを伴うことになる可能性があります。ソフトウェア開発において CI/CD アプローチと、アジャイルとを融合させ、時代を先取った、よりスマートでスピード感のある対応ができるようサポートします。
Greg Mooney
Greg is a technologist and data geek with over 10 years in tech. He has worked in a variety of industries as an IT manager and software tester. Greg is an avid writer on everything IT related, from cyber security to troubleshooting.