We did an MVP of MOOVE on Ruby on Rails. As we proved outcomes and incrementally added capabilities, the ROR monolithic system became too large to deal with.
Instead of a Big Bang rewrite, we decided to incrementally refactor our monolith and started to break it down into a microservices architecture last summer. It has been a worthwhile journey, but not an easy one.
Initially, we handpicked a few large services that were not dependent upon the remaining monolith and ensured that each step of migration resulted in an atomic improvement to the overall architecture.
There were three Micros Services in MOOVE that were carved out from the ROR Monolith for performance and manageability reasons.
- Location and Map Matching Service
- Auto Clustering Service
- and the Analytics and Dashboard Service.
With these microservices, ROR Monolith was broken into independent services to run as separate processes and act as separate entities. This enabled Scalability as each service became a separate component, that could be scaled up without having to scale the entire system.
One of the other advantages of microservices is the flexibility to use the right tool for the right task. So each service could use its own language, framework, or ancillary services while still being able to communicate easily with the other services in your application.
We decided to write two of them, Location and Map Matching, and Auto Clustering services in GoLang , and chose Java to write the Analytics service.
Members: please use the Link(s) below to download the document.
Don’t see the Link(s) above? Please Sign-in / Register as a Member.