I suppose I’m switching gears a bit here back towards something almost philosophical rather than my usual concrete technical info So be it. In the last six months, I’ve been at several clients sites that are using SOA appliances to build XML Gateway and ESB patterns. I answer quite a few client questions by pointing them to articles on thinkmiddleware.com. It saves all of us time. So, we come to this topic.
I’ve been asked these question by several of my clients in the past year. I’ve been doing IBM DataPower consulting lately. I’m a big fan of the SOA Appliance concept. So, here I’m going to explain my view of what an Appliance is and what a SOA Appliance is.
It probably doesn’t take to much of a leap of imagination to figure out where this name came from. Look around your kitchen–you’ve got a refrigerator, a stove, an oven, a toaster, a can opener, a garbage disposal, ice maker, etc, etc. These are all commonly referred to as appliances. Each one, a piece of technology designed to do a specific task and do it well.
In the high-tech arena, an appliance is a piece of hardware that generally does one thing, it does it very well, it has an easy to use interface, it is generally configuration driven (no coding), it is really fast at doing that thing, and it may contain circuitry/hardware to help speed up its functionality.
Examples of appliances in our industry may include load balancers, NAS solutions, SAN solutions, firewalls, network monitoring equipment, various security technologies. The hardware load balancer and NAS appliance are probably the most common types of appliances that most IT people have encountered.
The SOA Appliance
I haven’t really done a rant on the term ‘SOA’. That can be a post for the near future. I don’t like this term. It is ambiguous and the industry’s marketing machine has really worn it out.
SOA Appliance describes a specific category of appliances that satisfy:
- Support for XML, XSD, XSLT and related XML specs.
- Support JSON, flat file, binary message formats (especially industry standards), HTML/XHTML, etc.
- Parse, process, transform XML efficiently.
- Probably has hardware support to support these activities.
- Wide support for standards.
- Support WS-* standards.
- Support SOAP, REST, XML over HTTP Web Services
- Support SSL/TLS, WS-Security, x509, and most of the other common, modern security standards.
- Probably provides hardware support for cryptographic operations.
- Support a variety of common transport protocols that are used by web services (HTTP, FTP, NFS, JMS, MQ, TCP, etc).
- Provide for service mediation logic.
- Provide service orchestration logic.
- Advertise a web service API.
SOA Soft Appliances
SOA Appliance vendors may also offer a “soft appliance” concept that will come in the form of a VMWare image or something similar. As the industry moves towards ubiquitous virtualization resources being made cheaply available (I’ll define cloud computing elsewhere), being able to scale SOA Appliance functionality efficiently in the same way as one could with other tiers, is very appealing. But, at the same time, we are losing the hardware support for XML parsing and cryptographic operations. It’s all a matter of trade offs.
I’ve used SOA Appliances to implement two major design patterns: XML Gateways and ESBs. By their very nature, SOA Appliances are limited in what they can do. So, an organization must take into account what functionality is needed in an ESB or XML Gateway before a pure-appliance approach can be taken. Sometimes, a software approach is more appropriate. But, I have found that if you plan ahead, either of these patterns can be implemented with appliances and some supporting infrastructure.
We’ll talk more about ESBs and XML Gateways in future posts.