(+84) 934 06 06 00
Monday to Friday: 7AM - 7PM
Weekend: 10AM - 5PM
Have you ever suffered the pain when you have to export something from your department’s application and then bring it to another department over and over again? One of the most effective ways to ease that pain is to automate the process between the applications and connect them together – on the other hand, to integrate them. Application integration at a basic level is to connect multiple independent systems, however, they often seem to be complex. That is the reason why organizations tend to choose the integration platforms that are capable of doing those complex requirements. Nowadays, instead of the on-premises services, we provide an enterprise integration solution, based on Azure cloud services.
Our client is a product distribution corporation that runs its business based on the global e-commerce systems. During the operation, the organization has to deal with plenty of problems coming from the distributed inventory, ERP, test labs and the e-commerce systems (e.g.: Amazon, its website, etc.) as the data in these systems are independent and hard to manage. As a result, they are in a need of building a system that can integrate all of the above systems to make sure it can operate stably and scalable. On top of that, there are a few legacy systems that are outdated, so we decided to implement a system with an Anti-Corruption Layer pattern to protect them from failure. Below is the sample architecture that describes how we designed and solved the problem.
The architecture in the workflow diagram above is a case study that we used to build an enterprise integration system. That architecture uses the .NET applications to orchestrate workflows which deployed to Service Fabric Cluster and most recently, we worked on Kubernetes.
We used API Management to create catalogs of APIs and the API gateway will accept HTTP requests and route them to the backend.
That architecture is focused on microservices architectures. A microservice is a small, independently versioned unit of code. Each service is self-contained and should implement a single business capability.
Services. A service performs a standalone function that can start and run independently of other services. We used two varieties of service:
For the communication across services, we also apply the Azure Service Bus that helps make the system more reliable and scalable. Asynchronous communication use a message broker that provides a number of advantages over making direct, synchronous calls to backend services:
Monitoring. We use a feature called Azure Monitor – Application Insights. It is a powerful service that helps us to monitor our live applications, automatically detect performance anomalies, and provide us with analytics tools to trace and investigate the issues. The Application Insights supports us various types of functions:
In particular, we implement a service that extracts all the data from Application Insights to provide the client a tool that can be used to monitor failure cases such as failed orders, failed to import inventory, etc, and enable the ability to retry them manually.