Monday, March 31, 2008

Web 2.0 Powered by SOA

Mark Scrimshire blogged about attending a Ray Valdes presentation on Portals and Mashups (see the blog here). The article nicely explains how Web 2.0 and SOA technologies combine to produce a new generation of portals, fed by information culled from throughout the enterprise. The separation of concerns between Web 2.0 and SOA technologies can be summarized in a single sentence:

“Information is delivered through a Portal, Not by a Portal.”

Simply put, Web 2.0 provides the visual set of user-customizable portlets, while SOA supplies the information for the visual screens. The information is typically provided in a service-oriented manner, with a lightweight REST approach gaining preference over SOAP for the service delivery mechanism. Interestingly, over 50% of the audience was specifically using an SOA strategy, but only about 10% felt the process was successful. Deployment cylces were reportedly very long, on the order of 2 years before demonstrating value.

The project I lead at XAware.org fits nicely into this Web 2.0 and SOA approach. XAware lets you quickly build and manage data services from any number of enterprise data sources, then deliver those services using a lightweight REST or POX (plain old XML over HTTP) transport. Enterprise data is complex, with the typical company housing hundreds of data sources. The complexity of this environment explains the long development cycles mentioned above. XAware specifically targets the complexity by mapping different sections of your XML-based service contract to different back end systems, using the Eclipse-based design environment. XAware users seem to agree, as the user base is growing rapidly, especially where many data sources and complex information structures are involved.

Friday, March 21, 2008

Eclipse Conned By Microsoft

I attended EclipseCon 2008 this week in Santa Clara, CA. Wednesday's keynote speaker was Sam Ramji from Microsoft, talking about Microsoft's growing participation in Open Source initiatives. He began by confirming rumors that a new initiative, "Supernova", would have Microsoft purchasing the Eclipse organization, and acquiring all intellectual property of Eclipse. A couple weeks shy of April Fools Day, Sam still got lots of laughs on that one, from an understandably skeptical crowd. He talked about his group, the Open Source Software Lab, whose broad purpose it is to assist the open source community with interoperability with Microsoft software. Microsoft recognizes that more and more open source software is running on Microsoft platforms, and they want to continue improving the platform to facilitate this growth. Microsoft sponsors a .NET open source forge at www.codeplex.com. Sam's open source work is closely aligned with Microsoft's recently announced interoperability principles, which signals a more open direction for Office, SQL Server, SharePoint, Vista, and .Net.

While I believe Microsoft is in a different galaxy when gaging their level of Open Source commitment, I do believe they are moving in the right direction. They are doing just about what you might expect from the largest, most successful commercial software company in the world. They are encouraging interoperability to increase their own platform market. But Sam asked for patience from the EclipseCon crowd, noting that in 1995, everybody assumed Microsoft missed the boat on the internet. Ten years later, they are one of the dominant players in that space. Sam propositioned that with Open Source too, Microsoft may be starting slow, but ten years from now, Microsoft may be known as a dominant Open Source player. I am skeptical on this point, as I believe were most of the attendees. But Sam's interoperability initiative is at least a good step in the right direction.

I attended a number of EclipseCon sessions Wednesday morning, covering Service Component Architecture (SCA) tooling, JBoss's jBPM, and Eclipse metadata management initiatives. The SCA tooling is part of the new SOA Tools Platform, one that is emerging as an important member of the Open Source SOA ecosystem. XAware plays well with all these tools, interoperating at a number of levels, ultimately providing information-rich services as the foundation of an SOA initiative.

As if a Microsoft keynote speaker at an Open Source event weren't unusual enough, things grew really strange when I had a brief encounter with a flamboyant Marilyn Monroe while exiting the convention center. A number of her bouncing body parts looked totally fake, not least of which was her platinum blonde hair, obviously a wig. It turns out she was stumping for NetBeans among the Eclipse faithful. For those who don't know, NetBeans is the Sun-sponsored competitor to Eclipse, also an Open Source, pluggable Interactive Development Environment (IDE). Marilyn smiled broadly and handed me a disk, then invited me to the NetBeans party at the Techmart building next door. Instead of heading to my car, I took a left turn towards the Techmart (guess I'm a sucker for such advertising gimmicks), and took a quick walk through. The NetBeans crew had free beer and other refreshments along with demonstrations of the NetBeans environment. I didn't have much time to hang around, but I appreciated the amusing marketing ploy, a perfectly targeted campaign aimed at EclipseCon attendees.

Friday, March 7, 2008

Urban Sprawl in SOA Land

Service development is about to explode in the enterprise, but these are not the custom-crafted, high value, reusable services you might see cruising the pristine avenue of your company’s SOA center of excellence. No, this will be massive. Instead of nicely architected brownstones with clean lines and aesthetic appeal, you’ll brush with small, hastily constructed, one-off services as far as the eye can see. Its urban sprawl in SOA land, and things are about to spiral out of control.

Where will this “urban sprawl” of services come from? The new killer app for SOA is Rich Internet Applications (RIA). Vendors and pundits are vocal about the perfect fit of RIA and SOA. Environments like Flex , Appcelerator, and many of the AJAX-based development environments like Tibco GI seem to perfectly match RIA and services.

It seems like an excellent fit on the surface, using services to populate sections of the display and to perform major operations like "process order". But management of the services is a glaring risk area. SOA generally strives to create coarse-grained services aligned with steps in a business process. You can visualize each service as an activity node on a flow graph. From this basic idea you get many of SOA's benefits: coarse grained, loosely coupled, reusable services that can be re-orchestrated into new business processes.

In the RIA-SOA scenario, left unchecked, I envision a high number of very granular services. Most of these will be tightly coupled, not very reusable, and RPC style. Maybe there is nothing wrong with this, but it is a significant divergence from the core principles of SOA.

I personally like the idea of RIA-SOA, but the trick will be to encourage and enforce SOA principles in the development of this new style of application. Otherwise, expect rampant proliferation of low-value services.

I can envision certain RIA development styles that are more “service oriented” than others. A quick example can illustrate this. Suppose an auto insurance company needs a new policy administration system. From the user perspective, an agent may enter a policy number and expect to see the auto policy in a multiple-tab view. Lets say that one tab shows the policy owner (name, address, contact info, etc), another tab shows coverage information (dollar limits for damage, medical, liability, etc.), and a third tab shows premium information.

The designer of such an application has many alternatives to supply services to power the screens. The primary characteristic differentiating the approaches is how coarse-grained the services are. For illustrative purposes, lets talk about three degrees of coarse-grain-ness: coarse-grained, medium-grained, and fine-grained. A coarse-grained approach would provide services to “get policy” and “update policy”. The RIA application would call “get policy” when the agent enters the policy number. Each tab would read and update appropriate sections of the single, shared policy structure. The agent would click an update button to invoke the “update policy” service under the covers, which sends the policy structure to a service which performs the needed updates. This strategy not only limits round-trip calls to the server, but conforms to SOA norms by encouraging development of more coarse-grained services that are likely more reusable and more loosely coupled.

A medium-grained approach would provide us with a separate service invocation for each of the tabbed panels. Three tabs leads to 6 services to read and update appropriate portions of the policy. The application would likely exhibit better perceived performance, as the user could view the first screen as soon as the first service (get policy owner) completes. While we have potentially 6 round trips instead of 2 in the coarse-grained case, the update operation may deal with less data, since we only have to update individual portions that changed. These services seem reusable and loosely coupled as well, as they are grouped around business information that likely is used by many applications.

A fine-grained approach leads to a larger number of services. Imagine you design your GUI top-down. You go along building screens and stubbing out services you will later create to populate the fields and react to user events. Your services are precisely defined to fit the specific needs of each screen. It a bit harder to imagine this style with our insurance example, but perhaps we define a service to retrieve name, another for address information, and another for contact information. Each section of each screen gets its own service. We have many more services now, but we increase the opportunity for perceived visual refresh performance. Another benefit is that the service definitions fall out immediately from the information sections of each screen, making the design effort straightforward. But the sheer number of services will cost us in terms of management overhead. And these services are so closely aligned to screen layout as to make reuse outside the RIA environment very unlikely.

From this example, we see that as we move down the scale towards more fine-grained services, we increase the opportunity for perceived visual refresh performance while we increase the number of round-trip service invocations to the server. We also increase the management overhead by introducing dramatically more design artifacts.

While the policy administration example shows tradeoffs in the service design approaches, in the context of service orientation, the characteristics are not quite so arbitrary. To be service oriented, you must strive to provide coarse-grained services that are reusable and loosely coupled. To a large extent, if you think in terms of defining the information payloads for services at a higher level, from the business analyst perspective, you will achieve better reuse and loose coupling. On the other hand, if your service interface is defined by a specific set of screen fields, you have tightly coupled your service to its consumer. When the screen changes, your service interface must change. Such a service has a singular purpose, will not be reusable in any other context, and so by definition, is not service oriented.

The message to RIA designers and architects is simple. Yes, industry needs you to combine RIA and SOA to achieve a new level of productivity and richness of user experience. But you should take up of the cause of SOA while you build your RIA. Be service oriented so your services are loosely coupled. Be service oriented so your services can be reused elsewhere. Your efforts will be a productivity multiplier within your organization, bearing fruit from your work long after your current project. Be service oriented, and in the process, you can stop the sprawl.