【DevOpsが変える開発と運用[#3]】運用が権威的になると開発のやる気が損なわれる:クックパッドのチャレンジ
2013年IT業界のトレンドキーワードとして注目を浴びている”DevOps”ですが、これをテーマにしているカンファレンスが存在します。その名を”DEVOPS DAYS”といいます。DEVOPS DAYSは世界中で開催されている有志の団体であり、DevOpsを実践している企業の担当者が事例紹介を行います。
実はこのカンファレンス、先月、日本で開催されました。それが”DevOps Day Tokyo 2013”です。今回は日本国内の事例としてクックパッドのシステム運用が取り上げられました。
要点は以下の通り。
【要旨】
・承認フローを作るとOpsが権威的になってDevのやる気が損なわれる。
-> 開発者のオーナーシップが減退する
-> 承認を通すための政治が重要になってしまう
・Opsにとっての「完璧さ」ではなくBizから見た「健全さ」を志向する。
-> 開発初期からBizにとって最適なやり方をDevとOpsが議論する
-> 問題が発生しても速やかに対処できる方策を考えておく
・Ops担当もDev担当と同程度のソースコード読解力が必要になる。
-> DevとOpsが相談しながらチューニングできる体制を敷く
-> Dev担当をOps担当へシフトさせる
(補足)
・クックパッドではエンジニアが約60人。
-> 運用:Opsとして、インフラチームが5人
-> 開発:Devとして、アプリ開発チームが40人、技術部エンジニアが12人
・デプロイは以下のルールに従って行われる。
-> 開発者自身がデプロイ&動作確認を行い、不具合があれば即ロールバック
-> 営業時間のみデプロイ可能(深夜リリースは基本的になし)
※プレゼン内容はPublic Keyが詳しく取り上げられています。
http://www.publickey1.jp/blog/13/devopsdevops_day_tokyo_2013_2.html
私がこのエントリーで触れておきたいのは、「開発担当と運用担当の新陳代謝」です。
多くのIT部門では、開発部門よりも運用部門の方が低い地位に甘んじています。その理由は、開発部門の方が高スキル人材が多いからです。過去の経験則ですが、両者の能力を比べれば、こんな傾向がみられるものと思われます。
【技術知識】 : 開発担当 > 運用担当
【自己主張】 : 開発担当 > 運用担当
システムの維持管理業務をこなすだけなら、アプリの詳しい知識を持たずとも十分です。しかし、開発を行うなら、自分がコードを書けなければなりませんから、より多くの技術知識が求められます。それに伴い、知らないことを学ぶ積極的な姿勢を開発担当は身につけるようになり、コミュニケーション面でも差が出てきます。
これでは相対的に開発部門の発言力が増すのも当然です。その結果、開発部門の判断で運用方法も決まってしまうという状況が当たり前になり、運用部門は単にシステムの維持管理をするだけになってしまうわけです。
こうした事態を防ぐために、クックパッドでは開発担当を運用担当へシフトさせることを行っています。そうすることで、開発側につっこみを入れられる運用体制を作ることに成功しています。事例では読み取れませんでしたが、同じように、運用担当を開発側へシフトさせることで、運用を意識した開発体制を構築することができますね。
このやり方を大規模なシステム開発・運用の現場で実践するのは難しい場面もあると思います。障害が組織や社会的混乱につながるミッションクリティカルなシステムは手堅い承認フローを導入した方が、Bizにとって健全です。
しかし、そうしたシステムは世の中、思ったよりも多くありません。基幹系を除くシステムなら、クックパッドが実践しているスタイルもアリではないかと思います。もちろん、向こう1週間くらいのリリーススケジュールはBiz-Dev-Opsの間で共有される連絡会や情報共有ツールが必要ですけどね。
ちなみに私のこれまでの経験の中で最もうまく廻っていたIT組織は、Dev-Opsに加えてTestという組織を切り出し、Dev→Test→Opsという3グループをシフトしながらITスタッフの能力を高めていくやり方を実践していました。
中規模以上のシステムでは、結合テスト~総合テスト用の専門部隊を作ってテストフェーズを進めるやり方が一般的かと思いますが、だからこそ、DevとTestの組織は明確に分けた上で、スタッフを定期的に他グループへシフトさせて経験を積ませるという行為が、各グループの相互理解を高めることに有用でした。
いずれにせよ、開発側と運用側の新陳代謝を促す仕組みを設けることは、お互いが尊重し合って協働するDevOpsにとって大変重要であるということは明白でしょう。
------------------------------
【DevOpsが変える開発と運用[#0]】 DevOpsではなく、TechOpsでIT運用管理を変える