What is SOA?
SOA is an architectural approach that consists of developing modular application consisting of independent services. (Takale, 2016)
For example, the architecture that Amazon was built around insisted that every functionality of their was designed as an API. This helped them not only streamline their code, but to quickly market it and leverage the interfaces of the architecture and build the highly successful Amazon Web Services. AWS invites other businesses to pick and choose the services they require and build the necessary product or service that their organization requires.
What are the advantages of using SOA?
- Reuse of Services – In SOA, an application is built by assembling small, self-contained, and loosely coupled pieces of functionality. This allows each service to be reused in multiple applications, independent of their interactions with other services.
- Easy to Maintain – As services are designed to be isolated independent entities, they can be efficiently and easily updated or maintained without impacting other services. Large, complex applications can thus be managed easily.
- Increased Reliability – SOA-based applications are more reliable as small, independent services are easier to test and debug as compared to code that runs into ten of thousands of lines.
- Location Independence – The services leverage the Internet technology (“cloud”) as is available for consumption without having to worry about the physical location of the code. This approach allows a service to change its location at any time.
- Scalability and Availability – Multiple instances of a single service can run on different servers at the same time. This increases scalability and availability of the service.
- Streamlined Efficient Software – As the services can be reused, there is no scope for redundant functionality. This helps reduce errors due to inconsistent data, and thereby improves the quality of code.
- Platform Independence – SOA facilitates the development of a complex product by integrating different products from different vendors independent of the platform and technology.
For example a service that provides dictionary services could be written in Java. Another services that provides search engine features could be written in C. They can both be combined to build a web app, without having to worry about getting the two languages to talk to each other. (Cress, 2013)
- Increased Productivity – Developers can reuse existing legacy applications and build additional functionality without having to develop the entire thing from scratch. This increases the developers’ productivity, and at the same time, substantially reduces the cost of developing an application.
What are the possible disadvantages?
- Increased Overhead – Every time a service interacts with another service, complete validation of every input parameter takes place. This increases the response time and machine load, and thereby reduces the overall performance.
- Complex Service Management – The service needs to ensure that messages have been delivered in a timely manner. But as services keep exchanging messages to perform tasks, the number of these messages can go into millions even for a single application. This poses a big challenge to manage such a huge population of services.
- High Investment Cost – Implementation of SOA requires a large upfront investment by means of technology, development, and human resource.
- First Citizens Bank – Apart from providing banking services to its own customers, they also provides services through SOA to 20 other institutions, including check imaging, check processing, outsourced customer service, and “bank in a box”. (McKendrick, 2015)
- Thomson Reuters – this well-known provider of business intelligence information for businesses and professionals, maintains a stable of 4,000 services. Reuters makes them available to outside customers. For example, one such service, Thomson ONE Analytics, delivers a broad and deep range of financial content to Thomson Reuters clientele. (McKendrick, 2015)
Takale, S. (2016, April 15). Advantages and Disadvantages of Service-oriented Architecture (SOA). Retrieved October 24, 2017, from https://www.buzzle.com/articles/advantages-and-disadvantages-of-service-oriented-architecture-soa.html
Kress, J. (2013, October). SOA in Real Life: Mobile Solutions. Retrieved October 24, 2017, from http://www.oracle.com/technetwork/articles/soa/ind-soa-mobile-2045748.html
McKendrick, J. (2015, December 04). Ten examples of SOA at work in 2010. Retrieved October 24, 2017, from http://www.zdnet.com/article/ten-examples-of-soa-at-work-in-2010/