Design microservices for high availability & fault tolerance