DevOpsなんてくそくらえ

f:id:razokulover:20131017230517j:plain


先日こんなことを言われた。

「テストを書いた成果を見せよ」

と。

ショッキングだった。

経緯

わたしはいまレガシーなコードに囲まれている。

もちろんテストもほとんどないピカピカのレガシーちゃんである。

レガシーちゃんは「Ctrl+F5 & tail -f 駆動開発」により開発が進められており、日々進化している。

このまま進化をつづけるといつかモンスターになり(もう軽く怪獣っぽいが)、開発スピードがどんどん遅くなり、メンテナンスやバグつぶしでエンハンスとなるような開発ができなくなる。このままじゃマズい...。

こういった事態を一新すべく、手探りながら私含め数人の先輩たちで「DevOps」に取りかかることになった。

バズワードにもなっているが「DevOps」とは、

従来型のシステム管理や調達(ITILを含む)といった、保守的でプロセスを中心に据えた運用からよ>り戦略的でアジャイルな、そして自動化されたアプローチへの転換を表現した言葉である。 http://builder.japan.zdnet.com/virtualization/20411692/

ということらしい。

わたしなりの解釈でざっくりいうと、「いっぱい機能改善したいんだ!何度もリリースさせてくれよ!みんなハッピーだろ?」を達成するための開発フロー革命という認識。

そして、そのために必要とされる手段としてVagrantがあり、Jenkinsがあり、chefがあり、serverspecがあり、そしてテストコードがある。

現状だと、上記のどのツールも導入できそうにないのでまずは第一手段としてテストコードに取りかかったわけだ。

そして、ようやくテストを書きはじめたときの言葉が、上述の「テストを書いた成果をみせよ」だった。

そして、「成果」をみせられないと「先に進められない」または「テスト中止」という事態まで見えてきた。

成果とは

そもそも「成果」とは何だろう。

これは、「生み出されるお金」だと思う。当たり前だ。

先の発言を言い換えれば、「テストを書いて生み出されたお金を示してください」という意味だろう。

会社として、ビジネスに携わる人間としてこれを意識できなければ何もはじまらない。

自分の一挙一動がお金だという意識は行動の質を高めるとおもうし大切だ。

だから、

「テストを書いて生み出されたお金を示してください」

は正しい。会社にとっては正しすぎるし、当たり前でもある。

悪意なんて全くない。

ショッキングだった理由

ショッキングだった理由は、「DevOpsってこんなにも弱いものなんだ」と突きつけられた気がしたからだと思う。

だって、ちまたに飛び交う「DevOps」って「DevとOpsが手をとりあって...」とか「DevOpsによって世界は変わる...」みたいな甘い言葉だらけだし、当然DevOpsによってビジネス的なインパクトもだせるはずだと思い込んでいたところで、「お金」という正義によって正面からぶん殴られたんだものね。

何がいけなかったのか

さてさて、愚痴はここまでだ。愚痴が苦手なので、とりあえず今回は何がいけなかったのか振り返ろう。

多分今回こういう事態になったのはひとえに「説明不足」が原因と思われる。

  • なぜ、既存のリソースを割いてまでテストをやらないといけないのか
  • リソースを割くことでどう成果(お金)につながるのか
  • なぜ、今なのか

ということ。これらが、全く伝えられていなかった。これぞコミュ障の実力(自虐)。

もし、こういった「なぜ?」を事前につぶせていれば「テストの成果」をすぐに求められたりはしなかったはずだ。

もっと大きな壁の存在

先の発言は私と同じ、「エンジニア」からでたものである。

だから、ショッキングではあったが、説明不足なだけだったわけで、裏を返せば「説明すれば理解してくれる」存在である。

サーバーの状態を管理して..とか自動でテストを回して...自動でデプロイできると...とか横文字への理解も意味の理解もできるはず。

だけど、「エンジニア以外」はどうだろう。

自動でテストしてリリース回数も増やせて品質も上がる、これについて理解を示してもらえるだろうか。

半ば社内受託に近いような環境(ことDevにおいて)。エンジニアは工数をだして、期日通りにつくる人という認識の人が多いと思われる。

それは別に批判でもなんでもなく今までそれで伸びてきたし、まさに成果をがっつりだしてきたやり方。

それを「工数・期日通りにつくる人」が突然自ら動きだし、さらにリソースを費やしはじめ、「でぶおぷす」などと意味の分からないことをいいはじめるわけだ。

「Bizとメトリクスを通してDev/Ops/Bizが協調し合うことが...」などと言われているけれども、これまで培ってきたこのBizとDev/Opsの関係をひっくり返す私達はどうみても「敵」ではないだろうか。

DevOpsなんてくそくらえ

「DevOps」なんてくそくらえ、これはほぼ釣りに近い。

ほんとはくそなんて思っていない。

DevOpsによってスピード感のある開発体制をとることができる。 この何がアタルかわからないweb業界で試行錯誤しつづけることができるというのはそれだけで大きな武器になる。

DevOpsが実現できればとても強力だ。素晴らしいと思う。

しかし、現実は冒頭のような発言が仲間内からもでてくるし、ましてやBizの人たちからはもっと風当たりの強い発言がでてくるだろう。

ある程度歴史のある企業で、エンジニアがそこまで発言力のない世界ではDevOpsは本当に難しいことだと感じる。

一人じゃできないと思う。

先日ito naoyaさんが Webサービス開発現場から / 近頃の開発のやり方 ・・・ Github と Pull Request とコードレビューのなかで「じげん」の例 を出していたけども、レガシーな環境をあそこまで一転させられるのは本当に凄いことだと感じる。

きっと全員が全員同じ方向を見ることができていたからできたんだ。

DevOpsに本当に必要なこと

DevOpsに一番必要なことは、

テストコードでもJenkinsでもvagrantでもchefでもない。

まずはDevとOpsとBizへの徹底的な「説明」だ。

これはレガシーに囲まれた私に限ったことかもしれないけども本当にそのように感じる。

DevOpsそしてBizの見る方向と手段が相互に理解しあえるようになるには、だいぶ時間がかかりそうだ。

という、長い長い新卒webエンジニアの戯言でした。



(おまけ)

先人の知恵とかあったら教えてください。あ、説教でも構わないです、新卒が生意気な..的な。→@razokulover

冒頭の画像元のスライド