Modern services architecture options
A few of the architecture options for building modern services in an enterprise environment are presented below:
1) Hub and Spoke
2) Event-driven architecture
3) Hybrid Event-driven plus RPC architecture
Implementing event-based communication between microservices
The architecture diagram from below shows the Publish / Subscribe design pattern implemented as an Event Bus; microservices communicates via the Event Bus.
Observer pattern
In the Observer pattern, your primary object (known as the Observable) notifies other interested objects (known as Observers) with relevant information (events).
Publish/Subscribe (Pub/Sub) pattern
The purpose of the Publish/Subscribe pattern is the same as the Observer pattern: you want to notify other services when certain events take place.
But there is an important difference between the Observer and Pub/Sub patterns.
In the observer pattern, the broadcast is performed directly from the observable to the observers, so they "know" each other.
But when using a Pub/Sub pattern, there is a third component, called broker or message broker or event bus, which is known by both the publisher and subscriber.
Therefore, when using the Pub/Sub pattern the publisher and the subscribers are precisely decoupled thanks to the mentioned event bus or message broker.
Kubernetes Clusters brief recap
Microservices can be deployed in separate processes run and managed by new tools available in the Cloud as it is the case with Kubernetes.
Containers are more powerful and flexible than virtual machines, serving a similar purpose.
Kubernetes employs a master-slave architecture and manages multiple nodes and pods per node, where processes are deployed and running.
Some details about configuring the Kubernetes deployment.
AWS multi-tenant configuration: the application is split into services deployed across the nodes.
A few samples of enterprise integration architecture I have been working on in the last couple of years
1) Retail web application integrated with Azure Service Bus and Salesforce
Communication it is accomplished via messages posted to the Azure Service Bus queues, topics and subscriptions; the Azure functions are the services performing the work while Salesforce Marketing Cloud it is used to send notifications to the clients on their mobile devices.
2) The Reports Processing Parallel Service
The diagram from below shows how a product I have been working on has been designed; a multi-threaded architecture that generates and processes reports on-demand.
The company business analysts have the ability to access a few tens of reports and decide to view them in Excel, Power Point or PDF format.
This architecture relies on a web service that pulls data periodically via database calls and generates all the reports initiated by the users.
This web service has been split into 2 separate services and deployed as microservices into OpenShift ECS; the pods can be scaled up and down based on demand.
Below you can see a similar user experience but designed to make use of the AWS message broker system.
The diagram from above describes an AWS configuration.
3) A proposed distributed architecture for an ERP Financial client.
Below you can see another diagram showing a multi-tenant architecture using microservices I have been working on in the past.
I have posted more details about this topic in the following blog article: https://www.ideliversoft.com/post/monolithic-to-microservices
Comments