勘と経験と読経

略すとKKD。ソフトウェア開発やITプロジェクトマネジメントに関するあれこれ。

Effective DevOps 第Ⅰ章~第Ⅳ章を読んだ #デッドライン読書会

技術書の積読が一向に減らない。世の中的には積読合宿で消化したり、ABDという読書手法で団体戦で消化する方法もあるようだが自分はあくまで自分自身で消化したい派である。というわけで知人と一緒にデッドライン(締切り)を設定して積読に立ち向かうことにした。第一弾としてEffective DevOpsを読んでいる。ボリュームがあるので前半と後半に分けていて、今回は2週間で前半部まで読んだ。というわけで本記事は前半の感想です。

Effective DevOps ―4本柱による持続可能な組織文化の育て方

Effective DevOps ―4本柱による持続可能な組織文化の育て方

DevOps関連書籍と、Effective DevOps

流行りのキーワードということもあり、DevOps本はいろいろと発売されている。これまでに自分でチェックした本は以下の通りである。

The DevOps 逆転だ!究極の継続的デリバリー

2014年に翻訳された本。ゴールドラットのThe Goalのような小説仕立てでDevOpsを紹介している。非常に面白いのだけれども、DevOpsをまったく知らない人向けな印象。なお米国流のシステム開発の文脈で語られているので日本的ソフトウェア開発との文化的違いも気になる。ある意味、経営層やマネージャ向けの本と言えるだろうか。残念ながら日本では刺さりにくそう。

DevOps教科書

2016年に翻訳された本。割とアーキテクチャ的な視点でDevOpsが語られているのが特徴。今あらためて読んでみると、DevOpsの文化的側面はほとんど触れていないのでびっくりする。一方でDevOpsを実現するアーキテクチャという観点での深掘りは非常に参考になる。

The DevOps ハンドブック 理論・原則・実践のすべて

2017年に翻訳された本であり、 The DevOps 逆転だ!究極の継続的デリバリーの続編でもある。前作とは一転してガイドブック/テクニック集な位置づけとなっており、現時点で最も教科書的に扱える書籍である。割とよく読み返している。

SRE サイトリライアビリティエンジニアリング ―Googleの信頼性を支えるエンジニアリングチーム

2018年の翻訳本。タイトルどおりDevOpsを扱った本ではなく、SREについての本だが同書内でも「SREはDevOpsに拡張を加えたものと考えられる」と書かれている通り、DevOps的な文脈で読むこともできる。ただ本書はあくまでGoogleのSREに関する論文集であるため、DevOpsの参考書としては相当ハードルが高いと思う。

LeanとDevOpsの科学[Accelerate] テクノロジーの戦略的活用が組織変革を加速する impress top gearシリーズ

2018年の翻訳本。DevOpsの解説書というより、毎年発表される「DevOps Status Report」の過程で得られたデータを下に、何をすれば開発スピードが改善されるかについて書かれている。DevOpsをさらに突き進むために、もしくは評価するために読むと良い書籍。

そして「Effective DevOps ―4本柱による持続可能な組織文化の育て方

で、やっと本題。本書はどのような位置づけにあたるのだろうか。
前半しか読んでいないけれども、現時点の印象は

  • DevOpsを進めながら突き当たる課題について考えるきっかけを与えてくれるエッセイ集
  • プロセスとしてのDevOps導入時(輸入時)に抜け落ちてしまうカルチャー的な部分を補完する本

である。
というわけで、本書はDevOpsを学ぶ本ではなく、実践している人が読むべき本というのが前半を読んだ感想だ。

Effective DevOps 前半の感想

さて、Effective DevOps 第Ⅰ章~第Ⅳ章の感想である。なお実は私は翻訳本ではなく原著をベースに読んでいるので引用部部は訳書とは異なるかもしれない(そして誤訳しているかもしれない)点には注意いただきたい。

ロッククライミングの例え(2章 DevOpsとは何か)

DevOpsの説明でロッククライミングとの類似性が示されているところでオッと思った。確かにわかりやすい。この話は以下のブログ記事が元ネタっぽい。

DevOpsとITIL(4章 基本的な用語と概念)

4章では関連する方法論とDevOpsの関係について書かれているが、ITILについての触れ方は興味深い。

(ITアナリスト兼コンサルタントのStephen) Mann氏はITILプロアクティブではなく反応的であることが多いと述べています。そのため、ITILを使用している組織は、より積極的な計画と顧客重視を実践に追加する方法を検討すべきです

DevOpsとITILの関係についてはDevOps教科書SRE サイトリライアビリティエンジニアリング ―Googleの信頼性を支えるエンジニアリングチームでも軽く触れられているが、上記のような見方までは提示されていない。

アンチパターンとしての根本原因分析(RCA)(5章 devopsに対する誤解とアンチパターン)

DevOps本によくある項目が「DevOpsに対する誤解」である。例えばSRE サイトリライアビリティエンジニアリング ―Googleの信頼性を支えるエンジニアリングチームEffective DevOps ―4本柱による持続可能な組織文化の育て方で比較してみるとこんな感じ。

  • Effective DevOps ―4本柱による持続可能な組織文化の育て方 (5章)
    • devopsに関係があるのは開発者とシステム管理者だけだ
    • devopsはチームである
    • devopsは肩書だ
    • devopsはウェブ系のスタートアップだけの問題だ
    • devopsには認定資格が必要だ
    • devopsとは、半分の人員ですべての仕事をすることだ
    • devopsには「正しい方法」(または「間違った方法」)がある
    • devopsを取り入れるためには X週間 /Xか月かかる
    • devopsはツールの問題だ
    • devopsとは自動化のことだ
    • devopsは一時的な流行だ

ラインナップの重複と差異が両書の違いを表しているようで面白い。

一方でEffective DevOpsにはアンチパターンに関する章もある。その中で根本原因分析(RCA)を取り上げているのが面白い。

根本原因分析には、システムが線形的に失敗する(または成功する)という暗黙の前提があります。これは、十分に複雑なシステムには当てはまりません

これはDevOpsに固有な話題ではなく、近年の複雑化するソフトウェアにおける重要なポイントを指摘していると思う。一方で、特に国内ソフトウエア開発のプラクティスでは類似の「なぜなに分析」が障害分析手法/品質改善手法として定着しているわけで、この使い方は今後見直すべきポイントの一つだろう。

6章 効果的なdevopsのための4本柱

おそらく本書の肝となるのがこの4本柱の概念である。すなわち

  • Collaboration:開発チームと運用チームの協力
  • Affinity:チーム間の関係を構築し、お互いに学び、目標を達成する
  • Tools:アクセサレーター
  • Scaling:成長・成熟および縮小の考慮

である。特にAffinityはこれまでのDevOps本ではあまり取り扱われていない(はずの)テーマだ。

9章 アフィニティ:個人からチームへ

で、アフィニティの話である。本章では個人間、個人とチーム、そしてコミュニティとの親和性(アフィニティ)について語られていて、個人的には本書の前半部で最も学びの多かった章だ。本書ではDevOpsから始まる信頼関係を組織レベルから業界レベルに広げ、革新するためにどうするかまで大きなスコープについて語られている。
なお、組織レベルの信頼性の問題は医療分野における安全確保のために色々と研究されてきているらしい。→Pathways for Patient Safety: Working as a Team(PDF) (この記事はちゃんと読めていないので、あとで改めて取り上げたい)

  • チーム間の対立や利益相反をどうするか
  • コミュニティとの情報共有と企業間の競争をどう考えるか(共有しすぎると競争力が弱まるのでは?)
  • 特定の個人の言動がアフィニティを破壊する(いわゆるBrilliant Jerks問題)
  • 妨害的なチームの存在の対処

などなど興味が尽きない。
本書では割とさらっと触れられている程度である。個人的に、もう少し深掘りしてみたい。