バックエンド・API・データ · 上級
一つのサービスか多数か:いつ分割するか
一行でいうと: よく整理された一つのシステムから始める。本当の痛みがあるときだけ分割する——チームが互いをブロックしているか、異なるスケールが必要なコンポーネント。
モノリスが汚い言葉でない理由
一つのシステムはデプロイ、デバッグ、ドメイン横断の変更がより簡単だ。早期に分割されたほとんどのプロジェクトは、分割のコスト全体を受け取った——ネットワーク、バージョン、分散監視、一貫性——何かの恩恵を受ける前に。
時が来たサイン
チームが互いを待つためにブロックされたリリース;完全に異なるリソース要件を持つコンポーネント;別の可用性レベルや規制が必要な部分;エリア間の非常に異なる変更率。
十分でないサイン:「今日はそうやって構築するから」。
正しく分割する方法
技術的なレイヤーではなくビジネス境界によって。各サービスは自分のデータを保持し、別のサービスのデータベースを呼び出さない。明示的なコントラクトを通じたコミュニケーション、可能な場所での同期呼び出しではなくイベント。
分割する前に、境界がモノリス自体の中で機能することを確認する:よく分離されたモジュールは安い予行演習だ。
さらに深く
分割にはインフラが必要だ:分散トレーシング、サービスごとの監視、設定管理、エラーとリトライの共有標準。そのインフラが存在しない場合、分割はペースの問題を解決せず、運用の問題に置き換える。