Breaking Down the Monolith: Best Practices for Creating Microservices