記事
チュートリアル
インタラクティブ ガイド
DevOps とは何か?
DevOps は一連のプラクティス、ツール、文化哲学で、ソフトウェア開発チームと IT チーム間のプロセスを自動化して統合します。これはチームの自信、チーム間のコミュニケーションとコラボレーション、テクノロジーの自動化に重点を置いています。
DevOps ムーブメントは 2007 年頃、ソフトウェア開発と IT 運用のコミュニティが、コードを記述した開発者がコードをデプロイしてサポートする運用と分かれて作業を行う従来のソフトウェア開発モデルに懸念を示したときから始まりました。開発と運用という言葉を組み合わせた DevOps という用語は、これらの分野を 1 つの連続的なプロセスに統合するプロセスを表しています。
DevOps の仕組み
DevOps チームには、製品ライフサイクル全体にわたって協力して作業する開発者と IT オペレーションが揃っています。この目的は、ソフトウェア導入のスピードと品質の向上です。これは新しい働き方であり、チームとそのチームが所属する組織にとって非常に大きな意味を持ちます。
DevOps モデルでは、開発チームとオペレーション チームが「サイロ化」されることはなくなりました。これらの 2 つのチームが 1 つのチームに統合されて、エンジニアは開発、テストから導入、運用まで、アプリケーションのライフサイクル全体にわたって作業して、幅広い分野横断的なスキルを持つこともあります。
DevOps チームはツールを使用してプロセスを自動化して高速化するため、信頼性が高まります。DevOps ツールチェーンによって、チームは継続的なインテグレーション、継続的なデリバリー、自動化、コラボレーションなど、DevOps の重要な基本要素に対応できます。
DevOps の価値は開発チーム以外のチームにも当てはまることがあります。セキュリティ チームが DevOps アプローチを採用すると、セキュリティは開発プロセスの統合的な部分としてアクティブになります。これは DevSecOps と呼ばれます。
DevOps ライフサイクル
DevOps の継続的な性質のため、担当者は無限のループを利用して DevOps ライフサイクルのフェーズ同士の関連性を示します。連続して流れているように見えても、継続的なコラボレーションや反復による改善の必要性が、ライフサイクル全体を通して、ループによって表されます。
DevOps ライフサイクルは 8 つのフェーズで構成され、(ループの左側では) 開発に必要なプロセス、機能、ツールを、(ループの右側では) 運用に必要なものを表します。各フェーズを通して、チームは連携してコミュニケーションを行い、整合性、ベロシティ、品質を維持します。
発見しよう
ソフトウェアの構築はチーム スポーツです。次のスプリントに備えて、チームはアイデアを探索し、整理し、優先順位をつけるためにワークショップを行う必要があります。アイデアは戦略的な目標に沿うものでなければならず、顧客に影響を与えるものでなければなりません。アジャイルは、DevOps チームを導くのに役立ちます。
計画する
DevOps チームはスピードと品質を向上させるためにアジャイル プラクティスを採用する必要があります。アジャイルとはプロジェクト管理とソフトウェア開発に対する反復的なアプローチで、チームが作業を細かく分割して漸進的な価値を実現する方法です。
ビルド
Git は無料でオープン ソースのバージョン管理システムです。開発のビルド プロセスのための多くの革新的で強力なワークフローやツールにつながる、リポジトリ履歴のブランチ、マージ、書き換えに非常に役立ちます。
テスト
継続的インテグレーション (CI) により、複数の開発者が単一の共有リポジトリに貢献できます。コードの変更がマージされると、統合前に正確性を確認するために自動テストが実行されます。コードのマージとテストは、開発チームがデプロイされたコードの品質と予測可能性を再確認するのに役立つことがよくあります。
デプロイ
継続的デプロイ (CD) により、チームは自動化された方法で本番環境に頻繁に機能をリリースすることができます。また、チームには機能フラグを使用したオプションがあり、新しいコードを一括ではなく、着実かつ系統的にユーザーに提供することができます。このアプローチにより、ソフトウェア開発チームのベロシティ、生産性、持続可能性を向上させます。
運用
顧客に対するエンドツーエンドの IT サービスの提供を管理します。組織のサービスをサポートするすべての IT インフラストラクチャの設計、実装、構成、導入、保守に関連するプラクティスが含まれます。
観察
製品のアップタイム、速度、機能に影響する問題を迅速に特定して解決します。変更、リスクの高いアクション、または障害をチームに自動通知することで、サービスを常に提供できます。
継続的フィードバック
DevOps チームは将来のリリースを改善するために、リリースごとに評価してレポートを生成する必要があります。チームは継続的なフィードバックを収集することで、プロセスを改善して顧客からのフィードバックを組み込み、次のリリースを改善できます。
DevOps ツール
DevOps ツールは DevOps ライフサイクルの主要なフェーズに対応します。コラボレーションを改善してコンテキストの切り替えを減らし、自動化を導入して可観測性と監視を活用することによって、DevOps プラクティスを強化します。
通常、DevOps ツールチェーンはオールインワンまたはオープン ツールチェーンの 2 つのアプローチに従います。オールインワンのツールチェーンでは通常は他のサードパーティ製ツールとは統合されない完全なソリューションを提供しますが、オープン ツールチェーンではさまざまなツールによるカスタマイズが可能です。どちらのアプローチにも賛否両論があります。
オープン DevOps ツールチェーンの一例として、アトラシアンの Open DevOps ソリューションがあります。これは Jira を基盤としており、主要ベンダーやマーケットプレイス アプリと統合されています。
DevOps のメリット
アトラシアンの 2020 年 DevOps 動向調査では、回答者の 99% が「DevOps は組織に好影響を与えた」と答えました。DevOps のメリットには、簡単で迅速なリリース、チームの効率化、セキュリティの向上、製品の品質向上、チームと顧客の満足度向上などが挙げられます。
スピード
DevOps を実践しているチームでは、より高い品質と安定性で頻繁にリリースを行っています。実際、DORA「2019 State of DevOps」のレポートでは、エリート チームはパフォーマンスの低いチームよりも 208 倍の頻度、106 倍の速さでデプロイすることがわかりました。継続的なデリバリーによって、チームは自動化ツールを活用してソフトウェアを構築、テスト、配信できます。
コラボレーションの改善
DevOps の基盤は、開発者とオペレーションのチームの間で責任を分担して作業を組み合わせるコラボレーションの文化です。これによってチームの効率が向上して、作業の引き継ぎや実行環境に合わせたコードの作成に関連する時間を節約できます。
迅速な導入
リリースの頻度とベロシティを上げることで、DevOps チームは製品を迅速に改善します。新機能を迅速にリリースしてバグを修正することで、競争上の優位性が得られます。
品質と信頼性
継続的なインテグレーションや継続的なデリバリーなどのプラクティスによって変更が安全に機能することを確認できるため、ソフトウェア製品の品質が向上します。監視によって、チームはパフォーマンスをリアルタイムで把握できます。
セキュリティ
継続的なインテグレーション、デリバリー、デプロイのパイプラインにセキュリティを統合することによって、DevSecOps は開発プロセスのアクティブで統合された部分となります。アクティブなセキュリティ監査とセキュリティ テストをアジャイル開発と DevOps ワークフローに統合することで、セキュリティが製品に組み込まれます。
DevOps を採用する際の課題
習慣は破りにくいものです。サイロ化された作業方法になじんでいるチームは、DevOps プラクティスを取り入れるためのチーム構造の見直しが困難であったり、抵抗感すら持ったりすることがあります。チームによっては、DevOps の導入には新しいツールで十分だと誤解していることもあります。しかし、DevOps とは人、ツール、文化の組み合わせです。アイデアから開発、エンド ユーザー エクスペリエンスまで、DevOps チームの全員がバリュー ストリーム全体を理解する必要があります。製品ライフサイクル全体を通したコラボレーションを実現するには、サイロを解消する必要があります。
DevOps は個人で行うのではなく、全員で行うものです。
Robert Krohn
アトラシアン、DevOps 担当エンジニアリング部長
従来のインフラストラクチャからコードとしてのインフラストラクチャ (IaC) やマイクロサービスの使用に移行すると、開発とイノベーションをスピードアップできる一方で、運用ワークロードの増加という問題も生じる可能性があります。この負荷を軽減するには、自動化、構成管理、継続的なデリバリーのプラクティスのための強固な基盤を構築することが最善です。
ツールに過度に依存すると、DevOps に不可欠な基盤であるチームと組織構造からチームの注意を逸らす可能性があります。構造が確立したら、次はプロセスとチームに、その後にツールに取り組みましょう。
DevOps の採用方法
DevOps を最初に採用するには、組織が現在抱えているチーム、ツール、またはプロセスを評価して、場合によっては変更または削除するというコミットメントが必要です。つまり、外部のチームに過度に依存しなくても、チームが自社の製品を構築、デプロイ、管理するための自律性を確保するために必要なインフラストラクチャを構築することを意味します。
DevOps 文化
DevOps 文化とは、チームがコラボレーションとコミュニケーションを改善できる新しい働き方を取り入れる文化です。これは、企業がさらに統一したお客様重視の体制に向けた、人、プロセス、ツールの連携です。分野横断的なチームは、製品のライフサイクル全体について説明責任を負います。
継続的学習
DevOps が成功している組織では、実践やある程度のリスクの受け入れを奨励しています。既成概念にとらわれないことが当たり前であり、失敗は学習と改善には当然の一部であると理解されています。
アジャイル
ソフトウェア業界では、アジャイル手法はチームが本質的に柔軟で組織化され、変化に対応できる能力を備えられると非常に評価されています。DevOps は、ソフトウェアを構築して保守する人々のコラボレーションを促進する文化的な変化です。アジャイルと DevOps を併用することで、高い効率性と信頼性を実現できます。
DevOps の実践
継続的インテグレーション
継続的なインテグレーションは、コード変更をソフトウェア プロジェクトに自動で統合するプラクティスです。これによって開発者は、ビルドやテストを実行する中央リポジトリにコード変更を頻繁にマージできます。そのため、DevOps チームはバグに迅速に対処してソフトウェアの品質を向上させ、新しいソフトウェア アップデートの検証とリリースにかかる時間を短縮できます。
継続的デリバリー
継続的なデリバリーは、コードの変更をテスト/本番環境に自動でデプロイすることによって、継続的なインテグレーションに拡張されます。その後、継続的なデリバリー パイプラインに続いて、自動化されたビルド、テスト、デプロイが 1 つのリリースのワークフローとして連携されます。
状況の認識
組織のすべてのメンバーが業務をできるだけ効果的かつ迅速に遂行するためには、必要なデータにアクセスできることが不可欠です。チーム メンバーはシステム障害やテストの失敗によるデプロイメント パイプラインの障害についてアラートを受け取って、本番環境で実行されているアプリケーションの正常性とパフォーマンスに関する最新情報をタイムリーに受け取る必要があります。指標、ログ、トレース、冠詞、アラートはすべて、チームが作業を報告するために必要なフィードバックの重要な情報源です。
自動化
自動化は DevOps の最も重要なプラクティスの 1 つであり、これによってチームは高品質のソフトウェアを開発してデプロイするプロセスをスピードアップできます。自動化ではコード変更をソース コード リポジトリにプッシュするという単純な操作によって、ビルド、テスト、デプロイのプロセスがトリガーされてこれらのステップにかかる時間が大幅に短縮されます。
コードとしてのインフラストラクチャ
組織にオンプレミスのデータ センターがある場合でも完全にクラウド化している場合でも、DevOps の導入を成功させるには、インフラストラクチャを迅速かつ一貫してプロビジョニング、構成、管理できることが重要です。コードとしてのインフラストラクチャ (IaC) は、インフラストラクチャの設定をスクリプト化するだけでなく、インフラストラクチャの定義を実際のコードとして扱う (ソース管理、コード レビュー、テストなどを使用する) ことにまで及んでいます。
マイクロサービス
マイクロサービスはアーキテクチャ手法で、そこではアプリケーションが小規模なサービスのコレクションとして構築されて、互いに独立してデプロイして運用できます。各サービスには独自のプロセスがあり、インターフェイスを介して他のサービスと通信します。このような懸念事項と分類されて独立した機能を分離することによって、継続的なデリバリーや継続的なインテグレーションなどの DevOps プラクティスが可能になります。
監視
計画、開発、統合、テスト、デプロイ、運用まで、DevOps チームは開発プロセス全体を監視します。これによって、チームはいかなるカスタマー エクスペリエンスの低下にも迅速かつ自動で対応できます。さらに重要なことに、チームが開発の初期段階に「シフト レフト」して、異常の発生した本番環境の変更を最小限に抑えられます。
DevOps を開始する
DevOps を開始する最も簡単な方法は、小さなバリュー ストリーム (小規模なサポート アプリケーションやサービスなど) を特定して一部の DevOps プラクティスを試すことです。ソフトウェア開発と同様、組織を新しい働き方へと一気に移行するよりも、少数の関係者のグループで単一のストリームを変換する方がはるかに簡単です。
アトラシアンでは、アトラシアンと他のサードパーティ ツールを使用してエンドツーエンドの DevOps プロセスを実現する、Open DevOps ソリューションを提供しています。Jira を重要要素として、チームはアトラシアン製品を使用するか、チームのお気に入りの製品をオープン ツールチェーンに取り入れられます。Atlassian エコシステムでは、統合で堅牢な配列やアドオンを提供します。これによって、チームはツールチェーンをカスタマイズしてニーズを満たせるようになります。自動化、テスト、セキュリティ、観測可能性、機能フラグ、継続的なデリバリーについては、アトラシアンの DevOps チュートリアルを必ずご確認ください。
DevOps ニュースレター購読
Thank you for signing up