Service Oriented Architecture and Micro-Services
A service oriented architecture (SOA) is an architecture for developing complete business applications by assembling a series of reusable components each designed with connectivity in mind. SOA refers to the services at an enterprise level, while micro-services refer to the services within a single business application. The more appropriate name for SOA is Enterprise Services Architecture.
As with Lego blocks, each Lego has standardized connections so that every piece can fit with every other piece. One of the keys to a microservices architecture is that interactions occur with loosely-coupled services that operate independently of each other, and independent of any of the technology vendors' announcements of the day.
The interfaces in a microservices architecture utilize common communication standards in such a way that they can be rapidly incorporated into new applications without having to perform deep integration each time. It also means that the mega-rewrite of a system should never be necessary as you would only ever upgrade, or replace, a few components at a time.
Each microservice embodies the code and data integrations required to execute a complete, discrete business function (e.g., checking a customer’s credit, calculating a monthly loan payment, or processing a mortgage application). The service interfaces provide loose coupling, meaning they can be called with little or no knowledge of how the integration is implemented underneath. The services are exposed using standard network protocols—such as a restful webservice with JSON objects to send requests to read or change data. The services are published in a way that enables developers to quickly find them and reuse them to assemble new applications.
As with Lego blocks, each Lego has standardized connections so that every piece can fit with every other piece. One of the keys to a microservices architecture is that interactions occur with loosely-coupled services that operate independently of each other, and independent of any of the technology vendors' announcements of the day.
The interfaces in a microservices architecture utilize common communication standards in such a way that they can be rapidly incorporated into new applications without having to perform deep integration each time. It also means that the mega-rewrite of a system should never be necessary as you would only ever upgrade, or replace, a few components at a time.
Each microservice embodies the code and data integrations required to execute a complete, discrete business function (e.g., checking a customer’s credit, calculating a monthly loan payment, or processing a mortgage application). The service interfaces provide loose coupling, meaning they can be called with little or no knowledge of how the integration is implemented underneath. The services are exposed using standard network protocols—such as a restful webservice with JSON objects to send requests to read or change data. The services are published in a way that enables developers to quickly find them and reuse them to assemble new applications.
The UK Government has embraced the Enterprise Services Architecture concepts and describes it well in the following Video.
Loosely Coupled Architecture
This is not a technology feature, or a software vendor product. This is a design discipline which will preserve the investment made in the business applications as they do not have to be dependent on any specific vendor or technology.
Characteristic of a well done architecture would include:
Characteristic of a well done architecture would include:
- System to last indefinitely as the system can be continuously upgraded with new technology one component at a time
- Would not need to be re-written because of obsolete technology
- It would only require changes because the business requirements have changed
- A developer could become productive within three weeks of orientation
- Layered architecture where the User Interface, user experience, business rules, data access layer, database and points of integration are well defined and contained within their own layer
Benefits of Enterprise and Micro Services
Compared to the architectures that preceded it, Enterpise-Services and Micro-Services offer significant benefits to the enterprise:
- Greater business agility; faster time to market: The efficiency of assembling applications from reusable service interfaces, rather than rewriting and reintegrating with every new development project, enables developers to build applications much more quickly in response to new business opportunities.
- Ability to leverage legacy functionality in new markets: A well-crafted Enterprise Services Architecture enables developers to easily take functionality ‘locked’ in one computing platform or environment and extend it to new environments and markets. For example, many companies have used enterprise services architecture to expose functionality from mainframe-based financial systems to the web, enabling their customers to serve themselves to processes and information previously accessible only through direct interaction with the company’s employees or business partners.
- Improved collaboration between business and IT: Micro-services can be defined in business terms (e.g., ‘generate insurance quote’ or ‘calculate capital equipment ROI’). This enables business analysts to work more effectively with developers on important insights—such as the scope of a business process defined by a service or the business implications of changing a process—that can lead to a better result.