Monday, February 22, 2010

Understanding the Service Oriented Architecture (SOA)

It's a pretty old term this SOA. A software engineer (or systems integrator) normally associates it to the interface based software design. Just take a bunch of components, define interfaces between them and implement those interfaces. Then each component suddenly can be called a "service".

Intuitively a service is something that you have an interface to and something that you don't care about how it's implemented.

There is a trend on the Web that websites expose their APIs to the outside world. E.g. YouTube, GCalendar, Twitter, etc. So suddenly those webapps become "services".

Consequently the Internet is a platform for running a huge application called "Web" that is designed in SOA way, where each site is (should be) a service.

Unfortunately we are still not building our webapps to support this. We're stuck with our software engineering mentality while we actually need to switch to Web engineering.

I think every feature of any webapp should be a service. Why coding and implementing your own contact form, your own blog, your own newsletter subscription module, your own user profile pages, etc.? Even if you have those features in your software package out of the box...

Looks like I'm trying to promote mashups, but that's only the tip of an iceberg. Imagine that you have a website that you properly Web-engineered. Say you built the contact form feature as a service and it's hosted on the cloud. And this feature is integrated into your CMS. There is a cool outcome at this point: you provide yourself with a SaaS solution. So you can actually start renting it to others as well. Ok maybe renting SaaS contact forms is not your core business... so what about doing it with the core business features? E.g. social graph, status updates, shopping cart, etc.?

Probably not everyone will go this way but just look at the beauty of this all, we've got services like for feedback collection, for comments, gravatar for a personal picture, openID for login, etc. etc. etc. The more a service is specialized the more useful it is.

For instance, a business model for Twitter could be renting their status updating feature to various social networks. Anyway every one of them are reimplementing it: LinkedIn, Facebook, MySpace, etc. Such a waste of time.

Posted from my Android

No comments:

Post a Comment