マイクロサービスアーキテクチャは、独立したデプロイ可能性(Independent Deployability)と、密結合の回避を目指した「疎結合(Loose Coupling)」を核心とします。各マイクロサービスは通常、軽量な通信プロトコル(RESTful APIやgRPCなど)や、非同期のメッセージング(RabbitMQ、Kafkaなど)を介して通信します。最大の技術的特徴は、データベースの分割にあります。「データベースパーサービス(Database-per-service)」パターンを採用し、それぞれのサービスが独自のスキーマとデータベースインスタンスを管理します。これにより、モノリシックなシステムでよく見られた「単一のデータベース変更によるシステム全体の破壊」を防ぎます。ただし、データベースを分離することにより、システム全体でのデータの一貫性(トランザクション管理)の確保が極めて難しくなります。これに対抗するため、複数のサービスにまたがるトランザクションを最終的に一貫させる(結果整合性)ための「Saga(サガ)パターン」や、コマンド側(書き込み)とクエリ側(読み取り)のデータモデルを分離する「CQRS(コマンドクエリ責任分離)」といった高度な設計パターンが必要になります。