Microservices間通信における堅牢性原則

Microservicesを開発していく上で、堅牢性原則に則る方がそれぞれのサービスがより自律的になることがある。まずは堅牢性原則、Microservicesについて簡単に説明する。

堅牢性原則

堅牢性原則(Robustness Principle)とは、TCP/IP, SMTP, DNS, FTP, Telnetなどの開発者であるJon Postelが提唱した設計原則である。「送信するものに関しては厳密に、受信するものに関しては寛容に」という原則である。
TCPを規定した RFC793 において、相互運用性を担保するための性質を要約した以下の節が一般化されたようである。

Microservices

マイクロサービスアーキテクチャ』にマイクロサービスとは「協調して動作する小規模で自律的なサービス」であると定義されている。メンテナンス性の高さ、デプロイのしやすさ、スケーラビリティの高さ、障害の分離のしやすさなどがメリットとして挙げられる。
自律的であるためには、それぞれのサービスは凝集度が高く、結合度が低くなっている必要がある。自律的でないと、機能を追加したり、修正する際に複数のサービスに対してコードの追加・修正が発生し、単一サービスを独立してデプロイすることができなくなる。

Microservicesへの堅牢性原則の適応

堅牢性原則に則り、「受信するものに関して寛容にしておく」ことで、あるサービスのAPIを修正した際に、そのAPIを呼んでいる別のサービス群を修正せずに済むケースがある。容易に実践できるものが2つある。

参考

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

Software engineer

Software engineer