はじめに
https://qiita.com/advent-calendar/2017/syoroumaru の16日目です。
こんにちは。初老って40代でいいんですよね? きがついたらもうアラフィフになってますが、まだ初老でいこうとおもいます。
オライリーから三ヶ月ほどまえに出たプロダクションレディマイクロサービス。あまり話題になってないようでしたが、読んでみたところよかったので紹介します。
結論から書いておくと 「読んどけ」 です。
動機
会社にあるはずのオライリー マイクロサービスアーキテクチャが借り出されているようで他になんかないかなぁとさがしたら見つけました。ちなみにマイクロサービスアーキテクチャは344ページにたいしてプロダクションレディのほうは216ページということで量が少なく、頑張れば一日でよめそうな分量というのもよかったです。
2.内容について
マイクロサービスのシステムを運用に必要な要素をあげて、それぞれの原則を説明するという本でした。
- 安定性と信頼性
- スケーラビリティとパフォーマンス
- 耐障害性と大惨事対応
- 監視
- ドキュメント
感想
付録のAとBが肝です。わずか10ページすこしですが以下、目次から引用します。
付録A 本番対応のチェックリスト
A.1 本番対応サービスは安定性、信頼性を備えている
A.2 本番対応サービスはスケーラブルでパフォーマンスが高い
A.3 本番対応サービスは耐障害性があり大惨事対応力がある
A.4 本番対応サービスは適切に監視されている
A.5 本番対応サービスはドキュメントが整備され、組織的に理解されている付録B マイクロサービスの評価基準
B.1 安定性と信頼性
B.1.1 開発サイクル
B.1.2 デプロイパイプライン
B.1.3 依存関係
B.1.4 ルーティングと検出
B.1.5 非推奨と廃止
B.2 スケーラビリティとパフォーマンス
B.2.1 成長の判断基準
B.2.2 リソースの効率的な利用
B.2.3 リソースの把握
B.2.4 キャパシティプランニング
B.2.5 依存関係のスケーリング
B.2.6 トラフィック管理
B.2.7 タスクの処理
B.2.8 スケーラブルなデータストレージ
B.3 耐障害性と大惨事対応
B.3.1 単一障害点の除去
B.3.2 大惨事と障害のシナリオ
B.3.3 回復性テスト
B.3.4 障害の検出と修正
B.4 監視
B.4.1 主要メトリック
B.4.2 ロギング
B.4.3 ダッシュボード
B.4.4 アラート
B.4.5 オンコールローテーション
B.5 ドキュメントと組織的な理解
B.5.1 マイクロサービスのドキュメント
B.5.2 マイクロサービスについての組織的な理解
で、AとBの内容を説明しているのが本文になります。
本文もそれほどながくないので、是非よんでもらいたいですが、知っていることも知らないこともありました。気になった概念としては
- SLAがさがったら、デプロイを実施しないという判断
- 防御的キャッシュ
- サーキットブレーカー
- 質的な成長の判断基準
でしょうか。序文にもかいてありますが、詳細について書くと章が本になってしまうので、あくまで原則とその説明になっています。それが、本書の簡潔で読みやすい理由になってます。
詳細については、別の本なりブログなりで読めるので、実際システム運用している人で、マイクロサービスの運用の概観をしりたいという人にとてもお勧めです。
余談
著者の人が女性でした。優秀な人に性差はないんですね。UberのSREということですが、シンプルな原則と読み易い文の裏に血を流して学んだ経験を感じられるのもよい本でした。
もうひとつ、ドストエフスキーの引用をしている部分があるのですが、芥川龍之介の蜘蛛の糸とおなじ構造の話でした。
蜘蛛じゃなくて葱でした。どっちがオリジナルかはよくわかりませんが、よいものは学んで自分のものにすべきという学びだとおもいました。
ではでは。
元記事はこちら
「マイクロサービスの概念はわかるけど、どう実践すればいいの? という人向けの「プロダクションレディマイクロサービス」を読んでみた」