KNOWLEDGE - COLUMN ナレッジ - コラム

【エバンジェリスト・ボイス】開発と運用を結ぶ開発手法DevOps

先端技術部
エバンジェリスト 佐藤 久 


●テーマ選定にいたる経緯


お久しぶりです。先端技術部の佐藤久です。寒さが厳しくなりました今日この頃、皆様いかがお過ごしでしょうか。私は運動不足解消のため、休憩時間に筋トレすることを習慣づけています。皆様も健康管理にお気を付けください。  

今般、クラウド基盤のシステム開発プロジェクトを担当することになりました。これまでは開発のみでしたが、開発と運用を経験できる予定です。この機会に開発手法「DevOps」について内容を整理して導入を検討したいと考えました。

  ●DevOpsとは

 「DevOps」は、「 ソフトウェア開発手法の一つで、開発 (Development) と運用 (Operations) を組み合わせた造語。開発担当者と運用担当者が連携して協力する開発手法」 を指します。ソフトウェアを迅速にビルドおよびテストする「ツール」と「文化」によって、確実なリリースをより迅速かつ高い頻度で可能とする組織体勢の構築が目標です。ポイントとしては、開発手法に留まらず「組織体制の構築」となることです。開発から運用までワンストップを提唱する弊社としては是非とも醸成させておきたいです。

 言葉としては、2009年開催の「Velocity 2009」というイベントにおいて、当時Flickrに所属していたエンジニアJohn Allspaw氏とPaul Hammond氏によるプレゼンテーション「10+ Deploys Per Day: Dev and Ops Cooperation at Flickr(1日10回以上のデプロイ: Flickrにおける開発と運用の協力)」で初めて紹介されました。同プレゼンテーションにはDevOps実現への「ツール」と「文化」が提示されています。後ほど説明します。

●DevOpsのイメージ

DevOpsを表すイメージとして、以下図1、図2があります。

DevOps_1_448x426

                 【図1:出展*1】



DevOps_2_574x325

                 【図2:出展*1】

図1は、開発と運用、それに品質保証が交わる部分をDevOpsと表現います。図2はサイクルを表しています。PLAN計画→CREATE開発→VERIFY確認テスト→PACKAGEパッケージ→RELEASEリリース→CONFIGURE設定→MONITOR監視→PLANの繰り返しを表現しています。

開発担当者は顧客要望に合わせてシステムを迅速にリリースしたい。運用担当者はシステムを安定稼働させたい、すなわちリスクのあるリリースは行ないたくない。お互い顧客満足(より良いビジネス価値の提供)にベクトルは向いているのですが、役割/思考/手段が違うため、対立する関係になる場合があります。以下図3のようにツールと文化を通して、組織として対立を無くし、顧客満足への最大効果を目指すのがDevOpsです。(現場では実際に喧嘩しているわけではございません)


DevOps_3_614x282

               【図3】DevOps前後

 

●DevOpsを実現する「ツール」

「Velocity 2009」のプレゼンテーションで提案されたツールは以下の6つとなります。システム化による自動化や共有を行なうことでリリースの品質や速度を確保するようにします。


(1)Automated infrastructure(インフラ構築の自動化)

   Dockerなどのツールでインフラの構築を自動化する。

(2)Shared version control(バージョン管理の共有)
   GitやSVNなどのバージョン管理システムを開発と運用で共有する。

(3)One step build and deploy(ワンステップビルド&デプロイ)
   ツールやサービスを用いて、ビルドやデプロイを自動化する。

(4)Feature flags(機能フラグ)
   システム内の機能の有効/無効をフラグで管理する。

(5)Shared metrics(メトリクスの共有)
   取得した様々なメトリクス(計測値)の結果を共有する。

(6)IRC and IM robots(IRC(チャット)とIM(メッセージ)ロボット)
   チャットボットなどで自動的にログ、アラート内容を投稿する仕組みで情報共有する。

 
●DevOpsを実現する「文化」

「Velocity 2009」のプレゼンテーションで提案された文化は以下の4つです。これまでの考え方に変化を促す内容となっています。前述したツールは手段として重要ですが、本質はこちらにあると考えました。組織の文化を変えることで、開発に限らず様々な良い効果を出しそうです。

(1)Respect(尊敬)
   役割は違うが、相手のことを心から思いやり、互いの能力や功績を評価する。

(2)Trust(信頼)
   自分以外の皆はすべて優秀と認めて信頼し、自分の仕事も任せられるようにする。一番避けるべきは、この仕事は自分にしかできないと抱え込むこと。

(3)Healthy attitude about failure(失敗に対する健全な態度)
   挑戦には時に失敗はすることもある。ミスだと責めない健全な態度が必要である。

(4)Avoiding Blame(非難を避ける)
   問題が発生時に相手を非難するのではなく、同じ問題発生をどう防ぐのか生産的な議論を行ない、ともに解決策を考える。

 
●クラウド化はDevOpsを導入しやすくなるか

  DevOpsはオンプレミス/クラウド関係なく適用できる手法ですが、クラウドとの親和性は高いと言われています。AWSやAzureなど、インフラ自体がマネージドされたサービスとなっているため、運用のスマート化が進み開発との距離が近づきます。また、各クラウド、各ベンダーでDevOps用のサービスも提供されており、導入しやすくなってきていると考えます。さらに進むと開発と運用の垣根がなくなり、DevOpsが当然となる可能性もあると考えます。

  ※外部サイト:AWS DevOps

  ※外部サイト:Azure DevOps

弊社では、先月11/2から「マルチクラウドソリューションサービスID-Cross(IDCloud Resource Outsourcing Solution Service)」を開始しております。運用中心のご相談が多いですが、運用から開発をワンストップで任せていただくことで、DevOpsをサービスメニューとしていくことも検討していきます。

  インフォメーション・ディベロプメント 「マルチクラウドソリューションサービス ID-Cross」の提供を開始 お客さまのクラウド基盤の強化を促進

 
●まとめ

今回、DevOpsの内容を理解することができました。本質は文化にあると考えました。文化を変えることで、ポジティブな組織になり良い効果を出すことができそうです。ツールやDevOpsサイクルなどの導入にはまだ検討/検証が必要ですが、文化の部分は今すぐにでも取り入れていきたいと考えました。どんな効果があったかについては、今後報告いたします。

以上

 【引用】
   *1※外部サイト:DevOps(フリー百科事典『ウィキペディア(Wikipedia)』)

当サイトの内容、テキスト、画像等の転載・転記・使用する場合は問い合わせよりご連絡下さい。

エバンジェリストによるコラムやセミナー情報、
IDグループからのお知らせなどをメルマガでお届けしています。

メルマガ登録ボタン

佐藤 久

株式会社インフォメーション・ディベロプメント 先端技術部 エバンジェリスト

この執筆者の記事一覧

関連するナレッジ・コラム

どのインスタンスを選べばいいの?EC2性能比較!

AIがプログラミングする時代の到来!?

残された攻撃の痕跡を追え! ~スレットハンティングのススメ~