Lessons ¡Learned ¡in ¡Large ¡HTTP-‑ Centric ¡Systems ¡ Jim ¡Webber ¡ h:p://jimwebber.org ¡ @jimwebber ¡
Today’s ¡Enterprise ¡Architecture ¡
Tomorrow’s ¡Enterprise ¡Architecture ¡ BPM ¡ Services ¡ Business ¡ Business ¡ Business ¡ Service ¡ Service ¡ Service ¡ Data ¡ Data ¡ Data ¡ Data ¡ Data ¡ Service ¡ Service ¡ Service ¡ Service ¡ Service ¡
Nirvana ¡Enterprise ¡Architecture, ¡or… ¡ BPM ¡ Business ¡ Business ¡ Business ¡ Service ¡ Service ¡ Service ¡ Service ¡ ESB ¡ Basic ¡ Basic ¡ Basic ¡ Basic ¡ Basic ¡ Service ¡ Service ¡ Service ¡ Service ¡ Service ¡
ESB ¡-‑ ¡Erroneous ¡SpagheM ¡Box? ¡ Enterprise ¡Service ¡Bus ¡
¡ ¡ ¡ ¡ ¡
But ¡we ¡sPll ¡do ¡it. ¡
Why? ¡ Because ¡it’s ¡“less ¡risky” ¡
Why? ¡ Because ¡that’s ¡what ¡the ¡market ¡does ¡
Why? ¡ Because ¡we ¡need ¡the ¡-‑iliPes ¡
So ¡let’s ¡talk ¡about ¡those ¡-‑iliPes ¡
Web ¡Scale! ¡
Tradi'onal ¡Enterprise ¡ ¡Security ¡
%*"1-,*( %*"1-,*( End ¡to ¡End ¡Secure ¡ "*%'3",*%( "*%'3",*%( 2'+-,#2( %*,3"-!4( %*,3"-!4( Messaging ¡ &'-$!6!'6&'-$!( -$!*")*5-#"4( -$!*")*5-#"4( .*/(0*"1-,*(2'+-,( .*/(0*"1-,*(2'+-,( )*%%#+*(!"#$%7*"( )*%%#+*(&"',*%%-$+( )*%%#+*(&"',*%%-$+( !"#$%&'"!( !"#$%&'"!( !"&/#%*0'123"4'!"#$%&"' ?@!A1#/)*B' ()*+,-%).'!"&/#%*0'123"4'524*"6*' )"&/#"'&24*"6*' End ¡to ¡End ¡Secure ¡ !%74"89"4�:*"8';)7'*#+4)<"#' ConversaPons ¡ !"#$%&"' !"#$%&"' ="4">9+;"48')"&/#%*0'&24*"6*'*23"4' !%74"89"4�:*"8';)7'*#+4)<"#' 5+4&"-9"6:%#"')"&/#%*0'&24*"6*'*23"4'
Security ¡Tokens ¡ !"#$%&'()*+,"-)!"%.&#") !"#$%&'()*+,"-)!"%.&#") /0!1*%$2'3) /0!1*%$2'3) !"#$%&'() !"#$%&'() *+,"-) *+,"-) and ¡claims ¡ 657&8) 657&8) 657&8) 657&8) 4+5&#() 657&8) 4+5&#() 657&8) !"#$%&'()*+,"-)!"%.&#") /0!1*%$2'3) !"#$%&'() *+,"-) 657&8) 657&8) 4+5&#() 657&8) !"#$%&'(' !"#$%&')' *+',$-%.$/0'120.0&3$-4' FederaPng ¡access ¡ =.0&3/>' =.0&3/>' ?2"<%.02'@A6AB' C2"<%.02'@A6AB' with ¡tokens ¡ G+',$-%.$/0' D+'E0/'6"F0&' 120.0&3$-4' :0;8043&9' :0;8043&9' 402<%10' 402<%10' 5+'62$&4702'401820'#044$90'
…you ¡ wouldn’t ¡ use ¡it ¡at ¡ home! ¡
(#")*"'+",-".&"' !",-".&"'&#")*"/' 8"++)9"2'!",34':'5' 8"++)9"2'!",34':'3' !"#$%&"' !"#$%&"' 8"++)9"2'!",34':'3';'5' 0&12'!",34'56375' <"+"./2'!",34':'32'0&1'<",-"+*"/' !",-".&"'0&12'56'3' =./'
Bottleneck 2#)*+)&,-*' /0%"*(')110%&),-*' &--#3%*)(-#' No trust Crash Denial of recovery? Service !"#$%&"' !"#$%&"' !"#$%&"' (#)*+)&,-*'&-*(".(' 67+%*"++'&-41-*"*('%*("#)&,-*+' 2#)*+)&,-*'&-*(#-0'4"++)5"+'
Hello ¡World! ¡ <?xml version="1.0" encoding="UTF-8"?> <definitions name="HelloService" targetNamespace="http://www.ecerami.com/wsdl/HelloService.wsdl" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://www.ecerami.com/wsdl/HelloService.wsdl" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <message name="SayHelloRequest"> <part name="firstName" type="xsd:string"/> </message> <message name="SayHelloResponse"> <part name="greeting" type="xsd:string"/> </message> <portType name="Hello_PortType"> <operation name="sayHello"> <input message="tns:SayHelloRequest"/> <output message="tns:SayHelloResponse"/> </operation> </portType> <binding name="Hello_Binding" type="tns:Hello_PortType"> <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="sayHello"> <soap:operation soapAction="sayHello"/> <input> <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:examples:helloservice" use="encoded"/> </input> <output> <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:examples:helloservice" use="encoded"/> </output> </operation> </binding> <service name="Hello_Service"> <documentation>WSDL File for HelloService</documentation> <port binding="tns:Hello_Binding" name="Hello_Port"> <soap:address location="http://localhost:8080/soap/servlet/rpcrouter"/> </port> </service> </definitions>
The ¡Web ¡is ¡an ¡applica'on ¡pla<orm ¡ Verbs ¡ Status ¡codes ¡ Media ¡ Types ¡
A ¡Case ¡Study ¡ Client ¡ • UK ¡telecoms ¡service ¡provider ¡ • Voice ¡messages ¡to ¡text/email ¡ • Global ¡customers ¡(no ¡easy ¡downPme) ¡ Problem ¡ • Scalability ¡and ¡system ¡resilience ¡issues ¡ • Huge ¡growth ¡curve ¡to ¡from ¡a ¡million ¡to ¡a ¡billion ¡ messages ¡per ¡month ¡ • Costs ¡
Pla^orm ¡Architecture ¡ Where’s my Bottleneck Nightmare! file gone? Carrier Carrier Integration Shared Carrier Gateway Database Filesystem Carrier Voice to Post Text Processing Algorithms Fix things Shoehorn it up here in that other program
The ¡£10,000,000 ¡ ¡SoluPon ¡ * “Queue” Shared Gateway Database Filesystem Carrier Carrier Carrier Carrier Enterprise Service Bus Voice to Post Text Processing Algorithms * ¡SoluPon ¡does ¡not ¡include ¡actual ¡implementaPon ¡
My ¡team ¡was ¡given ¡the ¡enterprise ¡consultancy ¡ findings… ¡ …and ¡told ¡to ¡“do ¡that, ¡but ¡cheaper” ¡
Think ¡ differently! ¡ (or ¡even ¡just ¡stop ¡and ¡think) ¡
Architecture is still important Architecture is still important
Agile ¡EA: ¡PrioriPse ¡Service ¡Delivery ¡ Start by fixing storage Carrier Carrier Integration Shared Carrier Gateway Database Filesystem Carrier Voice to Post Text Processing Algorithms
Storage ¡Manager ¡Project ¡Delivery ¡ Small ¡team ¡ Java ¡solu'on ¡ 3 ¡Week ¡Incep'on ¡ Performance ¡tes'ng ¡ throughout ¡ – See ¡Jones ¡and ¡Kua ¡paper, ¡ 14 ¡itera'ons ¡ Agile ¡2009 ¡ Con'nuously ¡built ¡and ¡ deployed ¡for ¡tes'ng ¡
Web-‑friendly ¡Architecture ¡ (mostly ¡wallet-‑friendly ¡too!) ¡ Encapsulates storage detail! Fast! Free! Cacheable! Jboss/Tomcat Optimised Optimised Storage Manager disk access! server config GPFS SAN Spend £ ¡ on the right Infrastructure
Improving ¡Enterprise ¡Architecture ¡ Reduced Scalable! Load Carrier Carrier Integration Storage Carrier Gateway Database Manager Carrier Voice to Post Text Processing Algorithms “She’ll be Just shoehorn right” it in that other program
Storage ¡Manager ¡Benefits ¡ • Immediate ¡reduced ¡load ¡on ¡integraPon ¡ database ¡ • Enabled ¡removal ¡of ¡code ¡from ¡systems ¡ • Delivered ¡business ¡value ¡by ¡keeping ¡ customers ¡happy ¡ • “The ¡best ¡sogware ¡we ¡have ¡ever ¡deployed” ¡ – OperaPons ¡director ¡ I’ll ¡come ¡back ¡to ¡this ¡
What’s ¡wrong ¡with ¡this ¡picture? ¡ Scalable! ! Storage Manager ! Voice to Text Algorithms ! Just shoehorn it in that other program !
What ¡if… ¡ We ¡took ¡our ¡inspiraPon ¡from ¡ successful ¡Web-‑scale ¡companies? ¡
Recommend
More recommend