KDOC 491: 『マイクロサービスアーキテクチャ』

この文書のステータス

  • 作成
    • <署名>
  • レビュー
    • <署名>

概要

メモ

  • マイクロサービスはサービス指向アーキテクチャ(SOA)の一種である。サービス境界の引き方については意見が分かれるところですが、独立してデプロイできるのが重要である(p3)
  • 独立デプロイ可能性を実現したい場合、データベースの共有は最悪なことの1つである(p9)
  • システムのすべての機能をまとめてデプロイしなければならない場合、モノリス、だという(p15)
  • モジュラモノリス: 各モジュールで独立して作業できるが、デプロイするにはすべてを結合する必要がある。多くの組織で優れた選択肢で、マイクロサービスアーキテクチャの課題を回避しながら高度な並列作業ができる(p17)
    • 課題の1つとして、コードレベルで行われるような分解が、データベースにおいては行われない傾向がある(p17)
    • モジュラごとに分解したデータベースを使うモジュラモノリスもある
  • 人々はモノリスを避けるべきもの、本質的に問題があるもの、と考えるようになっている。モノリシックアーキテクチャは1つの選択肢であり有効である(p19)
  • 100万行のモノリシックアプリケーションのうち1行を変更したら、その変更をリリースするためにアプリケーション全体をデプロイする必要があるようなデプロイは、影響が大きく危険性の高いものになる可能性がある(p26)
  • 分散システムでは複数プロセスが異なるデータベースで状態を管理する。データ一貫性の観点で課題が発生する可能性がある(p33)
  • 安定したサービス境界を定義することの重要性を考えると、マイクロサービスアーキテクチャは新製品やスタートアップにとって向いてないことが多い。開発するにつれて、作業するドメインが大きく変更されるのが一般的である。ドメインモデルがじゅうぶん安定するまで待ってからサービス境界を定義するほうが適切である(p33)
  • 凝集を説明する簡潔な定義: 一緒に変更され、一緒に存在するコード(p40)

関連

なし。