どこまでもスケールしていけるような、コーディネータを用いたマイクロサービスアーキテクチャを考えた。実際のサービスではこのような構成は無駄に複雑であるため、実用には耐えないことが肌感としてある。できれば個人で運用しているサービスをこの構成にしてみて、適応した時に何が起きるのかを確認してみたいように思う。ただそれにはそれなりの時間が必要で現在はその時間を捻出できない。とりあえず考えたアーキテクチャを図にし供養することにした。もしも夏休みを得る機会があるなら、試してみたいと思う。
+---------------+ +---------------+ +---------------+
| | | | | |
| Reverse Proxy +<--------------------------------+----------+ Micro Service | | Micro Service |
| | | | Coodinator +-----+----->+ |
| +---------+ | +--->| (Transaction) | | | |
| | | | | | | | | |
+------------+--+ | | | +----+----------+ | +---------------+
Request ID | | | | | |
Data | | | | | |
Porxy URI | +------------------------------|---------------+ |
v | | | | |
+------+-----+--+ | +-----------+ | | | +---------------+
|{s} | | |{s} | | | | | |
| InMemory | +-->+ EventBus +-------|-----+ | | Micro Service |
| Cache | | | (Cluster?)| | | +----->+ |
| Cluster | | | | | | | | |
+------+-----+--+ | +-----------+ | | | +---------------+
^ | | | | |
| -------------------------------|---------------+ |
| | | | | |
| | | | | |
+------------+--+ | | | +---------------+ | +---------------+
| | | | | | | | | |
| Reverse Proxy +---------+ | +--->+ Micro Service | | | Micro Service |
| | | | Coodinator +-----+----->+ |
| +<--------------------------------+----------+ (Transaction) | | |
| | | | | |
+---------------+ +---------------+ +---------------+