CI/CD・DevOpsの概要
CI(継続的Integration)、 CD(継続的Delivery / Deploy)とは
ビルド、テスト、環境展開を自動化し、ソフトウェア開発をより正確にかつ効率的に進める手法です。自動化により、ヒューマンオペレーションで発生する手間やミスを防ぐだけでなく、開発環境品質の底上げや問題の早期発見、安定したリリースを実現いたします。


DevOpsとは
開発(Development)と運用(Operations)を数珠つなぎにして、開発担当者と運用担当者が密接に協力する開発手法です。開発と運用の周期を早めて不具合や運用のモニタリング結果を早期に開発に反映し、運用を繰り返すことでソフトウェアの品質、サービスの質を高めることを目指します。

Sky株式会社ではDevOpsへの取り組みを通じ、お客様の開発環境の安定化と効率化を支援します。
DevOps(開発・運用環境)自動車開発を取り巻く環境の変化
トヨタ自動車株式会社が「ソフトウェアファースト」を宣言したほか、2020年6月には国連の自動車基準調和世界フォーラム(WP29)において、自動車のサイバーセキュリティとソフトウェアアップデートに関する国際基準(UN規則)が成立。さらに、フォルクスワーゲン社の「vw.OS」やBMW社の「OS7」を軸としたソフトウェアアップデートなどのOTA(Over The Air)を前提としたサービスの提供が主流になりつつあります。
従来はハードウェアの進化と合わせてソフトウェアの進化を図っていましたが、ハードウェアはそのままで、ソフトウェアが単独で進化し、最新ソフトウェアを提供し続けられる仕組みやプロセスを持つことが競争力につながります。こうした環境変化に伴い、ソフトウェア開発のプロセスも従来主流だったウォーターフォールモデルからアジャイル開発へと移行しており、CI/CDの導入による自動化の推進が急務となっています。
CI/CD環境を効果的に活用するための基本プロセス
CI/CD環境は、ツールによってリリースを自動化することでコストを抑えています。そのためリリース回数が増えれば増えるほど、コスト改善の効果は大きくなっていきます。下図はウォーターフォールモデルとアジャイル開発の違いです。アジャイル開発の考え方を取り入れてリリース回数が増えるプロセスを適用することで、より効果的にCI/CD環境を活用することができます。
ウォーターフォールモデルの特徴と強み・弱み


特徴
- 開発プロセスを軸に組み立てる開発
- 自工程完結型で各プロセスが完了するまでは、次プロセスに進まない
強み
- 小規模開発に強い
- パフォーマンスが出しやすい
- 工程管理がシンプル
弱み
- 仕様変更時の手戻りが大きい
- 汎用性が低くなりやすい
- リカバリ計画が立てにくい
アジャイル開発の特徴と強み・弱み


特徴
- 開発要件を軸に組み立てる開発
- 要件ごとに開発プロセスを実施するため、要件単位で前後の組み換えが可能
強み
- 大規模開発に強い
- 変更・変化が容易
- 部品化による高い汎用性
弱み
- 最終コストが見積もりしにくい
- パフォーマンスが出しにくい
- 工程・構成管理が複雑
より効果的にCI/CD環境を活用するための要件管理
CIを実施する際に保証する範囲を明確にするため、要求分析実施時に要求の実現に必要な機能を明確化します。さらに、各機能に要求を実現するための要件を紐づけて管理することで、各機能の責務の明確化と要求から機能・要件へのトレーサビリティを明確にします。
従来の要求分析
要件抽出後にすべての要件をまとめて基本設計を行います。

CI/CDを前提とした要求分析
各要求を機能に分割して、機能ごとに要件を振り分けてから設計に着手。このとき、別機能のオーナーに要件を振り分ける必要がある場合は、移管というかたちで要件を振り分けます。

例)要求Aを満たすための開発とCI


CI/CD環境例:オンプレミス(自社サーバー)の構成
オープンソースの自動化サーバーである「Jenkins」上で、何をトリガーにビルド・静的解析・テストを行うかを、Jobを組むことで実現します。次の例のようにCI/CD環境は、開発対象や環境に応じて最適なツールを選ぶ必要があります。


CI/CD環境例:クラウド環境での構成
「AWS」のCodeシリーズを中心に、オンプレミス構成と同等のCI/CDを実施した場合の構成例です。Web開発では多岐にわたるツール群を使いこなし、より高度なCI/CD環境を構築することが重要です。ツールやCI/CDの構成は、オンプレミスでの構成以上に開発対象や環境に応じた最適な構成を検討する必要があります。


Testツール例 |
|
---|
CI環境の種類
オンプレミス型CI環境
- 「Jenkins」を代表とした、企業内のクローズドなネットワーク環境で構築するCI環境
- 機密性の高い製品開発や独自のカスタマイズが行いやすい
- CIによるテストに実機が使用できる
クラウド型CI環境
- 「AWS」や「Azure」などのクラウド上でCI環境を構築
- オリジナルのカスタマイズはしにくいが、メンテナンスはクラウド環境で行うため、運用は低コストになる
- CIはWebが前提となる
CI/CD環境例:CANoeを使ったCI環境
「CANoe」と「Jenkins」を連携させ、最新のビルド結果を用いてCAN通信シーケンスのテストを自動で行うCI環境です。次の例のように「Jenkins」と連携可能なツールは、自動テスト環境に組み込むことが可能です。

