Thursday, January 27, 2005

Building an Enterprise using Hosted Services II

A couple of blogs back I wrote about the idea of how far a company can go in terms of virtualising it's IT, i.e. having somebody else hosting it, but wondered how all the external services could work together. It seems the idea has not escaped others. I first came across this blog on the Loosely Coupled web site. Although the author was trying to make another point (i.e. what is the ratio between objects, components and services in an enterprise) he trys to envisage a company which has no IT but uses services from, for example, salesforce.com and brings everything together using Grand Central and maybe the Amazon Simple Queue Service.

Searching further I found this infoworld article which also extols on Grand Central's capabilities and focuses on their use of a hosted BPEL engine which lets developers define their own processes and have them hosted.

Now that we have some of the business services/processes hosted and something like GrandCentral/Amazon to integrate them, what remains? Well first of all we need a lot more business services. GrandCentral's web site seems to offer a lot of the "informational" web services as hosted by organizations such as XMethods. Difficult to see how a meaningful chunk of business functionality could be implemented with those. (Maybe I doing an injustice to GrandCentral as I'm not a member of them and couldn't log in, plus the fact that their web site reminds me of a maze.) Secondly we need user interfaces - can they be hosted? Thirdly we need lots of data storage, which is properly managed and can also be used to host data warehouses. And fourthly we need alternate sourcing for this stuff.

Fast XML

Many, many years ago I picked up a book about a standard used in the telecommunication industry for describing and encoding data. The standard was called Abstract Syntax Notation 1 or ASN.1. Using this, data structures could be described and encoded in a standard way for transmission. This should sound familiar - if not you only have to click here.

This was so long ago that I can't remember who wrote it and also seem to have lost my only copy.

Then in the January 2004 issue of IEEEPro, I was surprised to read an article by Darren Mundy and David Chadwick ("An XML Alternative for Performance and Security: ASN.1") in which they showed that using ASN.1 binary encoding is significantly faster than using XML encoding. Using this the data can be described using ASN.1 (analog to XML Schema) and encoded using a standard ASN.1 binary encoding . (Unfortunately only the abstract is publicly available.)

This seemed a Good Idea, especially in enterprise environments were performance is important. However, the idea has not escaped others, as I found out when I came across this news article about speeding up XML. This references the Fast Infoset project which (you've guessed it!) uses the ASN.1 standards and encodings.


Monday, January 10, 2005

Building an Enterprise using Hosted Services I

Hopefully I'll get back to the service versioning problem later. But in the mean time I keep hitting against the idea of running a enterprise just by using hosted services. This seems very attractive - no software to install and manage, cut down on the amout of hardware you need etc.. So I thought it would be interesting to find out what types of business processes can be supported in this way. First one I found was Talaris who deal with procurement. Next was Salesforce.com - they deal with, obviously enough, sales processes (incuding CRM). One in Germany, Acinum who deals with various SCM procesess (careful, when I tried, the english version was not working).

I'm sure there are more and when I find them I'll blog them. Maybe you can run all your companies business processes just by using hosted services from different suppliers. But how will they all work together?

Thursday, January 06, 2005

Versioning Services

I becoming interested in how services can be versioned in a serviced orientated architecture. Doing a google shows quite a lot of activity in the area, only every one seems to think that the problem is restricted to web services, but a more about that later.

One article - Best practices for Web services versioning - from a couple of IBMers proposes versioning the XML namespaces of the messages schema (as defined in the WSDL) and then either issuing errors for requesters using the old schema of using some kind of routing mechanism which picks up on the namespace and directs to the correct version. The authors do, however, go on to say that products to do this type of routing for you are rare on the ground (they mention TalkingBlocks, but this seems to have been taken over by HP and, at a first glance, I couldn't find any explicit mention of how such routing is achieved). They then go on to show how the versioned service definitions can be stored in a UDDI compliant directory.

One consensus which seems to have formed is that you're on your own when it comes to service versioning.

As I mentioned before, the terms services and SOA seem to be synonymous with web services. But what about SOAs which use MOM or use REST styles of communication or mix them all together. Is there a general mechanism or architecture which can bring these all under the umbrella of one versioning scheme?

Wednesday, January 05, 2005

Java Development

Developers seem to be getting tired of the complexity associated with the J2EE architecture and as such are developing and using lightweight frameworks which use POJOs. A combination which seems to becoming popular is Struts for the (web) user interface, Spring for the code container and Hibernate for object/relational mapping.