スポンサーリンク
概要
翔泳社から2021年7月に発売された、「絵で見てわかるマイクロサービスの仕組み」を読んだので感想を書こうと思います。
非常にわかりやすく、サクッと読めてマイクロサービスの概要を理解できる良書でした。
技術書のセールとおすすめ書籍を紹介しています。合わせてご覧ください。
スポンサーリンク
書籍概要
どんな本?
本書では、マイクロサービスを、クラウドネイティブ時代のアーキテクチャスタイルとして捉えて、マイクロサービス流のソフトウェアアーキテクチャに加えて、コンテナ、Kubernetes、サービスメッシュ、DevOps、ハイブリッド&マルチクラウドなど、DXを支えるクラウドネイティブテクノロジーの全体像を解説します。
- 樽澤 広亨、佐々木 敦守、森山 京平 著、松井 学、石井 真一 著、三宅 剛史 (著)、樽澤 広亨 (監修)
- 2021年07月 発行
- 256ページ
- 定価2,728円(税込)
スポンサーリンク
スポンサーリンク
内容のまとめと感想
ここ数年、様々な場所でバズワードのように耳に入ってくる「マイクロサービス」に関してどういったものなのか、図を中心にわかりやすく説明している本です。
マイクロサービスだけではなく、DXやコンテナ技術などその周辺にある背景や技術にかに関しても説明が行われています。
良いポイント
図が多い
図が多く、文章だけではわかりにくい部分に関してイメージがわきやすいように工夫されています。
見開きで図が見えないページはないのでは無いかくらい、非常に図が多いです。
周辺技術も含めて説明
なぜマイクロサービスが求められるようになってきたのか?といったような背景や実現するための仕組み(DevOps、CD/CI)、実現するための技術(Docker/k8s)などに関しても説明がされているので、一連の流れを理解する事ができます。
思ったより専門的
基本的にこういった系の本は、非エンジニア向けにわかりやすく概要的な説明するものが多いと思いますが、本書はマイクロサービスを実現するためのデザインパターンや実装パターンなど、エンジニア的な視点での説明が内容の大半を占めています。
後半はIstio等、サービスメッシュの内容に関してもしっかりと説明がされていて、実装に近いレイヤで内容を把握する事ができます。
ノーコード
本書ではプログラム(サンプルコード)を使った説明は無く、全て図と文章で説明が行われています。
アルゴリズムの説明なども、クラスや処理の流れを図を使って、説明する形となっていてわかりやすいです。
ですので、プログラミングは書けないといった人でも読む事ができます。
個人的に気になった点
前半は少し退屈かも
本書の前半は、DXやDevOPSやクラウドサービス、アジャイル開発など、ある程度経験があるエンジニアならば大体は知っているレベルの内容に関しても丁寧に説明がされているので、少し退屈に感じるかもしれません。
前半はさらっと読み進めてしまうくらいでも良いかと思います。
ノーコード
先ほどは良い点でノーコードを書きましたが、エンジニア視点だと逆になります。
やはり実際に説明されている内容が、どのようにコードに落ちるのかといった事が気になったりします。
しかしながら、本書はあくまで図と文章で説明がされるので、コード等に関しては別の本などを参考に考える必要があります。
(おそらくコードを使って解説したら今の2倍以上の厚さになってしまうと思いますが・・・。)
エンジニア以外が読むと難しいかも
前半部分は前述の通り、非エンジニアでもわかるような説明が続いていますが、中盤からデザインパターン的な実装に近い話がメインとなるため、非エンジニアが読むと?となってしまうのではないかと思います。
逆にいうとエンジニア向けの書籍としては、わかりやすく簡単に説明されていて素晴らしいと思いました。
全体感想
本書はマイクロサービスの全体概要を広く説明している本となっていて、マイクロサービスを知る1冊目としてはかなり素晴らしいと思いました。
ただし、この本を読んだからマイクローサビスを設計実装できるわけではありません。
Docker、kubernetesなどのコンテナ関連技術やIstioといったサービスメッシュに関して、実際にどうやって構築したらいいのかは別途これらの学習が必要です。
同様にコードベースでも、レイヤードアーキテクチャなどのアーキテクチャやCQRSなどの実装アーキテクチャや、数多く説明されているデザインパターンをコードに落とし込むということは難しいのではないかと思います。
(該当する書籍があるのかわかりませんが、この本で考えを理解した上で、実装コードまで示した書籍があると捗ると思います。)
また、本書のコアとなる部分はかなり専門的な内容を含んでいるので、非エンジニアの人が読むには敷居が高いと思います。
ある程度コードや実装の経験があるエンジニアが本書を読んで、マイクロサービスとはどういったもので、実装パターンを学ぶのに最適な1冊だと思います。
ただし、前半と後半部分は一般的な技術動向や解説が多めなので、その部分を読むだけでも参考にはなるかもしれません。
スポンサーリンク
章のまとめと感想
第1〜2章
マイクロサービスを導入する背景(理由)や、必要となる技術的な要素などに関して説明が行われています。
1章は昨今バズワードになっている、DXとマイクロサービスの関係性が説明されています。
2章はクラウドネイティブ、コンテナ、コンテナオーケストレーション、DevOps、RESTなどに関してマイクロサービスと関連づけて説明されています。
前述の通り、この辺りはサーバーやクラウドエンジニアであればある程度知っている内容だと思うのでサラッと流し読みでも良いと思います。
第3〜4章
マイクロサービスを実現する上での、アーキテクチャやデザインパターンが説明されています。
3章はマイクロサービスを構築する上で、個々のサービスの粒度やアーキテクチャ、基本的な実装概念に関して説明がされています。
SOLID原則の一部や、クリーンアーキテクチャ周りで出てくる構造(レイヤード、ヘキサゴナル)など最近よく耳にするワードも簡単にですがここで説明がされています。
個人的にはトランザクション管理やDBの粒度に関して勉強になりました。
4章はマイクロサービスを実現する上でのデザインパターンのうち30種類に関して図を中心とした説明がされています。
個人的には本書で一番面白くて参考になるのはこの章でした。
ただ、どの部分までがミドルウェアやサービスなどで賄える部分で、どの部分がコードに落とし込めるのかの境界がわかりにくいのでサンプルコードが欲しくなりますね・・・。
第5章
マイクロサービスにおけるインフラとなっている、コンテナ、コンテナオーケストレーション、サーバレス技術に関して説明している章です。
コンテナに関しては、Docker、オーケストレーションはkubernetesに関する説明となりますが、これらの使い方というよりは、原理や仕組みに関する説明が中心となっていて読みやすいです。
Dockerコンテナによる仮想化がLinuxのどのような仕組みで実現されているのか?といった説明もされていて興味深いです。
第6章
細分化されたマイクロサービスを管理する手法として、サービスメッシュに関して説明がされています。
サービスメッシュの役割としては下記が挙げられています。
- サービスディスカバリー(呼び出すサービスのバージョンごとのIPの特定)
- トラフィックコントロール(状況に応じた負荷分散)
- 可観測性(障害やボトルネックの検出)
- 障害の分離(障害の局所化)
- セキュリティ(認証/認可)
kubernetesと一緒に語られる事が多い、Istioなどのサービスメッシュが正直?な部分が多かったのですが、この章を読む事で概念が理解できました。
第7章
マイクロサービスを実際に開発、運用していく上で必要となる知識などがまとめられています。
DevOpsやCD/CIなどを中心にアジャイル開発的の一般的な知識と、マイクロサービス固有のツールやパイプラインなどに関して説明がされています。各種ツールチェーンの例が紹介されていて興味深いです。
第8章
マイクロサービスをデプロイする先となるクラウドサービスに関しての説明を行なっている章です。
ハイブリットクラウド、マルチクラウド、エッジコンピューティングなどクラウド関連で多く耳にするワードの解説とマイクロサービスとの解説がされています。
スポンサーリンク
まとめ
表紙とタイトルから、非エンジニア向けの書籍と思いきや、かなりエンジニア向けた本になっています。
ですが、タイトル通り絵を使った説明が多く、コードが一切ないのでかなり読みやすいです。
マイクロサービスに興味があるエンジニアはまずこれを読んでみるといいのではないかと思います。
積読になったり、昔にサラッと読んだまま放置になっているこのあたりのオライリー本も再読してみようかと思いました。