Hur den lösa kopplingen ändå blir hård

Relevanta dokument
Borde den svarta lådan vara grå?

Instabilt med sammansatta tjänster?

Vad är vad uppe bland molnen stratus, cumulus eller nimbus?

Hur du väljer stil för integrering av moln applikationer med egna applikationer

Arkitektur för Bistånd

1. (3p) Inom MDI-området framhåller man att människor lär sig via metaforer. Hur menar man att detta går till?

Asynkrona kommunikationsmönster, vägen till ett serviceorienterat nirvana?

Distribuerade affärssystem

Säkerhetskopiering och återställning av asynkrona system

2 Pappersfullmakter/Skannade fullmakter

Realism och anti-realism och andra problem

campus.borlänge Förstudie - Beslutsstöd för operativ tågtrafikstyrning

Skapa en generell informationsmodell?

Framgångsfaktorer i molnet!

Vilket moln passar dig bäst?

Checklista för konsumenter som ska kvalitetssäkra sina e-tjänster och konsumentadapter som nyttjar SSBT

inte följa någon enkel eller fiffig princip, vad man nu skulle mena med det. All right, men

LEANanalyser En helt ny generations analys- och visualiseringsverktyg

Praktikum i programvaruproduktion

Opponenter: Erik Hansen Mats Almgren Respondent: Martin Landälv ioftpd-verktyg

Operatörer och användargränssnitt vid processtyrning

Föreläsning 13: Användbarhet och komplexa system

Webbtjänster med API er

Transkritisk CO2 kylning med värmeåtervinning

y y 1 = k(x x 1 ) f(x) = 3 x

Arbetshypoteser för Elmarknadshubbens API - april Version 1.0

Databasdesign. E-R-modellen

Vinjett 1: Relationsdatabas för effektivaste vägen

Till den som sitter med klistret

Utveckling av Läsaren

Ur boken Självkänsla Bortom populärpsykologi och enkla sanningar

Deluppgift 2 Kravhantering a) (2p) När man diskuterar krav brukar man ange två olika typer av krav. Beskriv dessa och ge exempel.

Vardagsfärdigheter hos vuxna

Configuration testing Why? Vad det är tänkt att koden ska göra. Performance testing Kommentarer Skriva om koden som kommentar

Prestanda, skalbarhet och tillgänglighet Torbjörn Stavenek

Av den energi vi lägger på att förstå kundbehov blir det konkurrenskraft.

Lösningar och kommentarer till uppgifter i 2.3

Vad tror du att du håller på med egentligen? eller Vad händer med inlärda beteenden när du tävlar?

E12 "Evil is going on"

Sekvensnät vippor, register och bussar

Objektorientering Användning

Mjukvarudesign. Designprocessen. Teknisk design. Konceptuell design

Kompletterande frågor - Regler för informationshantering. och arkivering i IT-system/applikationer, LA 2017

Crossmedia design. Crossmedia design (27311VT14) Results of survey. Startade: den 21 juni Avslutad: den 22 augusti 2014

Sätt att skriva ut binärträd

kvoten mellan två på varandra följande tal i en talföljd är konstant alltid lika stor.

SOA. Länkar +ll sidor om SOA h3p:// h3p://dsv.su.se/soa/

Versionsinformation 5.0 Dokumentet beskriver de funktionsförändringar som införts mellan version 4.7 och version 5.0 som driftsätts under Q

Grafiska användargränssnitt i Java

den nya generationens manöverenhet: TM50 Touch

Kristen etisk front. i samarbete med Vetenskapsrådet 13. Rollspelet om etik & genetik Bilaga 6

Konsument verket KO. Telefonförsäljning. Regeringen Finansdepartementet Stockholm

De fyra karaktärerna

Nu presenterar vi ett nytt sätt att jämföra luftfilter:

Testdriven utveckling av Web Services. Ole Matzura

Välkommen till Betaversion 2.0 av vår nya digitala bank. Februari 2018

Undervisningen i ämnet mobila applikationer ska ge eleverna förutsättningar att utveckla följande:

Inlämning steg Inventera kända koncept och idéer

En resa i kommunikation

Yttrande över promemorian Förslag till en nationell institution för mänskliga rättigheter i Sverige (Ds 2019:4)

Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad. Skriv ditt idnummer på varje blad (så att vi inte slarvar bort dem).

Boken. Kap Kap 11.3

Tentamen. Makroekonomi NA0133. Juni 2015 Skrivtid 3 timmar.

Del av projektuppgiften. Systemarkitektprogrammet

LEKTION 6: INGENJÖREN OCH HÅLLBAR UTVECKLING

Bli framgångsrik med CRM. Det behöver inte vara så komplicerat! made for sales people

Migration to the cloud: roadmap. PART 1: Möjligheter och hinder för att migrera till molnet

Förbättringskompetens/mognad

Foto: Marco Gustafsson. SiteVisiondagarna

Tentamen i IE1204/5 Digital Design onsdagen den 5/

Prototypning. Filmtajm. Prototypens roll: Evolutionär eller kasta bort. Dagens föreläsning. Detaljgrad. Detaljerad i vilket avseende?

Förhållandet till regeringsformens bestämmelser

LEFI Online Webbgränssnitt Fråga-svar-bild

Svarsblankett till REMISS D /16

Energismarta system i brukarens vardagsliv

Innehållsförteckning 2 IKOT

Konsekvensbedömning (bedömning av verkningarna på människor)

TDDD78, TDDE30, 729A Typhierarkier del 3 När och hur vill vi använda dem? Några Best Practices

Sammanfattning 2018:1

Eleven kan på ett i huvudsak (E) fungerande sätt

Cloud Computing för arkitekter Sten Sundblad IASA och Sundblad & Sundblad

den nya generationens manöverenhet: TM50 Touch med intuitiv touchscreen

FM Mattsson. Kök. Trycksak nr 251/3

Objektorienterad analys och design

INTRODUKTION AV RCI WEEKS FÖRBÄTTRINGAR

Den framtida konsumentpolitiken

Kursplan B. Svenska kursenheten

Bank och försäkring för alla

Bilaga 3a Ickefunktionella

Projektredovisning- Animationstest, Stopmotion och 3D skrivare Jacob Petersson, Cristoffer Ålund, Jakob Arevärn

Kumla kommuns e-tjänsteplattform för att skapa användarvänliga e-tjänster för externa och interna mottagare

Inlämningsuppgift : Finn. 2D1418 Språkteknologi. Christoffer Sabel E-post: csabel@kth.se 1

Creo Customization. Lars Björs

Vatten- och energibesapring

Anujan Balasingam IDA14 NAND flashminnen

Anslutningsvägledning. Nationell patientöversikt 2.0

Datalogi, grundkurs 1

tips och insikter för att bemöta en stressad/utmattad person på rätt sätt

Frågor och svar till tentamen i Kravhantering

T R Ä D G Å R D S D E S I G N E N M I N I K U R S

Transkript:

Hur den lösa kopplingen ändå blir hård Jakten på lös koppling kan leda till att den blir ännu hårdare BALANSGÅNG MELLAN OLIKA SORTERS KOPPLING Det brukar anses mycket viktigt att ha låg grad av koppling mellan SOA-tjänster. Men välmenande förbättringar kan leda till försämringar. Lös koppling ( loose coupling ) brukar framhållas som en synnerligen viktig aspekt av framgångsrik SOA. Men när man granskar begreppet inser man att det finns en mängd tolkningar av lös koppling. På abstrakt nivå uttyds graden av koppling som graden av beroende mellan två ihopkopplade delar i SOAsammanhanget handlar detta om användaren av tjänsten ( consumer ) och producenten av tjänsten ( provider ). Nu kanske du tänker: det ligger väl i sakens natur att tjänsteanvändaren är beroende av tjänsteproducenten? Utan beroende finns det ju ingen tjänsteanvändning, så varför skulle det vara så dåligt? Varför lös koppling önskas inom SOA SOA syftar till att förenkla. Tjänsteanvändare och tjänsteproducent ska inte behöva vara överens om myllriga små detaljer om exakt hur tjänsten utförs. Agreement is expensive, har någon vis person sagt och därmed bör man hålla ner antalet detaljer som man måste vara överens om. Helt enkelt hålla nere till det minimum som behövs för att få fram önskad funktionalitet. Här kommer också begreppet black box in. Tjänsteanvändaren ska inte behöva känna till innanmätet i tjänsten och alla dess teknikdetaljer, det ska räcka med att känna till ytan på den svarta lådan - det vill säga informationsgränssnittet, tjänstens kontrakt. Det ger lösare koppling mellan tjänsteanvändare och tjänsteproducent.

Tjänsteanvändare Black box med intern verksamhetslogik ej synlig utåt Tjänsteanvändning via överenskommet informationskontrakt det enda som syns utanför boxarna Olika tjänsteproducenter Teknikinfrastruktur som tjänsterna vilar på, ger viss grad av tillgänglighet mm En av bästsäljarförfattarna inom SOA-litteraturen, Thomas Erl, menar att det finns sju sorters koppling men att bara två av dem är positiva. De som är bra är där det funktionella kontraktet egentligen skapas mellan konsument och tjänst. De andra fem är oönskade. I mer tekniska termer finns det många andra sorters kopplingar där det är olämpligt om de blir för hårda. Det kan vara saker som att tjänsteanvändare och tjänsteproducent inte ska behöva hålla ordning på varandras status eller läge emellan anrop ( statelessness ). Det kan vara att man inte ska använda allt-eller-inget-transaktioner (så kallad ACID) i SOA-gränssnittet, eftersom mångpartstransaktioner omöjligen rimmar med statelessness. Det kan vara att meddelanden som utväxlas ska vara grovkorniga ( coarse granular ) för att vara så självständiga och oberoende av varandra som möjligt exempelvis att ha en hel fakturapost i ett meddelande istället för mängder av småmeddelanden med fakturahuvud för sig och varje fakturarad för sig. Här ska vi koncentrera oss på en oberoendefaktor: Tjänsteanvändare bör inte vara hårt beroende av att alla tjänsteproducenterna som används i just detta nu är vid liv och har bra svarstid.

I SOA-visionen ingår att kunna plocka ihop en lösning utifrån färdiga tjänster, som byggklossar. I ett sammansatt system där man använder ett stort antal tjänster skulle man med hård koppling erhålla mycket dålig sannolikhet för att helheten verkligen är igång och svarar. Den tekniska tillgängligheten totalt sett blir usel och slutanvändarna blir missnöjda. Asynkrona tjänstegränssnitt är ofta lösningen Den viktigaste lösningen för att slippa denna sorts hårda koppling är att använda asynkron kommunikation mellan tjänsteanvändare och tjänsteproducent. Detta innebär att anropande tjänsteanvändare inte kräver ett omedelbart svar utan kan gå vidare med andra saker, trots att tjänsteproducenten ännu inte gjort klart sitt jobb. Tjänsteanvändaren blir därmed oberoende av att tjänsteproducenten kan svara just nu. Lösningen får konstrueras så att det duger att om ett svar skulle behövas, så får det komma aningen senare. Här anar ni förstås att det finns nackdelar med asynkrona tjänstegränssnitt också. Ofta är det i alla fall funktionellt helt tillräckligt med asynkrona tjänstegränssnitt och vi vinner oberoende av tjänsternas tillgänglighet. Men då kommer nästa fråga, hur ska vi hantera om det uppstår ett fel eller undantag? Ett bankexempel Säg att vi ska göra ett bankuttag. Om vi utformar det synkront får vi omedelbart reda på om det är slut på pengar på kontot eller om bankens kontosystem har tekniska problem. Vi kan meddela en slutanvändare om situationen omedelbart. Ifall det rör sig om system utan användargränssnitt kan ändå anropande system direkt fatta bra beslut grundat på väluttänkta returkoder. Om istället ett asynkront scenario används så kan man tänka sig att anropande system först frågar om ett uttag på 20.000 medges. Anropssystemet sysslar med annat ett tag, och får sedan ett asynkront meddelande om att det går bra. Därefter skickas en uttagsbegäran som ett asynkront tjänsteanrop. Anropssystemet måste anta att detta ska gå bra eftersom det frågat först. Det använder nu pengarna till ett börsköp. Men om nu det var så att det faktiskt

kommit in ett bankomatuttag på 8.000 under mellantiden så räcker inte saldot till. Det måste skapas ett asynkront protestmeddelande. Därefter måste anropssystemet försöka krypa ur börsaffären. Som också är asynkron till sin karaktär... Kanske är kontoexemplet lite förenklat och kanske kan man utforma banklogiken bättre, men det viktiga är det principella resonemanget att logik inuti tjänsteanvändaren och logik inuti tjänsteproducenten lätt blir synnerligen sammanflätad i asynkrona sammanhang. Parterna blir ordentligt sammanflätade redan i normalflöden och ännu mer i flöden för undantagshantering. Sammanflätat är inte lika med oberoende. Det har uppstått en ny slags hårdare koppling (mellan logikinnanmäten) som resultat av en ansträngning att skapa mindre hård koppling (övergå från synkront till asynkront). Utgångsläge För hård koppling Lösare koppling genom mer asynkrona mönster Leder till hårdare koppling! Behov av sammanflätad logik mellan anropande och anropad Det finns designteori kring hur man skapar asynkron undantagshantering, till

exempel mönstret med långa verksamhetstransaktioner ( long running transactions ) men det är viktigt att inse att detta är ett svårt ämne. Det kostar verkligt mycket tid och pengar att designa både denna verksamhetslogik och teknikfelslogiken. Dessutom är testning av asynkrona mönster arbetsam. Med andra ord: risk för fel i felhanteringen! Lösningar Det måste alltså finnas en balansgång mellan olika sorters lös koppling. Att skapa en optimerad lösning innebär att man klarar av att kompromissa. Detta gäller för övrigt även andra aspekter av lös koppling än de två som tas upp här. Vad ska man då göra åt saken, mer konkret? Här kommer några lösa förslag: o Utgå från verksamhetens behov när du analyserar frågan om asynkront/synkront. Vilket färskhetsbehov finns på informationen? Omedelbart synkront (såsom en lagerfråga), ett dygn (såsom för fakturaöverföring)? Kan man kanske replikera register till den andra SOA-domänen (såsom till prisuppgifter)? o o Gör inte okynnesuppdelning i alltför små SOA-domäner. Vissa gånger är det bättre att hålla ihop logik som hör till ofta förekommande användningsfall. Logiken hamnar då på insidan av en lite större SOAtjänst. Inuti en sådan black box är lös koppling inte alls lika nödvändig. De förenklande allt-eller-inget-transaktionerna kan vara tillåtna. I de fall som man vet att tjänsteproducenten säkert kan garantera hög tillgänglighet och kort svarstid kan synkrona mönster övervägas. o Om du märker att asynkrona mönster behövs i stor skala i din lösning, gör åtminstone en realistisk budget för det stora arbetet att utforma och testa alla långa verksamhetstransaktioner.

Lär mer om moln (och även knytningen till SOA) på kurs För- och nackdelar med de olika molnen, liksom SOA, integrationslösningar och migrering gås igenom noggrant i tredagarskursen Cloud computing migrering och integration som ges 1 3 december 2009. Se Dataföreningen Kompetens, www.dfkompetens.se