Microservices Architecture and Design Patterns