För utvecklare som ligger i frontlinjen i dag är begrepp som mikrotjänster och containrar självklara. Det är de sätt att strukturera och köra applikationer som snabbast ökar i popularitet. Fördelarna är uppenbara vad gäller till exempel struktur och skalbarhet.

Begreppen mikrotjänster och containrar hänger ofta ihop, men måste inte göra det. Av de båda är mikrotjänster det mer generella. Man kan köra dem i containrar eller på andra sätt.

Men när man väl lyckats strukturera en applikation i ett antal mikrotjänster så återstår det att lösa problemet med att ordna kommunikation mellan dem. Ett sätt är att använda Rest (Representational state transfer), en populär lösning för att bygga webbapplikationer. Men det tycker man inte på 84codes, en svensk leverantör av molntjänster:

– Mitt budskap är att få fler att använda meddelandetjänster för att bygga applikationer med mikrotjänster, säger Carl Hörberg, vd på 84codes.

Läs också: Google och Cisco i containersamarbete

Och han lever som han lär. Ett exempel är företagets molntjänst CloudAMQP, som ger tillgång till den öppna meddelandeplattformen RabbitMQ. Den senare fungerar helt enkelt som ett nav för att förmedla meddelanden mellan olika mjukvarukomponenter (applikationer, mikrotjänster, eller hur man än väljer att strukturera mjukvara). Det görs med hjälp av meddelandeköer.

Vad är det för fel på Rest?

– Det är inget fel på Rest, det är suveränt för till exempel publika api:er, men för kommunikation mellan mikrotjänster är det inte optimalt. Det behövs mycket mer logik, som lastbalansering och felhantering, för att använda Rest i stället för meddelandeköer, säger Carl Hörberg.

Han påpekar att med meddelandeköer behöver mikrotjänster inte veta vilka andra tjänster som finns och en tjänst kan vara nere eller innehålla ett fel utan att resten av ett system påverkas.

Man gissar att tjänsten CloudAMQP i sig är byggd med mikrotjänster och meddelandeköer. Och så är det, förstås. För att få ett grepp om komplexiteten kan man nämna att ”mellan 50 och 100” meddelandeköer används för just den tjänsten.

Det borde trots allt innebära att det krävs en del logik, i form av programkod. Var finns den?

– Meddelandeköservern levererar rätt meddelande till rätt mikrotjänst, och köar meddelandena om mikrotjänster inte hinner med eller om de är temporärt nere, förklarar Anders Bälter, chefsutvecklare på 84codes.

Men i vissa lägen behöver man skriva kod som styr hanteringen och den kan finnas i mikrotjänsterna. Det gäller till exempel sådant som samtidighet och låsningar. Ett exempel är att se till att inte två saker händer samtidigt på en server. Det är inget unikt för just det här sättet att jobba, men det kan fungera annorlunda än med andra lösningar.

Läs också: Containrar och mikrotjänster kräver nytt säkerhetstänk – så gör du

Arbetssättet får också en del generella konsekvenser för utvecklare. Det blir till exempel naturligt att börja tänka på meddelandeköer när man börjar skissa på en applikation. En utmaning är att komma i gång med ett nytt sätt att hantera arkitektur, om man inte har jobbat med meddelandeköer tidigare.

84codes fungerar inte som ett traditionellt konsultföretag, men blir ibland tillfrågade om råd.

– En del kunder ställer frågor om hur de ska göra, till exempel om de ska göra om designen för sin arkitektur. Vi har en rådgivande roll ibland, säger Lovisa Johansson, marknadschef på 84codes.

84codes har huvudkontor i Stockholm och tolv anställda, och har fyra molntjänster i sortimentet. Man kör dem hos leverantörer av publika moln, som Amazon. 80 procent av kunderna finns i USA, fyra procent i Sverige.