You are on page 1of 2

In our days enterprise software design tends to lean more towards microservice which is really good.

When we build an ERP or such large scale software we can develop each module as a separate
microservice. Benefit is to make service independent to sell it as a separate service.

When I work on any enterprise software I really prefer to follow the above Architecture diagram.
Though I have not put all necessary components here but I believe it is sufficient to depict the main idea.
Here any client app whether it is mobile or web app, it will go and talk to API Gateway (through Load
Balancer which is not shown here), which is a kind of proxy server that decides where to forward the
http request. Request will come to relevant microservice through another load balancer. Of course
requests will be authenticated by token and the token will be provided by the Identity/Authentication
service.

In Microservice architecture each microservice should have its own Database or at least separate DB
models. We can also use distributed caching like Redis in case it really helps in performance. So caching
may not be mandatory.

Like Authentication service, there are some other cloud services that are very common to use for push
notification, message queuing, emailing, etc. It might be alluring to use these services from AWS or
Azure.
One important thing is missing here that is very common to companies who have huge amount of data.
When we have that much data, then we can bring all microservice data to one datawarehouse. Then it
also opens door to do Analytics on all data.

If company does not have its own data center then cloud services provided by Amazon, Microsoft and
Google could be utilized. But of course it will not be desirable to use different services from different
vendors. Rather we should choose any one IaaS/PaaS provider and utilize all required cloud services
from that specific vendor.

You might also like