分散システムデザインパターンを読んだ

これを読みました。

分散システムデザインパターン ~コンテナを使ったスケーラブルなサービスの設計~

分散システムデザインパターン ―コンテナを使ったスケーラブルなサービスの設計

分散システムデザインパターン ―コンテナを使ったスケーラブルなサービスの設計

内容

まず、内容から書きます。目次から章を抜粋してみました。こんな感じで分散システムのデザインパターンが順々に説明されています。

最初に書いておきますと、この目次を見て1つも聞いたこと無いとう人には、この本は向いてないかもと個人的には思います。(理由は後述)

  • シングルノードパターン
    • サイドカー
    • アンバサダ
    • アダプタ
  • マルチノードパターン
    • レプリカがロードバランスされたサービス
    • シャーディングされたサービス
    • スキャッタ・ギャザー
    • ファンクションとイベント駆動処理
    • オーナーシップの選出
  • バッチ処理パターン
    • ワークキューシステム
    • イベント駆動バッチ処理
    • 協調的バッチ処理

シングルノードパターンは、サブタイトルの コンテナを使ったスケーラブルなサービスの設計 とある通りK8sなどでよく使うパターンだと思いますが、それ以外のマルチノードパターン、バッチ処理パターンなんかクラウドでIaaS以外のサービス、サーバーレスとかIoTやビッグデータ周り、PaaSやFaaSと呼ばれる分野を使っている人に馴染みある内容だと思います。

構成

ページ数が適度

この本を買った理由は、内容は興味があったのはもちろんですが、本屋でパラパラ読んで構成がとても気に入ったからです。

まず全体のページ数が200ページ以下と多くないです。上記の目次に沿って1つの章につき10から20ページくらいでテンポ良く進みます。

設定ファイルとコードで表されたハンズオン

それで内容が薄まっているのかというとそうではありません。パターンの背景、必要性、特徴などの説明の後に必ずハンズオンがついているのですが、デザインパターンのハンズオンがシンプルです。

シンプルというは、ざっくり言うとこういう感じです。

  1. ここまで書いたデザインパターンを実装してみましょう。
  2. 必要最小限に削ったNginxやKubernetesの設定ファイルが記載されている
  3. kubectl create -f xxx.yaml 実行。以上。

他にも説明用のPythonコードが1ページあって、以上。みたいなのもあります。

これが気に入りました。これくらいで十分なんですよね。知っている人向けに一番端的に説明する方法だなと思いました。時間無いからこそ、こういう手法で書かれている本は嬉しいです。

多彩なソフトウェア

色々なソフトウェアが出てくるのも面白いです。上記のような端的な流れの中に以下のようなソフトウェアが説明で使われています。前提としては当然どんなソフトウェアかくらい知ってるよねくらいの流れです。逆に知っていれば無駄な説明は無いので、早く読めます。

  • Redis
  • Fluentd
  • MySQL
  • nginx
  • Prometheus
  • storm
  • Varnish
  • etcd
  • Kafka とか

どんな人にオススメか

上にも書きましたが、個人的には目次の1割もわからない人が読んでも難しいのではないかと思います。逆に半分以上は知っている、聞いたことあるくらいの知識の人が読んで、短時間で知識を体系化させるのにとても適した本だなと思いました。