Web 2.0 and SOA World
A couple of weeks ago I attended the SOA World Conference and Expo in New York City. I gave a presentation on interoperability for content management; I’ll post on that topic again very soon, starting with my SOA World presentation but in short, it’s about standards and they need to be service oriented. More on that later.What I wanted to talk about today was the dominance of the Web 2.0 theme at that show. Admittedly, I did attend a lot of talks in the Web 2.0/Ajax and SOA track so my perspective may be a bit skewed, but it was also present in many of the general sessions and keynotes. Is a Web 2.0 track at SOA World a cheap ploy on behalf of the conference organizers to get on a “hot” topic? Absolutely not! Let me take one step back in order to take several more forward.SOA is fundamentally about loose coupling, heterogeneity and composition. It also involves governance, messaging infrastructures and sometime registries. It shouldn’t be lost on too many folks who have been working in the software industry for more than a couple of years that many of the themes of SOA are not totally new; we’ve been talking about abstractions, reusability and development methodologies for as long as I have been in computing (and I’m sure much longer than that).When I started my career 20 years ago I was programming embedded systems – image processing, we were processing 30 frames per second. Everything I coded ran on a single processor. Sometimes there were a couple of processors that ran things in parallel but I remember timing functional components on the target processor and then manually arranging what would run on which processor and it what order. We were, of course, distributing the processing load across CPUs so that it was relatively even and and aligning processing so that a “module” depending on output from some other process wasn’t left waiting on results for too long. We did have a bit of shared memory but managing access was a pretty tractable problem in that only two or three processors were accessing it and we pretty much knew when they would be relative to one another. If I remember correctly we implemented some simple semaphores and they worked just fine.My code development was governed, I modeled and abstracted plenty of things – things were decoupled where they needed to be, we had a way of multiple processes communicating with one another. Heck we even had virtualization – we called our virtualizations “simulations”. My point is this. What changes all the time, and often very radically, is the environment in which our applications run and that environment continues to become increasingly complex. Where I once was sure that all of my processes mapped their code abstractions to memory the same way, I am now concerned with how my data models are represented across processes because those processes are implemented in different languages and are running on different platforms.Okay, so SOA is an architectural approach that operates in an environment where we have a distributed network of computers, running a variety of operating systems, hosting a variety of applications, implemented in a variety of languages, oh and they all have to talk to one another. Whew – this is not your grandfather’s computing environment. But then here’s the thing. For the most part, SOA has been applied in the enterprise. The enterprise, I would argue, is still a constrained environment. Not as constrained as the embedded environment I coded to 20 years ago but it still has some constraints. Compared to what? Compared to the world wide web.Ah so now I finally get to the point on what it is about Web 2.0 makes it an appropriate topic for SOA World 2007. The “enterprise” IT systems aren’t just in the corporation anymore (haven’t been for a while) – partners, vendors, customers all need to connect with the enterprise. I won’t make this already very long post any longer by arguing that utilizing the infrastructure of the web to make those connections is compelling – I’ll assume we all agree on that one. So taken in this context, where our operating environment is the web, the parts of Web 2.0 that are relevant to an SOA discussion are the architectural ones. (There are other Web 2.0 concerns like the emergence of the “procumer” that I won’t cover in this post, though I’m sure to in the future.)Ajax and RIA Sure we want to improve the user experience while running applications on the web but there is more. Just because the point of integration is not necessarily deep within the enterprise, or even happening on servers doesn’t mean that governance goes away. Is there governance in the Web 2.0? Maybe. Yes, in places. Part of it comes through standards – Atom, for example. But there are also a lot of “accidental architectures out there”. We’ve got some work to do here.Mashups Yes, I specifically address this separate from Ajax because mashups to me have more to do with the notion of composition than they do with where the composition is happening. A colleague of mine recently created a mashup and reported (no surprise to me) that the process was painful in places – specifically the data models of the two “modules” he was composing were either poorly or entirely undocumented. Rob High had a slide where he listed some core tenets of SOA – right after the line that said “loosely coupled” was a line that said “strongly coherent”. In the Web 2.0 world we aren’t quite there yet.Agile development and deployment Frequent releases or the perpetual beta. How do we govern in an agile environment?Heterogeneity Yes, okay, been addressing this with SOA for some time but what is new in the Web 2.0 is that my runtime is the web. What type of web services runtime can I depend on in the wild, wild web? Am I all about REST? What about SOAP and WS-*? As an industry we are working on these answers.These topics and then some kept the conference very interesting.
Share Your Thoughts