Even though SOA can bring about unprecedented benefits to the enterprise architecture, the design, implementation, testing, deployment and governance could get complicated. Why?
First, many software engineers do understand object oriented principles. It is engineers who become architects, and they bring along the object oriented thought process when it comes to designing SOA. Object oriented design is not the same as SOA design. The concept of a service is different form the concept of an Object. However, many software designers find it difficult to contrast this difference and hence it happens that service interfaces would be designed in the object oriented design style. An object oriented API would require multiple method calls to accomplish a task, whereas a service operation invocation is self contained and provides a service operation as a whole. So SOA design could get complex, simply based on the level of service design understanding the software designers would have.
The next challenge is identifying the correct service operations and the granularity of those operations. It is challenging specially when dealing with legacy systems and integrating those to the SOA being put in place. The design of the services has to ensure that those are designed in such a manner that loose coupling is ensured and the services are re-usable in the context of the overall SOA design. This requires a comprehensive understanding of the overall SOA being implemented as well as the business domain specific know-how.
Agility is one of the key objectives of implementing a SOA in an enterprise. SOA has loose coupling at the heart of its design principles, which enable system agility. However, the very fact of agility makes it complex. On one hand, the mix and match capability of various services in the overall SOA would result in an exponential growth in the number of services within the system. And on the other hand, a given service could evolve over time, resulting in different users interested in different versions of the same service. This brings about the need for management and governance into the picture.
Complexity is a real world factor, hence SOA too gets complex. However, the good news is that the benefits that SOA brings about outweigh these complexities.
Comments