10x latency improvement – how to squeeze performance out of your biztalk solution

64
t Sponsors Johan Hedberg Integration MVP 10x latency improvement – how to squeeze performance out of your BizTalk solution BizTalk Summit 2015 – London ExCeL London | April 13th & 14th

Upload: biztalk360

Post on 20-Jul-2015

119 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: 10x latency improvement – how to squeeze performance out of your BizTalk solution

tSponsors

Johan HedbergIntegration MVP

10x latency improvement – how to squeeze

performance out of your BizTalk solution

BizTalk Summit 2015 – LondonExCeL London | April 13th & 14th

Page 2: 10x latency improvement – how to squeeze performance out of your BizTalk solution

Who am I?

• Johan Hedberg

• MVP, former MCT and V-TSP

• Author

• Currently working as a solution architect for an information services (non-consultancy, non-Microsoft partner) company called Bisnode

• Twitter: @johhed

• http://blogical.se/blogs/johan

• dsf

Page 3: 10x latency improvement – how to squeeze performance out of your BizTalk solution

Goal

• The goal originally: BizTalk performance

• The goal became: Design your BizTalk solution for performance

• The goal focus is: Design your BizTalk orchestrations for performance

• Some things to think about when planning your architecture to meet to your performance requirements

Page 4: 10x latency improvement – how to squeeze performance out of your BizTalk solution

Plan

Do

Check

Act

Page 5: 10x latency improvement – how to squeeze performance out of your BizTalk solution

Design

Develop

Test

Tune

Page 6: 10x latency improvement – how to squeeze performance out of your BizTalk solution

Instrumentation

Page 7: 10x latency improvement – how to squeeze performance out of your BizTalk solution

BizTalk Instrumentation

DTABuilt-in

Perf-CountersBAM

CustomPerf-Counters

Trace & Log Statements

Exception Handling

Page 8: 10x latency improvement – how to squeeze performance out of your BizTalk solution

Facade

Process

Data

The architecture

Page 9: 10x latency improvement – how to squeeze performance out of your BizTalk solution

Consumer Facade

Canonical Process

Backend Provider

Page 10: 10x latency improvement – how to squeeze performance out of your BizTalk solution

Cons

ProcBackEnd

Snd

Rcv

GetVechicleInformation

Page 11: 10x latency improvement – how to squeeze performance out of your BizTalk solution

Snd

Rcv

GetVechicleInformation

Map toCanonical

SndAuth

SndDebit

Page 12: 10x latency improvement – how to squeeze performance out of your BizTalk solution

Rcv

EnrichMap

Lookup color

SndModel

InfoSnd

GetVechicleInformation

Page 13: 10x latency improvement – how to squeeze performance out of your BizTalk solution

Snd

Rcv

Map fromCanonical

GetVechicleInformation

Page 14: 10x latency improvement – how to squeeze performance out of your BizTalk solution

GetVechicleInformation

Page 15: 10x latency improvement – how to squeeze performance out of your BizTalk solution

GetVechicleInformation

16s

Page 16: 10x latency improvement – how to squeeze performance out of your BizTalk solution

MsgBox

Page 17: 10x latency improvement – how to squeeze performance out of your BizTalk solution

MsgBox hops

38

Page 18: 10x latency improvement – how to squeeze performance out of your BizTalk solution

38 ~300ms

11 s

MsgBox delay

Page 19: 10x latency improvement – how to squeeze performance out of your BizTalk solution

Optimization 1Reduce MsgBox hops

Page 20: 10x latency improvement – how to squeeze performance out of your BizTalk solution

Cons

ProcBackEnd

Snd

Rcv

GetVechicleInformation

Page 21: 10x latency improvement – how to squeeze performance out of your BizTalk solution

Cons

ProcBackEnd

Snd

Rcv

Call

Call

GetVechicleInformation

Page 22: 10x latency improvement – how to squeeze performance out of your BizTalk solution

Call

Rcv

Map toCanonical

SndAuth

SndDebit

GetVechicleInformation

Page 23: 10x latency improvement – how to squeeze performance out of your BizTalk solution

Called

EnrichMap

Lookup color

SndModel

InfoCall

GetVechicleInformation

Page 24: 10x latency improvement – how to squeeze performance out of your BizTalk solution

Snd

Called

Map fromCanonical

GetVechicleInformation

Page 25: 10x latency improvement – how to squeeze performance out of your BizTalk solution

22

Page 26: 10x latency improvement – how to squeeze performance out of your BizTalk solution

22 ~300ms

7 s

Page 27: 10x latency improvement – how to squeeze performance out of your BizTalk solution

10 s

Page 28: 10x latency improvement – how to squeeze performance out of your BizTalk solution
Page 29: 10x latency improvement – how to squeeze performance out of your BizTalk solution

Optimization 2Consider your Level/Layer of re-use

Page 30: 10x latency improvement – how to squeeze performance out of your BizTalk solution
Page 31: 10x latency improvement – how to squeeze performance out of your BizTalk solution

Snd SndRcv Rcv

Page 32: 10x latency improvement – how to squeeze performance out of your BizTalk solution

Call

Call

Page 33: 10x latency improvement – how to squeeze performance out of your BizTalk solution
Page 34: 10x latency improvement – how to squeeze performance out of your BizTalk solution

10

Page 35: 10x latency improvement – how to squeeze performance out of your BizTalk solution

10 ~300ms

3 s

Page 36: 10x latency improvement – how to squeeze performance out of your BizTalk solution

5 s

Page 37: 10x latency improvement – how to squeeze performance out of your BizTalk solution
Page 38: 10x latency improvement – how to squeeze performance out of your BizTalk solution

Optimization 3Use Caching

Page 39: 10x latency improvement – how to squeeze performance out of your BizTalk solution
Page 40: 10x latency improvement – how to squeeze performance out of your BizTalk solution

4.4s

Page 41: 10x latency improvement – how to squeeze performance out of your BizTalk solution
Page 42: 10x latency improvement – how to squeeze performance out of your BizTalk solution

Optimization 4Optimize your logical flow

Page 43: 10x latency improvement – how to squeeze performance out of your BizTalk solution

Call

Rcv

Map toCanonical

GetAuth

Call Debit

GetVechicleInformation

Page 44: 10x latency improvement – how to squeeze performance out of your BizTalk solution

Call

Rcv

Map toCanonical

GetAuth

Call Debit

SndResp

GetVechicleInformation

Page 45: 10x latency improvement – how to squeeze performance out of your BizTalk solution

3.8s

Page 46: 10x latency improvement – how to squeeze performance out of your BizTalk solution

Optimization 5Consider your Host Settings

Page 47: 10x latency improvement – how to squeeze performance out of your BizTalk solution

Host Separation

Polling Interval

Threading Throttling

MemoryGlobal

Tracking

Page 48: 10x latency improvement – how to squeeze performance out of your BizTalk solution

2.2s

500 (~300)

50 (~30)

Page 49: 10x latency improvement – how to squeeze performance out of your BizTalk solution

Optimization 6Inline Sends

Page 50: 10x latency improvement – how to squeeze performance out of your BizTalk solution

Cons

ProcBackEnd

Snd

Rcv

Call

Call

GetVechicleInformation

Page 51: 10x latency improvement – how to squeeze performance out of your BizTalk solution

Cons

ProcBackEnd

InlineSend

Rcv

Call

Call

Code

GetVechicleInformation

Page 52: 10x latency improvement – how to squeeze performance out of your BizTalk solution
Page 53: 10x latency improvement – how to squeeze performance out of your BizTalk solution

1.9s

Page 54: 10x latency improvement – how to squeeze performance out of your BizTalk solution

(Optimization 7)Instrumentation

Where is the remaining time?

Page 55: 10x latency improvement – how to squeeze performance out of your BizTalk solution

1s150ms

Page 56: 10x latency improvement – how to squeeze performance out of your BizTalk solution

100ms

150ms

Page 57: 10x latency improvement – how to squeeze performance out of your BizTalk solution

1.0s

Page 58: 10x latency improvement – how to squeeze performance out of your BizTalk solution

Optimization 8Persistence Points

.

Page 59: 10x latency improvement – how to squeeze performance out of your BizTalk solution

Send Response

Write To Trace“Orchestration Done”

Long Running Scope

Write To Trace“Scope Done”

Non-Serializable

1

2

3

Atomic Scope

Page 60: 10x latency improvement – how to squeeze performance out of your BizTalk solution

Send Response

Write To Trace“Orchestration Done”

Write To Trace“Scope Done”

Code that does not need Transactions

1

Page 61: 10x latency improvement – how to squeeze performance out of your BizTalk solution

0.95s

Page 62: 10x latency improvement – how to squeeze performance out of your BizTalk solution

x17

.

Page 63: 10x latency improvement – how to squeeze performance out of your BizTalk solution

Summary• Create an architecture meets your requirements

• Instrument your solution

• Reduce MsgBox hops

• Choose an appropriate layer design

• Choose an appropriate layer of reuse

• Apply caching where possible

• Optimize your logical flow (order of shapes)

• Configure your host settings and polling interval

• Make use of Inline Sends

• Identity downstream backend issues and work to resolve them

• Reduce your persistence points by making appropriate use of scopes, transactions and trace statements

• Apply other techniques as needed to achieve your requirements!

Page 64: 10x latency improvement – how to squeeze performance out of your BizTalk solution

Conclusion• No one size fits all – know your solution – know your requirements

• There are best practices…

• …and then there are “practices”

• Develop, test, tune, choose one thing. Repeat.

• How you optimize your solution alters the its demand on resources• Ie – inline sends will stop persistence, stop dehydration, consume more memory, hold on to

more threads longer – aka move demand from disk to memory and threads – configure accordingly… No solution is static.

• Applying the right optimizations to your scenario can give you a 10x latency improvement