In the early days of software development, developers made large, monolithic applications. These applications usually were developed by a large team, all working on the same code base, and were made of code, written from the ground up, specifically for the application. Large monolithic applications were hard to maintain and scale. They took a long time to develop, and as their complexity increased, they often suffered from performance issues
As a response to this issues, service-oriented architecture, SOA was introduced. SOA provides principles to guide developers to break down the functionality of their monolithic enterprises into smaller more manageable, modular services. These services are loosely coupled and strictly encapsulates. Each service is intended as a tool that the organization or external organization can utilize to perform some task.
SOA encourage the users remove services as well as local services, they comprise the enterprise
Microservices can be thought of as a variation of SOA applied on an application scale rather than enterprise scale
Additionally, some SOA principles have been refined to better support application scale systems.
The microservice architectural style is the way of composing microservices to produce complex applications
A microservice is the process that is responsible for performing a single independent task. A microservice typically is built to perform a specific business capability. For example in an application, one microservice can be responsible for implementing a search feature. Another microservice can implement a recommendation feature. And yet another microservice can be responsible for implementing a rating feature.
Often each microservice does not obey a full layered architectural style because microservices are composed with other microservices and not always intended for end users
Presentation and application layers may not always be present, that being said, usually each microservice controls and manages its own data. As a result, the overall application will not generally follow a layered architectural style
see 'Microservices_OnlineLibrary'
Most microservices communicate with each other over the web, using communication standards and protocols such as HTTP or XML. REST interfaces are use to keep communication between microservices stateless.
A benefit of communication between microservices being independent of the implementation of each microservice is that microservices can use languages, frameworks and architectures that are best suited to the service. In other words, this means that different microservices can use different languages, frameworks and architectures, independent of what other microservices within the same application are using
- 1 more item...