開発と運用が相互協力するDevOps、運用も開発現場に積極参加!
数年前から注目されている、DevOps(デブオプス)。これは、アプリケーションを短期間かつ頻繁に開発し、ユーザからのフィードバックを得て改善を重ねながら、ユーザのニーズに合ったサービスとして運用していく手法です。システムに新しい機能を実装し、次々とリリースする開発。それに対して、その機能をスムーズに安定して処理し続ける必要がある、運用。この、一見、矛盾する立場が、なぜ連携する必要があるのでしょうか?そのメリットとは?
DevOpsとは
DevOpsとは、開発(Development)と運用(Operations)がお互いに協力し、システムを作る開発から実際の運用までを、柔軟かつスピーディにつなげることで、全体のパフォーマンスを上げようとする概念です。DevOpsという言葉が初めて使われたのが、ITメディア企業オライリーが2009年に主催した「Velocity 2009」で、ソーシャルフォトサービスFlickrのエンジニアによるセッションの中でした。その後、世界的に注目されるようになり、今年がちょうど10年目となります。造語して誕生した言葉も、今では、業界で広く認知されています。
開発と運用で異なるミッションとは
そもそも、開発と運用は、ミッションがそれぞれ異なるため、相反する立場にあります。そのため、同じゴールを目指しながらも時に衝突することが珍しくありません。
まず、開発のミッションは、ユーザの役に立つよりよいサービスを作って提供することです。開発のロードマップに沿って、その時点でリリースできる機能を実装しますが、システムやミドルウェア、ネットワークなど、サービスの周辺は常にアップデートされ続けます。また、ビジネス的なトレンドの変化から生まれるニーズもあります。さらに、新しい技術へチャレンジすることで、スキルを磨き続けたいマインドは、エンジニアとしては当然のことでしょう。
そもそも、ミスがまったくない完璧なソフトウェアを作ることは不可能なため、プログラムのアップデートを常にリリースし続ける必要があります。
一方、運用のミッションとは、ユーザがストレスなくサービスを使えるように安定的に稼働させることです。動いているシステムが停止したり、障害を発生させるリスクを可能な限り避けるのが、使命です。世の格言に『そこにフェンスが作られている理由がわからないうちに、フェンスを取り外してはならない』という言葉があります。システムが問題なく安定して稼働しているのであれば、理由はどうあれ安易に手を加えないのが、運用現場のルールです。
DevOpsで期待できるメリット
このように、時に衝突しがちな開発と運用ですが、双方が協力しあいながらシステムを作り上げていくDevOpsによる、さまざまなメリットがあります。ビルドやテストを自動的にくり返していく点では、「継続的インテグレーション」の延長にあるといえるでしょう。
- ソースコードを変更して、すぐデプロイとテストができるため、早い段階で問題を発見できる。
- そのテストやビルド、デプロイなども、自動化・省力化することで、ヒューマンエラーを防げる。
- いざ本番環境になって動かない!というリスクが低い。
- 開発と運用が稼働状況を共有することで、問題点や修正のステータスを把握しやすい。
- 新しい機能で問題が起きた時の対応についても、フィードバックがスムーズ。
- 運用も、リリースの信頼性が高まることで、システムの変更を承認しやすくなる。
<PR>新しい技術にチャレンジしたい開発と、システムを安定させたい運用。利害関係の調整が難しいのも当然かも…。SaaS型の統合運用管理サービス「UOM」を使えば、楽に効率化できるんです!詳しくはこちらへ
成功の鍵は、組織のマインドやカルチャー
DevOpsのような、新たな開発・運営スキームが出てきた理由は、ITシステムがビジネスや日常生活にますます不可欠になってきたからです。目まぐるしく変化するビジネスのスピードにキャッチアップし続けるには、開発と運営を切り離して遠ざけることがリスクとなり得ます。
そのためには、運用のことまで考えられる開発者や、開発現場を理解している運用担当者が不可欠です。開発では、企画や開発段階から運用面も考慮して、負荷を減らすためのインフラを構築したり、自動化技術を採用するようなアプローチが考えられます。一方、運用には、従来から求められている安定稼働だけでなく、開発と一体化したサービスの品質改善や、頻繁なアップデートにも影響を受けない自動化が求められます。
とはいえ、それぞれの現場ごとに開発と運用の環境が異なるように、DevOpsの形もさまざま。選択できる手法やツールも豊富にありますが、DevOpsで重要なのは、開発と運営双方のチームが協力し、連携すること。そのためには、「何のために、このサービスを開発し、運用しているのか?」「ユーザは満足してくれているのか?」「さらに使いやすくするにはどうしたらいいか?」といった、根本的な課題を共有しやすいマインドやカルチャーを醸成していくことです。
運用も、開発現場に積極参加しよう
開発サイドとのコミュニケーションのために、忙しい運用担当者であっても、できれば、インフラやアプリケーション部門など、開発チームのミーティングには積極的に参加しておきましょう。メールや資料を見ただけではわからない点を細かく把握したり、担当者たちの人物像や考え方のニュアンスを知ることができます。直接、開発現場の担当者たちから具体的な話を聞くことで、緩やかな関係を作っておくことをお勧めします。
また、ミーティングに参加することで、システムの仕様変更の可能性やアプリケーションの開発ロードマップ、重要な決定事項などをいち早く把握できるため、運用側でも対応する余裕を確保できる可能性が高まります。さらに、ユーザ向けのサービス紹介に一通り目を通すのも有効です。マニュアルやFAQには、ユーザに訴求したい特徴やメリットが明示されています。リファレンスとして参照できるリソースの一つです。
同様に、一般・ユーザ向けのセミナーやハンズオン、ワークショップなどに参加するのもお勧めです。通常、これらの場面で登壇するのは、サービスのことを最もよく理解して、他者への説明が上手い人なので、限られた時間の中で、特徴をコンパクトに説明してくれます。また、使われる説明資料も、直前でアップデートされていることが多く、それまで得られなかった最新情報を知ることができます。さらに、質疑応答からは、ユーザがどのような点に関心や不安を持っているのかがわかるため、運用のヒントも得られます。
この他、参考資料や導入事例、ブログを読んだり、メディアの記事にアンテナを張っておくのも参考になるでしょう。チームの状況を丁寧に把握し、風通しをよくすることで、素晴らしいサービスの実現へと導いていきましょう。
<PR>システム開発とのコミュニケーションがスムーズにいけば、結果的に運用エンジニアのストレスは減らせます。ただの理想論でなく、実現できるかもしれません。SaaS型の運用管理サービス「UOM」なら。詳しくはこちらへ