DevOps(デブオプス)とは

開発チームと運用チームを統合し、ビルド、テストおよびデプロイ作業を自動化して共有することにより、ソフトウェアを迅速に提供します。

DevOps の概要と、重要な理由

DevOps とは、ソフトウェアを迅速に提供する一連のベストプラクティスとツールを意味します。従来の長時間でエラーが発生しやすいデプロイメントを、構造化された反復可能なプロセスに置き換え、ソフトウェアの機能性とパフォーマンスをビルド、テスト、リリース、および監視できます。DevOps の手順はソフトウェアアプリケーションやエンジニアリングシステム、また自動車などの製品の組み込みソフトウェアにも適用でき、優れた迅速性、効率性、信頼性に裏打ちされた価値を顧客に提供できます。

overlaycontent

DevOps の仕組み

DevOps は、より小さな価値単位をより迅速に提供することに焦点を当てた、アジャイルの拡張ともいえるアプローチです。開発チームと運用チームで共有されたプロセスとツールセットにより、ソフトウェアの提供を計画、管理、監視します。また、大規模で頻度の低いリリースの代わりに継続的インテグレーション/継続的デリバリー (CI/CD) パイプラインを採用し、組み込み製品ソフトウェアまでを含めた顧客価値を実現します。組み込みソフトウェア以外のソフトウェアは、無線 (OTA) アップデートでより頻繁にアップデートを行いますが、組み込みソフトウェアの DevOps モデルの場合、個別の間隔でソフトウェアアップデートを提供します。

DevOps のメリット

スピード

自動ソフトウェアアップデートを頻繁に行うことで、より迅速に顧客に価値を提供できます。

自動ソフトウェアアップデートを頻繁に行うことで、より迅速に顧客に価値を提供できます。

コストの削減

大幅な効率化と自動化により、ソフトウェアリリースに関わる総コストを削減します。

大幅な効率化と自動化により、ソフトウェアリリースに関わる総コストを削減します。

品質の向上

自動化された一貫性のあるテストと性能監視により、エンドユーザーエクスペリエンスの質が向上します。

自動化された一貫性のあるテストと性能監視により、エンドユーザーエクスペリエンスの質が向上します。

コラボレーションの強化

共同作業によって顧客価値に対する共通認識を形成し、実現できます。

共同作業によって顧客価値に対する共通認識を形成し、実現できます。

顧客満足度の向上

要求から提供までのサイクルを短縮できるため、長期にわたって競争力を維持できます。

要求から提供までのサイクルを短縮できるため、長期にわたって競争力を維持できます。

製品ライフサイクルの長期化

ソフトウェアアップデートを頻繁に行うため、製品の使用可能期間を延ばします。

ソフトウェアアップデートを頻繁に行うため、製品の使用可能期間を延ばします。

DevOps ライフサイクル

DevOps は継続的な性質を持っているため、DevOps ライフサイクルの各フェーズの関連性を示す際には無限ループを使用します。順番に流れているように見えますが、このループが象徴するのは、ライフサイクル全体における継続的なコラボレーションと改善の繰り返しの必要性です。

DevOps ライフサイクルは 8 つのフェーズで構成されます。各フェーズには、開発(ループの左側)と運用(ループの右側)に必要なプロセス、機能、ツールが示されています。各フェーズを通じて、チームはコラボレーションとコミュニケーションによって連携を保ち、迅速性と品質を維持します。

overlaycontent

DevOps のベストプラクティス

DevOps プロセスは多岐にわたりますが、ほとんどの場合、以下が含まれます。

コラボレーション

DevOps では、開発、運用、テストチーム間の分断が解消されるため、チームを統合できます。また、単に共通の目標を設定して作業することも可能です。

総合的なリリース計画

コードの変更を不具合、要件、テストケースと関連付けます。俯瞰的なリリース計画を通して、問題の特定、ロールバックの実行、顧客の要求の優先順位付けを行えます。また必要に応じてハードウェアや電子機器の納品とも同期できます。

継続的インテグレーション

開発者は、コードの変更を共有リポジトリにマージできます。このリポジトリは定期的あるいは日次で自動的に統合、コンパイル、テストされるため、統合にかかるコストを削減できます。

継続的デリバリー

コードの変更は定期的あるいは日次で回帰テストが実施されて本番環境に配布されるため、顧客価値を迅速に提供できます。

無線 (OTA) アップデート

新しいソフトウェアは無線で配布され、製品にインストールされます。多くの場合、使用中の製品に影響がないよう、アップデートは慎重に管理されます。

モニタリングと分析

DevOps プロセスを追跡、分析、およびレポートし、可視性を強化してエスカレーションを管理します。進捗状況を監視し、プロジェクト全体の DevOps バリューストリームを単一ビューでチームに提供します。

DevOps 向けのツール: Codebeamer

Codebeamer は、顧客価値の提供を促進し、DevOps の導入を支援する、要件管理、リスク管理、テスト管理のためのソリューションです。要件、コード、テストデータを全方位から把握して CI/CD パイプラインを管理し、顧客の要求の優先順位付け、情報に基づくロールバックの決定、監査に対応したトレーサビリティを実現します。GitLab、Jenkins、Mattermost などの開発ツールやテストツールと統合された一元的な DevOps ハブが、断片化されたツールチェーンを置き換えます。また、エンジニアリングシステムと組み込みソフトウェアのリリースを効率化して管理します。

overlaycontent

DevOps に関するよくある質問 (FAQ)

DevOps を導入する際にどのような課題がありますか?

DevOps の導入に関してよくある課題は以下のとおりです。

チームのサイロ化: 各チームがプロセスと目標を共有していない場合、チームによって作業の優先順位が異なる可能性が高くなり、納品の遅延や不具合が発生しやすくなります。そのため、多くの企業では、開発、テスト、運用チームのエンジニアを 1 つの開発運用チーム(DevOps チーム)に統合しています。チームはまた、現在の組織構造を維持したまま、プロセスと目標を共有して作業することもできます。成功に向けた共通の定義のもとにチームが結束するには、単一のダッシュボードを共有し、確認できるようにする必要があります。

自動化の欠如: 頻繁に動作するソフトウェアを提供するには、ビルド-テスト-デプロイサイクル全体の自動化が不可欠です。自動化されていない場合、手動での作業が発生してチームに負荷がかかります。統合されたツールチェーンにより迅速に提供できるようになり、DevOps の品質が向上します。

トレーサビリティの欠如: ライフサイクル全般に渡るトレーサビリティを確保できれば、正確かつ管理された形で DevOps を進められます。顧客の要求への優先的な対応、パフォーマンスの問題を引き起こしている機能のロールバック、顧客や地域ごとに異なる機能の提供などはいずれも、きめ細やかな開発と管理されたリリースサイクルが必要です。このようなリリース管理は、DevOps 作業がほかのライフサイクルのルールと統合されて初めて可能になります。

組み込みソフトウェアにおける DevOps は何が違うのですか?

DevOps は、自動車、携帯電話、医療機器などに使われる組み込みソフトウェアにも適用できますが、その場合はいくつか重要な違いがあります。

提供のタイミング: スマート製品の場合は通常、より詳細に管理されたきめ細かな提供が必要です。たとえば、自動車ソフトウェアのアップデートでは、定期的な自動車整備のタイミングと合わせてバッチ処理を行わなければなりません。提供は通常、影響を最小限に留めて安全性を確保できるようなタイミングで行われます。

安全性とセキュリティ: スマート製品の多くは安全性が重視されるため、規制の監視対象には DevOps 作業も含まれます。このような製品ではトレーサビリティを確保し、監査基準とソフトウェアアップデートの追跡記録に関するセキュリティを満たさなければなりません。

提供方法: 組み込みソフトウェアの提供には、無線 (OTA) アップデート、従来の Web、CD、その他有線を介した方法を利用できます。

異機種混在環境: 通常の DevOps 環境では、チームはコンピューティング環境を高度に管理できます。物理的なハードウェアデバイスを所有していない運用チームとは対照的に、特定のソフトウェアを含めるか排除するかを指定し、ソフトウェアのメンテナンス作業がすべて実施されているかを確認できます。組み込みソフトウェアのアップデートは通常、より多くの仮想構成でいくつもの複雑なテストを行い、アップデートが実際の条件や構成で動作することを確認する必要があります。