<body><script type="text/javascript"> function setAttributeOnload(object, attribute, val) { if(window.addEventListener) { window.addEventListener('load', function(){ object[attribute] = val; }, false); } else { window.attachEvent('onload', function(){ object[attribute] = val; }); } } </script> <div id="navbar-iframe-container"></div> <script type="text/javascript" src="https://apis.google.com/js/plusone.js"></script> <script type="text/javascript"> gapi.load("gapi.iframes:gapi.iframes.style.bubble", function() { if (gapi.iframes && gapi.iframes.getContext) { gapi.iframes.getContext().openChild({ url: 'https://www.blogger.com/navbar.g?targetBlogID\x3d8907963\x26blogName\x3dWS-Comments\x26publishMode\x3dPUBLISH_MODE_BLOGSPOT\x26navbarType\x3dBLUE\x26layoutType\x3dCLASSIC\x26searchRoot\x3dhttp://ws-comments.blogspot.com/search\x26blogLocale\x3den_US\x26v\x3d2\x26homepageUrl\x3dhttp://ws-comments.blogspot.com/\x26vt\x3d-792153501087690591', where: document.getElementById("navbar-iframe-container"), id: "navbar-iframe" }); } }); </script>


perspectives on open-source and web services

Monday, October 31, 2005


Same old Software, as a Service. Phil Wainright has a few of these straight-up slam-dunks.

From the second link, about the difference between ASP's in the 90's and today's real services models - "designed from the ground up to be delivered over the Internet on pay-as-you-go terms."

From the third link, somewhat related, as to why there can be a real SaaS model - "No on-demand customer pays simply for the privilege of accessing the software. They pay because the software delivers business results." [emphasis his]

I like Phil's analysis, and I've slapped his RSS feed right on the front of my Google Personalized Homepage. And since I want to contribute back, I'll add on some of my own analysis.

I think a perfect (and very successful) example of a software-as-a-service model is Google AdWords. Basically, the way AdWords works - an advertiser sets up an AdWords account with Google, and can then create some basic text ads for Google to display on the most relevant sites, targeting by content. The advertiser deposits a certain amount into their AdWords account, and specifies how much they are willing to pay for each click-thru they receive via Google ad listings.

The two important characteristics here are that the software service is designed to 1) be delivered on the internet 2) on a pay-as-you-go basis.

Obviously, the service revolves around web content, so it's built with the web in mind. That kind of design enables great expansion, as I'll describe in a bit...

But also key to the success is the pay-as-you-go aspect. If a business buys the AdWords service, they don't pay for access to AdWords, since creating an account and creating the ads are both free activities. They are paying directly (and only) when the service yields actual business value - a marketing contact with potential customers.

Furthermore, the business has complete control over their software service budget. They can start small and go up on their own pace. Can you imagine if Google tried to sell this as a one-time fee, or tailor it to each advertiser? The pricing difficulties for Google and the advertisers would be monstrous and costly, and the advertisers would be stuck only with the prices Google can come up with.

The internet-designed service enables more and more application of the service instead of traditional software model - a single use per application. Related to AdWords is AdSense which is another software service to help Google (and others) make money by helping AdWords's advertisers. AdSense lets anyone display the ads and receive a portion of the click-thru fee. Because AdWords was designed for the internet, it has application at Google - ads displayed in their other software services like GMail, Google Search - and outside of Google via the AdSense program. And Google recognizes that it can and should pay its AdSense partners when those partners' services (target-marketing/advertising) deliver business results as well.

All of this is to say that SaaS is not only sound, but is already a huge software market for those that implement the right kinds of software services - that deliver business results.

UPDATE: I read this post of Wainright's AFTER I wrote this post. And he included such good analysis of API-accessed services like AdWords vs. On-Demand services that I included yet another link to his blog. That guy is awesome.

Wednesday, October 19, 2005

Linux (open-source) & Interoperability (again)

Couple of articles to read to get the perspective from which I'm writing this.

CSP said their need was "increased integration with other criminal justice agencies," and they deduced, dear Watson, that the key to integration is "a standardised infrastructure."

That seems to play nicely into the first article I cited, which discusses how the usual suspects of open-source "big boys" are going to lend support to the Linux Standard Base project in an effort to "encourage the development of more applications for the Linux platform."

So this is all good, but what does it have to do with Web Services? I'm glad I made you ask.

CSP wants increased integration with other criminal justice agencies, and I'll make a few assumptions...

1. The other agencies they're referring to are not-Linux organizations.
2. They don't need to interoperate at technical low-level detail - EBCDIC vs. ASCII, Big-Endian vs. Little-Endian and the like.
3. The agencies are not big organizations and do not have big IT budgets.

Looking at everything it's NOT, we can see they're probably talking about Windows interoperability at the application level on a small-to-medium-sized budget. This is important because of this.

One of the most alluring ways in which Microsoft is promoting .NET is that it gives developers simplified (though proprietary) framework, methodology, and libraries for developing networked applications. This is a big contrast to J2EE which is very complex, and therefore requires significant time and labor to implement. As such, although open-source, free J2EE products are all over the place, the total cost can indeed be higher than getting a .NET license and hiring one really good .NET programmer.

I am extremely excited about the idea of PHP Collaboration Project (PCP, hah!) which "will aim to compete with Microsoft’s .NET platform..." Especially if it seeks to do so with an interoperability approach based on WS - another approach that Microsoft boasts, and developers, and businesspeople, are attracted toward.

However, we can probably guess what kind of "interoperability" Microsoft .NET may encourage - .NET Remoting rather than Web Services, C#.NET and ASP.NET and VB.NET apps working together, etc. Basically, Microsoft is still convinced they can own the space and lock everyone into their single platform. But that single platform is very attractive to people like CSP and other small or medium-sized orgs because it reduces complexity.

I would love PCP to do the same thing - reduce development complexity and cost for small to medium businesses. But at the same time, keep those business from the lock-in scenario, and maintain a standardized WS-based interoperability approach.

That would seem to line up with the requirements of orgs like CSP which would keep them from jumping to Windows.

Wednesday, October 12, 2005

skipping a post

I had a post about 'SOBA' typed up, but I lost a large part of it, so I may have to just throw that one out and leave 'SOBA' with just a link and this summary:

Another buzzword does suck, but I like the notion of creating Business Applications (BA) out of Service-Oriented (SO) components. Like Matt's analogy of composing Lx shell scripts or utility programs out of the small, text-processing utilities already available. For SOBA, you lay out your business processes, and then you compose the implementation out of these or those small utility services.

The real post for today is a response to 'Open Servicing' in one of my favorite mags. The synopsis of the article is that Apache Synapse is an open-source platform for deploying web services in an ESB architecture, and that it's a great idea because consortiums of vendors tend to make standards and practices that are overly complex and borderline proprietary.

Some gems from the article:

"It seems as though as soon as the open source community rallies around a technology, the IT industry starts taking it more seriously - and finds practical application for it. "

"...although technology standards are driven by a consortium, the consortiums are primarily representative of a handful of mainstream vendors with large market shares."

"The standards in Web services are becoming unmanageable...As a result, the Web services that are being developed in most organizations are not well thought out."

I've never had to deploy an entire SOA since most of my web services work just involves integrating 2 heterogenous environments with statically discovered services. As such, I'm very guilty of the charge leveled in the last quote there. I would love to see Apache make this a great project to better deploy, manage, secure, coordinate, ... web services.

Right now, I think most developers are just implementing the simple stuff like SOAP and WSDL, or maybe some of the more vital and down-to-earth WS-* standards like WS-Security, WS-ReliableMessaging, WS-Addressing. Some pretty gutsy outfits out there may be doing the whole WS-Policy & WS-BPEL dance, but like the article says, it's complex, confusing, and largely designed to fit into a handful of vendors' product roadmaps.

More and more, I think informed skepticism with regards to WS-* is in order. However, un-intelligent and reactionary jabs from a single-vendor perspective are not in order.

Monday, October 03, 2005

Reynolds's SOA definition

in response to Matt's post, which was a response to Reynolds's post, I would say the following...

cajo's response sounds nice to developers, because it's what they want to hear - we don't need to change the way we do things; SOA is just new buzz-hype on what we already do. but it would not be "honest" to say "that SOA means nothing more than separating business functions into routines, just as they have always done."

for example: one of our developers separated his business functions into routines: he made 11 .cfm pages of ColdFusion code, and then 1 page of ColdFusion code with 12 cfinclude tags. even if the only thing you've read is the senseless marketing trash that vendors are putting out about SOA, you know this cfm approach is not SOA, even though it is separating business functions.

Reynolds includes the key distinction at the end of his definition (a smart place for it):

"Each service provides an interface-based service description to support flexible and dynamically re-configurable processes"

the interface-based service description is mandatory. it's what makes an SOA different. the architecture is not based on identification of objects in the system, as with OOP. rather, objects come about from the descriptions of the services that need to be performed. neither is the architecture based on run-time context as the case with procedural includes of multiple script files.

the service descriptions come first, and are arranged into composite, higher-level services with their own descriptions. this is the key between SOA and other approaches to modularity.

I first encountered this in Erl's first book when he talked about the similarity between OOP and SOA - code to the interface. but with WS-based SOA, the interface is described using a standardized format so that the services implementing the interface can be in any language on any platform.

so the good news is that it is indeed another attempt at creating modularity and re-usability in software. the bad news is that if you work under the assumption that that's ALL it is, you won't really be capturing the benefits of SOA.