A monolithic application is single-tiered application in which the user interface and data access code are combined into a single program from a single platform.
A new application architectural style which is composed of many discrete, network-connected components, is called micro-services.Each service runs in its own process. This rule, sometimes stated as "one service per container", might be a Docker container or any other lightweight deployment mechanism
Complex Enterprise are having biggest challenge How to convert Monolithic to Micro-services Architecture ?
Incrementally refactoring of monolithic application is one of the best way which I have seen. Though it's time consuming with regards to handle both form of application at same time but less risky then Big bang change approach.
One of the Approach:
Stop Making Monolithic Bigger
Whenever new functionality is coming to your application, stop it for being implementing in your monolithic application, instead put a new code in your standalone micro-service. Create one API Gateway which will route incoming request.Gateway will route new request to micro-services and older request to Monolithic.
In initial phase , there will be need of micro service to connect with monolithic for getting existing data. Micro-service uses the glue code to read and write data owned by the monolith.Glue code will help new services to talk with existing application.This data integration can be implemented using glue code by any one of approach.
Event triggering hub
Triggering existing Monolithic API
Direct Access of Monolithic DB
Over the time , monolithic functionality will be shrink-ed as compare to micro . There are other approaches for getting rid of monolithic applications like :
Extract module from monolithic application and start converting to standalone micro-service with conjunction of splitting the presentation layer from the business logic and data access layers. Its still a explore for me.
Challenges in transition
Mono to Micro change have other challenges like :
Monitoring of both Mono & Micro systems
Building Developer Infra
Collaboration of Teams
At the end, these are some practised and outcome para-metered so its modernisation process. There will more to learn as in when enterprise will move their systems . #microservices #monolithic. Keep Learning