Instabilt med sammansatta tjänster?

Relevanta dokument
Säkerhetskopiering och återställning av asynkrona system

När hög tillgänglighet inte blir hög

Borde den svarta lådan vara grå?

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

Facebook eller eid för inloggningen?

Utnyttja skärmen. Hög tid att tänka på flera visningsscenarion. Veckans teknikspaning : Sven-Håkan Olsson

Distribuerade affärssystem

Arkitektur för Bistånd

Skapa en generell informationsmodell?

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

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

LEANanalyser En helt ny generations analys- och visualiseringsverktyg

med huvudräkning fortsätter du med papper och penna eller miniräknare. Kontrollera sedan dina svar i facit och beräkna poängsumman.

Prestanda, skalbarhet och tillgänglighet Torbjörn Stavenek

Programmering = modellering

Microsoft ALM Agenda. Processer metoder Kundcase Paus Under huven på Visual Studio Team Test Frågor och Svar + en liten tävling

2-7: Bråk-förlängning Namn:.. Inledning

Thomas Padron-Mccarthy Mobila applikationer med Android, 7.5 hp (Distans) (DT107G ) Antal svarande = 13. Svarsfrekvens i procent = 27.

E12 "Evil is going on"

Förenkla leveransen av nästa generations kundupplevelse. PureConnect

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

Ellemtelvs kostym IBM vs Apple

Snabbintroduktion till Öppen Teknisk Plattform (ÖTP) för inköpare

WEBBSERVERPROGRAMMERING

Snabbintroduktion till Öppen Teknisk Plattform (ÖTP) för IT-chef/IT-arkitekt

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

Webbserverprogrammering

STYRKAN I ENKELHETEN. Business Suite

Så jobbar vi med Google Tag Manager. Johan Albertsson & Johan Wallin

Anujan Balasingam IDA14 NAND flashminnen

Tentamen. 2D4135 vt 2004 Objektorienterad programmering, design och analys med Java Torsdagen den 3 juni 2004 kl

2-8: Bråk, förkortning. Namn:.. Inledning

TATM79: Föreläsning 1 Notation, ekvationer, polynom och olikheter

Omnichannel Optimiser

IT- arkitekten om.o år

Så gör du IT-avdelningen till affärsutvecklare

Digital rekrytering Icke-funktionella krav

Till den som sitter med klistret

PM 01 En jämförelse av två analysmodeller för val av komponentteknik

KARTLÄGGNING: Så ser vardagen ut för IT-CHEFER. Du förtjänar bättre. Gör slut med dålig it.

Linjära ekvationssystem

PMM (Process Maturity Metrics) Allmänt. Mätetal för framgångsfaktorer. 1. CM konfigurationsstyrning

Jonas Gustavsson. Leverans av 10PB Isilon

Komplexiologi löser de accelererande problemen med psykisk ohälsa!

HP ELITEBOOK 6930P Artikelnr:

Att inventera bland problem i kundupplevelsen. En guide till proaktivt arbete

Information om medlemsregister och webb februari 2019

Slutrapport för Internetfonden

Ma C - Tek Exponentialekvationer, potensekvationer, logaritmlagar. Uppgift nr 10 Skriv lg4 + lg8 som en logaritm

Datacentertjänster PaaS

Modernt arbete kräver moderna verktyg

Regelverk. Infrastrukturen för vidareförmedling av grundläggande uppgifter om företag. Bilaga C. Servicenivåer Producent, UC. Version: 1.

SMARTA SÄTT ATT HITTA NYA KUNDER! Lyckas är att ligga steget före

Utvärdering av distansmötesverktyg via Internet.

SÄKRA DIN AFFÄR VART DEN ÄN TAR DIG. Protection Service for Business

TATM79: Föreläsning 1 Notation, ekvationer, polynom och summor

Företagspresentation

Att förstå bråk och decimaltal

JavaScript del 5 Funktioner

Digital kundservice i Sverige Rapport 2016

MELLAN GYMNASIET OCH UNIVERSITETET

Regelverk. Infrastrukturen för vidareförmedling av grundläggande uppgifter om företag. Bilaga B. Servicenivåer konsument, SLA. Version: 1.

Tekniskt system för Lean Startup

Köpguide för mobila växlar. Modern telefoni till företaget är långt ifrån vad det var för bara några år sedan.

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 11 Jonas Lindgren, Institutionen för Datavetenskap, LiU

SOPHIE ZETTERMARK ATT LÄKA EN MÅ BRA-DAGBOK

Innehållsförteckning 2 IKOT

Beslutsunderlag. Rekommendation för beslut om lösning för hantering av invånarens tidbokning gällande mottagningar som använder flera tidböcker

Optimering av prestanda

Sabotage eller misstag? En presentation byggd på fakta

Forskning och utveckling inom språkteknologi Uppgift 3: Projektförslag Parallelliserad dependensparsning i CUDA

Arbetshypoteser för Elmarknadshubbens API - april Version 1.0

Föreläsning 2. Operativsystem och programmering

Din RelationsBlueprint - Källan till smärta eller framgång i din intima relation

FÖRVALTNINGS AB FRAMTIDEN

Kombinationer och banor i agilityträningen

Webbtjänster med API er

Spetskompetens inom systemintegration, SOA och systemutveckling

Storage. Effektivare datalagring med det intelligenta informationsnätet.

Arbetsterapeuters användning av Basal Kroppskännedom för att stärka patienters aktivitetsutförande. Ingegerd Engslätt Jansson Pernilla Sporre

Multiplikation genom århundraden

Matematik klass 4. Vårterminen. Namn: Anneli Weiland Matematik åk 4 VT 1

Snabbintroduktion till Öppen Teknisk Plattform (ÖTP) för medborgare

Proxymodulen i SiteVision

Rapport inför projektavslut

MÄN ÄR FRÅN FOURSQUARE, KVINNOR FRÅN FACEBOOK

Tio tips för att lyckas med mobila lösningar

Välkomna nya medlemmar. Några tips och råd

COMBINUM är en kraftfull säljkonfigurator som hjälper dig att effektivisera orderflödet genom att låta kunder och säljare konfigurera order direkt på

Olika proportionella samband, däribland dubbelt och hälften.

Bättre tillförlitlighet vid djupare avstickning

Datastrukturer, algoritmer och programkonstruktion (DVA104, VT 2015) Föreläsning 6

moln Martin Davidson, Metria Danfilip Lundberg, Ljungby kommun MätKart 2012

Design och konstruktion av grafiska gränssnitt

Tentamen, Distribuerade System/Programvaruarkitektur

Tentamen etjänster och webbprogrammering

Lunds Tekniska Högskola Datorarkitektur med operativsystem EITF60. Superscalar vs VLIW. Cornelia Kloth IDA2. Inlämningsdatum:

a) A = 3 B = 4 C = 9 D = b) A = 250 B = 500 C = a) Tvåhundrasjuttiotre b) Ettusenfemhundranittio

W HIT E PA P ER. Vanliga frågor om Hybrid datacenter som tjänst. Hur kan jag veta att investeringen blir lönsam? t e xt : Johan Bentzel

Transkript:

Veckans teknikspaning Instabilt med sammansatta tjänster? Att sätta ihop kräver eftertanke 2012-12-21: Sven-Håkan Olsson KOMPOSITTJÄNSTER Det är tacksamt att skapa mer avancerade tjänster genom att sätta samman ett antal enklare. Men risken är att det blir på bekostnad av både stabilitet och prestanda. Nästan varenda referensarkitektur inkluderar en företeelse som brukar kallas sammansatta tjänster eller komposittjänster (composite services). Titta exempelvis på modeller från IBM, tidigare BEA och Sun eller den oberoende CORA-modellen. Källa: coramodel.com

Det finns en stor potential i att återanvända på en högre nivå genom att skapa komposittjänster som utgår från enklare tjänster. Exempelvis kan man ofta hitta användningsfall där ett antal enklare tjänster alltid anropas samtidigt. Vad vore bättre då än att slå ihop anropen så att konsumerande program bara behöver göra ett enda anrop? Det uppstår förstås också en bra möjlighet att baka in återanvändbar verksamhetslogik som styr hur de enkla tjänsterna anropas och därmed få komposittjänsten ännu mer nyttig. Så långt är allt gott och väl. Men jag har två invändningar: Datakvalitet: Om det sker uppdatering inom fler än en av de ingående enkla tjänsterna så får vi ett besvärligt problem med datakvaliteteten. Antingen får vi risk för halva uppdateringar eller också får vi problem med datafärskhet. Det finns mönster för att minska problemet och för att optimera, beroende på aktuella förutsättningar, men det finns ingen hundraprocentig lösning. Se gärna min genomgång i den tidigare trendspaningen Användarna förtjänar data som är korrekt. Stabilitet och prestanda: När antalet ingående tjänster i en komposittjänst ökar, så försämras stabilitet och prestanda. Resten av artikeln ägnas åt just denna invändning.

Dålig stabilitet Då en komposittjänst endast behöver anropa några få enkla tjänster så påverkas inte stabiliteten nämnvärt. Men om man har haft god nytta av en komposittjänst inkluderande få tjänster så det är lätt hänt att man går vidare. Och helt plötsligt har man skapat en komposittjänst som behöver anropa tiotalet ingående tjänster. Här är sannolikhetsläran obeveklig. Förenklat uttryckt så måste man multiplicera ihop sannolikheterna för att vardera av de enkla tjänsterna är igång för att få fram hur stabilt komposittjänsten som helhet beter sig. Om vi är lite pessismistiska för räkneexemplets skull och antar tio enkla tjänster som vardera levererar 99 procents upptid (uptime) så måste man ta 0,99 upphöjt till tio, vilket ger förskräckande låga 90 procents upptid för komposittjänsten. 90 procent betyder att den skulle riskera att stå still fyra timmar en typisk arbetsvecka! Även om vi höjer till 99,5 procent för de ingående tjänsterna (vilket är en ganska typisk nivå för molntjänster) blir resultatet 95 procent vilket motsvarar två hela timmar under veckan. Skulle vi lägga pengar och arbete på att komma upp till 99,9 procent ger det 99 procent, vilket motsvarar 24 minuter inte vidare populärt bland användarna, det heller. Visst kan man komma högre än 99,9 procent men det är genuint svårt och dyrt samt många gånger blir tekniklösningarna så komplexa att den mänskliga faktorn mm tar över som upptids-risk. Läs gärna min trendspaning När hög tillgänglighet inte blir hög. Asynkron lösning Ovan har vi förutsatt ett online-scenario där komposittjänsten gör synkrona anrop till de ingående tjänsterna och därefter synkront levererar det sammansatta svaret. Den typen av programmering är enkel att utföra och lätt att förstå samt ger en tämligen enkel undantagshantering. Men synkrona anrop ger en tät koppling som resulterar i den multiplikation av upptidssannolikhet som beskrivs ovan.

Så hur gör vi då? En lösning blir att leverera svar från komposittjänsten asynkront. Tekniskt är det mycket mer komplext både vad gäller teknikinfrastruktur och programmeringsmönster i klient, app eller webb. I förstone kan det se omöjligt ut; till många klientmiljöer finns det av säkerhetsskäl ingen back-kanal (den skulle öka risken för attacker). Kanske måste klienten polla komposittjänsten för att få de olika delsvaren men pollning förbrukar tid och bandbredd samt ökar last. Eller också inför man en kölösning som visserligen kan vara elegant men ökar komplexiteten. I app-världen finns förvisso vissa notifierings-tjänster som kan användas, men som ger ett beroende till en central tredjepartsaktör. Det kanske blir så att det asynkrona istället behöver ligga i klienten så att den kan presentera informationen allteftersom den anländer från de olika källorna. Användaren kan då börja titta på det som först svarades och sedan fortsätta med det som kommit senare. Eller så är man kanske är nöjd med det första datat denna gång. Jag har byggt sådana sammansatta lösningar och de har visat sig mycket stabila. Men då kanske inte komposittjänsten kan ligga i ett separat mellanskikt utan behöver exekvera inom klientmiljön. Det ger i sin tur andra problem såsom komponentdistributions-trassel och inkompatibilitet mellan språkmiljöer som Java och Dotnet. Fjärrmässigt är det alltså i det här fallet de enkla tjänsterna som anropas direkt. Asynkron leverans är dock inte av så stor nytta om anropen till de olika ingående tjänsterna bygger på varandra, eller om det sammansatta svaret slås ihop från de enkla tjänsterna innan resultatet blir meningsfullt. Då blir det i alla fall den trista sannolikhetsmultipliceringen som gäller. Ett annat sätt att öka komposittjänstens upptid är att ha relativt korta tidsgränser (timeouts) i anropen till de enkla tjänsterna. Då får konsumenten i alla fall svar efter

en stund, även om allt data kanske inte finns med. Detta fungerar förstås inte om anropen till de olika enkla tjänsterna bygger på varandra. Om svarstiden hos de enkla tjänsterna dessutom fluktuerar mycket, riskerar man att inte få det data man skulle kunnat få, eftersom en kort tidsgräns redan har löst ut. Problemet med sammansatt prestanda liknar problemet med upptid om man använder synkron leverans respektive tjänsteanrop som bygger på varandra eftersom svarstiderna adderas. Skulle komposittjänsten dessutom innehålla en loop kan svarstiderna gå upp betänkligt. Annan lagringssamverkan Ett helt annat sätt att tackla problemet är att inte göra de där anropen till fjärrtjänster utan att se till att datat som behövs redan finns tillgängligt nära konsumenten istället. Lösningar som replikering, avisering, händelsedriven arkitektur (EDA, Event Driven Architecture) etc, kan fungera väl. Men man ska vara medveten om att priset ofta är sämre datafärskhet genom att replikeringen skedde för en stund sedan, eller att en avisering kanske endast sker en gång i veckan. Det finns också en risk att mycket stora datamängder måste lagras nära konsumenten vilket i sin tur kan leda till både stora lagringskostnader och integritetsproblem. Sammanfattning Sammanfattningsvis kan man säga att komposittjänster många gånger kan vara kraftfulla och ge utmärkt nytta men inte i alla lägen. Framförallt bör man vara mycket försiktig om ett stort antal underliggande tjänster ska anropas samtidigt. Och asynkrona lösningar kan vara nyttiga men är samtidigt svårare att skapa. Sven-Håkan Olsson sysslar just nu med en läsplattetjänst för bolagsstyrelser och nämnder. I övrigt är han oberoende konsult som särskilt arbetar med att kombinera verksamhetsnytta med teknikhöjd. Han har en lång karriär bakom sig sedan 70- talet som it-konsult (applikationsarkitektur, systemdesign, programmering, reviewer, utredningar, kursledning). Sven-Håkan är medgrundare till KnowIT där han också var teknikchef 1990-2003. Han utsågs till en av "Sveriges topputvecklare" av Computer Sweden. Sven-Håkan håller regelbundet kurser åt

Dataföreningen. Läs gärna mer på hans blogg definitivus.se samt på styrelsemote.se. Sven-Håkan Olsson