From 80f32a2e0c32a5b0d220d05469de3dbdae012751 Mon Sep 17 00:00:00 2001 From: JasonTaylorDev Date: Mon, 12 May 2025 16:39:21 +1000 Subject: [PATCH 1/7] NServiceBus & Strangler Fig --- menu/menu.yaml | 2 + modernization/images/figure-1.png | Bin 0 -> 17746 bytes modernization/images/figure-2.png | Bin 0 -> 25439 bytes modernization/images/figure-3.png | Bin 0 -> 26871 bytes modernization/images/figure-4.png | Bin 0 -> 21648 bytes modernization/stranglerfig.md | 71 ++++++++++++++++++++++++++++++ 6 files changed, 73 insertions(+) create mode 100644 modernization/images/figure-1.png create mode 100644 modernization/images/figure-2.png create mode 100644 modernization/images/figure-3.png create mode 100644 modernization/images/figure-4.png create mode 100644 modernization/stranglerfig.md diff --git a/menu/menu.yaml b/menu/menu.yaml index d80892a50cc..dceb429b65d 100644 --- a/menu/menu.yaml +++ b/menu/menu.yaml @@ -1727,6 +1727,8 @@ Url: modernization/migrate-to-the-cloud/on-premises-to-aws - Title: On-premises to Azure Url: modernization/migrate-to-the-cloud/on-premises-to-azure + - Title: NServiceBus and Strangler Fig + Url: modernization/stranglerfig - Name: Shape the future Topics: diff --git a/modernization/images/figure-1.png b/modernization/images/figure-1.png new file mode 100644 index 0000000000000000000000000000000000000000..ac7c58baf25dbd25d122f4db152c94624169e1ab GIT binary patch literal 17746 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 S5DgXy)6q20DE;m3AO9bF!zKOz literal 0 HcmV?d00001 diff --git a/modernization/images/figure-2.png b/modernization/images/figure-2.png new file mode 100644 index 0000000000000000000000000000000000000000..c8d2c2e60a5b197cdfd3702baff29405f06c368b GIT binary patch literal 25439 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 literal 0 HcmV?d00001 diff --git a/modernization/images/figure-3.png b/modernization/images/figure-3.png new file mode 100644 index 0000000000000000000000000000000000000000..771a9e7ce30c969bba9d3055a53d94c20197b537 GIT binary patch literal 26871 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

O%!cFTgu{OV8uG8qFDFcx+#;UgLxL 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 literal 0 HcmV?d00001 diff --git a/modernization/images/figure-4.png b/modernization/images/figure-4.png new file mode 100644 index 0000000000000000000000000000000000000000..14868c476240521e5952cc95273c01ecaa52f38b GIT binary patch literal 21648 zcmdqJ2UJtr*Do4uC<-=EX#xUD5s)q*Afh55MY^F0NDUnV5~>Ys6poeO(P^CJrVT z492W^>$(99wwD5f?U6Zn0Gv7fqqhWnF!&f~T!Z1hb4`Ii_BpEQsKH<*(T6u}_Jh9< zdEUC~1B0>DL;o{0cof`+!Hfhoud5k7u$mbNco&J>Y522}G^N1s^LKkYSqkhE6Iji$AFWtOB)@R6jO)W8e>Z)^k z#)_e{jIe!|0M&T!v4^YYcSvDd4_*Zy@kyG*1F(JK&@UPL*K9|m9@j71ywOw9fWclI zM?f>6-6m#koaSmTlf4jUb6Fr8mfbxS&N{8np0ED7YExPu)sNjEobM^?Fq7gV)|}hS zZrqvjfj5OO#?@{BB0*bttl0G_LY;}p+v(nW&wZefZ{tc-(aIXUitGn?MI=_0kUn!htT~wWMr%7KwX7q@k zP#phIgmiai46m?)tYPT8CeOLg->pS~;PSbD*$>vczlJTb{}<8snYuD(c%j}KPveW+ zpAR_hKQmYy-z~Oh z>an8gic6-%b}6PyE;>MB;*J5qx>{GtjT>X>Zo1TOedkgXhHv`Os4dv`j3>kLXJEs> z$75K3$6Qlj3VOnN$!sr7|IvKWF-Wvv|3Ucn$<$ve^;`4v+&B4gRst3l8^+uUln%rr zq2el-HcF~KDm;@ng0N>>yd&n(;~aByqfXI*EF;AyM~}mfz1`g?q?{qjdBV9>c{-Nw zTjRw#_g_L*YHHqRl87}g3`aQPjGf0j8DM)@cUi|GdPt);YFkuErJP!tuW4<1L0R0*DZaM_G2k$}Lb#u!9Z^5jU`VH> zJI49SStf;#-aFRm!5$u%rN-v?EID2xSMIot2+y_Rzvq(i`Eq<(VF!DXlz_r5N=Wmi zBMMvwNnk!F(F`!beSm5(Rrz~$u;7Jn7sw7U*s#W`k0iAB|4F`u?)a}4=l@U5f(38^ zf*%GGQVCq1{`pqY4%3?VGh3qwNh3o$q5tYkWQzdxa zEG1{L4Ct-jHvrew9UYUqmTJxkgUug>{I<ctxCZC+-JJ5N~-Th8b zhPM`g^V^Z;UJO?y6$2J>{AT-|L-u!Gus?P$64Q zO--#^w|*?Fj`b4lU%GS^6&BB5vV>n~f-}KRk4Eopi1R*oBVt()++|>?Xr2Ax!{sit zaWnW;NB|n(+_!Jv)*p;Fz)7fhaSv1y?t>Iu2QF8hzz`<3;m7@>ca`2-jC#Y-=}~aJ zUPDOah3X)~RU06-SC6l*j_gor9yKN#v_7;Q#g7RY4%dd&O@vr&zpUAw4n$7=xTAjH z=wTaawCH!K>Mj*MgdJHuPVS#nWl279(T zY*V{^yMEpCcRp%jXs-AGCoJe0n5&B18djc-$ z17p>XAuz!7J(c`tJA09cLuA+{e6d^yDJO0G=g%LqIP59|cvfA6%Bp8FaixmfdjuAe zzoRUVSTOf!8uPwe1%vIs3iyQQd2}=-sm16^nVSO`w$@N3t2(*DEiYhk;$PR?E%kj4 zFR%Rs4N_#-b~$)$ED`YIRR*B^>KHA=6GOHY9s+J+$Tf(+#olCOU=T|<42#hNTRi{p z$&-DuuH>tk-}MovVXK63x0I3+cGxNm@LkY7dRtMK(6~238n#NBJjGllViQkb|Hqx9 zb`3^+S=Hdgrq$YuG2|769x#K(3t($juX=lzHfh8Gt_&M0I(A3*+qVX6D=aJsXvDCi z0vC83M>(!u72&yKbs;LfSZ*(D0kZuno}=@}jnOBZ-9VgDcLQ={!SUZWn*U?{arIDX zXd45eu#z4PU zn6wu}}&&S&qyAoew2Vk&wrvWL&z44JL7C<6+{^SJp&hoVl><*pzLyqe{JTu!t*XS;@uZC2}YD`)xSmb{7#k9PY* z5+lK#egJDu`dFlV%s$7_sq5$=6un2&D)joiJe{M{_@!vd#1&ioC4@^S4##dy!n+C6 z=))cSq_iD>@lnP5IgXPXPn%mBC`*$$9u$cmMTQq1bTPm@OZY7I*4>z{+OOR@mm=eV z=@E5s+04n84QU5%_vT4vc7?|2bVX-WrjDezZp8A1sbo?2AH!+&^daGN5xNnY@LA%C zqB?ycZenT5zr%-1`jk!=8#Wo99xJh*#4_MfV@05K8JU?m10IE)W&<2{HP#60U=$VR zyYVb!{MK@7#fpL1gSS>F+pH{pbLT0F>RV)XgbFTv%&s~w8o%Y7N%cdWHz_62v_gNB0ZG7hPt`3^U0JJun~xn^MP3H?=t~S9A2pk^uu`M zCmqp>pTT=?(uTJMx)A!N6go8vs8gDuPyE*6gS0Bgsv4_oVj5;n8BeoGoCv^ltl2Lr zzMFf$V&RjT-qva84q{H)AZm_&bRoz}?Yq6Dgi682rJ3%96vD-b{=uO&6(0~7K^|F* zKya;RQrZU(49m2#Q+Zc`rT+(Ija0gbnaI1o< zD8gKCjX7Ws<0@k60+*O7xXyp@@-@Trx^%dx3gWAUvXtv9)0rOW+1`?)qzu47Y}6yh zKyu^9wK~S>&zVF|=0%^@>kyq&2~|@a=}jk3Q73W9lJ@p!1@ z^G@{EPJ~&Z7GxLyL~fxbNq0S*r)hd3nA>J)oMmgj|3xUU^Oim)ElW(=O-$Zz(n8IZ zanspAiy#K`54YB!n5k4WV#KK2^+S(ez{ooFf!n)Ye-}h~Kog6qH9jf(&zm%|tg@nW z2k|<0f4YDskxIO5*^&K5pb#D@G(aCt9rvkl?{^596YgY3OC)TWp3K+z!M(!Lx$%CG zoGY7^gITHdSP2nEa4e+_Eo;SoYI@>4JW!E@|C#L}zo^iBYAa?!##S$_g25p?(E`lcDqtl5SuLl#6+!QM z$0kkM{xSOPbh-j8V-$ECbvMKV{imi554IjJjhFqhT=Gk=ha(>G<3mlazw<;F8Etvk zP5bVyK3l$kuc{xy1^2#3q=yVuHWbOpGjmWVV?XJw4SaljF1`%>b$(|4O*sDmZv3`O zS9T}S@~~$6vX~Nq-z(oVw7egup{XC!)``-IP`=cSSXPhh?V>LZj`b##TG8HwNO_1Q z4EY3Xd#T;!ED1p0sUoiThh&?kcn5^;-)aFqJP$AkyqYe7#+ZP^`C!V%7Kxz`=z2hX zBhUm1uHN+f?l;-Ed$cHDmO7D=%E81C*~-VqiY6Q?yOauueLjo zJ$;Ov@omhiBPaNyj|;I@Xqu)Um+pKgjdpEq#E}IiqzDQ3t(hU8I$FXt>)^_6_;1;< zu0*MJ>7{K>p5$l^AZUj})~~fyE8gVBM;b1%MOIU1m<}DfQ$N{^Z3QkOx-BDRX|0`o z+;`+KvgY;Z^hmfl5uR>>VH#1qFN$efnofF8WgRdEmR#sOIyE->tVEg5R_fJFK-L>j zBJ^~jHrm9br_{cs!SI4kTM2td=3Y(sVu#{l36kWjmYbiS!m0CAQ61TZ^s?Hj#3qRq zyjnUE$#oeH)TvRrntZ_iOdX9-@=K3s(y;T7G{Yhv&TnnN9&GtvK?B1~&X}zaQi&X7 zv9^lnXI+w}SLel+IW5auZH02Fpn;32eRpT;>C*_dNsEtsAJM^g#THBGS2k9-eqeUK zFS;0pg^t6*vOok7_R^@ZJy)jP4m&%}Y|d&(z@9y;c(d)w{JR4Ko{2=6s*nAG3Ygn( zdo6==p6<oo;+6;*%1}b=9z!=vC$CHiSK7XVoR|Q`7cwc$`UaAGQeIzvuJ&{{uJdu>9H;UmUOl{V}e-j=(xBs zcUru|u0FkeVeU5_nAyP82DCsBSnekcXt~`wTY)a0>+7p~OFdTNf>rO^N3w)0bp=`( zhATgAT5eVH-QkXQ`7Qm%`&G!qdBE>9Kg}Tti#(bw3JuIAWQO1tJ^e+4QNuC!NRnIe z7XH^vO)hIcvn~RL>Hh4q!Ll1=6gQGpuwU%jdq{E40V{IEd{M=+fU|GNrDnxdqMGjd zFyHKS_#=ym&Emx*INtf%CVU{YA)904$6>3A$)=F4M`=aIRi`+lykpiL040m`Pk#+P z8c>_sQ;}jCEJxco90vqS|1ZDmFv}tGq@%_ZP1Z-o>G}@W%9@*(y^pfgEW=i{$5WhB zS7#9(j2AFiL%UYyLb+x*v1tyuW#y2lL1xQzC{(f`P#EGu<;$y*f*7-Gea8Z;&6UfL z;afZ-lT~|H3EA!|$fJxi$km>D zyL6S}xH(6?j86mw{2b=)sI=XreCK8XSz$ylgV~FL|cNkYL2m{_saEBY6 z)8N@VrFg$KF}t$ zj4P+Tmv0f7+T2pan3L3Ia5V%t`Sf(3T8-K*C-lcH&9e%kB8kV!wbx z$Z+Z#50ysAEmF?G&$Rj858ogWuu54zVTe1-&QF2e;{pGKoe;Y$V79a78k;Baz|_lf z+h#^(j<^sjppUE9*1Ij^e<>Z@MG>ciXj}Rw6e5AJJ&2!QSzR=7OF)x}<&7IS^btJcBmsd8JTcN67ZbMji@Ah7Q)3+_9=RYQ}%(N%z^ty^Hvi*cH3Z?XVO zHw~}wqcv~vp@F^bWjiuG42ue4caqc@btPW6J6_X~C~;TWX| zb+o<-n(LRBQQW)C1VzoUPs%Rm29Wkzj%;UU!)9WPdWDVAlUvDSrPn@O$nV(VNJAbU z^Cp71zd6rOFLLQY1<^p1^x6AryBW#wPMl7~fsGxd} zJV;BV@8&YD-@G~52DW#+?lf!MVxvwBzoVtQ;Ro)@&iw(M?BS2N407i$3D?K8OZ8_D zOeo32%nhRQ3v937067)j^wmTrkSj4VlI2#icytrT&9Wjhos$g`PVEo*XYq_XG41Un z+7Wfd<@~DiRkL-+r|^ceDiQUh!QL3(^;f<>vd6)>=#dHP5p}gFUOED9DDlNAZ^E2% zC%UnnNx}EJ;!;DUB22|+=~ii078;%cm;8?NZm49mKC;IFAbG@p1C@jg{EcembS8f>**%Dm^&Dp-*bI0w^uBvP4 z+6>6*A2f*C$!%=BwYw&;$-{fSW=6^+`F{3tt(MNo&jgGT&aPjh9^rRP)v)&Tj5$zV zeVZ;CZ}_Y}bFO06^ix`W)9s0~l&dy9rS4U@S8fQ16QSB?5U-*lJYt!fJY`r&#?_5C zCa;6RzUZd@sxdVkDLBaN8jvI~ z90z-zd&1em@!3TATSAk8vk+3ok3PZf8x$d1icOa=&ff9Kd>x1p4JLbnc z+*oe+a7Gvx3RuF&`i~=@vvS0~7tgBpwn&X_ZNC~F>!RG zYXqEk3g0KkJhQN<|w<$t#Pxq-B;uPp!Q~hTEc0E%g)FzLMag^}+5g8XbKj z&H#@yMRa^+CVSVOs0~WeeRo-06E!g-@4Ga~Lyo=XxOEYuQ6WAheSuoG#)*WAoy$nA5rlIm!IN(*tU#h=GG7tU8b;&F1wnGGZDKK1V<3>iO`N5ce>t(e_gjr6qpzobED<>ar9)YFvy@Ja zsp^EujyX*0Ls6kd(qPYGBT|`ApMAc2OSXc+LBr3|L?A)z;JYm1pzn&5TPvMA^E zezvd5uGem8q-=TUpyKaP4g;1)wgn%h622MAtfe~lmQOq*`pr2nOIVfhT8F|a-(t)* z-+(Q!^z!ohXFj^Yo##Q7E{}4yY%|5YYEN|iud|XY3#%^2M?DJ+Dle^s+p*6^Hnbm6 zx8$%wE7?l;pSJh7IqvzOIw6p?I>=0TfLx6en2HnC@xXOsq;X|F*G@Y&$fM|O(>?v#2iD; z1-v2j#Pzksi76{@RZ~Vi+xe7NrcYA2D7~1%Q+Kph29Xiv?mg4Sw7GJR{z5U;xgQ0u zSIj}uT@L8_jAO3?HV=vIP&M3!K6Lc5ohg-PQA#_k5r_NLYExBGsmmohxS} zxvM=m5;2JjPo#zyFmd$E8_)|ZZ?qxZa&2ZfDiP90rZC!ys83t)h-l3Q-GV^E!7kh+ zOYEZDT$co6l%}(DdkKa(?ZeZ|(fS<;NB#6tOdXe*eRTV1V$O}jt=>bMnkMkUhX9gzZ@Y~gxbxA93yldKs@@#jF@kn}z1vAy?o8&o~RLeiTd9go~%fB|?_S6XubSP=Nys~EHT7JZktZfb@c{o}% zIq%d@q_J35-1(Z#%>WJ6mCYLSy&KC?JkcT3n%FgDgbB9K*8S4*AB_(0fmDmwgpi%c z<+(ltZqeQE#;f0oeo{kiI|(5ZY$)mWj@H!X<|h$FcKPBC)>frMc79jghkl6!&kso~ zQFC_QhQ7KSOpQCsp>UWv|Jvd@y-=S}dkCZ*XYmhaEYe zwJ|Y0G;3=EWY%zVWc7`m%enQTc~iNjLvf{p4YaegsjaT$F&h0#TmZ+)^n)8WZvtm_ zx5}Fl6DMYF^2RDXr)(rV@Aj&GLzDn;x2;jcI0uE&z3zFLQs0ja3}rqSiHJ9NB5gM0 zF_=xSid|YRwU%|P7uRghWow$O#9{jxl=wT8Q8QYGo(_4lAF|3hOvNQMlPdzE$=sL6 zt+L(DD74WOY^_>cDA;^2iS6c~Aij=z1f{S@@DHNp$J^F1@2M|;^h9ww(gXxMw$1VT zJT-Cblv%X$A52=%xIz~RQzH(PsmHb>nmu+AZa3|#NdMW=vp$u0T_j4(tEqq>QiBQkJIfx$|*qEI0GNg}nu4yTx z*@`V%v#hueg4EA1d7;aDksw5x=kXfvy~dn!gi&NVUSDT6X}oK6AA+Dpjg%u2It%7o-_A!8$t8 zr2Tt5l9+8hcZKqF!ZiD}7b+<9D% zteBnVu99Ys7aluH@H@b$EhQ67m*ZCS((*oI@Jv0BCH==+JlScS=)>QAl1LyA%y1O? zIu(SM;qV-6{S2<#dCKrm-nIU%;x>PG)#E2lWS!oT6&~uS7c8tdPHi=Zw_286PsLXb z7VQM_|MDN|8S2+B0-lqx=#yl_%*AFOm(}gyz@}a7xCKeU{?kkgJ_@P2 z!7KGH+)DOu8~Sf(Gc6^(YjfK>JKy{CN+6b=5kfK^iS--^ox7C&DZq0rVwqJ`^bv=6TW3D-tp@_d-D6mjG95BwfuF85%z^WTk`9| z(2$aAh?Q-x*-E~T21)G`kIGB^xKsnaDvJ$dZ*}{euK8uGHnSF7p;+OOd-6h5(d`Ex z$bz$S`C6fyKV^J6#PT}|zv?6>rC2F1e}2C{@um`gx_seE#Fey^v^3nuEsyQKjHDUT zQAg@{%~lyOMgyL1jKYZI<*YfAQN_~rrMD6EIeF_h9aEjAL)e(+F{yM4X+kIY&s61| z>1wNv^|SAX>etND7yV1EI~En~YbO%0b|e>N)st;2Q$6lmJ(#%*73nr#j%w4#5qPJm zm7xa&ng`CyeZBvOrt-Q!LGEVAqRSv}t@(gm&h~UZ2q?X`3#Q+Z)Zg!Ty)-&Q0r( zzYgnfAsUWHt_LK3-6=Jv9kri1k;9t$07xhF>vK(mCoHxjA+QH^bv>3Us?(xO9|0thwyhq`dx)PP-sL zf7Kq^H-~Gs@-bJjAY#HXQl&UFooIbBkw#D%+OS^VlBWiaRDv=B zEgi6K{?{uQYYNub$*Cak`)dE@bVqx;??jjiyxK_(H#Zgp@mF)g*j#8f47LN2iq|9j zS6WnR5?z+Roo%-o2qV`d!`cUG9jOe$PR`e=TGlG*_Ip~YPs{$#o`3+m-+#xrGn$s zF2WnQT%qFu1P$)kM)--ZzN`y*sd8@p8Qgsp)WQZ0#Nf0<*?NBby8TQW+W11K_F=7f zaV)TjuS@0jG_&Ncku=IC0xin!;ZR5td~qVE@aSM@11%jHF&3F8E>p?5 zB*g{-nT;8dr26>cM3J8}5>M}@SPqzEYeeb~aaN)BBlJKejEVWsPine}NXXib%=T16 zE4`~I#3BOR5Iu&|emQ1(S0KR^@&G~hv^MaB(Ql)Wjls%V9jki^%or&yZF zs5Z(WmUinxar>syy$|%yR)qzU5_V=zx!VscHBrkM{3kzZe0@N$AG#^Bamt`6`JA%H zPXqkxKfvjwj!2BBe4JlQlJ+(3J40~$X*RdzSbA4}YGy@Zviz<|k750Lpu;T#gZ=U4 zwRXYLqNbY}d=)EQ{73s~$d}@6fqLfYhB4`ghGndl868xDx8B-mZPzJWcxI_Adw!k<@6?T0Pu!#S}O)LyNz39lfR>vPuqX7!^4?(7{ zG1cZ)p=0iw{M9&S^dYciKv_$- zk#cSfVdsg#Z}TD2HxN?j!~AxgPyjrzXmOh8#SKcWwylr~DW_P7B77wCJGi5m)z#Ek z=x$bea|6D)O-~OX=xO}KsmF8iOB2q8aUIIuGs4OP+_B3088tIA2i=mAVnq?~fO6gl zR_fB(Ex9B9sbdtAI~b6GkCX*&#KI+Sh`f9&PJf(N8ohd69f^!0-5$I4I6leQ3I2&i za4ViF?pxW9Ow)i9>1+cweQ^J;_E>NHdtE|jZd&Vc49Mwi?uXd2f_DWzk@4dg-Ni&h z%!NpaJ3qal4nnWjQc}4Y7y?;MZBWAgX;jA*4l-OU9u?B)W)`Rwnbue~+QR+2Mz z(vLY(uj~@MitqGc=xs#P6)_SC(TZaxiKcuo*wsHEr3>>0t@yh6kDB7|YRTW)~!GFI;6V>{DY%W%S z%ceK*yd@2EC&+4ED4SlXZ)#!b>OtnF8a!Z+=D*FvTvC(8dgAx&B8FKs-siev_v`n# z+izE9e?j9w-Fl7Y4tX1%_jS5h4jI5vsPFdeNna~_r}-<6JMbqGTl%S2K=TZ^cvTqC zba<0%mb;!5)o*btk|~n~Bvp@sKpR#mEx?{+08d_dZNsi6H|qYLoW$SGveH=bTJ}?_ zJGQxnx)ejBNdk_5Z9-jCF>m-0BgMfHxt1HbmW=(@p{hb)%kQo<{J|t+hy#qdBcb+g z561rxLsPw1lJEgnwG{o_?aEvW9S0^BuB_D5&w2u*19~piL9lvt79>^!;OmQVao!>{ z+SEIKN)uDPa2hgSAh8)PSlM2UFwoV^H}pAT0bnG-;%z?ZS5h|=-NBkvq1L=nF`-*b zI-p&f7~Mn z6LJQrAbiP5E7N#1lt~Q9Xk$(-bM29W(x_q3ss;6pjN-O0$KH24Fw7XmrE6fkJ-;6& z2vt?IGMXju_<`D)GP%9;du!)<3&CLKAiulYt1YO%u{=X?plgAlROc6|@h@H?JpNTc z`1$jvmbQ=ciug@DL#X%f2c>d5M5|OK|8hUj;mie%&I_EthkMs)&3bttEy9{zY5mQ@y;}{05$#3)y6t{xz?3sLG?8cBL>s4Fzw7m)(ix^tdCmQ_T3Hvxz5x zy5Vuksbyrx$cVLKcu!dD3&47(pZgC5>WP|sE(*k}5KArJiQK#nYEY|$B(N!wI|VCP6UT3_;0@3eh$9y18*duv1Swtb&n>cY1B zJ3x2eiN87@`YR1D=%pFi+Gc^KOTtFhZ;*E8=5}*i<`gx>8Eq_Y`&*BKG&$5`+iT(U zVxzW;6u2Uy0Qx4U1<#-VI=2%Da+)kaUSJ`vZE4CJ(hjd~MxVu!vF7F=@DEGBSK$dH zp&N7eeRT~et?odn{5rjvp7$CEGUnSKWx(00U?xyEaoN9j6AM+mruO%OnnfrCdKr#b z;K==6#0`V7O6)#sJcz$@f(F#jmk7{a3>%&}aO6yep32&1kU)oR9t0&-==iVc6@LR- zuIqab!eG-%fy)>vDJcO>5S#DcidXWT)YnOoYwg{vxYEYX%9_)jt8K0g)))wGbfcX1`C@aWwgFz65dixm}Ma9H)5ENY3>_AmlhT2}z{HMcci^@_0 zE6{ZZf$W4`^PcXO)OmYJ?Sk$*eFuj;)Y4?8xFr#kTnzT7o!j;Yq5AhU<)WvDPrH1J z6_h%n&L(Qo2|#0-U^g?4K|nOvQvqpdLp3!uP<_p{wX>toR1CQQu3=(kHa0Ue%j5!v zyg5Ov;{}^&XQ{n5!L`Q#tmo;ealj-{!+6-WxTK^)@3E#rkD(eUI#St~mKL+BHWLS$ z%_XIItbMxYy{yOJ6@t^xYZZg2qI2iY9V7#OfXolx25CpHS1b#y=8Z5L$-`^wb<FJq*(y=T6 zDx@<`_dh~DWn$ZX1RwN>8@x)R38JRo^BI&X?xhAdi#>u)LJd4uk1rb6saOLr1Z)=z zc2%;Nvlz5b!&Xm2H-5>EZc#8-yR%&lT@ku6 z;P28`j$L1w(*uM3Wp9KW#+u>{Z{L0u#jTXbF6}VN4lM_|uhM4%$l=}A6nWF@*Pjpo z-?Q%BeV!{&q{-5bQB*Rv=!5hn6jj#FXKh%#F`p*qk zx?A0>12k3rYs-N=66@}zwodt?O|Wp{bZN5@(bpMKA&d`84b}zrZWU^jV3mrf&&Le(00C|SKbog3y48g-tdG9Y!?dpb zE?NP$!MhVwY}dc>etPi>N3$o)w7RDf03> z5EiBZgxRo=JinP*F000lpvZ@KVXn;>| zKq!?j7y0~uWl;gGqlnnP>#LPaJ_^qZttgR`32rRR@?azL#Kvj159+=R5 zp!S6hyct3nA}H7{v3gXYn)Hgp4cI*jDA>w`ex)!;SnBFs+1`gJWym-Pp==JOUI{SJ zyF!1G)n|eGPErJwjk*gEh-Pl$BISeQS78y6CV=M=+6Rq%4(veJVF^-3T7`9klWf?v z#Il`YmA9+U&z@P!u(h?t0GI_2)Le7iEVUSJsQSRVVra^tWsQA~C!tMD}{|Ju7B_9aj4{W>}zKsI>uPbdWZfPlrrcHpsdHA*)sj?6gE>1x(>PYqDvsKk;&scIsw^y3J52N zGkDXXMeYUK1;B}PN62zd-&zBI>Yl< zZs+T!{o9z-QDKNm;32T#b828LaQq+NTnKgvI{s_kKJou%m*l@MWRtwD%-ES{q9J>c zCmUdiWCA`Zkxz7hF4F1@#n4j3hC4HDE7VHWuA|8fYL0dr_%Hwm>5a`ZKpc);%Depz zZB216m1E4IeAO|jAd}btObkHBB>OrnoV7sfGU!Z3rzkC%x=`8i6Kr`<7x2zxGu40Q z9=*!1xMtnE1lSeWD3o(Ncm^~iMh4G6J;(g+sm+WYO~(GW(V`dW020|3qe67M#UuOt zxm=&TM|alB(CUvM3swLgDnJ&=I}K2oL3#n^c@`|~>Q&*Wx+%nvn3+q+P)>jyXb?6W zxuA@Npd!;_=}wJ}Y7RS{njP^$OCQ!CJSqg|;~i$bk6O*#(nM{SB(j-rh{&RUT#FPb z)5nMQqe0vEA{xT3?a%{%U`li&Ay7{bC97Ap`VoG@2OAtvXdh5`P)LxO%^V<@*U6|0O8|QOqpdiQY=ptg+@JqE0u3LkV#9U*JTSk;o7y^ zA6+?>r@f#j2P?A7CyRMzQl$Doe{uk+0+5X)=Uz%#Oh2PQzS4l^IpM1jT}84|s!f*% zaYQ6Uy@Nm<`!xB6MJgN}O9m!cfb$I|=_rAXVANq{6Sp65z7B@{lR5A(Xp`qQ|MPZS0mn=QBsY&j%BUogNy2(L(hJaN6e)yW4y4 z(4n92@sW1`t}8d__R%4LG@7lPVOab_iXO~`FnbilID{z_Ms!kqBL0Xfl}onyI9bQC z|L*AMARtHN-s{Ht&8!Y=ZqI+@A0NM;O0t@ZpH zg5FuXEo{H_`dr}5%0B>K)#satCUdPQ?W575R{^^m_7%haPTVYb!iMM^NpMFkjA@X* zuYiq!dcLW$1x1W$M7_s1m*nw=pzRi*y5|09{T(Lq-s{8|sz=v)x;HI8y?xXg;5DV^ zqquyc&jz7#Tqs3_06FFIskR~Mms?L3Ps=e&EGiCOf#B2Zt+CJd6PS$?aDyj0g?G88 zwKZF5a|48#G384@*DjW49P@UH?P5F|?*-+Za+F1n#sGYUT&;IHIXG7D^iB z9zap8cb3+xv7z0-Qlvv+8N*oKwsKcxpK<&C+eh2dzNTUa$B@JqOI~#GxS4+SXX4gmf(gEpdTYMxN!|j!O`;!fm9lt45|T zmCc4Y-Ad!1PGdreVKJ2RAPWI>&s>`JtJH9%h&A{I|2I3)YpjoQNhu$FE1kbrRdc>oEbn(u{huK}{(5aO3 zwrla}AQM#g1#-X+UY7MvI-7Q^mRxk+^em_EU3uyPS7w4>w z=+9}7YO=Yx2688={#Q)>Fa4?_d}pV^4mmc`dW=ZETv7OI;xHXheZ9@`jZE;zDyz%^ zpOYmIDa^uVb>ADHxWN{RaP|q%mgXT;ub@>aW!+u-Zu*2*y_jVys*SfQxLLP#ea-@a z`0l%(8COVM`%xp%x-%{Mtu)ijeR)nHLyn+`2C!COrryxp2v_pW%mduR%KCz=)NhKLzWSN@kCVN1IC&;LDx!05@P2Kt&28j1(_kX`vAyv!jY##ea>#kC)Ht^FUlWy~@6O*I6k#=l+^^krfEfW^O{Lb+#ytL~oL$$q<1&;(xlHub&DHRN;H^-p_4ECMCt>=$p#Pvf zZq36i<>9s0uhTML@6|}Dr~v@dG%h~&#^~duvmmEAF>A*HYg7eY9I%7OAaXjMeV|*v z5he8)X_j<}xq3qmN}~wbLeAQr&k5EQQxF9qY<&u{RR;V5`8u#Y`oKGaP~|dIue`?~ zS#Z?M2fSvW4ggCYz5><8UAPeBwf@)SwxJGp=zu~w==lHlEb16VZW-TdEbU{6scRq(p@6PqVF%!GtUi>*xP$1*w z&E?wBKK}akzalmC4dV{*R*&5+UxDXZXp_t?2t> z9UypGVZ#-2JEg`TkCX^rZ305)zus(df}*0!dGf?xzn>RCt6OM*X=T8m#qdi?O7>PE zY5{Nw#M)uj@Cuj5pqUQyk0$-2mP2&ZR@tZ{M5R=KVL%5gj_;y3xbFenY4zHF|8?L9O$4y}%L?A|(bdxv@_n88i`zHc5O`82d_F>XIL-+=&S_-Q-RB2fg;PxN@m3f?#NmaV~Qa*>T|e*gScda~;R+jsDR2Z%sNEw1ThV7Tw? z<#p-C$MdVa-}hzR+qM$ugqp1T>zIGNe{%loixoo9ETVeafm;5d~- zS?=%H&*?R5XI;&D`S4;tXs#7lrniD7+mC`~E Date: Tue, 13 May 2025 10:38:14 +1000 Subject: [PATCH 2/7] Add note on client-side callbacks --- modernization/stranglerfig.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/modernization/stranglerfig.md b/modernization/stranglerfig.md index 9162afef5cd..f2b53c8e325 100644 --- a/modernization/stranglerfig.md +++ b/modernization/stranglerfig.md @@ -20,6 +20,8 @@ The next step involves integrating the Particular Service Platform into the faç ![Figure 2 - Strangler Fig with NServiceBus](images/figure-2.png) +In cases where legacy clients expect synchronous request/response behavior, [NServiceBus client-side callbacks](/nservicebus/messaging/callbacks.md) can be used to support gradual adoption of messaging while maintaining compatibility. + ### Platform capabilities and initial benefits By introducing the Particular Service Platform at the API façade level, the system gains several operational benefits immediately—even before any business functionality is migrated: @@ -60,7 +62,7 @@ The API façade may then be removed entirely, especially if no longer required f --- -### Useful links +### Additional resources For more information, see the following resources: From 19dc3802113cfcb14d2eb2ade3126801c5449246 Mon Sep 17 00:00:00 2001 From: JasonTaylorDev Date: Wed, 21 May 2025 12:29:09 +1000 Subject: [PATCH 3/7] Modernize batch jobs --- modernization/stranglerfig.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/modernization/stranglerfig.md b/modernization/stranglerfig.md index f2b53c8e325..a2cfec0d226 100644 --- a/modernization/stranglerfig.md +++ b/modernization/stranglerfig.md @@ -40,6 +40,10 @@ With messaging in place, new components can take on specific responsibilities ou ![Figure 3 - Strangler Fig with NServiceBus - Migrating Functionality](images/figure-3.png) +> [!NOTE] +> **Don’t forget your batch jobs** +> Legacy systems often rely on scheduled batch jobs for critical business operations, but these are often brittle and opaque. As you modernize, consider replacing them with message-driven handlers to improve reliability, visibility, and alignment with an asynchronous architecture. See [*Death to the Batch Job*](https://particular.net/blog/death-to-the-batch-job/) for more. + ### Intermediate benefits As business logic moves into new services, the benefits compound: From 050dd1b4787f90afefabe1f74d3a2741df534a3a Mon Sep 17 00:00:00 2001 From: JasonTaylorDev Date: Wed, 21 May 2025 13:43:33 +1000 Subject: [PATCH 4/7] Fix platform link --- modernization/stranglerfig.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modernization/stranglerfig.md b/modernization/stranglerfig.md index a2cfec0d226..98d9fa13473 100644 --- a/modernization/stranglerfig.md +++ b/modernization/stranglerfig.md @@ -4,7 +4,7 @@ summary: Legacy Modernization with NServiceBus and the Strangler Fig Pattern reviewed: 2025-05-12 --- -For teams maintaining legacy .NET systems, modernization can feel daunting. Rewrites are risky, and big-bang migrations rarely go to plan. An alternative approach involves introducing the [Particular Platform](https://particular.net/platform) into a legacy environment using the [Strangler Fig pattern](https://learn.microsoft.com/en-us/azure/architecture/patterns/strangler-fig). +For teams maintaining legacy .NET systems, modernization can feel daunting. Rewrites are risky, and big-bang migrations rarely go to plan. An alternative approach involves introducing the [Particular Platform](/platform) into a legacy environment using the [Strangler Fig pattern](https://learn.microsoft.com/en-us/azure/architecture/patterns/strangler-fig). ## Establishing the façade From 8052cd12f5ea259da2e6e685186212ae6da9fcb1 Mon Sep 17 00:00:00 2001 From: JasonTaylorDev Date: Wed, 21 May 2025 13:46:48 +1000 Subject: [PATCH 5/7] Remove service insight --- modernization/stranglerfig.md | 1 - 1 file changed, 1 deletion(-) diff --git a/modernization/stranglerfig.md b/modernization/stranglerfig.md index 98d9fa13473..ad915832935 100644 --- a/modernization/stranglerfig.md +++ b/modernization/stranglerfig.md @@ -74,4 +74,3 @@ For more information, see the following resources: - [Particular Platform Overview](/platform) - [NServiceBus Documentation](/nservicebus) - [ServicePulse Documentation](/servicepulse) -- [ServiceInsight Documentation](/serviceinsight) From bf50022ed8229015d6649325e790eb45125e4410 Mon Sep 17 00:00:00 2001 From: JasonTaylorDev Date: Wed, 21 May 2025 13:51:09 +1000 Subject: [PATCH 6/7] Update observability --- modernization/stranglerfig.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modernization/stranglerfig.md b/modernization/stranglerfig.md index ad915832935..3d2935a0773 100644 --- a/modernization/stranglerfig.md +++ b/modernization/stranglerfig.md @@ -27,7 +27,7 @@ In cases where legacy clients expect synchronous request/response behavior, [NSe By introducing the Particular Service Platform at the API façade level, the system gains several operational benefits immediately—even before any business functionality is migrated: - **Reliability & resilience**: Messages are durably stored, automatically retried on failure, and protected from data loss. The system can recover from transient failures without manual intervention. -- **Observability & diagnostics**: ServicePulse and ServiceInsight offer out-of-the-box observability tools. ServicePulse enables near real-time monitoring and recovery operations (such as retrying failed messages), while ServiceInsight provides rich visualizations, message flows, and debugging insights for developers. These tools provide visibility into system behavior often absent from legacy applications. +- **Observability & diagnostics**: ServiceInsight offers out-of-the-box observability tools, including near real-time monitoring, message flow visualization, debugging insights, and recovery operations such as retrying failed messages. These capabilities provide visibility into system behavior often absent from legacy applications. - **Backpressure & decoupling**: Queues absorb spikes in load, and messaging decouples producers and consumers, reducing direct dependencies on the legacy system. - **Error handling**: Failed messages are routed to an error queue and can be retried once the issue is resolved. While this does not eliminate failures in the legacy app, it improves transparency and recovery. - **Operational safety**: New logic can be introduced into the façade or new services with reduced risk, enabling safer, incremental delivery. From eb8799c4f480c66207a9a279d49d7cf14ecacf95 Mon Sep 17 00:00:00 2001 From: JasonTaylorDev Date: Wed, 21 May 2025 13:52:24 +1000 Subject: [PATCH 7/7] Update observability --- modernization/stranglerfig.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modernization/stranglerfig.md b/modernization/stranglerfig.md index 3d2935a0773..16ce09389f5 100644 --- a/modernization/stranglerfig.md +++ b/modernization/stranglerfig.md @@ -27,7 +27,7 @@ In cases where legacy clients expect synchronous request/response behavior, [NSe By introducing the Particular Service Platform at the API façade level, the system gains several operational benefits immediately—even before any business functionality is migrated: - **Reliability & resilience**: Messages are durably stored, automatically retried on failure, and protected from data loss. The system can recover from transient failures without manual intervention. -- **Observability & diagnostics**: ServiceInsight offers out-of-the-box observability tools, including near real-time monitoring, message flow visualization, debugging insights, and recovery operations such as retrying failed messages. These capabilities provide visibility into system behavior often absent from legacy applications. +- **Observability & diagnostics**: ServicePulse offers out-of-the-box observability tools, including near real-time monitoring, message flow visualization, debugging insights, and recovery operations such as retrying failed messages. These capabilities provide visibility into system behavior often absent from legacy applications. - **Backpressure & decoupling**: Queues absorb spikes in load, and messaging decouples producers and consumers, reducing direct dependencies on the legacy system. - **Error handling**: Failed messages are routed to an error queue and can be retried once the issue is resolved. While this does not eliminate failures in the legacy app, it improves transparency and recovery. - **Operational safety**: New logic can be introduced into the façade or new services with reduced risk, enabling safer, incremental delivery.