Denne artikel stammer fra det trykte Computerworlds arkiv. Artiklen blev publiceret den CTO d. 3. november 2006.
udvikling Nykredits tidlige start på komponentbaseret udvikling har gjort det nemmere at flytte til en serviceorienteret arkitektur.
Nykredit fik en kickstart, da den finansielle koncern gik i gang med en serviceorienteret arkitektur. Nykredit var nemlig i gang med komponentbaseret udvikling. For ligesom en serviceorienteret arkitektur baserer sig på veldefinerede services med klart definerede interfaces, så baserer en komponentbaseret arkitektur sig på veldefinerede komponenter med klart definerede interfaces. Det hjalp Nykredit.
- Når man har afgrænsede komponenter, er det nemmere at udstille dem som webservices, siger Søren Jensen, udviklingschef hos Nykredit.
Omkring 2000 begyndte Nykredit at definere centrale tværgående forretningsbegreber, som Nykredits systemer skulle anvende. Eksempelvis er kundebegrebet helt centralt, og Nykredit ønskede én definition af kunde i sine systemer.
- Arkitekturen for vores komponentbaserede systemer baserede sig på tværgående koncernbegreber som kunde. Kunde er en koncern-entitet med de primære stamdata for kunder som navn og adresse. Og samtidig indeholder den relationer til de domænespecifikke kundedatabaser inden for forsikring, bank og realkredit, forklarer Søren Jensen.
Kunde-entiteten er på denne måde et koncerntværgående begreb, der sørger for sammenhæng og fælles forståelse på tværs af de forskellige forretningsområder.
Nykredits første service var en kundeservice, som blev udviklet i AllFusion Gen og Cobol. Da servicen kørte på Nykredits mainframe, var der ikke tale om en webservice i traditionel forstand, der kunne tilgås via http- og SOAP-beskeder, men om en kundekomponent med et antal metoder. Designlighederne med webservices har dog senere gjort det relativt nemt at gøre kundekomponentens metoder tilgængelige som webservices.
- I dag skal alle relevante services pakkes ind som webservices via det, vi kalder et integrationscluster, siger Søren Jensen.
Integrationsclusteret er et antal Intel-maskiner, der kører Windows. Her kører der Java EE-applikationer på applikationsserveren BEA Weblogic. Kommunikationen til mainframesystemet foregår ved hjælp af AllFusion Gens værktøjer. Eksempelvis er der en Java-proxy, der kan kapsle CICS-snitflader ind, så de får et Java-interface.
Kundekomponentens metoder kan således stilles til rådighed som metoder på en Java-klasse, der så kan anvendes af eksempelvis en Java Bean på Weblogic-serveren. Søren Jensen ser derfor en serviceorienteret arkitektur som en naturlig videreudvikling af den hidtidige arkitektur.
Nykredit har derfor ikke så mange store monolitiske mainframe-programmer, der skal splittes op i små veldefinerede services. Det arbejde er allerede i gang grundet den komponentbaserede udviklingsfilosofi. At lave genbrugelige tværgående services er dog altid et større arbejde. De fleste eksisterende komponenter er lavet i en applikations- eller domænespecik kontekst, hvorfor det er nødvendigt at lave et større design- og implementeringsarbejde, når der tages hul på et nyt område. Der skal også ryddes op i de gamle miljøer, så de kommer til at anvende de nye services. Det er en langsigtet opgave, der skal tages i mange små bidder.
For Søren Jensen er det ikke så meget teknologien, som giver den største udfordring. Det er mere arbejdet med at definere de centrale forretningsbegreber i Nykredit.
- Det sværeste er at få lavet nogle genbrugelige koncerntværgående services. Begrebsdelen er det vanskelige. Bare det at få defineret et entydigt kundebegreb tog lang tid, forklarer Søren Jensen.
Derfor har Nykredit etableret et arkitekturnetværk, der definerer hvilke centrale services, der skal være i Nykredits serviceorienterede arkitektur. Der er 10-15 centrale services. De underopdeles så i mindre services, hvoraf der er omkring 150 services.
- Spørgsmålet er, hvilken granularitet en service skal have. Det skal gerne være en unik forretningsproces. "Kunde" kunne være en overordnet service, der så består af en række services som eksempelvis "VisKunde". Samtidig skal services være genbrugelige, så de må ikke være brudt for meget ned, siger Søren Jensen.
Et andet designkriterium som Nykredit lægger vægt på ved servicedesignet er kontekstuafhængighed.
- Services skal kunne fungere ved hjælp af de informationer, der sendes, når servicen kaldes. Vores services skal være stateless og konversationsuafhængige. På et højere niveau i orkestreringen af services, kan man skabe en sådan kontekst, siger Søren Jensen.
Arkitekturnetværket bestemmer også hvilke services, der skal være tværgående, og hvilke der er mere lokalt orienteret.
- Det er ikke al funktionalitet, der har genbrugspotentiale. De centrale begreber skal udstilles som webservices, siger Søren Jensen.
Gennem årene har webservices i Nykredit ændret sig. I starten af 2002, hvor de første webservices blev implementeret, var det ren XML, som blev sendt over MQSeries og en dedikeret transportlinje.
- Vi brugte ikke SOAP og WSDL. Vi aftalte blot formatet og hvilke skemaer, som XML skulle bygges op efter. Langsomt er vi begyndt at flytte over til webservices baseret på SOAP og WSDL. Det giver en fælles standard, som kan bruges internt og eksternt til underleverandører som FDC og BEC. Samtidig er der en del værktøjer, der understøtter automatisk generering af SOAP-beskeder og WSDL, hvilket gør det nemmere at anvende, siger Søren Jensen.
Af hensyn til fremtiden, hvor Søren Jensen forventer, at anvendelsen af webservices til kommunikation med underleverandører og samarbejdspartnere stiger, følger Nykredit anbefalingerne fra WS-I (webservices interoperabilitsgruppen).
- Services bør følge Basic Profile så vidt muligt. Vi skal sikre, at services kan hænge sammen med andre serviceudbydere på sigt. For øjeblikket er det mest internt, at vi anvender webservices, men det vil ændre sig, vurderer Søren Jensen.
Nykredit har ikke investeret i et SOA-repository, som en del leverandører ellers regner som uundværlig i en serviceorienteret arkitektur.
- Vi anvender et regneark til at skabe overblik over, hvilke webservices vi har. Hvem er ansvarlig for hvilke services. Så har vi et CVS-repository, hvor alle services er beskrevet. Vi overvejer dog et service-repository. Jo flere services der kommer ind, jo mere er der at holde styr på, siger Søren Jensen.
Når en service har været i drift et stykke tid, kan der opstå behov for at tilføje nye parametre. Her er det vigtigt, at ændringer sker på en kontrolleret og planlagt måde, så man ikke ender med et uoverskueligt antal versioner af samme service. Videreudviklingen af services er underlagt open/close-princippet, der siger, at det er ok at tilføje yderlige elementer til servicen, blot man ikke ændrer det bestående. Derved undgår man at påvirke de aktuelle anvendere af servicen.
- Nogle gange er det nødvendigt med en stor ændring i en service. Det kalder vi en "major" versionering. Generelt forsøger vi at holde os på to serviceversioner, ellers skal vi holde styr på for mange, siger han.
Selvom han ikke mener, at teknologien er det sværeste ved den serviceorienterede arkitektur, ser han dog nogle tekniske udfordringer.
- Deploymentsiden af services kan være kompleks ligesom performanceoptimering og fejlfinding kan være, siger Søren Jensen.
Nykredit er dog i gang med at formalisere såkaldt loadtest i forbindelse med performanceoptimering. Loadtest er scriptafvikling mod en service eller mod en portal. Her anvendes scripts til at simulere en række brugere. En tilsvarende metode anvender Nykredit til at vurdere, om de implementerede forretningsprocesser overholder de aftalte Service Levels Agreements (SLA).
Faktaboks
Nykredits infrastruktur
Clusteret BEA-miljø med BEA Weblogic-applika-
tionsserver.
BEA Weblogic Integration. Sammensætter mindre services til højere services, orkestrering.
BEA Weblogic Portal til opbygning af portaler.
DB2 på mainframe og Oracle på decentrale miljøer. Er ved at migrere Oracle fra Windows til AIX.
AllFusion Gen og Cobol-programmer på mainframen.
Simple Object Access Protocol
SOAP (simple object access protocol) beskriver, hvordan data kan udveksles via webservices. SOAP-beskeder er baseret på XML og følger et bestemt format. SOAP-beskeder sendes ofte via http, men andre transportlag kan også anvendes.
WebServices Interoperabilitet
WS-I (webservices interoperabilitet) er et konsor-
tium af leverandører, der arbejder for at skabe interoperabilitet mellem webservices på forskellige platforme, operativsystemer og programmeringssprog.
Konsortiet har udarbejdet den såkaldte WS-I Basic Profile, der beskriver, hvordan interoperabilitet mellem grundlæggende webservices-specifikationer som SOAP, UDDI og WSDL opnås.
Læs mere på www.ws-i.org
OriginalModTime: 02-11-2006 14:34:47