バックエンド・API・データ · 上級

一つのサービスか多数か:いつ分割するか

一行でいうと: よく整理された一つのシステムから始める。本当の痛みがあるときだけ分割する——チームが互いをブロックしているか、異なるスケールが必要なコンポーネント。

モノリスが汚い言葉でない理由

一つのシステムはデプロイ、デバッグ、ドメイン横断の変更がより簡単だ。早期に分割されたほとんどのプロジェクトは、分割のコスト全体を受け取った——ネットワーク、バージョン、分散監視、一貫性——何かの恩恵を受ける前に。

時が来たサイン

チームが互いを待つためにブロックされたリリース;完全に異なるリソース要件を持つコンポーネント;別の可用性レベルや規制が必要な部分;エリア間の非常に異なる変更率。

十分でないサイン:「今日はそうやって構築するから」。

正しく分割する方法

技術的なレイヤーではなくビジネス境界によって。各サービスは自分のデータを保持し、別のサービスのデータベースを呼び出さない。明示的なコントラクトを通じたコミュニケーション、可能な場所での同期呼び出しではなくイベント。

分割する前に、境界がモノリス自体の中で機能することを確認する:よく分離されたモジュールは安い予行演習だ。

さらに深く

分割にはインフラが必要だ:分散トレーシング、サービスごとの監視、設定管理、エラーとリトライの共有標準。そのインフラが存在しない場合、分割はペースの問題を解決せず、運用の問題に置き換える。