パソラーです

https://twitter.com/pasora

最近あった Dev と Ops の対立

これは会社の同期アドベントカレンダーのためのものなので割とテキトーに書いてます。タイトルはたいそうなこと書いてますが半分ただの愚痴です。

---

SRE を名乗りながらも Ops 寄りの人間をしばらくやっているわけだが、最近あるサーバのある言語パッケージのバージョンが古いから更新してくれという依頼を受けて対応したのち、そのバイナリのパスが変わったから symlink を張ってくれという追加依頼をもらった。

.bashrc で PATH を定義しなさいと返すと、cron で使ってるからそれではダメだと言われ、そのスクリプトを書き換えなさいと伝えると変更とテストの工数が云々と言い出した。

マイナーバージョンとはいえ言語のバージョンが上がるのにテストをしないわけもないだろうし、スクリプト内のパスの定義を書き換えるのはテストが必要で symlink なら必要ないという理屈も理解できず、「数行変えるくらいでゴタゴタ言わなくて済むようにアプリケーションはどこでも動かせるようにしとけ」という旨の発言をしたのだが、symlink 入れればそのまま動くのにどこでも動くようにするのと矛盾しているなどという反論をされてしまった。

このやり取りをお互い喧嘩腰にしてしまったのは反省しているのだが、意図が伝わらず残念だった。お読みのみなさんならお分かりいただけると思うが、アプリケーションをどこでも動かせるようにというのは決してプラットフォームがアプリケーションに合わせる、という意味ではない。プラットフォームとは極力依存しないようにしてインターフェース部分は容易に変えられるようにするのが正しいだろう。自らの変更によるリリースで毎回怖気づくようではダメだ。

もちろん CI の文脈でもテストカバレッジが高ければより早く楽にこういうのも片付けられるだろうし、という話もできたかもしれないが、なかなか何をどう伝えるかは難しい。