Software developers have always struggled with the problem of creating software that is easy to maintain, extend, and integrate with other systems. But what if there was a way to seamlessly piece them together without gratuitous amounts of code? SOAs are the answer.
There are a lot of ways to build a house. Architects design and tailor the building to fit their client's needs while keeping in mind those needs may change as their client’s life evolves. Thanks to this type of planning, if and when the client undergoes a major lifestyle change, such as having children or getting married, their house will continue to be relevant. This saves the homeowner money and prevents the stress of moving to a completely new house. The process of building a house is a lot like the process of implementing a Service Oriented Architecture, or an SOA.
What is Service Oriented Architecture?
A Service Oriented Architecture (or SOA) is an approach to software development by which discrete business functions and data interactions occur through a predefined, machine-friendly syntax.
Think about when you submit an e-mail signup form on a website. The form is capturing data, sometimes validating it, and then it will submit this data to a Web Service (which is a type of SOA). The web form does not need any knowledge of the rest of the signup process, database inserts, an e-mail “welcome message” and so on; the service in the back end takes care of all of this. This approach allows a fairly clean decoupling of the front end user interface and the back end programming and business logic.
So, while this sounds great, one might ask, "What are the benefits are to this approach, and why go through the trouble of adding another layer?" There are a number of benefits to this option, but the one that has great potential is to help with ever-changing mobile websites, as well as mobile native apps.
SOA for Mobile Apps
With a well-developed set of web services, we can create all of the business rules and implement all of the functionality for a specific business application and host it in the cloud. Then, for a native application, the development is centered on the user interface (UI) elements required to implement the functions, which are then utilized via the web services developed above.
The real benefit comes with the second implementation of the application. For example, maybe you are now rolling out an Android version of your app following an initial iOS launch. With an SOA in place the task is even easier, as none of the functions and business rules need to be revisited, you will just need a UI wrapper with the required validation and session management.
This idea continues to extend its way throughout other elements, such as the website itself. The same web services driving a mobile app can be used to drive the common functions across the traditional “desktop” version of the website as well.
The Benefits of Service Oriented Architecture
Other than the obvious benefits in efficiency in being able to code this once and reuse it, there are some additional benefits in using an SOA. Namely, the users and consumers of this information are growing to expect it in any format, whether mobile or desktop. In fact, deeper than just a common and consistent set of data, users want a consistent set of user experiences when inputting and consuming this data. A Service Oriented Architecture can help to support this. Here are a few more offerings of utilizing an SOA:
- Platform Independence – An Enterprise can use its existing legacy applications on multiple types of servers and build additional functionality without having to rebuild everything. It also helps an Enterprise to integrate its applications with its partners.
- Easier to Test, More Reliable – Small, independent services are easier to test and debug than substantial applications. This leads to more reliable software.
- Ability to Reuse Codes – Since SOAs break down an application into individual pieces of functionality rather than a large piece of code, the services can be reused in multiple applications, therefore lowering the cost of development of future tools.
- Transparency – The web service can change its location at any time, and consumers will still be able to locate the service through the directory.
- Parallel Development – As the services are independent of each other, the services can be developed in parallel; this reduces the time it takes to develop the software.
- Scalability – Since the location of a service doesn't matter, the service can be moved to a more powerful server if needed–transparently. There can also be separate instances of the service running on different servers.
- Readily Available – As the location of a service does not matter, and you can have multiple instances of a service running at the same time, you are able to have a better availability of your product.
In summary, it is important to consider the different devices and formats that your information will be consumed on. With this in mind, as well as a long-term vision for how that can evolve over time, a Service Oriented Architecture is worth a closer look for your future projects.