DevOps指向のエンジニアは、IT運用とソフトウェア開発が交差する領域で仕事をしており、ITインフラの保守に欠かせない豊富な知識と、コードを記述して新しいサービスをデプロイする能力を兼ね備えています。DevOps指向のチームは、サービスの構築だけでなく、その保守も行います。DevOpsの手法では、開発者がIT運用チームにコードを渡して任せきりにするのではなく、すべてのチームがアプリケーションとインフラストラクチャに対する説明責任を担う必要があります。
DevOps指向のエンジニアの履歴書を見れば、幅広い知識を持っているだけでなく、1つまたは2つの分野の専門知識を備えていることがわかります。DevOpsチームの主な役割と責任は以下のとおりです。
効率的なDevOps組織の要となるのは、継続的な改善の推進です。DevOpsを基盤とする組織では誰もが、信頼性やカスタマーエクスペリエンスを犠牲にすることなく、新しい機能やサービスを迅速に開発することに全力で取り組む必要があります。
では、DevOpsのいくつかの基本原則、開発者とITチームの関係を改善する方法、そしてDevOpsをビジネス価値の迅速な実現に役立てる方法を詳しく見ていきましょう。
(DevOpsのホワイトペーパー「DevOps基本ガイド」をご覧ください。)
エンジニアリング部門とIT部門がサイロ化していない組織は、優れたアイデアや高い生産性を実現します。DevOpsでは、物事をまったく異なる視点で捉えます。この手法によって、ソフトウェア開発部門とIT運用部門のコラボレーションが実現し、透明性が高まります。その結果、ビジネスチームでは可視性が向上し、最終的には収益の拡大につながります。
また、フィードバックループが強化され、IT部門と開発部門のコミュニケーションが改善されることで、オブザーバビリティを備えたシステムを迅速に構築し、真の顧客価値をもたらすことができます。
DevOpsを「実行」する方法は1つではありません。どのチームでもうまく機能するツールやプロセスは存在しません。DevOpsの核心は、ソフトウェア開発ライフサイクルとインシデント管理プロセスの両方で、チームの仕事のやり方を改善することにあります。しかも、DevOpsはシステムに依存しません。つまり、ITインフラがアマゾン ウェブ サービス(AWS)でも、GCPでも、オンプレミスでも、さらにはバックエンドエンジニアでも、フロントエンドエンジニアでも関係ありません。アプリケーションのデプロイから本番環境のサポートまで、DevOpsはアジャイル手法と実用的なIT原則を組み合わせる役割を果たします。
DevOpsでは、アジャイルとリーンの両方のソフトウェア開発原則から得られた教訓と、主要なITサービス業務や運用業務から得られた教訓を取り入れています。実質的に開発チームをITチームに、ITチームを開発チームにすることで、以下の取り組みが容易になります。
コラボレーションと透明性が強化されるため、DevOpsチームは製品の開発から運用まで、あらゆる役割を果たせるようになります。
ここで、どのチームにも当てはまるDevOpsの中心的な理念を確認しておきましょう。
人、プロセス、テクノロジーの相互作用を実現する方法を常に改善していけば、DevOpsも改善されます。開発プロセスにスクラムとアジャイルを導入しながら、コミュニケーションとワークフローの可視性を継続的に改善することで、DevOpsは成長と変化を続けています。DevOpsという概念が登場して以来、DevOpsを実践するための手法は変化しているのです。
DevOpsの具体的な実践方法は組織によって異なりますが、DevOpsの基本原則は依然として変わりません。ここでは、DevOpsトランスフォーメーションに取り組む組織が留意すべき重要な概念について説明します。
開発者は、オンコールも担当し、ITニーズへの対応が増えることで、本番環境のシステムに接する機会が多くなります。一方、IT運用担当者は、ステージング環境とソフトウェア開発プロセスに接する機会が増えることになります。
それぞれの役割を互いの領域に統合することで、誰もがシステムに接する機会が増えます。そのため、何らかの問題が発生した場合に、その問題を特定してインシデントを解決する能力が向上します。また、本番システム間の連携に関する知識が深まるため、開発者が記述するコードの質が向上し、信頼性の高いサービスをより迅速に提供できるようになります。
コラボレーションはDevOpsの重要な要素です。以下のような点を確認することで、コラボレーションのレベルを定期的に評価することをお勧めします。
ソフトウェア開発とインシデント対応のプロセス全体で効果的なコラボレーションを継続する必要があります。効果的にコミュニケーションできるチームは、最初から優れたアプリケーションとインフラストラクチャを構築できるため、緊急時の迅速なインシデント対応がさらに容易になります。
サービスの構築や保守に対する責任が増えることで、そのサービスの稼働時間と信頼性に対する説明責任が生じます。DevOpsでは、開発者がアプリケーションやインフラストラクチャに緊急事態が発生した場合のオンコールも担当することになります。
構築したサービスに対する説明責任があり、発生した問題を解決する権限を持ったソフトウェア開発者がオンコールを担当し、優れたコードを記述し、信頼性の高いサービスをデプロイするのです。説明責任が増えるにつれて、開発者は製品開発、QA、テストにさらに真剣に取り組むようになるため、プロセスが改善され、ビジネス上の意思決定が向上します。
DevOpsでは、人とプロセスの効率を高めるために、タスクとワークフローの自動化に大きな重点が置かれます。開発ライフサイクルの問題点やボトルネックを見つけ出し、プロセスを自動化する方法を編み出せば、開発者とITチームのプレッシャーが軽減されます。
自動化を適切に導入することで、DevOpsチームは新しい機能やサービスの構築に費やす時間を増やすことができます。自動化すべき対象は、開発プロセスとリリース管理プロセスの中で従業員の時間の解放につながるすべての領域です。これにより、チームは製品を開発して将来のビジネス価値を高める活動に集中できるようになります。
ソフトウェアデリバリーライフサイクルのあらゆる段階で情報共有とコラボレーションの機会が増えることで、透明性の高いワークフローが自然に構築されるようになります。また、チームが本番環境や開発段階で何が起きているのかを迅速に確認し、問題を発生前に認識できるようになります。
透明性を確保することで、IT運用担当者と開発者は、プロジェクトがパイプラインのどの段階にあるのかを把握し、相手のニーズをより深く理解できるようになります。同時にコラボレーションも改善すれば、チームは目の前で起きている状況に迅速に対応できます。
どのような業界や職業でも、DevOpsとはつまるところ、効率的なチームダイナミクスです。信頼性の高いサービスを迅速に構築できるチームを作るには、これまで説明した原則が欠かせません。開発スピードとインシデント管理の両方の指標を用いて、チームの進行状況や効率を監視することで、エンジニアリングプロセスとITプロセスの有効性は継続的に向上します。DevOpsで何よりも重要なのはチームワークであり、オンコールの担当やコードのオーナーシップに関しても、全員がチームの一員として役割を果たす必要があります。
ここまで、DevOpsの一般的な原則の多くを説明しましたので、次にこれらの原則がDevOpsの役割と責任にどう反映されているのかを見ていきます。具体的には、DevOpsの一般的な業務について説明し、そのプロセスがエンジニアリングチームとITチームにどのようなメリットをもたらすのかを考察します。
アプリケーションとインフラストラクチャの計画、テスト、開発は、DevOpsチーム全体で監督します。開発とリリースのパイプラインに対する責任を全員が共有することで、サービスの信頼性が向上します。DevOpsチームのすべてのメンバーが「DevOpsエンジニア」であるわけではありませんが、DevOps指向の企業では、アプリケーションの開発、テスト、リリースに対する説明責任をエンジニアリングとITの組織全体で担います。
DevOpsチームの一員になれば、CI/CDパイプラインを構築する責任と、プロセス、人材、ツールを最適化する責任を担うことになります。DevOps指向のエンジニアは、人材からプロセスに至るまで、常にパイプラインを改善する方法を探ります。
チームは、開発サイクルの中でテストとQAを前倒しすることで、スピードを緩めることなくテストを継続できるようにします。
自動化の導入は、間違いなくDevOpsチームの肩にかかっています。データチームからフロントエンドチームまで、全メンバーがタスクを自動化し、エンジニアリングとITの効率を向上させる責任を担います。日常的なタスクの自動化を続けることで、戦略的な開発やビジネス価値の向上に注力できるようになります。
DevOpsチームは、説明責任とコードのオーナーシップを共有し、オンコール業務とインシデント管理を引き受ける必要があります。本番環境でインシデント対応に費やす時間が長くなるほど、DevOpsチームはシステムについて多くを学ぶことになります。その結果、開発者がアプリケーションやインフラストラクチャにより適したコードを書くようになり、インシデントが減少します。
また、ITチームの開発ライフサイクルに対する影響力が拡大するため、デプロイするサービスの信頼性を事前に高められるようになります。
最後に、DevOpsチームは実用的な監視ソリューションの実装を担当します。組織はデータを収集し、そのデータを使ってどのような対策ができるのかを把握する必要があります。アプリケーションとインフラストラクチャの盲点を明らかにし、サービスを監視する方法を見つけ出すのは、DevOpsチーム(つまり全メンバー)の役割です。
監視は、高度なオブザーバビリティシステムを構築するための小さな一歩に過ぎませんが、信頼性の高いシステムを構築するための重要な一歩です。
DevOpsは幅広い役割と責任を担うことになりますが、各チームメンバーの専門スキルを組み合わせることができます。DevOpsの文化を築けば、チームの基盤となるサービスについて、全員がオーナーシップを共有し、オンコールを担当し、説明責任を果たすようになります。その結果、開発者は、自分たちが構築している本番システムに接する機会が増えるため、システムのパラメーターに適したコードを記述できるようになります。一方、ITチームは、開発ライフサイクル全体を通じて適切に開発者を指揮し、テストを行えるようになるため、リリースの信頼性が高まります。
この記事について誤りがある場合やご提案がございましたら、ssg-blogs@splunk.comまでメールでお知らせください。
この記事は必ずしもSplunkの姿勢、戦略、見解を代弁するものではなく、いただいたご連絡に必ず返信をさせていただくものではございません。
Splunkプラットフォームは、データを行動へとつなげる際に立ちはだかる障壁を取り除いて、オブザーバビリティチーム、IT運用チーム、セキュリティチームの能力を引き出し、組織のセキュリティ、レジリエンス(回復力)、イノベーションを強化します。
Splunkは、2003年に設立され、世界の21の地域で事業を展開し、7,500人以上の従業員が働くグローバル企業です。取得した特許数は1,020を超え、あらゆる環境間でデータを共有できるオープンで拡張性の高いプラットフォームを提供しています。Splunkプラットフォームを使用すれば、組織内のすべてのサービス間通信やビジネスプロセスをエンドツーエンドで可視化し、コンテキストに基づいて状況を把握できます。Splunkなら、強力なデータ基盤の構築が可能です。