読者です 読者をやめる 読者になる 読者になる

こすげのブログ

金髪エンジニアのブログ

【読書】マイクロサービスアーキテクチャを読みました

はじめに

マイクロサービスアーキテクチャを読みました。

最初はiOSの設計で役立てられるかなと思い、またマイクロサービスという言葉に興味があったので購入しました。

結論から言いますと、iOSに限らず、もっと最初に考える設計の部分で気づきを得られました。

マイクロサービスアーキテクチャを実施する上で大切なことが書かれていましたので、備忘録程度にまとめておきます。

マイクロサービスアーキテクチャ

マイクロサービスアーキテクチャ

目次

以下のようになっています。

目次

はじめに

  1. マイクロサービス

  2. 進化的アーキテクト

  3. サービスのモデル化方法

  4. 統合

  5. モノリスの分割

  6. デプロイ

  7. テスト

  8. 監視

  9. セキュリティ

  10. コンウェイの法則とシステム設計

  11. 大規模なマイクロサービス

  12. まとめ

モノリスという単語が出てきて、モンスターファームを思い出しました。

簡単なまとめ

全部の章を分割して書くとすごい量になるので、全体的なまとめを書きます。

本自体の話

ページ数でいうと約300ページほどです。

多すぎず、少なすぎずな量で結構あっさり読めました。

だいたい会社に向かう電車の40分の往復時間で読書して、1週間程度で読み切れました。

実践とは程遠く、考え方に重点を置かれているためソースコードはほとんど無い印象でした。

ただDBやらロードバランサーやらといったワードが当たり前のように出てくるので、それが何を指すのかを知っておいた方がよろしいかと思います。

本の中身の話

いたってシンプルで、マイクロサービスアーキテクチャを導入するメリット、デメリットを各章の要点に合わせて書かれています。

またマイクロサービスと対をなす言葉としてモノリシックという用語を用いられています。

モノリシックとは

モノリシック

一般的には、「一体となっている、一枚岩的なもの(組織)」を表わす。集積回路モノリシック回路(monolithic circuit)一個の半導体結晶上に作られた集積回路オペレーティングシステムモノリシックカーネル(monolithic kernel)カーネル本体と周辺装置に依存したデバイスドライバーなどが一体となっているカーネルUNIXの古いアーキテクチャーでは、モノリシックなカーネルになっていたため、周辺装置の変更に伴うデバイスドライバーの組み替えでは、必ずカーネルの再構築が必要であった。。

モノリシックとは - コトバンク より

デプロイする場合、テストする場合など各章ごとに語られています。

ただ、最後のまとめでマイクロサービスアーキテクチャを導入しない方がいい場合という項があり、またそれも興味深かったです。

感想

簡単に述べますが

  • サービスのどこの部分が肝で
  • どういうユーザー体験をもたらしたいか
  • どこを運営で管理しなければならない(したい)のか
  • どこの部分がアクセス負荷が上がるのが

を知らないと組めない設計だなと思いました。

単純に今あるサービスを分ける、ということをするだけでは確実に苦労して終わるだけだと思います。

やはりエンジニアも上流工程から参加しなければ、いいサービス設計はできないなと感じました。

また、結構大規模な改修になることが必須なので、権限持つ人でないと厳しいのかなと思いました。

小さいサービスを量産する際に、最初はスピード勝負でモノリシックに開発し、その後少しづつサービスを切り出していくこといい体験になると書かれていました。

iOSアプリの開発にどう生かすか

これを読もうと決心した理由の一つに新規機能開発時にサーバー側がマイクロサービスアーキテクチャを採用したことにあります。

そのため、アクセスするAPIドメインが増えましたが、ソースコードも書きやすく(責任を分けやすい)楽だった印象を持ちました。

iOSでのマイクロサービスアーキテクチャというとFoursquareみたいにチェックインとSNSを分けたみたいなアプリを分割することに当たりそうなので簡単には挑戦できませんが、いろいろ幅広く考えられそうな気がしています。

終わりに

本棚にあっていいなと思う本でした。

マイクロサービスアーキテクチャ

マイクロサービスアーキテクチャ

あとkindleで読みたいなって思いました。

OREILLYも早くKindleに対応してほしいなと思いました。

以上になります。