soa best practices commonwealth bank of australia – commsee son jeung min architect evangelist...
TRANSCRIPT
SOA Best PracticesSOA Best PracticesCommonwealth Bank of Commonwealth Bank of Australia – CommSeeAustralia – CommSee
Son Jeung MinSon Jeung MinArchitect EvangelistArchitect [email protected]@microsoft.comMicrosoft KoreaMicrosoft Korea
2
AgendaAgenda
Project OverviewProject OverviewArchitecture and DesignArchitecture and DesignLessons LearntLessons LearntSummarySummary
3
CommSee BackgroundCommSee Background
Business GoalsBusiness GoalsEnhance customer service capabilitiesEnhance customer service capabilities
Single View of CustomerSingle View of CustomerBuild instead of buyBuild instead of buyEnhance Premium Financial Services CRM Enhance Premium Financial Services CRM appapp
Common client to replace/integrate Common client to replace/integrate BU appsBU apps
Consume backend services built across Consume backend services built across the bankthe bank
Architectural changes required to Architectural changes required to scale from 2000 to ~30,000 usersscale from 2000 to ~30,000 users
4
CBA Objectives & ScopeCBA Objectives & Scope
ObjectivesObjectivesArchitectural and design guidanceArchitectural and design guidanceFuture Proofing: Align with future MS Future Proofing: Align with future MS technologytechnologyKnowledge and skills transferKnowledge and skills transferPerformance and scalability testing Performance and scalability testing
ScopeScope.NET Smart Client application.NET Smart Client applicationCommon Services FrameworkCommon Services Framework
5
Methodology and Methodology and ApproachApproach
AgileAgileIterative, incrementalIterative, incremental
Mitigate riskMitigate risk
Test firstTest firstDifferent mindsetDifferent mindsetDrive increased qualityDrive increased quality
Pair ProgrammingPair ProgrammingNatural in co-locationNatural in co-location
Continual IntegrationContinual IntegrationReduces “it only works on my machine”Reduces “it only works on my machine”
6
AgendaAgenda
Project OverviewProject OverviewArchitecture and DesignArchitecture and DesignLessons LearntLessons LearntSummarySummary
7
ChangesChanges
VB 6VB 6Tab-based Tab-based navigationnavigationSingle viewSingle viewMDI styleMDI style
FromFrom ToToC#, C#, WindowsForms .NETWindowsForms .NETWeb-like navigationWeb-like navigationRole based viewsRole based viewsSmart Client “Portal”Smart Client “Portal”
Variety of comms Variety of comms mechanismsmechanismsBespoke backendBespoke backendBatch loadBatch load
Web Services as Web Services as standardstandardServices frameworkServices frameworkReal time interfacesReal time interfaces
8
Changes (2)Changes (2)
Separate security for Separate security for each applicationeach applicationMaintenance Maintenance separate from biz separate from biz processprocessApps on NT 3.51 Apps on NT 3.51 etc…etc…
FromFrom ToToCommon security, Common security, centralized based on centralized based on ADADMaintenance tied in Maintenance tied in with HR processeswith HR processesApps on Windows XPApps on Windows XP
Many different Many different applicationsapplicationsALT-TAB integrationALT-TAB integrationDisparate Disparate applicationsapplications
All functions within All functions within single application single application Seamless integrationSeamless integrationContextual awarenessContextual awareness
9
Client tierClient tierApplication ArchitectureApplication Architecture
Data storageData storage
Private ServicesPrivate Services
WinPart
Active Directory
Local Cache
Agent
Se
curity
Instrum
enta
tion
Oracle
Co
nfig
uration
Authn
Orchestration
Private service n
Private service
AuthzConfig
Legacy systemsLegacy systems
Mainframe n
WS Proxy
IFW Service n
SOFA
Service Helpers Data Integration
SOFA
Mainframe
IFW Service
10
Data centreData centreBranch siteBranch site
Smart ClientSmart Client
SmartSmartCardCard
Local ADLocal AD
SOFA FarmSOFA FarmHIS FarmHIS Farm
AD FarmAD Farm BizTalk FarmBizTalk Farm
MainframeMainframe
Other Application Other Application Servers, Oracle Servers, Oracle
Every Service Every Service authorized authorized against ADagainst AD
Deployment OverviewDeployment Overview
11
User Interface TierUser Interface Tier
Smart ClientSmart ClientSuperior user experienceSuperior user experienceLeverage power of clientLeverage power of clientBandwidth friendlyBandwidth friendlyIntegration capabilitiesIntegration capabilities
Developer modelDeveloper modelFlexible, yet simpleFlexible, yet simpleAbstract away low-level plumbingAbstract away low-level plumbingDesigners, code generators, toolsDesigners, code generators, tools
““WinParts”WinParts”Adhere to defined programming modelAdhere to defined programming modelCan also easily integrate other componentsCan also easily integrate other components
12
Navigation
WinParts•Are non-blocking• Consume data from services
Workspace
13
Service TierService Tier
All interactions via Web ServicesAll interactions via Web ServicesSOFASOFA
High throughput, reliability, availability High throughput, reliability, availability etc…etc…Consolidate data from many sourcesConsolidate data from many sourcesStateless Stateless Based on EDRABased on EDRA
BiztalkBiztalkComplex orchestrationsComplex orchestrationsLong running transactionsLong running transactions
Host Integration ServerHost Integration ServerOracle databaseOracle database
14
Services Tier (2)Services Tier (2)
Public ServicesPublic ServicesUsing IBMs IFW banking model and Using IBMs IFW banking model and RationalRationalXSD compliant schemasXSD compliant schemasCurrently ~125Currently ~125
Private ServicesPrivate ServicesApplication specificApplication specificCurrently ~600Currently ~600
15
Service DesignService Design
Based on EDRABased on EDRA1 Business Action per [WebMethod]1 Business Action per [WebMethod]
Grouped by Team and SubjectGrouped by Team and SubjectTeam maps 1:1 to vidr (eg CRM)Team maps 1:1 to vidr (eg CRM)Subject maps 1:* to asmx (eg “Customer Subject maps 1:* to asmx (eg “Customer Details”Details”
Use case centricUse case centric
16
CachingCaching
Service sideService sideAsync increased loadAsync increased loadCaching handlerCaching handlerReduced load on Mainframe by 40%Reduced load on Mainframe by 40%
Client sideClient sideConfig reveals service endpoints and Config reveals service endpoints and cache-abilitycache-abilityIn-memory or diskIn-memory or disk
17
Statistics (Aug 2005)Statistics (Aug 2005)
2.5 MM LOC2.5 MM LOC10K code files10K code files80 VS solutions80 VS solutions35Mb Client installer35Mb Client installer110-120Mb server installer110-120Mb server installer680 client DLLs680 client DLLs1650 server DLLs (many dupes)1650 server DLLs (many dupes)~30 backend systems~30 backend systems
18
SecuritySecurity
WS-Security modelWS-Security modelServiceService
All requests authenticated and authorized All requests authenticated and authorized by SOFAby SOFATrust boundary – security perimeterTrust boundary – security perimeter
ClientClientAuthorization for usabilityAuthorization for usabilityLeverage Windows securityLeverage Windows security
Traffic encrypted using SSLTraffic encrypted using SSLCurrently using IIS, can switch to load Currently using IIS, can switch to load balancerbalancer
19
Service SecurityService Security
BusinessService
Smart Client
Active Directory
WS
E
AuthenticationService
WS
E
Agent
Shared secret
Shared secret
5. Decrypt & verify token5. Decrypt & verify tokenVerify msgVerify msg
4. CBT attached4. CBT attachedto messageto message
2. IIS integrated Authn2. IIS integrated AuthnReturn: CBTReturn: CBT
6. Authorize6. Authorize
3. Get Authorization Info3. Get Authorization Info
1. Logon to Windows1. Logon to Windows
20
OperationsOperations
Leverage existing operations infrastructureLeverage existing operations infrastructureMonitoringMonitoring
All services publish extensive array of countersAll services publish extensive array of countersPerfmonPerfmonBMC PatrolBMC PatrolTrans/sec, avg response times etc…Trans/sec, avg response times etc…
Load balancers can…Load balancers can…Concentrate connectionsConcentrate connectionsDirect trafficDirect trafficSSL encryptionSSL encryptionNot using these features currentlyNot using these features currently
SOFA ServersSOFA ServersIdentical software images on each serverIdentical software images on each server
21
DeploymentDeployment
ClientClientSMS (previously Radia)SMS (previously Radia)Currently all or nothingCurrently all or nothing
ServerServerInitially, difficult to get configuration Initially, difficult to get configuration correctcorrectNow use Altiris – build all servers Now use Altiris – build all servers identically and quicklyidentically and quicklyOver 700 services on each server, Over 700 services on each server, multiple versionsmultiple versions
22
Development toolsDevelopment tools
Visual Studio 2003, .NET 1.1Visual Studio 2003, .NET 1.1BizTalkBizTalknUnitnUnitCruise Control.NETCruise Control.NETWise InstallerWise InstallerWIXWIXXMLSpyXMLSpyRational and IFWRational and IFWScitech .NET memory profilerScitech .NET memory profilerCustom toolsCustom tools
Visual Studio plug-ins for developing Visual Studio plug-ins for developing “WinParts”“WinParts”Code GeneratorsCode GeneratorsSimplified schema generatorSimplified schema generatorDependency toolDependency tool
23
Statistics (Aug 2005)Statistics (Aug 2005)
UsersUsers>10,000 total>10,000 total~7,500 concurrent (peak)~7,500 concurrent (peak)Increasing to ~30,000 by end CY05Increasing to ~30,000 by end CY05
8x dual 3Ghz CPU Intel SOFA servers8x dual 3Ghz CPU Intel SOFA servers2Gb memory2Gb memory
~40 tps/server (320 tps across farm)~40 tps/server (320 tps across farm)CPU ~40%CPU ~40%Memory ~70%Memory ~70%
Expect ~16 servers for ~30,000 usersExpect ~16 servers for ~30,000 users6x HIS Servers6x HIS Servers2x Biztalk servers2x Biztalk servers3x Solaris nodes for Oracle3x Solaris nodes for Oracle
24
TimelineTimeline
Core development in Core development in RedmondRedmondClose connection with Close connection with Product GroupsProduct GroupsVirtual teamVirtual team
CBACBAMS RedmondMS RedmondMS AustraliaMS Australia
Transition to SydneyTransition to SydneyIntegrate into CBA Integrate into CBA environmentenvironmentTransfer knowledge to Transfer knowledge to dev teamdev team
Mar04
Qua
lifica
tion
and
setu
p
Apr04 Jul04
Arch
itect
ure
and
Des
ign
(Red
mon
d)
Cont
inue
d Dev
elop
men
tSep04 Dec04 Mar05 Apr05 Dec05
Prod
uctio
n re
leas
e 1
Prod
uctio
n re
leas
e 2
Nat
iona
l rol
lout
com
men
ces
*Nat
iona
l rol
lout
com
plet
e
Prod
uctio
n re
leas
e 3
...*Anticipated date
25
““Public” Service Development Public” Service Development Approach (atomic or composite)Approach (atomic or composite)
Identify Service Identify Service RequirementsRequirements Business AnalystBusiness Analyst
Identify existing Identify existing transaction(s) transaction(s)
requiredrequiredBusiness AnalystBusiness Analyst
Deploy service and Deploy service and documentationdocumentation Release ManagerRelease Manager
Define XSLTDefine XSLTDeveloperDeveloper
Model in BOMModel in BOM Develop lightweight Develop lightweight XML representation XML representation
of mainframe of mainframe transactiontransaction
DeveloperDeveloperInformation ArchitectInformation Architect
Implement business Implement business rules and servicerules and service DeveloperDeveloper
Model in IDM and Model in IDM and auto-generate XML auto-generate XML
schemaschemaInformation ArchitectInformation Architect
Document Service Document Service RulesRulesInformation ArchitectInformation Architect
26
Highlights Highlights CommSeeCommSee
Windows Forms .NET Smart ClientWindows Forms .NET Smart ClientASP.NET Web ServicesASP.NET Web Services~30,000 users, 1000+ branches~30,000 users, 1000+ branches
On time, on budgetOn time, on budgetGreat user feedback, pressGreat user feedback, pressIncremental deliveryIncremental delivery
PracticalPracticalAug2005: 10,000+ users, 600 branches, all call Aug2005: 10,000+ users, 600 branches, all call centerscentersOn target to decommission legacy platforms by On target to decommission legacy platforms by end 2005end 2005
ReuseReuseMainframe and legacy systemsMainframe and legacy systemsVB6, Win32 front end assetsVB6, Win32 front end assets
27
AgendaAgenda
Project OverviewProject OverviewArchitecture and DesignArchitecture and DesignLessons LearntLessons LearntSummarySummary
28
Lessons LearntLessons LearntDevelopmentDevelopment
Memory leaks initially happen!Memory leaks initially happen!Scitech Scitech http://www.scitech.se/http://www.scitech.se/
Asynchronous UIAsynchronous UIHard to buildHard to buildUnexpected backend consequencesUnexpected backend consequences
Caching is criticalCaching is criticalVS Designers = black magicVS Designers = black magicConfigConfig
Needs to be centrally controlledNeeds to be centrally controlled
Frameworks need to be shrink-Frameworks need to be shrink-wrappedwrapped
29
Lessons LearntLessons LearntProcessProcess
Agile processAgile processContinuous Build and unit testsContinuous Build and unit testsTime consuming to setupTime consuming to setupPays offPays offAbility to put new code into test Ability to put new code into test environment dailyenvironment daily
Incremental delivery keyIncremental delivery key
30
Lessons LearntLessons LearntOperations and deploymentOperations and deployment
All or nothing not a good modelAll or nothing not a good modelBuild in auto-update features earlyBuild in auto-update features early
Configuration management hardConfiguration management hardUse a toolUse a tool
Instrument, Instrument, Instrument!Instrument, Instrument, Instrument!
31
AgendaAgenda
Project OverviewProject OverviewArchitecture and DesignArchitecture and DesignLessons LearntLessons LearntSummarySummary
32
SummarySummaryCommSeeCommSee
Windows Forms .NET Smart ClientWindows Forms .NET Smart ClientASP.NET Web ServicesASP.NET Web Services~30,000 users, 1000+ branches~30,000 users, 1000+ branches
On time, on budgetOn time, on budgetGreat user feedback, pressGreat user feedback, pressIncremental deliveryIncremental delivery
PracticalPracticalCurrently: 10,000+ users, 600 branches, all call Currently: 10,000+ users, 600 branches, all call centerscentersOn target to decommission legacy platforms by On target to decommission legacy platforms by end 2005end 2005
ReuseReuseMainframe and legacy systemsMainframe and legacy systemsVB6, Win32 front end assetsVB6, Win32 front end assets
33
© 2005 Microsoft Corporation. All rights reserved.This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.