A Look At the Nuts and Bolts of Service-Oriented Architecture
Service-Oriented Architecture (SOA) is a style of software design where services are provided to the other components by application components, through a communication protocol over a network. Its principles are independent of vendors and other technologies. In service oriented architecture, a number of services communicate with each other, in one of two ways: through passing data or through two or more services coordinating an activity. This is just one definition of Service-Oriented Architecture. An article on Wikipedia goes into much more detail.
Characteristics Of Service-Oriented Architecture
While the defining concepts of Service-Oriented Architecture vary from company to company, there are six key tenets that overarch the broad concept of Service-Oriented Architecture. These core values include:
Business value
Strategic goals
Intrinsic inter-operability
Shared services
Flexibility
Evolutionary refinement
Each of these core values can be seen on a continuum from older format distributed computing to Service-Oriented Architecture to cloud computing (something that is often seen as an offshoot of Service-Oriented Architecture).
Service-Oriented Architecture Patterns
There are three roles in each of the Service-Oriented Architecture building blocks: service provider; service broker, service registry, service repository; and service requester/consumer.
The service provider works in conjunction with the service registry, debating the whys and hows of the services being offered, such as security, availability, what to charge, and more. This role also determines the service category and if there need to be any trading agreements.
The service broker makes information regarding the service available to those requesting it. The scope of the broker is determined by whoever implements it.
The service requester locates entries in the broker registry and then binds them to the service provider. They may or may not be able to access multiple services; that depends on the capability of the service requester.
Implementing Service-Oriented Architecture
When it comes to implementing service-oriented architecture (SOA), there is a wide range of technologies that can be used, depending on what your end goal is and what you?re trying to accomplish.
Typically, Service-Oriented Architecture is implemented with web services, which makes the ?functional building blocks accessible over standard internet protocols.?
An example of a web service standard is SOAP, which stands for Simple Object Access Protocol. In a nutshell, SOAP ?is a messaging protocol specification for exchanging structured information in the implementation of web services in computer networks. Although SOAP wasn?t well-received at first, since 2003 it has gained more popularity and is becoming more widely used and accepted. Other options for implementing Service-Oriented Architecture include Jini, COBRA, or REST.
It?s important to note that architectures can ?operate independently of specific technologies,? which means they can be implemented in a variety of ways, including messaging, such as ActiveMQ; Apache Thrift; and SORCER.
Why Service-Oriented Architecture Is Important
There are many benefits to service-oriented architecture, especially in a web service based business. We?ll outline a few of those benefits here, in brief:
Use Service-Oriented Architecture to create reusable code: Not only does this cut down on time spent on the development process, but there?s no reason to reinvent the coding wheel every time you need to create a new service or process. Service-Oriented Architecture also allows for using multiple coding languages because everything runs through a central interface.
Use Service-Oriented Architecture to promote interaction: With Service-Oriented Architecture, a standard form of communication is put in place, allowing the various systems and platforms to function independent of each other. With this interaction, Service-Oriented Architecture is also able to work around firewalls, allowing ?companies to share services that are vital to operations.?
Use Service-Oriented Architecture for scalability: It?s important to be able to scale a business to meet the needs of the client, however certain dependencies can get in the way of that scalability. Using Service-Oriented Architecture cuts back on the client-service interaction, which allows for greater scalability.
Use Service-Oriented Architecture to reduce costs: With Service-Oriented Architecture, it?s possible to reduce costs while still ?maintaining a desired level of output.? Using Service-Oriented Architecture allows businesses to limit the amount of analysis required when developing custom solutions.
How Service-Oriented Architecture And Cloud Computing Work Together
First, it?s important to note that Service-Oriented Architecture can work with or without cloud computing, although more and more businesses are moving file storage to the cloud so it makes sense to use cloud computing and Service-Oriented Architecture together.
In a nutshell, using cloud computing allows users to easily and immediately implement services tailored to the requirements of their clients, ?without needing to consult an IT department.?
One downfall of using Service-Oriented Architecture and cloud computing together is that some aspects of it are not evaluated, such as security and availability. When using cloud computing, users are often at the mercy of the provider.
There is one fairly major challenge businesses face when merging cloud computing and Service-Oriented Architecture is the integration of existing data and systems into the cloud solution. There needs to be continuity from beginning to end in order for there to be a seamless transition. It?s also important to keep in mind that not every IT aspect can be outsourced to the cloud ? there are some things that still need to be done manually.
You can read more about how service-oriented architecture and cloud computing work together right here.
The Difference Between Service-Oriented Architecture and SaaS
We?ve talked quite a bit about what Service-Oriented Architecture is and how it can be used to advance your business. But there?s also SaaS (Software as a Service), which can also be used to advance your business. You may be wondering what SaaS is and how it differs from Service-Oriented Architecture. In brief, the resources available through SaaS are software applications. A key component is that the SaaS infrastructure is ?available to, but hidden, from users.? An advantage of SaaS is that users don?t have to both install and maintain software, which eliminates any complex requirements. With SaaS, the customer also doesn?t require any up-front licensing, which leads to lower costs because providers are only maintaining a single application.
Differences Between Service-Oriented Architecture and Microservices
Microservices, also known as Microservice Architecture, is an ?architectural style that structures an application as a collection of small autonomous services, modeled around a business domain.?
While microservices and Service-Oriented Architecture are similar in some ways, the key differences come in their functionality. Services is, obviously, the main component of both. There are four basic types of services:
Functional service: these define core business operations
Enterprise service: these implement the functionality defined by the functional services
Application service: these are confined to specific application content
Infrastructure service: implements non-functional tasks such as authentication, auditing, security, and logging
As you can see, each of these services builds on the one before it, creating a system that is not only easy to use, but provides you with a variety of ways to manage your business. As with any functionality, it?s a matter of figuring out what works best for you and your business.
You can read more about service-oriented architecture and microservices here.
Some Final Thoughts On Service-Oriented Architecture
As you can imagine, service-oriented architecture can be a bit of a tough nut to crack, but once you understand the nuts and bolts of it and the benefits it can provide your company, you?ll be thrilled you discovered it.
We have provided several excellent service-oriented architecture resources throughout this article and have a couple more articles forthcoming that will take a deeper dive into the concept and provide you with even more resources to help you push your business to the next level.
No matter which direction you decide to go when providing services to your clients, it?s important to keep in mind that different things will work for different people. While you can?t provide custom services for every single client you?ve taken on, you can provide a range of services that will fit the most common needs of your clients.
In future articles, we will look at Web 2.0 and dive deeper into Service-Oriented Architecture Microservices.