SEKRETARIAT DPR RI

From Monolith to Microservices

OVERVIEW

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.

The Brief

We were briefed to re-architect the current application into an app that is more scalable, easier to maintain, and independent to one another. The new system must also become the base standard for other applications and third party vendors.

Challenges

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:

Scalability
Monolithic designs can become unwieldy as the code base grows, making it difficult to scale the application horizontally or vertically.

Maintenance
As the codebase becomes larger, it becomes more difficult to maintain and update the application.

Dependencies
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.

SOLUTION

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.

Key Features

Clean Architecture
SOLID Principle
GraphQL
Database Restructuration

Standard Features

Oauth 2.0
W3C AA Standard
OWASP Standard