How to Build a Service Oriented Architecture (SOA)
In this article we focus on the topic of Service Oriented Architecture (SOA). We start with a deep dive in 1) SOA: a description and going then to discuss 2) building a Service Oriented Architecture.
SERVICE ORIENTED ARCHITECTURE: A DESCRIPTION
What is SOA?
SOA or Service-oriented Architecture is a method through which different types of services can interact with each other independently. A service is a self-contained part of the functionality, and several services can be combined to provide use and functionality of a software application on a large scale. What SOA does is that it makes it simpler for software parts on PCs that are connected to a network to interact and cooperate. The design pattern of SOA is such that applications components in it can offer services to other such components mostly over a network. Each and every computer system can run any number of services, each of which is built to exchange information with any other different service in a network without human help.
In business terminology, SOA is a set of business-aligned IT services which together address the goals and processes of the business company. The structural design of SOA makes sure that there is an alignment with the requirements of the business as well as the technological solution of the same.
The major elements of SOA
Here are the major elements of SOA:
- SOA Drivers – SOA drivers or enterprise business drivers include things like competition, strategy, regulatory forces and market forces. All these things come together to drive the business architecture and to give a shape to business-wide performance management
- SOA enablers – The five main SOA enablers are Enterprise business model, Business performance optimization, Portfolio Rationalization, Enterprise Semantics definition and Key performance indicators. Having a business model is important for the correct alignment of services with the aims and goals of the business. The semantic information model gives the common and general business related information for a given enterprise. Key performance indicators or KPIs make the assessment of the impact of SOA possible and make the measurement of business processes easier. On the other hand, portfolio rationalization makes consolidation and simplification of applications, data and infrastructure possible.
- SOA Implementation – As far as implementation is concerned, business services and processes are the main aspects. Business processes are mostly associated with business goals and objectives of operations whereas, on the other hand, business services must be well aligned and are critical to flexible and successful SOA implementation. Some of the other aspects related to SOA implementation are Enterprise content repositories, semantic messaging and integration services. The information represents the data resources of the company, and this data is passed in the form of documents that provide a kind of semantic messages between services and processes.
- SOA Support – All the functions and elements from the existing applications and systems are made available and usable to the services with the support of some integration services that take off covers from the existing functions via new service interfaces.
The Main Principles of SOA
The following is the list of the main principles of SOA:
- Service architecture – The physical layout or design of individual services that surpass all the resources that were used by a service.
- Service composition architecture – All the services developed using service-oriented design methods are composition centric, and this is their main feature. This architecture, therefore, is the composition of individual architectures of various services.
- Service inventory architecture – This architecture is formed from the service inventory blueprint where the service inventory is made up of services that automate the procedures of businesses.
- Service-oriented enterprise architecture – This type constitutes of composition, service as well as inventory architectures.
The Evolution of SOA Concept
- Monolithic design – This design was related to relatively unstructured procedural coding
- Object and structure oriented design – This is the design that involves program units based on functionalities.
- Client-server design (two-tier design) – This is the concept of distributed design and is related to bundling of functionalities into two tiers.
- Distributed object design (multitier design) – This design involves object interactions in a heterogeneous environment and distributed object design.
- Component object model architecture – This is a design in which there is an aggregation of items into logic based parts with strongly types as well as a well-defined interface.
- Service oriented architecture – This is a design that involves interactions and communications between coarse-grained services with standard interfaces for a flexible interoperations.
SOA and JAVA
Many developers think that SOA, as well as web services, are synonymous with one another, but this is not true. They may also believe that it is just not possible to build SOA without using web services but in reality, SOA is a design principle but web services are a kind of an implementation technology. This means that SOA can be in fact built without making use of implementation technology of a certain kind. But Java is another kind of a traditional technology which can be used to develop or build Service Oriented Architecture.
The main aim of SOA is to develop a loose coupling between modules, and an application can be built where the modules are not coupled with one another too tightly. This kind of a structure can be built or formed with the help of JAVA.
What are the characteristics of SOA?
- Loose connection – The services in SOA are linked together loosely to form one connection. This gives a presupposition to the modicum of the interdependence between each service. The main idea is to reduce the interdependence to the level where compatibility is still maintained.
- The standardized services interface – One basic requirement of SOA is the need for standardization of interfaces as well as details. The details must include which data is needed, how a service can be used and how rules have to be applied.
- Reusability – In SOA, reusability of services is possible down the process chain by other parties as well and for other types of purposes also.
- Findability of a service – Another characteristic is that a service must easily be found in order to use it. To all consumers, service repositories are made available, and such repositories consist of the interface and implementation method of service.
- Service autonomy – Every service must be able to work and function independently. This term points to those services that are self-sufficient and are capable of managing resources, logic, and the environment on their own.
- Capacity for service orchestration – This is a process where an individual service is combined with other such services to result in larger business processes or units. This is a further characteristic or requirement for SOA.
- Statelessness of services – Performance of services is based on the concept that a defined service is rendered. This takes into account retention of data but only if the requirement is specified or requested especially.
Advantages and benefits of SOA
- Better returns on investment – One of the greatest benefits of SOA is that it offers a superb return on investment. Since the process involves the creation of robust layers, each of these service layers offer a better return on the investment that was done to create the software.
- Code mobility – This is yet another important benefit of SOA and is possible because there is a location transparency in Service Oriented Architecture. Most clients do not care where the services are located because there is a dynamic binding as well as the lookup to services. This means that the businesses using SOA can move services to different machines or move it to external service providers.
- The reusability – Another advantage of SOA is that the various codes and services can be used over and over again. There is the convenience of run-time service reuse, and it is as easy as finding a service in the directory and binding to it. The developers do not have to worry about platforms and other incompatibilities.
- Support for various client types – Any company can use multiple client types and multiple clients to access a service in SOA. This is because in such a structure or concept, the layers have been divided into service, and client layers and various client types are simpler to implement.
- A higher level of availability – Several servers have several cases of services using them due to the fact that SOA support location transparency. This means that the overall availability is very high. For example, if a machine or a part of a network stops working or has some issue, the requests can be redirected to other services without the client knowing it or being bothered by it.
- Fewer defects – This is a major advantage of SOA. The probability of defects is much lower, and the overall testing is a lot better due to published interfaces of services that can be tested easily. More testing translates to a greater level of accuracy and fewer defects.
- Lack of Testing Space – One of the biggest challenges in SOA is the lack of testing space. In a typical architecture, there are no well-formed or sophisticated tools or methods to test a headless service such as a message or database service. The main objective of SOA is to offer agility to companies and businesses. But due to lack of horizontal trust, one needs to invest in a testing framework that would make the challenge easier.
- Manage Services Metadata – This is a common and very obvious challenge of SOA. Managing the services metadata is not just tough but often very complicated. A service based architectural space involves services interacting with each other by exchanging message. In such a scenario, a single services may sometimes have millions of messages generated. Managing these many services can become very difficult especially when the services are delivered by different companies and departments within a company. This creates many trust issues.
- Providing right levels of the security – Another challenge of SOA is providing appropriate levels of security. The application-managed security is not the correct method or model for securing services because security models designed into applications cannot suffice when the application shows itself to others.
- Interoperability – This becomes a crucial aspect of SOA implementations. Often, in the pursuit to reduce or decrease the interdependence of services, the compatibility between them may reduce but the dependence has to be reduced to such a level that compatibility can still be maintained.
- Vendor hype – There is a significant vendor hype related to SOA, and this creates a certain level of undue expectations. While there are many advantages of SOA, it can have several disadvantages as well. For example, SOA does not guarantee a reduction in IT costs and does not even promise improvement in agility of systems. Thus, it would be better if there was a clear distinction between hype and reality.
BUILDING A SERVICE ORIENTED ARCHITECTURE
To understand how SOA is built, you will first need to understand what its framework is.
SOA is viewed as 5 different horizontal layers which are:
- Consumer interface layer-These are the apps that access service or app interfaces.
- Business process layer-This is a layer that is a service that represents business use-cases as far as applications are concerned.
- Services – Many services are clubbed together for creating a whole enterprise.
- Service components – These are those components or parts that are used to build services like technological interfaces and technical libraries, etc.
- Operational systems – This is the layer that contains technical patterns, data models, and data repository, etc.
The following are the vertical layers of SOA framework which are applied to and supported by the horizontal ones:
- Integration layer – This layer consists of protocol support or platform integration, data integration, application and service integration, etc.
- Quality of service – The factors that comprise of the quality of service include availability, security, performance and others.
- Informational – This layer mainly does the job of providing business related information.
- Governance – This layer or IT strategy layer is governed by horizontal layers in order to reach capability, as well as operating model, as needed.
SOA Implementation Framework (SOAIF)
SOA implementation needs and requires run-time infrastructural software as well as tools. This can be collectively referred to as service-oriented architecture implementation framework or SOAIF. This concept aims for a comprehensive framework that offers all kinds of technology which a business may require to not only build but also run SOA. An SOAIF consists of and includes both run-time and design-time capabilities. It also includes software functionality that a company may need to run an SOA and also build it, including service-oriented:
Approaches to SOA
There are three major types or methods or approaches that have been emerging for club information, disparate and systems in a business. As different service providers and businesses race towards providing solutions to customers and consumers, these approaches help to meet the requirements for coarse-grained, loosely clubbed and asynchronous services.
1. The Enterprise Service Bus
The first approach that helps to build and implement an optimal SOA is the enterprise service bus or ESB. This approach helps to coordinate and arrange the different elements that are in the form of distributed services on a network. This approach considers the systems to be discrete and distributed services that connect to one another through message oriented infrastructure that is asynchronous. This kind of a message-oriented infrastructure makes it possible to have loosely coupled connections between independent services or modules.
2. Business Process Management
Many companies, for many years now, have tried to solve business process problems by the implementation of Business Process Management approach. This approach takes into consideration the IT assets and systems as activities or tasks that participate in well synchronized and well-orchestrated business procedures. BPM tools are mainly used at the time of modeling and designing procedures rather than using them to construct processes that can reach integration objectives. This is the main challenge of BPM. By BPM solutions on their own are enough to meet SOA requirements because they do not consist of the runtime environment that is needed for loosely coupled modules.
3. Service Oriented Integration
The third and the last approach to proper implementation of SOA is the service-oriented integration approach. This particular approach makes use of the architectural guiding rules or principles to build an environment or ecosystem of services that businesses can combine dynamically and create superior level processes that can meet ever changing and evolving requirements. This approach moves past tightly coupled and brittle modules by creating a distinction between the consumer and producer of a service. It thus imposes the aspect of loose coupling that is needed to implement SOA properly to meet business requirements. Even this approach by itself isn’t sufficient to guarantee long time running interactions between services.
The Best practices for building an SOA
While building an SOA, one must follow some of the best and most advantages practices. These practices are given as follows:
- Implementation technologies are much hyped, and one must remember not to jump to them because of their popularity. One must consider carefully whether or not the web services make more sense for their requirement and need. It is important to remember that building service-oriented applications by making use of technologies like RMI may be more suitable for a business’s case rather than web services.
- One must remember not to create or build very tightly linked or coupled modules as this leads to a brittle set up or infrastructure.
- It is important to maintain interoperability and for these, one must follow the WS-I best practices.
- If you don’t see any sense in using web services, then there are many other alternative options as well which can be chosen.
In San Francisco (CA), we meet Co-Founder of Crittercism, Andrew Levy. Andrew talks about his story …