クラウドネイティブアプリケーションの要 ~DevOpsとは?~
クラウドネイティブNow
昨今ソフトウェア開発手法の一つである「DevOps(デブオプス)」というキーワードがICTの領域だけでなく、お客様のビジネス領域でも注目されています。本ページでは、DevOpsを検討する前に「DevOpsとは何か?」について関係者が共通の理解を深めることについて助けることを目的として、DevOpsについての一般的な概要を説明します。
DevOpsの概要
DevOpsの背景
DevOpsという用語は、Dev(Development:開発)とOps(Operations:運用)を合わせた造語です。2009年に開催された「Velocity 2009」というイベントにおいて、当時Flickrに所属していたJohn AllspawとPaul Hammondによるプレゼンテーションで用いられたのが最初(注1)と言われています。
発表当時のプレゼンテーション資料のイメージ
-
注1当時のプレゼンテーション資料は以下で閲覧できます。
DevOpsという考え方の背景として、Dev(開発)とOps(運用)の対立構造があげられます。すなわち、開発側の「新しい機能やサービスをできるだけ速くシステムに反映したい」という考えに対し、運用側は「安定した運用を維持したい」という考えを持っていることです。利害の対立構造は開発と運用に限らず、関係する組織や部門の多岐に渡ることもあります。各組織がサイロ化し、部分最適化した状況下では、システムのオーナーである企業はビジネス環境の変化に対する対応が俊敏に取れず、ビジネスの観点から機会損失につながります。DevOpsという考え方は、前述のような組織の様々な問題や課題を明確にし、全体最適化を図るという考え方に起因しています。
DevOpsの目的
DevOpsの目的は、ビジネス価値を迅速かつ継続的に向上させることであり、その目的を実現するためにDevOpsを支える原則(注2)があります。すなわち、
-
STEP1
- リードタイム(注3)を短縮すること
- 最初にムダを無くして開発スタイルを変革し、品質を担保しながらリリースまでのスピードを向上する
-
STEP2
- 素早くコンスタントにフィードバックを得られるようにすること
- 運用から開発への素早く持続的なフィードバックループを確立し、問題を早期に発見し適切に対処できるようにすることで、上流で品質を組み込み、より安全な作業プロセスを作ることができる
-
STEP3
- 継続的に実験して学んでいくこと
- 安全な作業プロセスを継続的に改善することで、小さな失敗を恐れずに実験を繰り返し、継続的に成功・失敗の両面から学習し教訓を組み込み続ける組織へと進化し、ビジネス全体のリリースサイクルを短縮する
この、STEP1からSTEP3を実現するための具体的な手法の例に以下のようなものがあります。
- Infrastructure as Code(IaC)
- 継続的インテグレーション
- 自動テスト
- 継続的デプロイ
- リリース管理
- パフォーマンス監視
- ロードテスト、自動スケーリング
- 可用性監視
- 変更 / 構成管理
- 機能フラグ
- 環境へのプロビジョニングの自動解除
- セルフサービス環境
- 自動回復(ロールバックとロールフォワード)
- 運用環境でのテスト
- フォールト挿入
- 使用状況監視 / ユーザーテレメトリー
-
注2書籍「The DevOps ハンドブック 理論・原則・実践のすべて(ジーン・キム、ジェズ・ハンブル、パトリック・ドボア、ジョン・ウィリス、他)」からの出典です。著者が長年培ったDevOps実践ノウハウから、理論、原則、実践の観点で整理されており、DevOpsについてより詳しく知りたい方へお薦めします。
-
注3顧客より要件を受け取ってから、顧客にサービス(価値)を提供するまでに要する時間です。先述の「10 deploys par days」は、その分かりやすい表現の一例です。
DevOps適用に向けた取り組み
DevOpsは以下のような特長を持っており、適用するには次の取り組みが何より重要です。
- より早くビジネス価値を高める為の「改善スキーム」とも位置づけられる。
- 自動化技術を活用する事により「スピード」と「見える化」を獲得し、段階的な組織の改善活動に繋げる。
組織全体で取り組む
ビジネス価値を向上させるという共通目的のもと、ライフサイクルを最適化するために組織全体でDevOpsに取り組むことが重要です。すなわち「Development」ではシステムに新しい機能を追加する際に運用を意識した開発を行い、「Operations」ではシステムの安定稼働を実現するため開発に参画することで「DevOps」を実現し、より早くビジネス価値を向上させることができるのです。この価値を向上させるDevOpsの構成要素を以下の頭文字を取って「CLAMS」と呼びます。
- Culture(文化)
- Lean(リーン:無駄を省く)
- Automation(自動化)
- Measurement(計測)
- Sharing(共有)
継続的に改善を行う
システムの自動化・見える化(実行環境)といった技術だけでなく、仕事のマインド・やり方の改善(プロセス)をとおして「ありたい姿」に向けて継続的に改善を行うことが重要です。
DevOpsに対する認識の違い
DevOpsは、「概念」「実現手段」「DevOps適用の取り組みそのもの」といった、非常に広範な要素を含んでいます。言い換えると、様々な観点からの「DevOpsとは」という表現が存在しています。そのため一口にDevOpsと言っても、その言葉から想像する世界は人によって大きくバラツキがあります。例えば現在の日本では、以下のように理解されていることがありますが、これらはいずれもDevOpsの実現手段について一部を表現しているに過ぎません。
- 開発と運用が協力しデリバリーを速くすること
- 開発や運用に自動化ツールを導入すること
- 開発手法の1つ・・・など
多くの場合、DevOpsの概念について核心部分のみが様々な形で表現され、あたかもDevOpsの定義のように受け取られることがあります。DevOpsについて検討するためには、関係者の間でその組織におけるDevOpsについての認識を共有し、合意しておくことが大切です。また、DevOpsについて以下のように誤解している場合もあるため、これらについて認識を改めることも必要です。
誤解1:DevOpsとは、ツールを導入することである
DevOpsの成功例の多くはツールを導入しています。しかし確立すべきは、開発リードタイムの短縮、業務を停止させない頻繁なリリースの実現、関係者とのスピーディーかつシームレスな情報共有の実現など、解決・改善すべき課題の手段です。課題や施策が明確でなければ、ツールを導入してもDevOps適用の目標が達成できるわけではありません。
誤解2:DevOpsとは、自動化することである
DevOpsの多くは自動化を必要とします。自動化は、スピードと品質を両立させるための重要な手段です。なぜなら、手作業で実施することには限界があるからです。しかし、自動化とはツールと同様に課題を解決・改善するための手段です。自動化がDevOpsの目的にならないように注意が必要です。
最後に
最後にDevOpsの適用を進めるために重要となるポイントをまとめます。これらのポイントを基にDevOpsへの取り組みを進めてください。
-
現状のビジネス(業務)課題を明らかにし、継続的にカイゼンする
課題を解消するための施策を立て、組織的に取り組みます。様々な自動化ツール、プロセス、プラクティスなどは、この継続的なカイゼン活動の手段です。 -
組織の風土や組織構造も課題として扱う
ビジネス(業務)課題を解消する取り組みは、システムの開発と運用のカイゼンだけでは解消されない要素がたくさんあります。組織の業務フローであったり、制度や承認プロセスであったり、契約であったり、風土や組織構造そのものであったりと様々です。 -
ステークホルダーを巻き込む
取り組む課題ごとにステークホルダーは異なり、開発、運用の他に、ビジネス(業務)部門、品質保証部門、法務部門、購買部門、コンプライアンス部門など多岐に渡ることがあります。
本コンテンツに関するお問い合わせ
お電話でのお問い合わせ
Webでのお問い合わせ
当社はセキュリティ保護の観点からSSL技術を使用しております。