Sekretariat DPR has lots of internal applications serving an enormous number of business cases such as budgeting, human resource, document management, etc. While it’s already working perfectly, the framework used to build the app is outdated, no security patched and no support.
As per their grand plan in the next couple of years to build one super app that can communicate between other services, scalable and maintainable, they need to move the application from monolithic platform to micro service.
Monolith and Outdated Framework
More than 100 applications were built using outdated frameworks with no security updates over the years. Monolith design itself has its own drawback such as:
Monolithic designs can become unwieldy as the code base grows, making it difficult to scale the application horizontally or vertically.
As the codebase becomes larger, it becomes more difficult to maintain and update the application.
Monolithic designs can become complex due to the presence of many interdependent components, making it difficult to identify and resolve issues.
No Standard Design Pattern
As the team grows, there is no guideline or standardize how they should write a code, this will result in hard to debug as the team needs a complete understanding of the entire codebase.
We take a step by step approach by breaking the application into micro services. First step is to redesign and rebuild the application to meet the new standards one by one.
We follow clean architecture to separate the application into multiple layers; Data Layer, Domain Layer and Presentation Layer using the SOLID principles approach. On top of that we use GraphQL to handle communication between applications and services.
Revisiting databases is also a crucial part of this project. We removed column duplication, rechecked the database index, and normalized tables if they needed to be normalized. A full migration then is performed application by application.
W3C AA Standard