DevOpsとは?

組み込み分野におけるエンタープライズソフトウェア開発で、ますます採用が進んでいるDevOpsやその他の最新のCI/CDプラクティスについて学びましょう。

 

DevOpsとは?

DevOpsは、ソフトウェア開発(Development)とIT運用(Operations)、さらに品質保証を統合し、組織全体でソフトウェア提供を最適化するためのアプローチです。

ソフトウェアがますます高度化・複雑化する中、開発、テスト、デプロイ、運用といったプロセスを横断した連携が不可欠になっています。そのため、ビジネスアナリスト、プロジェクトマネージャー、システムエンジニアなど、多様な専門家が協力してソフトウェア開発を進める体制が一般的になっています。

DevOpsは、開発チームと運用チームの壁を取り払い、ソフトウェアを迅速かつ継続的に提供することで、顧客価値の向上とビジネスの俊敏性向上を実現します。

開発手法の種類

従来の手法

従来、ソフトウェア開発者はコードを作成し、完成したアプリケーションは品質保証(QA)を経て、IT運用チームによって本番環境へデプロイされていました。IT運用チームは、アプリケーションが期待どおりに動作するよう、サーバー、ストレージ、その他必要なインフラを準備・管理していました。組込みシステムの分野では、「運用(Ops)」とは、ソフトウェアを組込み機器へ導入し、そのソフトウェアが搭載された機器の製造や運用を管理する担当者を指します。

このモデルは、ウォーターフォール型のソフトウェア開発においては効果的に機能していました。しかし、開発者はソフトウェアを運用チームへ引き渡す前に長期間をかけて完成度を高めるため、開発からリリースまでのサイクルが比較的長くなるという課題がありました。

今日の競争力のある組込み市場において、従来の開発手法は単に遅すぎるのです。

アジャイル手法

アジャイル手法は、ソフトウェア開発に新たなアプローチをもたらしました。開発チームは「スクラム」と呼ばれる短い開発サイクルで作業を進め、より短い間隔で継続的にリリースを行うようになりました。その結果、アジャイルチームが非常に速いペースでコードを開発するため、運用(Ops)チームや品質保証(QA)チームも開発プロセスに組み込んだ方が効率的であることが明らかになりました。こうして、開発、運用、品質保証の各チームがDevOpsの考え方のもとで連携して作業するようになりました。

継続的インテグレーション/継続的デリバリー

DevOpsの普及は、新しいコードの統合や配布の方法にも大きな変化をもたらしました。ソフトウェアのリリース頻度が急速に高まったことで、人手だけでは対応が難しくなり、自動化ツールが不可欠となりました。さらに、多くのリリースは既存アプリケーションに対する小規模な更新です。そのため、新しいコードがリリースされるたびに、アプリケーション全体をアンインストールして再インストールするといった方法は現実的ではありません。この課題を解決するため、継続的インテグレーション(CI)と継続的デリバリー(CD)が広く採用されるようになりました。CI/CDツールは、新しいコードを既存の本番環境へ継続的に統合し、サービスを停止することなく更新を適用できます。これは「走行中の車のタイヤを交換するようなもの」と例えられることがあります。しかし、CI/CDによって、それが実際に可能になっています。

DevOpsとCI/CD:個別でありながら相互に連携するツール群によって構成されるワークフロー

DevOpsやCI/CDの考え方を実践するには、技術的には独立していても相互に連携する複数のツール群が必要です。図1は、一般的なDevOpsからクラウドへのCI/CDワークフローを簡略化して示したものです。ワークフローの各段階は、それぞれ特定の種類のツールによって支えられています。

図1:複数の独立したツール群の連携によって実現されるDevOpsおよびCI/CDのワークフロー

DevOpsとCI/CDを成功させるためには、コードがワークフロー全体を移動する過程で、開発、テスト、セキュリティ、運用の各チームがリアルタイムに連携できなければなりません。また、ソフトウェア開発ツールやクラウドプラットフォームも、このワークフローと各種ツールをサポートし、プロセス全体を円滑に機能させる必要があります。なお、ここで示している例は標準的な構成や唯一の正解を示すものではありません。数多く存在するDevOpsおよびCI/CD関連技術の中から、代表的な例を抜粋したものです。

組織には、組込みソフトウェア開発プロセスの各工程を効果的に統合し、より高品質なソフトウェアをより迅速に開発するための仕組みが求められています。

組み込みシステム分野へのDevOpsの広がり

DevOpsは現在、組込みシステム開発の現場でも広く採用されるようになっています。その背景には、メリットだけでなく、業界が抱える課題もあります。メリットとしては、より優れた製品をより短期間で市場へ投入できることが挙げられます。DevOpsを適切に導入すると、従来は順番に進められていた開発、品質保証(QA)、セキュリティ、運用の各工程が部分的に並行して進められるようになります。これは実質的にDevSecOpsの考え方へと発展し、開発サイクルにおける手戻りを減らしながら、全体のスピード向上につながります。

CI/CDの導入によって、市場投入までの期間を短縮し、チーム間のコラボレーションを促進するとともに、より高品質な製品の開発が可能になります。しかしその一方で、多くの企業は、こうした新しい開発手法の導入と定着に課題を抱えています。

企業がDevOpsの導入を進める理由には、人材不足という現実的な問題もあります。優れたソフトウェア開発スキルを持ち、かつ組込みシステムを深く理解しているエンジニアの確保は容易ではありません。特に航空宇宙やオートモーティブなど、業界固有の知識や要件を理解した開発者は不足しています。

さらに、防衛や航空宇宙分野では、開発者にセキュリティクリアランスが求められる場合もあり、人材不足はより深刻になります。このような環境においてDevOpsは重要な役割を果たします。限られた人材リソースでも開発効率を高め、これまで以上に多くのソフトウェアを開発・提供できるようにするからです。

DevOpsを導入する際の課題

文化

組込みシステム企業の中には、DevOpsの導入に強い意欲を持っていても、その移行が容易に進まないケースがあります。その要因の一つが、部門間の連携不足です。単に「今後はDevOpsを導入する」と宣言するだけでは、各チームのプロセスを統合することはできません。

CI/CDを効果的に導入するには、管理プロセスや企業文化そのものの変革が必要です。

DevOpsの導入は、管理手法における大きな変革を伴います。チームメンバーは新しい手法やツールについて学ぶ必要があり、それらを自社の組織や業務プロセスにどのように適用するかを理解しなければなりません。DevOpsやCI/CDは、単なる技術的・運用的な変化ではなく、組織文化そのものを変革する取り組みでもあります。

セキュリティ

セキュリティもDevOps導入の障壁となることがあります。アプリケーションのセキュリティ確保は容易ではなく、開発スピードを高めたからといってリスクが自動的に低減されるわけではありません。むしろ、不適切な運用を行えばリスクが高まる可能性もあります。そのため、組込みソフトウェア開発では、開発プロセス全体を通じてセキュリティを確保することが重要です。

ハードウェアへのアクセス

ハードウェアもまた、DevOps導入を妨げる要因になり得ます。従来の開発では、開発チームは特定のターゲットハードウェアを前提としてソフトウェアを開発していました。たとえば、特定のプロセッサ、ボード、オペレーティングシステムの組み合わせなどがその例です。しかし、開発サイクルが高速化するにつれて、DevOpsチームに必要なハードウェアを十分なスピードで提供することが難しくなります。また、対象となるハードウェアの中には、非常に高価なものや入手が困難なもの、さらにはまだ開発途中で実機が存在しないものもあります。

Wind River Simics® のような適切なツールを活用すれば、こうしたハードウェア上の制約を解消し、高品質な組込み製品の開発をより迅速に進めることができます。

Wind Riverのアプローチ

Wind RiverのDevOps環境

多くのデータセンター向けツールには、すでにDevOpsやCI/CDに対応した機能が組み込まれています。一方、組込み分野では依然として従来型のウォーターフォール開発が広く採用されています。Wind Riverは、すべての製品リリースや製品ロードマップにおいて強力なアジャイル開発機能を提供することで、最新の開発手法への移行をリードしています。

現在、Wind Riverの製品は、DevOpsとCI/CDのワークフロー全体をサポートしています。これをお客様に提供するために、まず当社自身の開発・テスト・リリースプロセスからDevOpsを導入しました。Wind River Linux、VxWorks®、および Wind River Helix™ Virtualization Platform などの製品は、当社独自のDevOps環境を活用して開発されています。その過程で、組込みシステム開発におけるDevOpsやCI/CD特有の要件について多くの知見を蓄積してきました。こうした経験から得られた知見を基に、図2に示すような効果的なDevOps/CI/CDスタックを構築しています。

図2. Wind Riverの製品は、DevOpsおよびCI/CD機能を直接提供するほか、ワークフローの各機能領域において幅広い業界標準ツールとの連携をサポートしています。

現在、Wind Riverの製品は、DevOpsとCI/CDのワークフロー全体をサポートしています。これをお客様に提供するために、まず当社自身の開発・テスト・リリースプロセスからDevOpsを導入しました。Wind River Linux、VxWorks®、および Wind River Helix™ Virtualization Platform などの製品は、当社独自のDevOps環境を活用して開発されています。その過程で、組込みシステム開発におけるDevOpsやCI/CD特有の要件について多くの知見を蓄積してきました。こうした経験から得られた知見を基に、図2に示すような効果的なDevOps/CI/CDスタックを構築しています。

Wind River製品を活用したDevOps

Wind River LinuxとVxWorks

Wind Riverが商用サポートを提供するLinuxオペレーティングシステムと関連する開発・テストツール群により、プロトタイプから量産までを迅速に進める組込み開発が可能になります。業界をリードするリアルタイムオペレーティングシステム(RTOS)であるVxWorksも、同様の機能を提供しています。両製品は、DevOpsワークフローの開発段階で必要となる標準的な機能をサポートしています。これには、ソースコード作成、コード解析、ビルドおよびユニットテスト、リポジトリ管理などが含まれます。また、お客様が独自のツールを利用している場合でも、Wind River LinuxとVxWorksは、Git、Jenkins、Jiveなどのツールとの連携をサポートし、さらなる機能拡張を可能にします。

Wind River Linuxは、Linuxベースのオペレーティングシステム向けアップデートシステムであるOSTreeなどのCI/CDパイプラインツールもサポートしています。これにより、展開済みシステムへの機能更新を容易に行うことができます。OSTreeは、CI/CDの実現に必要なファイルシステム全体のアトミックアップデートを可能にし、いわば「走行中の車のタイヤを交換する」ような更新を実現します。

実行環境においても、Wind River LinuxとVxWorksは、組込み分野でのDevOpsおよびCI/CDに適した特長を備えています。その1つがコンテナ技術への対応です。これにより、組込みシステムにおけるDevOps環境で、アプリケーションやマイクロサービスの迅速な開発と展開を実現できます。

アプリケーションコードのOSからの抽象化

アプリケーションコードを基盤となるオペレーティングシステムやハードウェアスタックから抽象化することは、DevOpsおよびCI/CDを機能させるうえで不可欠な要素です。DevOpsやCI/CDでは、アプリケーションコードが頻繁に変更されます。新しいビルドに問題が見つかった場合でも、本番環境から迅速にロールバックし、修正を行うことが可能です。

一方で、OSレイヤーはそれほど柔軟ではありません。特に本番環境で稼働中のシステムに対して変更を加える場合、その影響は大きくなります。このため、VxWorksは業界標準の抽象化フレームワークをサポートしています。これは、厳格な業界標準への準拠が求められる組込みシステムにおいて特に重要です。このような抽象化機能がなければ、リアルタイム組込みシステムでDevOpsを実践することは極めて困難になります。

DevOpsおよびCI/CDに不可欠なのは、アプリケーションコードを基盤となるOSおよびハードウェアスタックから抽象化できることです。

VxWorksがサポートする主な業界標準:
  • Robot Operating System (ROS2):ロボットアプリケーション開発のためのソフトウェアライブラリおよびツール群。
  • Adaptive AUTomotive Open System ARchitecture (AUTOSAR):自動車向け電子制御ユニット(ECU)のためのオープンかつ標準化されたソフトウェアアーキテクチャを策定する、自動車業界の国際的な開発パートナーシップ。
  • The Open GroupのFuture Airborne Capability Environment (FACE™) 技術標準:安全性が重要な航空電子機器向けのオープンなリアルタイム標準であり、高い堅牢性、相互運用性、移植性、およびセキュリティを実現します。
Wind River Helix Virtualization Platform および Wind River Studio Cloud Platform

DevOps/CI/CDワークフローを採用する組込みシステム開発者は、Helix PlatformまたはWind River Studio Cloud Platform上にアプリケーションを展開できます。Helix Platformは、エッジデバイス上の単一のコンピューティング基盤で、複数のOSや異なるクリティカリティレベルのアプリケーションを同時に実行できるようにします。このアプローチは、OSを再インストールすることなくアプリケーションのみを更新できるという抽象化の利点を活用できることから、組込みシステム開発においてますます注目されています。

Wind River Studio Cloud Platformは、本番環境向けのKubernetesプラットフォームです。5Gネットワークの実現に向けて、大規模な分散エッジネットワークの展開と運用管理に伴う課題を解決することを目的に設計されています。Kubernetesをサポートすることで、組込みシステムのDevOpsチームはコンテナ単位でCI/CDを実行できます。また、Studio Cloud Platformは仮想化にも対応しており、Linux、VxWorksをはじめとする幅広いオペレーティングシステムをサポートしています。

Wind River simics

Wind River Simics®は、ハードウェアへのアクセスという課題を解決するフルシステムシミュレータです。Simicsの高度なソフトウェアは、多種多様なハードウェアやオペレーティングシステムの動作を再現できます。また、さまざまな周辺機器、ボード、ネットワークのモデリングにも対応しています。この技術により、開発者やQAチームは、手元にないハードウェアや、まだ実機が存在しないハードウェア向けの開発を行うことができます。例えばSimicsは、開発中の回路や基板の設計情報(テープアウト前の設計データ)に基づいて、ハードウェアの動作をシミュレーションできます。

Simicsにより、開発チーム、QAチーム、運用チームは、大規模かつ相互接続されたシステム全体をモデル化できます。例えば、特定のソフトウェアが複数のデバイス、アーキテクチャ、オペレーティングシステムの組み合わせ上でどのように動作するかを検証できます。また、一度Simics上でシステムモデルを構築すれば、決定論的なバグの再現をはじめ、さまざまな運用シナリオをシミュレーションすることが可能になります。

こうした機能に加え、組み込みのコラボレーション機能を活用することで、開発、品質保証、運用の各プロセスを大幅に効率化できます。開発チームやQAチームは物理的な開発ラボを構築するための時間を削減でき、運用チームはハードウェア展開時の動作を事前に検証できます。その結果、多様な構成パターンで事前に検証された、より高品質で保守性の高いソフトウェアを実現できます。

テスト・監視ツール

DevOps-CI/CDワークフローにより、HelixプラットフォームまたはStudio上でコードが本番環境にリリースされる際、Wind Riverのツールはコードのテストおよび監視に不可欠な機能を提供します。Wind River WASPは、本番環境に投入されるコードのための実証済のテストフレームワークです。 Wind Shareはソフトウェアデリバリーを運用し、Wind River Panoramaはリリースプログラムを円滑に進めます。さらに、Wind Riverは、静的解析のためのCoverity、セキュリティ脆弱性スキャン用のNessus、堅牢性テスト用のAchillesなど、これらの機能の多くに対応する業界規格ツールをサポートしています。

Wind River Professional Services

Wind River Professional Servicesは、セキュリティを最優先に考えています。豊富なセキュリティ専門知識と業界をリードするソフトウェアおよびソリューションを組み合わせることで、独自のアプローチを提供します。まず包括的な評価を実施し、開発プロセス全体を通じてセキュリティを確保するための方針を策定します。

Professional Servicesvチームは、この評価結果をもとに、以下の点においてお客様をどのように支援できるかを特定します。

  • 設計:コード開発に着手する前に、潜在的な問題を特定します。
  • 実装:テスト前の段階で、ソフトウェアの構成や設定をレビューし、最適化します。

当社のチームは、サイバーセキュリティの脅威から組込みデバイスを保護するためのハードニングにおいて、数十年にわたる豊富な経験を有しています。

  • テスト:コード開発完了後から本番環境への展開前までの間に、改善に向けた推奨事項を提供します。
  • 導入後:デバイス導入後も、プラットフォームの変更を伴わない継続的な改善機会を特定します。セキュリティ強化の一部は、組織的な対策や適切な管理策の導入によって実現できます。

DevOpsに関するFAQ

DevOpsとは、ソフトウェア開発(Dev)とIT運用(Ops)を組み合わせた一連の実践手法であり、開発ライフサイクルの短縮、継続的デリバリの実現、およびソフトウェア製品の品質向上を目的としています。
DevOpsの目標は、新しいアイデアが最初の構想から実際の実装に至るまでのプロセスを最適化することです。このモデルは、いかなる変更を行う際にも価値を提供し、その提供を可能な限りシームレスかつ効率的に行うという文化を中心に据えています。
DevOpsのライフサイクルは、継続的なソフトウェア開発、統合、テスト、デプロイメント、監視という5つの主要な要素で構成されています。
DevOpsの利点には、開発チームと運用チーム間のコラボレーション強化、ソフトウェア製品の迅速な提供、効率性と生産性の向上、そしてソフトウェアの品質と信頼性の向上が挙げられます。
DevOpsの主な実践手法には、継続的インテグレーションおよび継続的デリバリ(CI/CD)、インフラストラクチャ・アズ・コード(IaC)、監視とロギング、そしてアジャイルおよびリーン手法の活用などが挙げられます。
DevOpsで一般的に使用されるツールには、Git、Jenkins、Docker、Kubernetes、Ansible、Puppet、Chef、Terraformなどがあります。
DevOps実装における課題としては、変化に対する組織文化的な抵抗、知識やスキルの不足、ツールチェーンの統合、セキュリティやコンプライアンスの問題、複雑さとスケーラビリティの運用管理などが挙げられます。
DevOpsの文化は、ソフトウェア開発者と運用担当者の間に明確な関係性を築くことを重視しています。これには、ソフトウェア開発者が何を作っているのかについて共通の理解を築き、そのソフトウェアに対する責任を開発、運用、QAの各チームで分担することが含まれます。この文化は、透明性、コミュニケーション、コラボレーションを高める手順を実装している組織において、最も効果的に機能します。
「シフトレフト」の原則は、すべてのテストおよび予防措置をライフサイクルの可能な限り早い段階に移行させるもので、問題が開発プロセスの後期段階で進行を妨げたり、実際のデバイスの稼働に影響を及ぼしたりするのを防ぎます。これにより、品質が向上し、不具合を早期に修正でき、開発期間を短縮できます。
アジャイルとDevOpsの間には強い関連性があり、どちらもソフトウェア開発ライフサイクル全体において不可欠ですが、概念的には異なります。DevOpsはソフトウェア開発のアプローチです。ソフトウェアエンジニアリングのプロセス全体に焦点を当て、継続的な開発とテストを重視します。一方、アジャイルはチームワークの手法です。その焦点は、コラボレーションによるデリバリースタイル、継続的な反復、頻繁な顧客フィードバック、そして小規模かつ迅速な製品のリリースにあります。
CI/CD(継続的インテグレーションおよび継続的デリバリ)とは、稼働中のアプリケーションの機能を停止させることなく、コードを本番環境に直接統合する開発手法のことです。
自チームと他チームとの間の障壁を取り除き、生産を加速し、不整合を減らし、コラボレーションを強化し、生産性を向上させたいチームは、DevOpsの実践を導入すべきです。
DevOpsは必ずしもソフトウェア工学そのものではありませんが、ソフトウェア開発とIT運用を実行するための一連の実践手法です。