“Microservices are nothing more than service-oriented architecture (SOA) done properly.”
- Randy Shoup’s from YOW15
https://pixabay.com/illustrations/mark-marker-hand-write-glass-804938/
Modern software packages need to be reliable, available, secure, self-healing and robust. The latest software packages are based on microservices architecture. The architecture needs to be based on scalable, performant and reactive microservices. Scalability and Performance are handled in most of the architecture patterns based on microservices. Reactive microservices are related to resilience in the architecture to handle failure and responsiveness of the system to recover from failure. The scalable and performant microservices will have features such as timed and size batching, callbacks, data leasing, call interception handle data faulting due to storing the service and elasticity.
Microservices are designed, developed, released, deployed and maintained by the developers as individual components. The components might get retired based on the feature retirement or withdrawal from the system. Reactive system architecture uses asynchronous messaging patterns to handle resilience in the architecture.
Microservices architecture
Microservices are typically simple and handle a single task. These services can be developed by using frameworks and tools for a specific task. The systems based on the microservices are loosely coupled. The development of these microservices can be done parallel during the agile software releases. Microservices help in delivery and having successful multiple releases. The releases can be ensured not to break the stability of the system during the release process.
The microservices architecture, which is scalable, performant and reactive, requires a monitoring and management framework. These services need to be available and up and running in the production environment. The environment needs to be highly available and have the capacity to handle memory, disk space, and processing of the data. The system interfaces are modeled as components and interfaces as the contracts. The microservice components will have the message formats for requests and responses.
Maintenance of the contracts needs the capability of the microservices for versioning and handling changes in the semantics of the contract. The cross-cutting modifications in the system propagates changes in all of the microservices.
The code sample shows the Job scheduler service configured as a micro service. The implementation details are given in the article regarding the
job scheduler service used by the broker.