How a microservice architecture works