I’m a believer in Service Oriented Archicecture (SOA). Some of the main benefits that I see from SOA is that it defines clear ownership of data, provides reusability of enterprise resources, maximizes system interoperability.
Clear Ownership of Data
Service oriented architecture provides a clear ownership of data. A typical web service will store, retrieve and manipulate data in a database that is hidden from the view of the client that is making calls to that service. This is good because we know that the web service is the owner of the data in that database. 10 different applications might be requesting data from the web service or posting transactions to the web service, but they don’t touch the database directly.
Because only the web service is touching the database directly, business logic and data controls can be put in place in one spot. If a bug is introduced into the system and the data in the database gets corrupted, it’s the web service’s fault. It has clear ownership and responsibility for the data that it maintains.
Reusability of Enterprise Resources
Service oriented architecture also allows for reusability of enterprise resources. Divisions within an enterprise often need access to the information that another division mantains. Setting up services for a single division can open up that data and processing to other divisions that would otherwise be unavailable or not shared as easily. By allowing multiple business functions share the same resources, costs are brought down, and the organization can run more efficiently.
Of course, access controls will need to be in place so that only the right people are gaining access to or manipulating sensitive information.
Web services are breaking down the walls of incompatibility. It doesn’t matter which language you are programming in, which platform you are running on, web services provide a way for systems to talk to each other. Platforms and programming languages all have their strengths and weaknesses. Web services allow developers to play to the different strengths of a particular programming language to solve a problem that is most appropriate for that language. This can lead to more efficient developer cycles.
This doesn’t mean that you particularly want to have a conglomerate of languages and operating systems that make up your information system. That could quickly become very difficult to maintain. However, it does provide flexibilty in the construction of an information system.
So much to learn
I recently bought Enterprise SOA by Dirk Krafzig, Karl Banke, and Dirk Slama, and am trying to make my way through the concepts in that book. SOA is more than just being able to slap a SOAP inteface on some software that you’ve written. It requires a new way of thinking when designing and implementing information systems. I think SOA will have a large impact on IT in the future. I’m excited to continue learning.