Sobes.tech
Senior

How will the architecture change if the service runs in a cluster (multiple instances)? What will happen to Postgres, Redis? How to ensure database fault tolerance?

sobes.tech AI

Answer from AI

When a service transitions to operate within a cluster (multiple instances), the architecture becomes distributed. This affects the state, synchronization, and interaction of components:

  • Service: Multiple instances of the service run in parallel, usually behind a load balancer. It is important for the service to be stateless or for the state to be stored outside the instances (e.g., in a database or cache).

  • Postgres: In a classic configuration, Postgres is a single point of failure. For fault tolerance and scaling, replication (master-slave), automatic failover, and clustering (e.g., Patroni, Pgpool-II) are used. This ensures high availability and read load balancing.

  • Redis: Redis in a cluster is usually deployed with replication and Sentinel for monitoring and automatic failover. Redis Cluster can be used for data sharding and scaling.

Ensuring database fault tolerance:

  1. Configure replication for backups and load distribution.
  2. Use automatic failover (Patroni, PgBouncer, Pgpool-II for Postgres; Sentinel for Redis).
  3. Regular backups and recovery testing.
  4. Monitor cluster health and set up alerts.

Thus, the architecture becomes more complex but provides scalability and fault tolerance.