Monolith vs Microservices: Choosing the Right Architecture