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.
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.
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.
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:
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.