ApachCon Europe06 - Apache Tuscany
So I went to ApacheCon in Dublin this week (I'll put a proper write-up soon). But one of the talks I went to was Apache Tuscany: which is a runtime implementation of the Service Component Architecture SCA spec. The SCA spec (currently 0.9) is a specification of how to assemble together a number of components Java, Web Services, C++ into an overall service. Now there are things I like about the SCA specification:
- It's provides an Inversion-of-control pattern for the creation of services in languages such as Java using annotations. OK if this was it, we don't need it, we have Spring.
- It's language-neutral.
- It provides a mechanism of assembling components and these components can be Web Services. We need this at the moment we have a standard way of describing single web services (WSDL), but in integration projects you never see just one Web Service (that would be the integration part). So from a tooling perspective, being able to describe collections of web-services, wire them together and get the tooling to sort out the endpoints dependencies and parameterization is a good idea.
- It mandates that all remote connections between components must be defined in WSDL.
- It's just an XML vocabulary. It doesn't mandate runtimes or specific constraints.
- You can specify WS-I and WS-Security Basic Profile nicely.
- It allows components to be wired together from any language - directly. Is this going to work very well? Well okay maybe for scripting languages running on a VM and for the exchange of simple structures and types it's okay. We already have an language for interchanging information between languages/platforms and systems. It's called XML. But if the components are going to be wired together then each of these components operations and parameters must be describable in each of the components languages. We have a standard for this too - it's called WSDL. But SCA doesn't define it like this. There's some sort of magic language-to-language binding to be done for wiring components together. I say magic, cos the spec doesn't say anything about it - presumably Apache Tuscany is working this out.
- It has nothing to say about deployment. For a language which is being aimed at tools (see STP project in Eclipse) this is a bit weird. I may want to design a new SOA system as an assembly of connected Web Services at design time and then deploy them to one server, or multiple servers. But SCA has nothing to say about this - yet.
- The SCA specification is not open. You cannot see the current draft and meeting minutes are not open. But Apache is implementing it and presumably getting some kind of priority access given that some of it's contributors companies are members of the specification body.
Once you have such an assembly description things like monitoring, management and reporting also become much more coherent.
So what was the Apache Tuscany talk like. Well given that I, on balance, like the SCA spec, the talk was a bit of a let down. It provided no real information apart from a status report. Okay, fair enough, a lot of the talk was about SCA (cos most people haven't heard of SCA and it requires quite a bit of explanation). But there was no real information about how the runtime was constructed, how the interlanguage mapping is happening, or whether there are issues in the protocol bindings.
Also Apache Tuscany is not the reference implementation of SCA. Let me just say that again. It is not the reference implementation. There is no reference implementation. Haven't we learnt yet. No spec without at least one reference implementation and preferably 3 or 4. Because there's no reference implementation there's no plans for a verification kit. Worrying. Well not to me, I'm not interested in a runtime, I'm interested in using it as an assembly format for web services; but if I was a vendor planning a runtime I would be.
