DevOps とは
DevOps とは顧客に対する価値の継続的デリバリーを実現するために、人、プロセス、および製品を結合させることです。 しかし、それは正確にはどういう意味でしょうか? DevOps とは何か、これに該当しないものは何か、エリート パフォーマーを成功させるものは何かについて Mara が説明するので、チームに参加しましょう。
Mara はチームメイトを短い会議に呼び出しました。 全員姿を見せましたが、誰もそこにいたくはありませんでした。 Mara はドーナツの箱をテーブルの上に置いています。
Mara: こんにちは、お集まりいただきありがとうございます。 バリュー ストリーム マップについてと、私たちのプロセスをより効率的にする方法についてもっと話したいと思いました。
前回の会議で Mara が書いたバリュー ストリーム マップがホワイトボードに残っています。
Mara: このバリュー ストリーム マップには、私たちがエンド ユーザーに価値を提供する際に効率が失われている場所が示されています。 私たちは、他の誰もと同じように進歩することができ、最初に取り組む領域を決定できます。
Andy: これには、問題の箇所が示されていますが、それについて何をすべきかは示されていません。
Mara: そうです。これは、私たちが正しい方向を向くことができるようにする作業です。 私たちの問題にどう対処すべきかについては、DevOps を役立てられます。 私の前の会社では、その展開率は上がり、リード タイムは短縮され、そして運用上のインシデントは、はるかに少なくなりました。 そこにたどり着くまで少し時間がかかりましたが、それは価値のあることでした。 DevOps はその場しのぎの解決法ではありません。
Tim: DevOps エンジニアとして仕事に就いたばかりの人を知っています。 私は、それはより開発者に向いている思います。 あなたのような人にね、Andy。
Mara: DevOps は役職ではありません。
Amita:私たちの活動を支援してくれる取得可能なソフトウェア プログラムまたはテンプレートはありませんか? DevOps のスプレッドシートがあるかもしれません。
Mara: DevOps はソフトウェアの類いではありません。
Andy: 方法論に近いですか。
Mara: いえ、そうでもありません。
Andy、Amita、Tim: それでは何なのですか?!
Mara: 私は、次の定義を使いたいと思います。
DevOps とは、エンド ユーザーに対する価値の継続的デリバリーを可能にするための、人、プロセス、および製品の結合です。
Microsoft のクラウド アドボケイトである Abel Wang が、私たちの疑問のいくつかにすばやく答えてくれるすばらしい動画セットを提供しています。 Abel が DevOps をどのように定義しているのかを見てみましょう。
Abel に聞く
私たちの目標は、顧客に彼らが気に入るゲームを提供することです。 私たちは、共有された一連のプラクティスおよびツールを使用して協力することでそれを達成します。
Amita: これはどういう意味でしょうか? 共有されたプラクティスとは? 共有されたツールとは?
Mara: 次に、プラクティスとは何を意味するかについて紹介します。
- アジャイル計画: 一緒に、チームのメンバーと経営陣全員が見ることができる仕事のバックログを作成します。 最初に取り組む必要があるものがわかるように、項目に優先順位を付けます。 バックログには、ユーザーストーリー、バグ、およびその他の役立つ情報を含めることができます。
- 継続的インテグレーション (CI): コードをビルドしてテストする方法を自動化します。 チーム メンバーがバージョン管理への変更をコミットするたびにそれを実行します。
- 継続的デリバリー (CD): CD とは、ビルドから QA または運用環境までテスト、構成、デプロイを行う方法です。
- モニター: テレメトリを使用してアプリケーションのパフォーマンスや使用状況のパターンに関する情報を取得します。 その情報を使用して、繰り返しながら改善することができます。
Amita: テストの自動化がよくわかりません。 私のテストは手作業であり、Andy からコードを渡されたら行います。 自分のやり方を変える時間がありません。
Tim: 運用環境へのデプロイをあなた方のだれかに任せることはできません。
Andy: こんなことをすれば、経営陣が驚くでしょう。 次のリリースより先のことを考えることは決してないし、すぐにも欲しいと常に考えているのですから。
Mara: 経営陣について何を言いたいのかはわかります。 エリート パフォーミング チームを作るのは何かについて、この配布資料にまとめました。
エリート パフォーミング チームを作るのは何か?
Mara が準備した配布資料を次に示します。 この情報は、DevOps に関する研究レポートや、世界規模で技術者に対して実施されたアンケートに基づいています。
DevOps を使用すると、企業は、顧客の採用と満足度を高める方法を試すことができます。 組織のより優れたパフォーマンスと、多くの場合、収益性とマーケット シェアの向上につながる可能性があります。
"エリート パフォーマー" とロー パフォーマーを比較するため、メトリックを使用して 4 つのカテゴリが作成されます。
エリート パフォーマー:
より頻繁に展開する
実際、1 日に何十回も展開しているチームもあります。
監視、継続的テスト、データベース変更管理、また、ソフトウェア開発プロセスの早い段階でセキュリティを統合するなどのプラクティスを用いることで、エリート パフォーマーは、より頻繁に、より高い予測可能性とセキュリティを備えたデプロイを行うことができます。
コミットから展開までのリード タイムを短縮する
リード タイムは、機能が顧客に提供されるのにかかる時間です。 より小さなバッチで作業し、手動プロセスを自動化し、より頻繁に展開することで、エリート パフォーマーは、数週間から数か月もかかっていたことを数時間から数日で達成することができます。
変更失敗率を減らす
運用環境で失敗したり、他の機能を無効にしたりする新機能によって、ユーザーとの間の機会を逸してしまうことがあります。 パフォーマンスの高いチームが成熟するにつれて、時間の経過と共に変更失敗率が低下します。
インシデントから迅速に回復する
インシデントが発生したとき、エリート パフォーマーはより迅速に回復することができます。 メトリックに基づいて行動することで、エリート パフォーマーは、より迅速に回復できると同時に、より頻繁にデプロイすることもできます。
クラウド インフラストラクチャをどのように実装するかも重要です。 クラウドによってソフトウェア デリバリーのパフォーマンスが向上し、基本的なクラウド特性を採用しているチームがエリート パフォーマーになる可能性が高くなります。
アウトソーシングによってコストが削減され、柔軟な労働力が提供されますが、これを適切な領域で使う必要があります。 パフォーマンスの低いチームは、パフォーマンスの高いチームに比べると、機能全体 (テストや運用など) をアウトソースする傾向が高くなります。
結論
多くの優秀な製品が新機能や改善点という形で競合他社よりも迅速に顧客に価値を提供できる主な理由は、DevOps です。 この短い動画では、DevOps についてもっと学習すべき理由について Abel が説明しています。
Abel に聞く
DevOps に該当しないもの
DevOps とは何であるかを検討する際は、何では "ない" のかについても確実に理解することが重要です。 DevOps に該当しないものは、次のとおりです。
- 手法。
- 特定のソフトウェア。
- 組織の課題に対するクイック修正。
- 単なるチームまたは役職 (ただし、業界ではこれらの役職はかなり一般的です)。