では同社の場合、具体的にどのようなDevOpsを行っているのだろうか? 茂岩氏はこの問いに対して、「境界線上の仕事を率先して取ること」とまとめる。
境界線上の仕事とは、例えばデータベースの性能低下などだ。ソーシャルゲームなどのソフトウェアだと、「データベースサーバに高負荷を掛けてしまうSQL文が含まれているために、ユーザーアクセスが増えた際、サーバのCPU使用率が上がってデータベースのレスポンスが悪化してしまう」といったケースがある。同社の場合、データベースの性能管理はインフラ部門の担当だが、SQL文は開発部門の担当だ。だが問題が起こった際、目に見える事象としてはデータベースの性能低下があるだけだ。
「こうした両部門にまたがって原因が考えられる問題は多く存在します。ここで『どちらが解決するか』と、問題を押し付け合ってしまうと業務が遅滞してしまう。そこで業務分掌から外れるとしても、そうした仕事は率先して取るようインフラ部門のスタッフには勧めています。また、根本原因がSQL文にあると分かっても、『重いから直して』と言うのは簡単ですが、協力しているとは言えませんよね。そこでプログラムの中身を見て、『このプログラムの、このSQL文を、こう直してください』と具体的に伝えるようにしています」
ただ、そのためには運用スタッフにも開発やプログラミングの知識が求められる。そこでインフラ部門のスタッフには、開発言語の基礎知識を習得するよう日ごろから推奨している他、そうした境界線上の仕事をマネージャ層が把握し、個人評価に反映しているという。
一方、開発部門でも運用管理の知識を学ぶことを会社として推奨している。開発は1台のマシンで行っても、実際には5000万規模のユーザーアクセスに対応できるサービスを、1000台規模のWebサーバ、DBサーバを使って提供することになる。サーバ、ネットワーク、データベースなど、全体的なシステム構成と運用管理の知識を持った上で開発に当たらなければ、適切なアーキテクチャを考えられないために、リリースした瞬間に大量のトラフィックが発生してシステムダウンしてしまう、といった可能性もあり得るためだ。
「ここ3年ほど、運用管理やセキュリティに関する開発者向けの社内講習を続けています。開発で手戻りが発生すれば、コストもリリースに必要な時間も増大してしまいますから、最初からあらゆる事態を想定し、両部門がお互いの業務知識を持って協力し合った方がコスト、スピードの両面で効率的なわけです」
効率化という面では、自社開発の自動化ツールを使ってサーバのプロビジョニング自動化も行っている。また、アプライアンスの負荷分散機を使用しているが、従来はサーバの追加/削除の際に、アプライアンスに設定したシステム構成の定義を書き換えるために、サーバ管理担当者がネットワーク管理担当者に依頼し、逐一コマンドを打ち込んでもらう必要があった。これをスクリプト化し、アプライアンスのAPIと自社開発の自動化ツールを連携させることで、サーバ管理担当者がワンアクションで定義変更することを可能にしたという。
ただし、安定運用やガバナンスへの配慮から、自動化機能を使って開発部門がサーバをデプロイしたり、アプライアンスの定義を変更したりすることは許可していない。
「あくまで、開発部門と運用部門の業務分掌を明確に定義した上で、そこからはみ出す作業だけを両部門から積極的に取りに行く形です。ただし、両部門で作業が重ならないよう、両部門のマネージャが各作業を確実に管理する他、IRC(Internet Relay Chat)を使って部門間、部門内で密にコミュニケーションを取りながら作業を進めています。従って、例えばリリース後に開発した新機能を各関連サーバに配備する、といった付随的な作業については、開発部門がインフラ部門に一言断った上で行うケースもありますが、サーバリソースの準備と運用管理はインフラ部門が一元的に行っています」
Copyright © ITmedia, Inc. All Rights Reserved.