« 第12回#RxTstudy勉強会 「ITS活用最前線 〜現場からの実践報告〜」 (03月21日) #RxTstudy を開催します | トップページ | 4/11にXP祭りin関西2015 ~Agile S×T~を開催 #xpjugkansai »

2015/02/26

ITに係る全般統制とDevOpsの緊張関係

アジャイル開発に慣れている人から見ればDevOpsなんて当たり前に見えるが、DevOpsを阻む障壁として「ITに係る全般統制」がある。
ITに係る全般統制とDevOpsは真っ向から対立する概念と捉えた方がいいのではないか、と最近考えている。
以下メモ。

【参考】
開発と運用の新しい関係、「DevOps」とは何か? - Publickey

全般統制,業務処理統制[ITの統制]

海外会計税務用語 :総合型税理士法人山田&パートナーズ|東京,関西,名古屋,福岡の総合税理士事務所

【DevOpsが変える開発と運用[#1]】 DevOpsは開発と運用の分離と対立するのか?:情報インフラ24時 眠らないシステム:ITmedia オルタナティブ・ブログ

【DevOpsが変える開発と運用[#3]】運用が権威的になると開発のやる気が損なわれる:クックパッドのチャレンジ:情報インフラ24時 眠らないシステム:ITmedia オルタナティブ・ブログ

【DevOpsが変える開発と運用[#2]】 開発と運用のコラボレーションはそこにあるか:日本CAの提案:情報インフラ24時 眠らないシステム:ITmedia オルタナティブ・ブログ

(2) 最近「DevOps」という言葉を目にすることが多くなりました。... - オージス総研グループ ビジネスイノベーションセンター

クラウド&DevOps時代の運用をZabbixで(1):クラウド&DevOps時代に求められる運用とは~Zabbixが有効な理由 (1/2) - @IT

【0】DevOpsという概念は、アジャイル開発なら当たり前だ。
チームを形成するメンバーは、プログラマであろうが、インフラ担当者であろうが、顧客に価値を届けるために、システムを完成させ、リリースさせる。
一つのゴールに向かって作業するからには、己の役割を超えた作業もいとわない。

以前の僕は、開発担当者として、アプリの運用も障害対応も夜間対応も対応していたから、DevOpsの概念はなんて当たり前なのだろう、別に必要ないのでは、と思っていた。
むしろ、DevOpsを支えるツール群であるZabbixやChefなどに興味があった。

【1】しかし、J-SOXに基づく「ITに係る全般統制」を厳格に守っているシステム運用の現場を見て、DevOpsの概念が必要と言われる理由がようやく分かった。

「ITに係る全般統制」を厳格に守る場合、開発担当者と運用担当者は明確に分離される。
双方の役割を一人の担当者が兼務して作業することはありえない。

開発担当者は、システムをリリースする準備までのフェーズが担当であり、運用担当者にリリースモジュールとリリース手順書を運用担当者に引き渡すことで作業を終える。
その後の運用は、運用担当者の作業になる。
開発担当者は、基本は本番環境に入れないし、本番環境のデータやシステムを更新することも認められない。

「ITに係る全般統制」を盾にしてシステム運営すると、開発担当者はシステムを作ることしか頭が回らなくなり、リリース後のことは何も考えなくなる。
ログファイルにどんなメッセージを出して運用を楽にすべきか、障害対応時はどんな手順でバッチをリランすべきか、ということまで考えなくなる。

一方、運用担当者は、インフラの運用だけでなく、アプリ運用に近い作業まで負担するようになる。
でも、アプリを開発していないから、アプリ障害の詳細は分からないし対応できない。
結局、ユーザからクレームを受けたものの、SLAを満たすことができず、障害発生から業務を停止させる時間がどんどん長引いてしまう。

開発組織と運用組織が、一つの会社でサイロ組織になってしまい、かみ合わなくなるのだ。
そして、日本の現場でよくありがちな例としては、開発チームも運用チームも互いにディフェンシブな作業スタイルになってしまい、どちらも責任のなすりつけに発展してしまう。

【2】J-SOXに基づく「ITに係る全般統制」が法律として定められている限り、「DevOpsは開発チームと運用チームを解散して、一つのチームにまとめることだ」という主張は実現できない。

開発チームと運用チームが一体化してしまうと、不正な本番環境への変更を抑止するための牽制機能が効かなくなる。
特に昨今は、個人情報の流出やセキュリティリスクが高まっているので、本番環境へのアクセス管理を性善説で運用することはありえないだろう。

【3】では、開発チームと運用チームが相互牽制しあうようなスタイルを残したまま、DevOpsは実現できるのか?

その解決方法は、リリース作業やシステム運用をツールで自動化することで解決できるわけではない。
ツールの自動化は手段の一つに過ぎず、「開発組織と運用組織が一つの会社でサイロ組織になっている」という根本問題を解決しない。

その根本問題を解決するには、お互いの組織のコミュニケーションを行き来しやすくする方向しかありえない。

一つの方法としては、【DevOpsが変える開発と運用[#3]】運用が権威的になると開発のやる気が損なわれる:クックパッドのチャレンジ:情報インフラ24時 眠らないシステム:ITmedia オルタナティブ・ブログのように、開発チームと運用チームの体制は残すものの、担当者を定期的に双方のチームにシフトさせる方法がある。
そうすれば、双方を経験した担当者が多いほど風通しも良くなるし、要員変動にも耐えられる。

でも、本番環境への不正アクセスの防止という観点では、開発・運用の双方を経験した担当者を増やすことは矛盾しているのかもしれない。

個人的には、ITに係る全般統制とDevOpsには緊張関係があり、その根本問題である「開発チームと運用チームの相互牽制とサイロ化」に決定的な有効な解決方法はないのでは、と思ったりする。
さらに考えてみる。

|

« 第12回#RxTstudy勉強会 「ITS活用最前線 〜現場からの実践報告〜」 (03月21日) #RxTstudy を開催します | トップページ | 4/11にXP祭りin関西2015 ~Agile S×T~を開催 #xpjugkansai »

ソフトウェア工学」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



« 第12回#RxTstudy勉強会 「ITS活用最前線 〜現場からの実践報告〜」 (03月21日) #RxTstudy を開催します | トップページ | 4/11にXP祭りin関西2015 ~Agile S×T~を開催 #xpjugkansai »