10.11.2014 Views

Planning_and_Impleme.. - didier beck weblog

Planning_and_Impleme.. - didier beck weblog

Planning_and_Impleme.. - didier beck weblog

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

www.butlergroup.com<br />

<strong>Planning</strong> <strong>and</strong> <strong>Impleme</strong>nting SOA<br />

IBM recommends that the development phase of a SOA project will require a number of roles, such as<br />

Software Architect, Developer (this may include application developer, component developer, <strong>and</strong><br />

integration developer), Test Engineer, Test Architect, <strong>and</strong> Test <strong>Impleme</strong>nter. Whilst this may appear overkill,<br />

<strong>and</strong> sometimes these roles could be filled by one or two people, the identification of the different roles<br />

needed may help assemble the best project team.<br />

<strong>Planning</strong> the infrastructure for SOA will require careful thought.<br />

<strong>Planning</strong> for a SOA deployment will require capacity planning <strong>and</strong> hardware planning where estimates of<br />

service volumes need to be considered, as well as usage patterns. Such planning will not be straightforward;<br />

a SOA infrastructure is made up of many components, such as middleware, mediation <strong>and</strong> orchestration<br />

brokers (which may be part of an ESB), infrastructure integration services (such as for security, monitoring,<br />

<strong>and</strong> exception management), as well as BPM engines, <strong>and</strong> of course, the underlying network infrastructure.<br />

This may itself have many components that impact performance <strong>and</strong> capacity<br />

including routers, switches, traffic load balancers, <strong>and</strong> encryption (such as<br />

SSL) <strong>and</strong> transformation XML Stylesheet Language Transformation (XSLT)<br />

accelerators.<br />

When carrying out capacity planning for SOA, performance is probably one of the<br />

easier aspects to measure, yet even that can be a challenge given the distributed<br />

nature of SOA. Estimating the number of transactions that are likely to occur, the<br />

number of users accessing a service is also quite measurable.<br />

Composite applications may be made up from a number of services, <strong>and</strong> these<br />

may not all have the same SLA (especially over time), which may of itself lead<br />

to interesting decisions as to how to scale up the required infrastructure.<br />

A common approach would be to over-engineer the infrastructure – <strong>and</strong> certainly it would be wise to allocate<br />

budget to hardware at the outset of a SOA project. But some of the infrastructure elements can be very<br />

expensive if under-utilised (BPM engines are a particular example here). A pattern-based approach to<br />

capacity planning is one good option, taking into account a range of access patterns to the services that<br />

encompass simple <strong>and</strong> complex scenarios.<br />

A simple pattern might cover a validation service (using a schema, for example), a transformation from one<br />

format to another, <strong>and</strong> then publishing a message onto a queue. A more complex pattern might add in lookups<br />

<strong>and</strong> process management capabilities. The capacity planning process should then test the various<br />

scenarios <strong>and</strong> record results in order to then extrapolate based on peak load estimates. This peak should<br />

then be projected forward over time to forecast where additional capacity might be required in the future.<br />

Another part of infrastructure planning is to consider failover <strong>and</strong> disaster recovery – establishing how<br />

alternative infrastructure can be utilised <strong>and</strong> what the service failover options should be. In any serious<br />

project, failover should be designed in, <strong>and</strong> then tested to ensure that it works.<br />

Services within a SOA may be combined in unforeseen ways.<br />

When carrying out<br />

capacity planning for<br />

SOA, performance is<br />

probably one of the<br />

easier aspects to<br />

measure, yet even that<br />

can be a challenge<br />

given the distributed<br />

nature of SOA.<br />

A key issue in testing within a SOA is that it is not always clear, when designing a service, how it is going<br />

to be used. A service could be reused <strong>and</strong> combined with other services in ways that are not foreseen at<br />

the development phase, so services will therefore need rigorous testing to ensure that when the<br />

unpredictable happens, they cope. Testing in a SOA will encompass the ability to test Web services but also<br />

other types of service.<br />

As with any type of application or service, one of the first tests should be whether the service does what it<br />

is intended to do, in terms of the capabilities that it is intended to deliver. Such functional testing will also<br />

need to be carried out but issues such as unit testing, system testing, load testing, <strong>and</strong> overall performance<br />

all need to be addressed when testing is carried out, <strong>and</strong> where a service may have multiple bindings, each<br />

will need to be tested.<br />

December 2006 Section 1: SOA Deployment 29

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!