DevOpsっより開発と運用が共闘した方がいい


facebookに書き込まれたDevOpsについての意見を読み終わってDevOpsって「結局どうよ」と思ったんですよ。多分、90%以上のシステムエンジニアにはまた何かやってるなーとかそもそもDevOpsの名前はネットで見たことがある程度なんじゃないかと。ある一部だけで騒いでいるように、しかも、その騒ぎをたまたま気になって振り向いた人だけが見たくらいなんじゃないか、と。まぁ、あくまでもワタシの思い込みですが。


DevOpsを間違って理解しているとアレなのでお復習いしましょう。

DevOpsとは、開発(Development)と運用(Operations)が協力し、ビジネス要求に対して、より柔軟に、スピーディに対応できるシステムを作り上げるためのプラクティスです。
引用 いまさら聞けない「DevOps」 (1/2)


DevOpsの主旨は「ビジネス要求のスピードに合わせたシステムの提供」っていうことでよろしいでしょうか。

DevOpsの関心事は、それぞれの役割の違いから衝突することが多い開発と運用の双方が協力し、同じゴールに向かう環境を作ることであり、そのような環境を作るためにはツールとカルチャーが重要だと考えます。「DevOps」と聞くとOpscodeの「Chef」やPuppet labの「Puppet」などのツールを思い浮かべるかもしれませんが、実は、これらツールはDevOpsの一部分ということになります。
引用 いまさら聞けない「DevOps」 (1/2)


ここの前提は、「ロールが開発と運用に分かれている」というところですね。さらにツールは「実現するための一部」であるということですね。


具体的な例があったほうがイメージしやすいのでここでは「社内システム」をDevOpsの対象とします。


社内システムのシステム変更要件だと最近配布が始まった「マイナンバー制度の対応」がありましたのでこれで。


開発と運用
開発と運用の役割はロールとします。人で考えると分担とか兼務とか組織の都合が出てくるので。社内システムだと、


・開発 新規または既存システムの開発、変更または削除を担う。
・運用 開放されたシステムのシステム運用。運用上の問い合わせ、トラブル受付など含む


ざっくりとこんな感じでしょうか。で、開発は、ビジネス要求に応じてシステム変更を行ないます。今回はマイナンバー制度の対応をするわけです。さらに法対応ですがら守らなければならないお作法と対応期限があると。


対応必須な案件は開発と運用は協力してやらざるを得ない
そしたらですね、マストなわけです、対応は。であれば、開発は運用に乗るようなスケジュールを引かなければならないし、運用は運用に乗せられるスケジュールと体制を組まなければならないわけです。


そうでない案件の対応なら
このマイナンバー制度のようなケースでは、DevOpsなんて考える必要はないということですね。だって期限までにやらないとダメなんだから。法対応以外のケースではどうでしょう。バグフィックスとか機能改善とか。これなら良さそうです。


先の引用では「衝突」が前提となっていて、開発は「(リリースの)自由度」を求め、運用は「(スケジュール)の余裕度」を求めていると。それが「人手を介すから」衝突が起きることになっています。


衝突の前にリスペクトはどこに行った
さてここで知りたいのは、(このケースでは社内なんだから)お互いの分掌を理解しているのか、お互いに縛られている制約があることを双方で理解している上で衝突しているのか、ということです。


開発の立場ではリリース候補は準備ができたらリリースしたいでしょうが、リリース候補を選択すること自体にビジネス的な優先順位があるものです。運用回避できないバグは緊急でリリースが必要でしょうし、便利な機能であれば急ぐ必要はないわけです。


一方、運用も定型作業がある中でリリースを受け入れるための準備にリソースを割くことになりますが、ビジネス要求やシステム運用上のトラブルであればそれに応じた優先度で受けれたいと考えるでしょう。


開発と運用の敵は別にいる
ただし、その両者の間に割って入ってくる要因があります。それはリソースとコンプライアンスです。リソースは変更されるシステムを受け入れる運用の方です。今の定常業務に変更分を対応する必要があるし、リリース直後は集中支援が必要になりますから。


あとは、コンプライアンスです。JSOXやSOXに対応しているなら、容易くシステム変更できないことは知っていると思います。決めている通りの手続きで、SODで分掌されているプロセスを通さないといけない。


仔細に見れば、そのプロセスも人手にならざる得ないところもあるでしょうし、機械化できるところもあるでしょう、それこそITを活用するための機械化なわけです。


でも、メインは業務プロセスですよね。どこに責任を持ってお互いが助かるように分担するかという。それが衝突が前提で、文化が違うことが前提で、ツールが前面に出て解決するような印象と捉えてしまうのはワタシにバイアスがかかっているのでしょうか。


お互いの共通の敵がいるなら開発と運用が組めばいい
これが開発と運用を兼務していたらどうなるのでしょう。やっぱりツールの話なんでしょうか。DevOps特有の話なのでしょうか。ツールは人手の置き換えですよね。文化の衝突は、リソースは。


文化の衝突を避けたいなら、開発と運用を分けないことです。お互いに違うシステムの開発と運用をたすき掛けしたどうでしょう。リソースも開発と運用を一緒にしたら双方の繁忙閑散を調整できる幅が生まれる可能性があるでしょう。コンプライアンスのSODは分掌をて意義すれば行けそうです。


あと技術ですって。え、システムエンジニアなんですよね。お互いに教えあったら衝突も起きないのでは。技術的な負債もなくりませんか。