Вы находитесь на странице: 1из 15

High Performance SOA

Tips, Tricks and Best Practices

Amol Khire
Defining Performance
“The ability to meet expectations“
– Typically defined in terms of throughput,
response time, concurrent processing,
resource utilization
– For individual services AND composite
service
– For IT AND for Business
The Performance Problem
Impacts
Latency

Definitely affect
Loosely performance
coupled

Business Agility
Promotes Re-Use
High Performance SOA: Tips
• Setting the bar
– Work backwards and first define required
performance of an composite service and also for
the atomic services.
– Get enterprise architecture team, CoE to define
the “Performance Budget” for each atomic
service participating in the composite
– Take the most demanding composite service as
baseline
High Performance SOA: Tips
• Tips : Follow Amdahl’s Law: in design,
development and QA cycles
– “The performance enhancement possible with a given improvement is
limited by the fraction of the execution time that the improved feature is
used”
– i.e. Don’t waste time and energy in improving
something that will not dramatically impact
business perception of performance.
• Tips: Make design configurable for throughput
and latency
High Performance SOA: Tips
• Service Creation
– Abstraction is good for re-usability, providing agility. Not for
performance.
– Ask : Should this be a separate service or a functionality
provided by service ?
– GetLibraryInformation can be a service, GetBook,
GetMagazine, GetJournal should not probably be separate
services
• Choosing Service Granularity
– Coarse Grained is usually better for performance
– Too many fine grained services can exponentially increase
interactions between services causing severe performance hit.
– Creating separate service to satisfy some special requirements of
some end-user will often sacrifice reusability for increased
performance.
High Performance SOA: Tips

• Loosely Coupled ?
– Loosely Coupled can potentially be bad if
extremely high performance is required.
– Loose coupling is appropriate only when
the interacting services change frequently.
– Don’t change existing tightly coupled
interactions if costs > benefits.
High Performance SOA: Tricks

• Tricks : Short Circuiting critical path in


performance
– Make the most used path the fastest even
if it violates all that you know about
abstraction.
• Tricks : Avoid Contention in Services,
Avoid or plan for Herding Effect
High Performance SOA: Tricks
• Tricks : Do as much processing for a given
service “locally” as possible, even if the
services are distributed
• Tricks : Avoid passing around bulky XML.
Purge unnecessary parts of the XML from
request, re-assemble at response
• Tricks: Consider offload technologies for CPU
intensive elements (XML Parse, Encrypt-
Decrypt..)
High Performance SOA: Best Practices

• Performance Testing
– Typical (Incorrect) Approach
• “Performance test each atomic service and
make sure it meets/exceeds requirements of a
composite”
• OR
• “Performance test composite service without
knowing the performance characteristics of the
atomic services”
High Performance SOA: Best Practices

• Performance Testing..
– Consider Re-Use
– Do comprehensive performance modeling
– Continuous performance testing with “live”
services
– Incorporate sampling from “live” services
as input data for continuous performance
testing
– Design time: Incorporate “test stubs”
High Performance SOA: Best Practices

• Performance Testing…
– Get out of the SAT/UAT/Integration  Production
Testing mindset
– Service Performance Monitoring solution that has
capability to take corrective action in “real-time”
– Continuous performance testing with “simulated”
service interfaces and feedback mechanism to
take corrective actions
High Performance SOA: Best Practices

• Comprehensive Modeling Framework


– Interaction Patterns
– Incremental Cost of Governance (Access Control,
Logging, Policies)
– Vendor Architecture
– Feedback Loop
– Comprehensive analytical impact analysis
framework
• Rule Based system to predict SLA violations.
Most Alert systems only factor in current load
High Performance SOA: Best Practices

• Change Management
– Don’t Change/Replace highly reused
services without understanding the
performance characteristics of ALL the
composite service that they are used in
– Don’t just test the performance regression
of the service that has changed without
also testing/modeling the impact on
composites that use the service
High Performance SOA: Best Practices
• Organizational Structure
Successful SOA needs a buy-in from “someone at the top”
• Ownership
– Procurement IT: “All my services are up, it’s the account
departments service that went down which caused the
composite to fail”.
– Account IT: “We just shared our invoicing service with Sales
department, 90 users were accessing the service which was
built for only 70”. Blame the Sales IT for this
– Sales IT CTO: “Only 40 sales folks were accessing the
service”.
• ABSOLUTELY NEED a COMPOSITE SERVICE OWNER at business,
architecture and IT level

Вам также может понравиться