Planning_and_Impleme.. - didier beck weblog
Planning_and_Impleme.. - didier beck weblog
Planning_and_Impleme.. - didier beck weblog
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
<strong>Planning</strong> <strong>and</strong> <strong>Impleme</strong>nting SOA<br />
www.butlergroup.com<br />
ANALYSIS<br />
There is a trade-off possible between performance <strong>and</strong> long-term<br />
agility, <strong>and</strong> this needs consideration before committing to a course<br />
of action.<br />
We need to be quite clear about the purpose of SOA: it is to provide improved utilisation of business<br />
functionality as delivered by application programs. This improved utilisation may take the form of better<br />
integration, creation of composite applications, automation of business processes, <strong>and</strong> the ability to allow<br />
The purpose of SOA is<br />
not to improve<br />
performance, <strong>and</strong><br />
adding extra layers of<br />
software will<br />
inevitably have a<br />
performance impact.<br />
each of these to evolve over time as the business model changes. Because<br />
SOA is layered on top of application resources, it is never going to increase<br />
performance above the capabilities of the underlying systems. (Note, though,<br />
that end-to-end times could be reduced through the ability to execute multiple<br />
tasks in parallel instead of sequentially.)<br />
The purpose of SOA is not to improve performance, <strong>and</strong> adding extra layers of<br />
software will inevitably have a performance impact. However, everything has<br />
its price, <strong>and</strong> IT must continue to meet the processing workload <strong>and</strong><br />
performance expectations of the organisation, SOA or not.<br />
Much of the performance overhead of SOA stems from the use of Web services. The role that Web services<br />
plays is to isolate the SOA control <strong>and</strong> run-time environment from the physical properties of the underlying<br />
services. With Web services, the ESB neither knows nor cares what physical platform a service executes<br />
on, what operating platform is used, or which language has been used to create the application. This<br />
virtualisation is the source of the overhead with which we must contend.<br />
Web services itself is built on top of XML, this being the commonly-accepted st<strong>and</strong>ard for technology-neutral<br />
messages. The message body itself may become quite large, since a common way of exploiting SOA is for<br />
the same basic message to be passed to each service in turn, with each enriching the message with the<br />
results of its own activity. (In this way the message itself retains the context<br />
required for subsequent operations.) Hence, in a complex multi-step process<br />
the body gets larger <strong>and</strong> larger. Additionally, the SOAP envelope contains<br />
information necessary for the routing of the message plus optional extensions<br />
such as the style of messaging needed (e.g. guaranteed once-only delivery),<br />
privacy requirements, public <strong>and</strong> private key tokens for encryption, <strong>and</strong><br />
potentially many more.<br />
Thus the Web services message load can add significantly to the network<br />
traffic, <strong>and</strong> particularly where encryption is needed, to the server overhead for<br />
processing the message. For any but trivial use of SOA, encryption is likely to<br />
be m<strong>and</strong>atory, even inside the firewall. Web services st<strong>and</strong>ards provide for<br />
encryption of just sensitive parts of the message, <strong>and</strong> this option should<br />
always be used to reduce the processing overhead.<br />
We need to consider whether to compromise the logical design to accommodate the performance needed by<br />
the business – but first there is a general rule in IT (which is re-learned in every new generation of technology):<br />
The golden rule: Do not optimise unless you have to!<br />
Thus the Web services<br />
message load can add<br />
significantly to the<br />
network traffic, <strong>and</strong><br />
particularly where<br />
encryption is needed,<br />
to the server<br />
overhead for<br />
processing the<br />
message.<br />
In this case, Web services plays a major role in delivering the adaptability we seek from SOA. By abstracting<br />
away the physical details of an application we gain great freedom to replace applications piecemeal,<br />
outsource to a hosted service provider, provide hot-st<strong>and</strong>by facilities for critical services, <strong>and</strong> many other<br />
important capabilities. If we discard Web services in favour of more compact technology-specific messaging,<br />
we lose these capabilities. Therefore, the best advice is to carry out performance modelling for the projected<br />
system capacity <strong>and</strong> decide if it is truly necessary to optimise.<br />
24 Section 1: SOA Deployment<br />
December 2006