次の方法で共有


DevOps とは

DevOps は、開発 (Dev) と運用 (Ops) を組み合わせて、アプリケーションの計画、開発、配信、運用における人、プロセス、テクノロジを統合します。 DevOps を使用すると、開発、IT 運用、品質エンジニアリング、セキュリティなど、以前はサイロ化されていた役割間の調整とコラボレーションが可能になります。

チームは、DevOps のカルチャ、プラクティス、ツールを採用して、構築するアプリケーションの信頼性を高め、顧客のニーズにより良い対応を行い、ビジネス目標をより迅速に達成します。 DevOps は、より優れた信頼性の高い製品を生産することで、チームが継続的に顧客に価値を提供するのに役立ちます。

DevOps とアプリケーションのライフサイクル

DevOps は、計画開発配信運用の各フェーズを通じて、アプリケーションのライフサイクルに影響を与えます。 各フェーズは他のフェーズに依存しており、フェーズはロール固有ではありません。 DevOps カルチャには、各フェーズのすべてのロールがある程度含まれます。

次の図は、DevOps アプリケーション のライフスタイルのフェーズを示しています。

DevOps アプリケーションのライフサイクルを示す概念図。

DevOps の目標と利点

チームが DevOps のカルチャ、プラクティス、ツールを採用すると、すばらしいことを実現できます。

価値提供までの期間の短縮

効率の向上により、チームのコラボレーション、自動化ツール、継続的な展開が向上します。チームは、製品の開始から発売までの時間を迅速に短縮できます。

市場と競争に適応する

DevOps カルチャでは、チームが顧客優先の焦点を持つことが要求されます。 機敏性、チームのコラボレーション、カスタマー エクスペリエンスへの重点を置くことで、チームは継続的に顧客に価値を提供し、マーケットプレースでの競争力を高めることができます。

システムの安定性と信頼性を維持する

継続的な改善プラクティスを採用することで、チームは展開する製品とサービスの安定性と信頼性を向上させることができます。 これらのプラクティスは、障害とリスクを軽減するのに役立ちます。

平均復旧時間を改善する

平均復旧時間メトリックは、障害または侵害からの復旧にかかる時間を示します。 ソフトウェアの障害、セキュリティ侵害、継続的な改善計画を管理するには、チームがこのメトリックを測定して改善する必要があります。

DevOps カルチャを採用する

DevOps を完全に実装するには、DevOps カルチャを採用する必要があります。 DevOps 文化を育てるには、ユーザーの作業と共同作業の方法を大きな変更が必要です。 組織が DevOps カルチャにコミットすると、高パフォーマンスのチームが進化するための環境が作成されます。 DevOps プラクティスを採用すると、テクノロジを通じてプロセスが自動化および最適化されますが、組織内の DevOps カルチャとそのユーザーに移行することなく、DevOps の利点を最大限に活用することはできません。

次の図は、Microsoft の ライブ サイト カルチャの重要な側面を示しています。

Microsoft のライブ サイト カルチャの図。

DevOps カルチャの主要なコンポーネントを次に示します。

  • コラボレーション、可視性、調整: 正常な DevOps カルチャの特徴は、チーム間のコラボレーションです。 コラボレーションは可視性から始まります。 開発チーム、IT チーム、その他のチームは、DevOps のプロセス、優先順位、懸念事項を互いに共有する必要があります。 一緒に作業を計画することで、ビジネスに関連する目標と成功の尺度に合わせて、より適切な位置付けになります。
  • スコープとアカウンタビリティの変化: チームが一致すると、チームは所有権を取得し、役割の中心となるフェーズだけでなく、他のライフサイクル フェーズにも関与します。 たとえば、開発者は、開発フェーズで確立されたイノベーションと品質だけでなく、運用フェーズにおけるパフォーマンスと安定性の変化にも責任を負います。 同時に、IT オペレーターは、計画と開発フェーズにガバナンス、セキュリティ、コンプライアンスを含める必要があります。
  • リリース サイクルの短縮: DevOps チームは、短いサイクルでソフトウェアをリリースすることでアジャイルを維持します。 リリース サイクルが短いほど、進行状況が増分されるため、計画とリスク管理が容易になり、システムの安定性への影響も軽減されます。 リリース サイクルを短縮することで、組織は進化する顧客のニーズと競争上の圧力に適応して対応することもできます。
  • 継続的な学習: 高パフォーマンスの DevOps チームは、成長の考え方を確立します。 彼らは速く失敗し、彼らのプロセスに学習を組み込みます。 継続的な改善、顧客満足度の向上、イノベーションと市場適応性の促進に努めています。

DevOps プラクティスを実装する

DevOps を実装するには、アプリケーションのライフサイクル全体にわたって DevOps プラクティスに従います (以降のセクションで説明します)。 これらのプラクティスの一部は、特定のフェーズを加速、自動化、改善するのに役立ちます。 他のユーザーは複数のフェーズにまたがり、生産性の向上に役立つシームレスなプロセスをチームが作成するのに役立ちます。

継続的インテグレーションと継続的デリバリー (CI/CD)

継続的インテグレーション (CI) は、コードを自動化、マージ、テストするために開発チームが使用するプラクティスです。 CI は、開発サイクルの早い段階でバグをキャッチするのに役立ちます。これにより、修正コストが低くなります。 自動テストは、品質を確保するために CI プロセスの一部として実行されます。 CI システムは成果物を生成し、それらをリリース プロセスにフィードして、頻繁なデプロイを促進します。

継続的デリバリー (CD) は、コードをビルド、テスト、および 1 つ以上のテストおよび運用環境にデプロイするプロセスです。 複数の環境にデプロイしてテストすると、品質が向上します。 CD システムは、インフラストラクチャやアプリを含むデプロイ可能な成果物を生成します。 自動リリース プロセスでは、これらの成果物を使用して、新しいバージョンと修正プログラムを既存のシステムにリリースします。 アラートを監視および送信するシステムは、CD プロセス全体の可視性を促進するために継続的に実行されます。

バージョン コントロール

バージョン管理は、コードを簡単に確認および回復できるようにリビジョンと変更履歴を追跡するバージョンでコードを管理する方法です。 この方法は通常、Git などのバージョン管理システムを使用して実装されます。これにより、複数の開発者がコードの作成で共同作業を行うことができます。 これらのシステムは、同じファイルで発生するコード変更をマージし、競合を処理し、変更を以前の状態にロールバックする明確なプロセスを提供します。

バージョン管理の使用は、開発チームが連携し、チーム メンバー間でコーディング タスクを分割し、必要に応じて簡単に回復できるようにすべてのコードを格納するのに役立つ、DevOps の基本的なプラクティスです。 バージョン管理は、継続的インテグレーションやコードとしてのインフラストラクチャなどの他のプラクティスでも必要な要素です。

アジャイル ソフトウェア開発

アジャイルは、チームのコラボレーション、顧客とユーザーのフィードバック、短いリリース サイクルを通じて変更するための高い適応性を重視するソフトウェア開発アプローチです。 アジャイルを実践するチームは、顧客に継続的な変更と改善を提供し、フィードバックを収集し、顧客のニーズとニーズに基づいて学習および調整します。 アジャイルは、ウォーターフォールなどの他の従来のフレームワークとは大きく異なります。これには、シーケンシャル フェーズで定義された長いリリース サイクルが含まれます。 かんばんとスクラムは、アジャイルに関連付けられている 2 つの一般的なフレームワークです。

コードとしてのインフラストラクチャ

コードとしてのインフラストラクチャでは、システム リソースとトポロジを記述的に定義します。これにより、チームはコードと同様にそれらのリソースを管理できます。 これらの定義は、バージョン管理システムに格納およびバージョン管理することもできます。ここでも、コードのように、再び確認および元に戻すことができます。

コードとしてのインフラストラクチャの実践は、チームが信頼性の高い反復可能で制御された方法でシステム リソースをデプロイするのに役立ちます。 コードとしてのインフラストラクチャは、デプロイの自動化にも役立ち、特に複雑な大規模な環境の場合は、人的エラーのリスクを軽減します。 環境展開用のこの反復可能で信頼性の高いソリューションにより、チームは運用環境と同じ開発環境とテスト環境を維持できます。 同様に、環境を異なるデータ センターやクラウド プラットフォームに複製すると、よりシンプルで効率的になります。

構成管理

構成管理とは、サーバー、仮想マシン、データベースを含むシステム内のリソースの状態を管理することです。 構成管理ツールを使用すると、チームは制御された体系的な方法で変更をロールアウトできるため、システム構成を変更するリスクを軽減できます。 Teams では、構成管理ツールを使用してシステムの状態を追跡し、構成のずれを回避します。これは、システム リソースの構成が時間の経過と同時に、それに対して定義された目的の状態から逸脱する方法です。

コードとしてのインフラストラクチャと共に、システム定義と構成をテンプレート化して自動化することは簡単で、チームが大規模に複雑な環境を運用するのに役立ちます。

継続的な監視

継続的な監視とは、アプリケーション スタック全体のパフォーマンスと正常性をリアルタイムで完全に可視化することです。 この可視性の範囲は、アプリケーションを実行している基になるインフラストラクチャから、上位レベルのソフトウェア コンポーネントまでです。 可視性は、テレメトリとメタデータの収集と、オペレーターからの注意を必要とする定義済みの条件に対するアラートの設定によって実現されます。 テレメトリは、システムのさまざまな部分から収集されたイベント データとログで構成され、分析および照会できる場所に格納されます。

パフォーマンスの高い DevOps チームは、アクション可能で意味のあるアラートを設定し、豊富なテレメトリを収集して、膨大な量のデータから分析情報を引き出すことができるようにします。 これらの分析情報は、チームがリアルタイムで問題を軽減し、将来の開発サイクルでアプリケーションを改善する方法を確認するのに役立ちます。

計画

計画フェーズでは、DevOps チームは、構築する予定のアプリケーションとシステムの機能を考え、定義し、説明します。 チームは、1 つの製品から複数の製品ポートフォリオまで、低レベルおよび高レベルの粒度でタスクの進捗状況を追跡します。 Teams では、次の DevOps プラクティスを使用して 、機敏性 と可視性を備えた計画を立てることもできます。

会社のソフトウェア チーム全体で DevOps の計画をサポートするために Microsoft が採用したいくつかのレッスンとプラクティスの概要については、「 Microsoft が DevOps を使用して計画する方法」を参照してください。

発達

開発フェーズには、ソフトウェア コードの開発のすべての側面が含まれます。 このフェーズでは、DevOps チームは次のタスクを実行します。

  • 開発環境を選択します
  • コードを記述、テスト、レビュー、統合します。
  • コードを成果物にビルドして、さまざまな環境にデプロイします。
  • バージョン 管理 (通常は Git) を使用して、コードで共同作業を行い、並行して作業します。

品質、安定性、生産性を犠牲にすることなく迅速にイノベーションを行うために、DevOps チームは次の手順を実行します。

DevOps への移行をサポートするために Microsoft が採用した開発プラクティスの概要については、「 Microsoft が DevOps を使用して開発する方法」を参照してください。

届ける

デリバリーは、継続的 デリバリー (CD) を使用して、運用環境にアプリケーションを一貫して確実にデプロイするプロセスです。

配信フェーズでは、DevOps チームは次の手順を実行します。

  • 明確な手動承認ステージを使用してリリース管理プロセスを定義します。
  • 自動ゲートを設定して、お客様への最終リリースまでアプリケーションをステージ間で移動します。
  • 配信プロセスを自動化して、スケーラブルで反復可能で、制御され、 適切にテストされるようにします。

配信には、配信環境の基本インフラストラクチャのデプロイと構成も含まれます。 DevOps チームは、 コードとしてのインフラストラクチャ (IaC)コンテナーマイクロサービス などのテクノロジを使用して、完全に管理されたインフラストラクチャ環境を提供します。

安全なデプロイプラクティス では、問題がカスタマー エクスペリエンスに影響を与える前に特定できます。 これらのプラクティスは、DevOps チームが安心して自信を持ち、心の安らかさを感じながら頻繁にリリースするのに役立ちます。

Microsoft が効率的な配信システムを提供するために進化した主要な DevOps の原則とプロセスについては、「 Microsoft が DevOps を使用してソフトウェアを提供する方法」で説明されています。

オペレーション

運用フェーズでは、ハイブリッド クラウドや Azure などのパブリック クラウドを含む、運用環境でアプリケーションの保守、 監視、トラブルシューティングを行 います。 DevOps チームは、 システムの信頼性、高可用性、 強力なセキュリティダウンタイムゼロを目指しています。

自動配信と安全な展開プラクティスは、チームが問題が発生したときに問題を迅速に特定して軽減するのに役立ちます。 注意を維持するには、豊富なテレメトリ、実用的なアラート、アプリケーションと基になるシステムの完全な可視性が必要です。

Microsoft が複雑なオンライン プラットフォームを運用するために使用するプラクティスについては、「 Microsoft が DevOps を使用して信頼性の高いシステムを運用する方法」で説明されています。

次のステップ

その他のリソース

トレーニングと認定