Jeffery D. Smith『システム運用アンチパターン』
私はとあるシステムの運用チームの長に就任して間もないが、短い経験から言ってもここに書かれていることは「あるある」ばかりだ。平均的な、真面目なエンジニアが集まって仕事しているのに何故かまずい形に入り込んでしまう、組織の微細なダイナミクスを捉えた分析もあまり類書がないように思う。
書誌情報
Jeffery D. Smith『システム運用アンチパターン エンジニアがDevOpsで解決する組織・自動化・コミュニケーション』田中裕一訳、オライリー・ジャパン、2022年
問い(理解の確認)
著者は、DockerやKubernetesといった、DevOpsとよく関連づけられるツール群について、どのような立場をとっているか。
DevOpsの4本柱 "CAMS" はそれぞれ何の頭文字か。
プロセスの「ゲートキーパー」とは何のことか。
空欄に適当な言葉を埋めよ。「運用チームが異常事態に対応できるかどうかは、__とは何かを理解しているかどうかにかかっています。」
システムの動きを可視化する情報源は、大別して2つある。何と何か。
メトリクスとして、とりあえずはスループット、エラー率、レイテンシを検討すると良い、と著者は推奨している。それぞれ噛み砕いていうと何を表すメトリクスか。
メトリクスには一般的にゲージとカウンタの2種類があると言われる。それぞれ説明せよ。
本書で記述されたFMEA(故障モード影響分析)においては、ある一つのリスクに対して、深刻度、発生頻度、検出難易度の3つの観点の評価値をもとに、RPN(リスク優先度番号)が算出される。いくつかのリスクのRPNが算出されたあと、チームとしてはどのようなアクションを取ることになるか。
ELK stackとは何か。説明せよ。
メトリクスにはないログの利点は何か。
「データ」と「情報」を本書ではどう区別しているか。
空欄を埋めよ。ーーダッシュボード作成のベストプラクティスは、初めに__を念頭に置くこと。
データの欠損とゼロ値の区別は、グラフの描画にどのような違いをもたらすか。
ダッシュボードにおける「色による文脈の付与」「しきい値線による文脈の付与」「時間比較による文脈の付与」はそれぞれどういうことか、具体的にイメージせよ。
「テストピラミッド」の図をイメージせよ。
コントラクトテストにはどういった存在意義があるか。
継続的デリバリと継続的デプロイはどう違うのか。
リソース使用率だけでアラートを出すことの問題点は何か。
オンコール担当者の現実を知るためには、次の観点が大事だと著者は言う。自分の組織で、これらの問いに答えられる情報は記録されているか。
・誰がアラートを受けているか?
・アラートはどの程度の緊急度か?
・アラートはどのように通知されているか?
・チームメンバーはいつアラートを受けているか?
タスクを自動化したい理由は大抵「待ち時間・実行時間・実行のばらつき・実行頻度」のどれかだ、と著者はいう。いま、自分が最も自動化したいタスクの、自動化したい理由は何か。
「すべてのプロジェクトの見積もりにはタスクの自動化に必要な時間を含めるべきです」という著者の主張を、自分の組織でも訴えるべきかを検討せよ。
合成トランザクション(synthetic transactions)とは何か。
構成管理(configuration management)とは何か。
アプリケーションのデプロイは次の4層に分かれる。それぞれ説明せよ。
・機能デプロイ
・フリートデプロイ
・アーティファクトデプロイ
・データベースデプロイ
Flywayについて説明せよ。
「ソフトウェアをパッケージ化してデプロイする方法はいろいろありますが、パッケージ管理ツールを使うという選択肢が見落とされがちなことにはいつも驚かされます。」自分の担当するアプリケーションのデプロイに、RPMやDEBやNuGetやHomeBrewといったパッケージ管理ツールを導入しようとした場合、どのようなことが障壁となりうるか。
パッケージ管理ツールの利点はどのようなところにあると著者は見ているか。
ポストモーテムとは何か。
いつか読む参考文献
Douglas W. Hubbard, "How to Measure Anything "