Monday, March 12, 2007

AJAX + SOA: The Next Killer App

Enterprises trying to improve business unit productivity and the reuse of IT assets continue to struggle. IT organizations have achieved some success by attacking these challenges with Service Oriented Architecture (SOA), but in most cases have still only exposed small portions of the overall IT service portfolio. Much of this struggle has been to deliver a "just enough" SOA to the business unit to improve its ability to build applications and features to get to market faster, better, and cheaper. And as we've learned, accomplishing this is easier said than done.

The fact is that SOA is middleware - and middleware traditionally relies on more middleware to translate data into a consumer-friendly state. It's certainly a major disappointment when you finally get your SOA right only to find that building a composite application requires using a portal (middleware) and/or orchestrating it with a BPEL engine (even more middleware). Worse yet, you may be in an organization that deploys a UDDI registry and registers a bunch of Web services. Unfortunately, in most cases there are very few applications built to actually consume these services. How can this be?

Should we conclude that something is wrong if applications aren't being built to consume these SOA services? Is it too difficult for business unit developers to build applications that directly consume SOA services, forcing us to rely on IT to create these applications? Is the absence of a SOA governance architecture holding us back? I think the answer is "yes" to all of these questions. And there is one standout reason: it has simply been much too difficult for the business unit developer to consume and leverage the SOA services exposed by IT. What's been missing is an easy way to put a "face" on SOA - and that's precisely the benefit of using AJAX in combination with SOA.

SOA services are typically implemented as loosely coupled Web services that encapsulate and expose business functionality. This sounds relatively straightforward, but is quite complex and difficult to achieve in practice. Developers frequently argue about the granularity of SOA services, but most now agree that "business-grained" granularity is the most appropriate. However, it still takes a great deal of domain expertise and collaboration with the business unit to size services properly.

Fortunately, there's been a recent surge in SOA interest. Perhaps enterprises are finally coming to recognize that SOA can really help the bottom line. Maybe it's being driven by better tooling and Web services evangelizing by Amazon, Yahoo, and eBay. Or could it be AJAX? Of course, it's AJAX - why else would I be writing this article? Seriously, I do think that AJAX is driving a renewed interest in SOA, especially in the mashup space. But how can two very different technologies combine and connect to provide something far greater than the parts? Take a look at Wikipedia's current definition of AJAX. It talks about Web pages, but there's no mention of SOA. It says:

"AJAX, shorthand for Asynchronous JavaScript and XML, is a Web development technique for creating interactive Web applications. The intent is to make Web pages feel more responsive by exchang-ing small amounts of data with the server behind the scenes, so that the entire Web page does not have to be reloaded each time the user makes a change. This is meant to increase the Web page's interactivity, speed, and usability."

The absence of SOA in this definition comes as no big surprise since the early buzz around AJAX has centered on enhancing Web page functionality and usability. This has been showcased in many applications such as Google Maps, Flickr, and Yahoo Mail. It's not these consumer-facing applications that personally get me excited about the potential of AJAX though. Instead, it's the business applications that run behind the corporate firewalls that can really exploit and benefit from AJAX, because it gives us two key features: a client-side programming model and the ease of making asynchronous calls to the server. These two key capabilities - the ability to apply logic in the client (browser) and to access server data without disrupting the Web page - are what al-low the new Web 2.0 paradigm to open up so many enticing possibilities for rich enterprise applications.

Earlier I said that SOA was lacking a face. That's where AJAX comes in - it puts a face on SOA. Let me explain this a bit further. Think about what happens when SOA services come online. They usually get registered in a registry/repository (if we're lucky) and become available for consumption. For instance, take a look at what StrikeIron (www.StrikeIron.com) provides. StrikeIron has created a "Web services marketplace" for the general population. At first glance, StrikeIron's catalog looks like a list of mini-business applications. But then you realize that these aren't applications - they're actually Web services. The concept of a company providing WSDL/REST Web services for general consumption makes a lot of sense. But before we get too excited, let's take a look at what's selling. According to StrikeIron, which licenses access to these services, its most popular Web services include:

  • U.S. Address Verification
  • Global SMS Pro
  • Sales and Use Tax
  • E-mail Verification
  • Reverse Phone Lookup
Without a doubt, all of these Web services are useful and can be applied to many different domains. But at the same time, they're also pretty commoditized. In other words, I may not care about who provides these services, only that I get the desired information. On the other hand, would I use just any Web service to transfer money from my checking account to my savings account? I don't think so. I need to trust the service, so I'd have to have some sort of relationship with the vendor providing that service. This "circle of trust" between me, the consumer, and the service provider is exactly the kind of relationship enterprises have internally and with partners.

The same approach could be taken by enterprises to begin offering their Web services to a wider audience. Through a Web services marketplace, enterprises could register various Web services that would normally only be available internally and/or to their partners. The marketplace vendors would obviously love to see this happen, but more importantly, I see this as an opportunity to begin to apply AJAX + SOA to drive a whole new class of Web 2.0 business applications.

For the first time, it's starting to feel like our application develop-ment and SOA efforts are coming together. We have business functionality represented in a reusable form - SOA services. We have ubiquitous connectivity - the Web. We have what's turning out to be the new application container - the browser. We have a programming model in the application container/browser - JavaScript. And they are all using open standards! What more could we ask for? Actually, quite a bit more.

In particular, I'd like to see a more rapid solution for developing applications based on all of this - a way to build applications without having to rely on more middleware to integrate with the SOA services. This is what I'll call the ability for Web applications to perform "direct connect SOA." Direct connect SOA conveys the ability to punch through the traditional curtain of portals and heavyweight process engines and directly (at least conceptually; more about this later) access SOA services. I don't just mean Web services either. It could be BPEL orchestration services, coarse-grained POJO services, RSS feeds, or anything else that can be exposed as a "service," albeit at the right level of business granularity. And of course the interfaces should be exposed using open standards.

This novel development and runtime model creates a new way to build application-driven composite applications. It has the appeal of client/server, without all the traditional heavyweight client/server baggage. It runs in the browser and is delivered on-demand.

We've all heard a lot about "composite applications" over the past few years. But most vendors have been talking about composing services as a way to re-factor their hosted services into more palatable services or portal applications. Let me clarify by using an analogy.

AcmeGrid, a fictitious grid vendor, provides a service grid that lets you run your applications as services. Its customers tell it they want a way to "compose" a combination of services into coarser-grained services. So, naturally, AcmeGrid announces an Eclipse-based AcmeGrid Composite Application Builder (CAB). Interestingly, CAB looks a lot like a BPEL designer, but has tighter integration with the AcmeGrid deployed services. Pretty slick, but it's not really an application as much as it is a service. In essence, CAB is more like a service builder. But who wants a service builder when we're trying to build applications? Soon, another fictitious vendor, we'll call them AcmePortal, announces its Por-tal Composite Application Builder (PCAB). It too releases an Eclipse-based designer that looks and feels like a BPEL designer, but this one knows how to build portals. In many cases, a portal is fine as an application. But if you're forcing a portal to be an application, it's just adding unnecessary weight.

What I really want is a user-based composite application, not a middleware-based composite application. To make this happen, I need a development and runtime platform that not only speaks AJAX and SOA, but governs the two as well. Some vendors promote the concept of AJAX applications calling WSDL-based Web services directly from the browser, essentially making SOAP calls. This approach even has a name - "client/SOA." This may be fine for simple non-enterprise or pure consumer applications, but it's a no-go for the enterprise. Why? Because when you call Web services directly from the browser, governance is left to the browser - which is another way of saying, there's no governance. Figure 1 shows ungoverned Web service consumption. I've never run into an enterprise that doesn't govern its services and strongly doubt that enterprises would allow this to happen merely because we have the technology to do so efficiently. If you doubt me, just remember that enterprises never opened up the firewall (for applications) to anything but HTTP and SSL. No matter what we told system administrators, no other ports were being opened.

So what we're talking about isn't just AJAX + SOA. It's really a platform that provides the governance necessary for AJAX and SOA to co-exist in the enterprise. This is a platform that provides the ability to consume SOA services on behalf of the client, but also governs the service consumption. Figure 2 shows how Web services can be governed by a service gateway. A service gateway is a server-side abstraction that governs and mediates service access on behalf of the client, which in this case is the AJAX application in the browser. The beauty of using a serv-ice gateway is that you're not restricted to accessing only services run-ning in the enterprise. The service gateway governs any service that's registered in the enterprise. In WSDL-based Web services, an enterprise would register the WSDL, and WSDL provides the bind to the service at runtime. This might be a service running in the enterprise's data center, but it could just as easily be a service running in a partner's data center. If the enterprise allows (governs) applications to access services, it doesn't matter where they're running.

I hope you're starting to appreciate the power of combining AJAX and SOA - specifically, how the two can co-exist and deliver new Web services-based applications with the governance that enterprises require. I truly believe we're entering a new era with amazing opportunity. Web 2.0 social networks, photo-sharing and tagging are great, but the real corporate impact comes in a form of Web 2.0 for the enterprise.

1 comment:

Anonymous said...

Hi,

I keep coming to this website[url=http://www.weightrapidloss.com/lose-10-pounds-in-2-weeks-quick-weight-loss-tips].[/url]Lots of good information here paskov.blogspot.com. Do you pay attention towards your health?. In plain english I must warn you that, you are not serious about your health. Research presents that about 80% of all United States adults are either chubby or weighty[url=http://www.weightrapidloss.com/lose-10-pounds-in-2-weeks-quick-weight-loss-tips].[/url] So if you're one of these citizens, you're not alone. In fact, most of us need to lose a few pounds once in a while to get sexy and perfect six pack abs. Now the question is how you are planning to have quick weight loss? Quick weight loss can be achived with little effort. Some improvement in of daily activity can help us in losing weight quickly.

About me: I am writer of [url=http://www.weightrapidloss.com/lose-10-pounds-in-2-weeks-quick-weight-loss-tips]Quick weight loss tips[/url]. I am also health trainer who can help you lose weight quickly. If you do not want to go under hard training program than you may also try [url=http://www.weightrapidloss.com/acai-berry-for-quick-weight-loss]Acai Berry[/url] or [url=http://www.weightrapidloss.com/colon-cleanse-for-weight-loss]Colon Cleansing[/url] for effective weight loss.





Google