what are the components of microservices architecture