Building a Microservices-based ERP System

June 23, 2017

Speaker: Jerry Reghunadh, Architect, CAPIOT Software Pvt. Ltd. 
Level: 200 (Intermediate)
Track: Microservices

One of the leading assisted e-commerce players in India approached CAPIOT to rebuild their ERP system from the ground up. Their existing PHP-MySQL setup, while rich in functionality and having served them well for under half a decade, would not scale to meet future demands due to the exponential grown they were experiencing.

We built the entire system using a microservices architecture. To develop APIs we used Node.js, Express, Swagger and Mongoose, and MongoDB was used as the active data store. During the development phase, we solved several problems ranging from cross-service calls, data consistency, service discovery, and security.

One of the issues that we faced is how to effectively design and make cross-service calls. Should we implement a cross-service call for every document that we require or should we duplicate and distribute the data, reducing cross-service calls? We found a balance between these two and engineered a solution that gave us good performance.

In addition, our current system has 36 independent services. We enabled services to auto-discover and make secure calls.

We used Swagger to define our APIs first and enforce request and response validations and Mongoose as our ODM for schema validation. We also heavily depend on pre-save hooks to validate data and post-save hooks to trigger changes in other systems. This API-driven approach vastly enabled our frontend and backend teams to scrum together on a single API spec without worrying about the repercussions of changing API schemas.

 

What You Will Learn:

How we used Swagger and Mongoose to off-load validations and schema enforcements. We used Swagger to define our APIs first and enforce request and response validations and Mongoose as our ODM for schema validation. We also heavily depend on pre-save hooks to validate data and post-save hooks to trigger changes in other systems. This API-driven approach vastly enabled our frontend and backend teams to scrum together on a single API spec without worrying about the repercussions of changing API schemas.

How microservices and cross-service calls work. One of the issues that we faced is how to effectively design and make cross-service calls. Should we implement a cross-service call for every document that we require or should we duplicate and distribute the data, reducing cross-service calls? We found a balance between these two and engineered a solution that gave us good performance.

How we implemented microservice auto discovery: Our current system has 36 independent services, so we enabled services to auto-discover and make secure calls.

Previous Presentation
Private Cloud Self-Service at Scale
Private Cloud Self-Service at Scale

Speaker: Jay Runkel, Principal Solution Architect, MongoDB Speaker: Jayson Hurd, Comcast Level: 200 (Inte...

Next Presentation
A Customer-Centric Banking Platform Powered by MongoDB
A Customer-Centric Banking Platform Powered by MongoDB

Speaker: Alan Reyes Vilchis, Technical Lead, Banco Azteca Level: 200 (Intermediate) Track: Developer Busin...