Which Applications Should Be Service-Oriented?
Saturday, April 30, 2005
On a recent visit to Italy, I spoke with an enterprise architect from a large firm. He told me that, as of January 1, 2005, all new applications in his organization were required to be built in a service-oriented style. Since something like 15% of the companies I've spoken with recently have made service-oriented applications their default, this didn't surprise me too much. What did surprise me was the "all new applications" part. Does it really make sense to build every enterprise app in a service-oriented style? I think not, for a couple of reasons.
First, the design effort required to create a service-oriented application is somewhat greater than that needed to build a traditional multi-tier app. Figuring out what services to expose usually isn't easy, since it requires imagining what clients of those services--software that doesn't yet exist--will want. This is always challenging, and it's only worth undertaking this effort if the odds are good that those clients will one day exist. More important, though, because a service-oriented application will eventually be used by other applications, it must be more scalable and more reliable and more secure than is the average in most organizations. Meeting these goals makes the app more complex and more expensive to build. Not every application is worthy of this level of investment.
The challenge is figuring out which category an application falls into. The Italian architect I spoke with also told me that, when necessary, his group would take over existing applications in the organization and make them service-oriented. Yet scalability and reliability and security are design features. Adding them to existing applications is not easy.
Even though I'm convinced that service-orientation will be the new default style for creating enterprise applications, I'm also convinced that some apps shouldn't be built this way. Correctly determining up front whether an application is likely to repay the expense of making it fully service-oriented will be an essential skill.