Pragmatic Approaches to Designing and Implementing Microservices