Monolithic vs Microservice Architecture: Which To Use and When?