DevOpsとは?

企業のソフトウェア開発において、組込みの世界で導入が進むDevOpsをはじめとする最新のCI/CDプラクティスについてご紹介します。

 

DevOpsとは?

ソフトウェアアプリケーションが大規模かつ複雑になるにつれて、各チームが協働する必要性に迫られています。テスト、開発、デプロイ、運用などの非機能的な流れ作業を実行する目的で、新しいチームが結成されています。これらのチームには、ビジネスアナリスト、プロジェクトマネージャー、システムエンジニア、および以前は別のチームの一員としてこれらの機能を実行していたその他のメンバーによって構成されています。

アプリケーション開発におけるDevOpsのアプローチは、開発チームと運用チームが一体となってソフトウェアをより迅速、かつ頻繁に提供し、お客様のニーズをこれまで以上に満足させることを目的としています。

開発手法の種類

従来の開発手法

従来、ソフトウェア開発者がコードを書いていました。開発者がコードを書き終わると、アプリケーションはQAを経て、IT運用担当者によって本番環境に導入されます。IT運用担当者は、コードが期待通りに動作するようにサーバー、ストレージ、その他の必要なものを手配します。組込みシステムでは、運用担当者は組込みシステムにソフトウェアを搭載し、そのソフトウェアが動作するデバイスの製造を監督していました。

このモデルは、ウォーターフォール方式のソフトウェア開発ではうまく機能していましたが、開発者が組込みシステムのソフトウェアを完成させるまでにある程度長い時間を費やし、それから運用に回すため、時間がかかるという欠点がありました。

従来の開発手法では、競争の激しい今日の組込み市場ではスピードが足りません。

アジャイルな開発手法

アジャイル開発は、開発チームが「スクラム」を組んで作業を行い、より速いスピードでリリースを行うという、ソフトウェア開発に新しいアプローチをもたらしました。この開発手法を取り入れると、アジャイルチームがあまりにも速くコードを作成することができたため、運用チームと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®などの適切なツールを使用することで、ハードウェアの障害を排除し、高品質な組込み製品の迅速な開発を可能にします。

ウインドリバーのアプローチ

ウインドリバーのDevOps環境

多くのデータセンターツールセットには、すでにDevOpsやCI/CDに適した機能が搭載されていますが、組込みの世界では、ほとんどの開発が依然として従来のウォーターフォール方式で行われています。ウインドリバーは、すべての製品リリースとロードマップに堅牢なアジャイル機能を搭載し、最新の開発手法を先駆けて取り入れています。

ウインドリバー製品は、完全なDevOps-CI/CDワークフローを可能にします。お客様の成功を支援するために、独自の開発-テスト-リリースプロセスを開始しました。Wind River Linux、VxWorks®、Wind River Helix™ Virtualization Platformなどの製品は、当社独自のDevOps環境を使用して生産されています。私たちは、組込みシステムのコンテキストにおけるこれらの手法のユニークなニーズについて、多くのことを学びました。プロセスに対する我々の洞察は、図2に描かれているように、効果的なDevOps-CI/CDスタックにつながりました。

図2. ウインドリバー製品は、DevOpsおよびCI/CD機能を直接提供するか、または、ワークフローの各機能領域でさまざまな業界標準のツールセットを
サポートします。

ウインドリバー製品は、完全なDevOps-CI/CDワークフローを可能にします。お客様の成功を支援するために、独自の開発ーテストーリリースプロセスを開始しました。Wind River Linux、VxWorks®、Wind River®Helix™ Virtualization Platformなどの製品は、当社独自のDevOps環境を使用して生産されています。私たちは、組込みシステムのコンテキストにおけるこれらの手法のユニークなニーズについて、多くのことを学びました。プロセスに対する私たちの洞察は、図2に描かれているように、効果的なDevOps-CI/CDスタックにつながりました。

ウインドリバー製品によるDevOps

Wind River LinuxとVxworks

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

ランタイムでは、Wind River LinuxとVxWorksの両方が、組込み分野におけるDevOpsとCI/CDに理想的な品質を具体化しています。これには、コンテナ技術と連携して、組込みシステムのDevOpsによるアプリケーションやマイクロサービスの迅速な開発およびデプロイを可能にする機能も含まれます。

OSからのアプリコードの抽象化

DevOps-CI/CDを機能させる上で、基盤となるOSやハードウェアスタックからアプリケーションコードを抽象化することは、必要不可欠な要素です。DevOps-CI/CDでは、アプリケーションコードの変更が頻繁に行われます。新しいビルドに問題がある場合、すぐに本番環境からローテーションして修正することができます。

OSレイヤは、特に本番環境で変更が発生した場合、それほど寛容ではありません。このため、VxWorksは業界基準の抽象化フレームワークをサポートしています。これは、厳格な業界標準に準拠する必要がある組込みシステムにおいて特に重要です。このサポートがなければ、リアルタイムの組込みシステムにDevOpsを使用することはほぼ不可能でしょう。

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

VxWorksがサポートする業界基準
  • ロボットオペレーティングシステム(ROS2): Sロボットアプリケーションを作成するためのソフトウェアライブラリおよびツール
  • Adaptive AUTomotive Open System ARchitecture (AUTOSAR)(自動車用オープンシステムアーキテクチャ):  自動車の電子制御ユニット(ECU)のためのオープンで標準化されたソフトウェアアーキテクチャを作成する、自動車関連事業者による世界的な開発パートナーシップ
  • The Open Group’s Future Airborne Capability Environment (FACE™) Technical Standard:セーフティクリティカルなコンピューティングオペレーションの堅牢性、相互運用性、移植性、セキュリティの向上を目的とした、アビオニクスのオープンスタンダード
Wind River Helix Vertualization PlatformとWind River Studio Cloud Platfrom

DevOps-CI/CDワークフローを使用する組込みシステム開発者は、コードをHelix PlatformまたはWind River Studio Cloud Platformにデプロイすることができます。Helix Platformは、エッジデバイス上の単一コンピューティングシステムで、複数のOSと混在したクリティカルなアプリケーションを実行することができます。このアプローチは、OSを再インストールすることなく、ハードウェア上の1つのアプリケーションを更新して、抽象化を実現したいと考える組込みシステムメーカーに人気が高まっています。

Wind River Studio Cloud Platformは、実用グレードのKubernetesソリューションです。分散エッジネットワークの大規模なデプロイと管理に関連する運用上の問題を解決し、5Gを実現するために設計されています。Kubernetesのサポートにより、組込みシステムのDevOpsチームは、個々のコンテナ上でCI/CDを実行できるようになります。また、Wind River Studioは仮想化だけでなく、Linux、VxWorksなど、さまざまなOSをサポートしています。

Wind River Simics

フルシステムシミュレータであるWind River Simicsは、ハードウェアアクセスの問題を解決します。その高度なソフトウェアは、様々な種類のハードウェアやオペレーティングシステムの機能を再現することができます。また、周辺機器、ボード、ネットワークなどのモデル化も可能です。この技術により、開発者やQAチームは、自社にない、あるいは存在しないかもしれないハードウェア向けにコードを書くことができます。例えば、Wind River Simicsは、提案された回路やボードの「テープアップ」に基づいて、ハードウェアの機能を再現することができます。

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

これらの機能は、組込みのコラボレーションツールと相まって、開発、QA、運用プロセスの根本的なスピードアップに貢献します。開発チームとQAチームは、物理的な開発ラボの設置に時間を費やす必要がなく、運用チームはハードウェアの導入方法を事前に確認することができます。その結果、すでに多くの異なる潜在的な構成でテストされているため、サポートが容易より高品質なコードが完成します。

テスト、監視ツール

DevOps-CI/CDワークフローがHelix PlatformまたはWind River Studio上でコードを本番環境にリリースする際、ウインドリバーのツールはコードのテストとモニタリングに不可欠な機能を提供します。Wind River WASPは、実運用に入るコード向けの実績あるテストフレームワークです。Wind Shareはソフトウェアの配布を管理し、Wind River Panoramaはリリースプログラムを容易にします。さらに、ウインドリバーは、静的解析のCoverity、セキュリティ脆弱性スキャンのNessus、堅牢性テストのAchillesなど、これらの機能の多くで業界標準のツールをサポートしています。

ウインドリバー
プロフェッショナルサービス

ウインドリバープロフェッショナルサービスは、セキュリティを第一に考えています。セキュリティに関する豊富な専門知識と、業界をリードするソフトウェアやソリューションを組み合わせることで、革新的なアプローチを提供します。まず、包括的なアセスメントを実施し、開発プロセス全体のセキュリティを確保する方法を決定します。

ウインドリバーのプロフェッショナルサービスチームは、アセスメントをもとに、以下を支援します。

  • 設計: コードが書かれる前に、潜在的な問題を判断し、特定
  • 実装: テスト前にソフトウェアの構成と設定を見直し、最適化

ウインドリバーは、数十年にわたる経験を活かして、組込み機器周辺のセキュリティを強化し、サイバーセキュリティの脅威から機器を保護します。

  • テスト:コードを書いた後、現場にデプロイする前に改善策を提案
  • デプロイメント後: デバイスのデプロイ後、プラットフォームの変更を必要としない継続的な改善機会を特定。セキュリティ強化の中には、組織的な対策とそれに対応するコントロールによって完了するものもあります。

DevOpsに関するFAQ

DevOpsとは、ソフトウェア開発(Dev)とIT運用(Ops)を統合し、開発ライフサイクルの短縮と継続的なデリバリーを可能にした、ソフトウェア製品の品質を向上させるためのソフトウェア開発手法です。
DevOpsの目標は、新しいアイデアを最初に考えてから実際に実装するまでの道のりを最適化することです。このモデルは、あらゆる変更を行う際に価値を提供し、その価値をできるかぎりシームレスかつ効果的に提供するという文化が中心となっています。
DevOpsライフサイクルは、継続的なソフトウェア開発、統合、テスト、デプロイメント、およびモニタリングの5つの主要コンポーネントで構成されています。
開発チームと運用チーム間のコラボレーションの強化、ソフトウェア製品の迅速な提供、効率性と生産性の向上、ソフトウェアの品質と信頼性の向上などが挙げられます。
継続的インテグレーションと継続的デリバリー(CI/CD)、Infrastructure as Code(IaC)、モニタリングとロギング、アジャイルとリーン手法の使用などがあります。
DevOpsGit、Jenkins、Docker、Kubernetes、Ansible、Puppet、Chef、Terraformなどがあります。
従来手法からの変化に対する文化的な抵抗、知識やスキルの不足、ツールチェーンの統合、セキュリティとコンプライアンスの問題、複雑さとスケーラビリティの管理などがあります。
DevOps文化は、ソフトウェア開発者と運用担当者の連携を重視します。これには、ソフトウェア開発者が構築しているものについて共通の理解を持ち、開発、運用、およびQAチーム全体でそのソフトウェアに対する責任を共有することが必要です。DevOps文化は、可視化、コミュニケーション、およびコラボレーションを向上させる手順を導入している企業で最も成長します。
シフトレフトの原則は、すべてのテストと予防的なプロセスをライフサイクルの可能な限り早い段階に移し、問題が開発プロセスの後期に頓挫したり、実際のデバイス寿命に影響するのを防ぐことです。これにより、品質が向上し、不具合があれば早期に修正し、開発期間を短縮することができます。
アジャイル開発とDevOpsには強い関係があり、どちらもソフトウェア開発のライフサイクル全体にとって重要ですが、概念的には異なります。DevOpsはソフトウェア開発手法の一つです。ソフトウェアエンジニアリングの開始から終了までのプロセスに焦点を当て、絶え間ない開発とテストに重点を置いています。アジャイル開発は、チームワークの方法論です。コラボレーション、継続的なイテレーション、頻繁な顧客フィードバック、小規模で迅速な製品のリリースというデリバリースタイルに焦点をあてています。
CI/CDとは、継続的インテグレーションと継続的デリバリーのことで、実行中の機能を停止することなく、コードを本番アプリケーションに直接デプロイする開発プラクティスです。
他のチームとの垣根をなくしたい、生産スピードを上げたい、矛盾を減らしたい、コラボレーションを増やしたい、生産性を上げたいと考えているチームは、DevOpsのプラクティスを採用すべきです。
DevOpsは必ずしもソフトウェアエンジニアリングではありません。ソフトウェア開発とIT運用を実行するための一連のプラクティスです。