Consider a legacy system coded in C and running on multiple mainframes.
It has been running for years
without any major hiccups and delivers the core competency of the business reliably. Should you attempt to rewrite the code to accommodate new features? A gradual approach is recommended because new microservices can be tested quickly without interrupting the reliability of the current monolithic structure. You can easily use microservices to create new features through the legacy API. Another approach is to modularize the monolithic architecture so that it can still share code and deployments, but move modules into microservices independently if needed. Boris Scholl, Principal Program Manager for Azure Compute at Microsoft, told his panel discussion audience at Appsphere 15 that Microsoft uses two approaches. Azure is a completely open platform which runs almost everything, including rivals like Red Hat and Kubernetes. In addition, the Azure service fabric adds a layer on top that provides rapid management and orchestration, as well as reliable actors and collection.