Migration of Monoliths through the Synthesis of Microservices using Combinatorial Optimization