Академический Документы
Профессиональный Документы
Культура Документы
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
• 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
• 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