DevOpsとは?

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

 

DevOpsとは?

DevOpsとは、これまで個別だった3つのワークフローおよびIT部門、すなわちソフトウェア開発、IT運用、品質保証を組み合わせたものです。

ソフトウェアアプリケーションがより大規模かつ複雑になるにつれ、チーム間での調整の必要性はますます高まっています。テスト、開発、デプロイメント、運用といった非機能的な業務プロセスを実行する目的で、新たなチームが結成されています。これらのチームには、ビジネスアナリスト、プロジェクトマネージャー、システムエンジニアなど、以前は異なるチームの一員としてこれらの業務を担当していたメンバーが含まれています。

アプリケーション開発におけるDevOpsのアプローチは、開発チームと運用チームを統合し、ソフトウェアをより迅速かつ頻繁に提供することで、顧客のニーズを以前よりも的確に満たすことを目指しています。

開発手法の種類

従来の手法

従来、ソフトウェア開発者はコードを記述していました。開発が完了すると、アプリケーションは品質保証(QA)を経て、IT運用チームによって本番環境にデプロイメントされました。IT運用チームは、コードが期待通りに動作するよう、サーバーやストレージ、その他の必要なリソースを手配していました。組込みシステムにおいて、「運用(ops)」とは、ソフトウェアを組込みシステムに導入し、そのソフトウェアが駆動するデバイスの稼働を監督する人々を指します。

このモデルは、ウォーターフォール型のソフトウェア開発手法にはうまく機能していました。しかし、開発者は組込みシステム用ソフトウェアを運用チームに引き渡すまでに、その完成度を高めるために比較的長い時間を費やすため、開発速度が比較的遅いという欠点がありました。

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

アジャイル手法

アジャイル手法は、開発チームが「スクラム」で作業し、より速いペースでリリースを推進するという、ソフトウェア開発への新しいアプローチをもたらしました。すぐに明らかになったのは、アジャイルチームがコードを非常に迅速に作成しているため、運用(Ops)チームと品質保証(QA)チームを開発プロセスに統合した方が良いということでした。こうして、彼らは皆、「DevOps」という旗印の下で協働し始めました。

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

DevOpsがもたらしたもう一つの結果は、新しいコードそのものの統合と配布の仕組みに関連しています。コードのリリースペースが急速に加速したため、自動化されたソフトウェアでなければ対応できなくなりました。さらに、コードリリースの多くは既存のアプリケーションに対する小さな更新に過ぎませんでした。DevOpsチームから新しいコードがリリースされるたびに、毎日(あるいは数時間おきに)大規模なアンインストールや再インストールの作業を行うことは、あまり理にかなっていませんでした。 この問題を解決するため、コードの継続的インテグレーション(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チームに十分な速さでターゲットハードウェアを提供することが難しくなります。ハードウェアによっては、非常に高価であったり、可用性が限られていたり、あるいはまだ製造されていないものさえあるかもしれません。

Wind River Simics® などの適切なツールを活用することで、ハードウェアによる障壁を取り除き、高品質な組込み製品の開発を加速させることができます。

Wind Riverのアプローチ

Wind RiverのDevOps環境

多くのデータセンター向けツールセットにはすでにDevOpsやCI/CDに対応した機能が備わっていますが、組込み分野では依然として従来型のウォーターフォール方式による開発が主流です。Wind Riverは、すべての製品リリースおよびロードマップにおいて堅牢/強力なアジャイル機能を提供することで、最新の開発を牽引しています。

現在、Wind Riverの製品はDevOps-CI/CDワークフロー全体を可能にしています。これをお客様にとって成功させるため、当社はまず自社の開発・テスト・リリースプロセスから着手しました。現在、Wind River Linux、VxWorks®、Wind River Helix™ Virtualization Platformなどの製品は、当社独自のDevOps環境を使用して開発されています。 当社は、組込みシステムの文脈におけるこれらの方法論特有のニーズについて多くのインサイトを得てきました。この処理に関するインサイトに基づき、図2に示すような効率的なDevOps-CI/CDスタックを構築しました。

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

Wind Riverの製品は、現在、DevOps-CI/CDワークフロー全体を実現しています。これをお客様にとって成功させるため、当社はまず自社内の開発・テスト・リリースプロセスから着手しました。現在、Wind River Linux、VxWorks®、およびWind River Helix Virtualization Platformといった製品は、当社独自のDevOps環境を用いて開発されています。 これにより、組込みシステムの文脈におけるこれらの方法論特有のニーズについて多くのインサイトを得ることができました。この処理に関するインサイトを基に、図2に示すような効率的なDevOps-CI/CDスタックを構築しました。

Wind River製品を活用したDevOps

Wind River Linux および VxWorks

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

Wind River Linuxは、Linux OSベースのオペレーティングシステム向けのアップグレードシステムであるOSTreeなどのCI/CDパイプラインツールもサポートしており、デプロイ済みの機能アップデートを容易にします。これは、CI/CDを実行するために必要な、ファイルシステムツリー全体の「アトミックなアップグレード」、すなわち「走行中の車のタイヤ交換」のような処理を実現します。

実行時において、Wind River LinuxとVxWorksは、組込み分野におけるDevOpsおよびCI/CDに理想的な特性を備えています。これには、コンテナ技術を活用して、組込みシステムのDevOpsを通じてアプリケーションやマイクロサービスの迅速な開発およびデプロイメントを可能にする機能が含まれます。

OSからのアプリケーションコードの概要

アプリケーションコードを基盤となる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 Cloud Platformにコードをデプロイできます。Helix Platformにより、エッジデバイス上の単一のコンピューティングシステムで、複数のOSやクリティカリティが異なるアプリケーションを実行することが可能になります。このアプローチは、抽象化を活用し、OSを再インストールすることなく、1つのハードウェア上で1つのアプリケーションを更新したいと考える組み込みシステムメーカーの間で、ますます人気が高まっています。

Studio Cloud Platformは、本番環境向けのKubernetesソリューションです。これは、分散型エッジネットワークの大規模な展開および管理に関連する運用上の課題を解決することで、5Gの実現を可能にするよう設計されています。Kubernetesのサポートにより、組み込みシステムのDevOpsチームは個々のコンテナに対してCI/CDを実行できるようになります。また、Studioは仮想化に加え、Linux、VxWorksなどを含む幅広いオペレーティングシステムをサポートしています。

Wind River simics

フルシステムシミュレータであるSimicsは、ハードウェアへのアクセスという課題を解決します。その高度なソフトウェアは、多種多様なハードウェアやオペレーティングシステムの機能を再現できます。また、さまざまな周辺機器、ボード、ネットワークのモデリングも可能です。このテクノロジーにより、開発者やQAチームは、手元にない、あるいはまだ存在すらしていないハードウェア向けにコーディングを行うことができます。例えば、Simicsは、提案された回路やボードの「テープアップ」に基づいて、ハードウェア機能を模倣することができます。

Simics により、開発者、QA チーム、システム運用管理者は、相互に接続された大規模なシステムをモデル化できます。例えば、チームは、特定のソフトウェアが、デバイス、アーキテクチャ、オペレーティングシステムの複数の組み合わせ上でどのように動作するかを示すことができます。開発者が Simics でシステムのモデルを作成すれば、ディターミニスティックなバグの再現など、さまざまな運用シナリオをシミュレートすることが可能です。

これらの機能と組み込まれたコラボレーションツールを組み合わせることで、開発、品質保証、運用プロセスを飛躍的に加速させることができます。開発チームや品質保証チームは、物理的な開発ラボのセットアップに時間を費やす必要がなくなり、運用チームはハードウェアのデプロイメントがどのように機能するかを事前に確認できます。その結果、さまざまな潜在的な構成ですでにテスト済みであるため、サポートが容易で、より高品質なコードが得られます。

テスト・監視ツール

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

Wind Riverプロフェショナルサービス

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

当社のプロフェッショナル・サービスチームは、この評価結果をもとに、以下の点においてお客様をどのように支援できるかを特定します。

  • 設計:コードを記述する前に、潜在的な問題を特定・把握します。
  • 実装:テストに先立ち、ソフトウェアの構成や設定を検証・最適化します。

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

  • テスト:コードが記述された後、実環境にデプロイされる前の段階で、改善案を提案します。
  • 導入後:デバイスが導入された後、プラットフォームの変更を必要としない継続的な改善の機会を特定します。セキュリティ強化の一部は、組織的な対策やそれに伴う統制を通じて実施可能です。

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運用を実行するための一連の実践手法です。