Kompetensdag om micro frontends med CAG Contactor

Konsultbloggen, 2022-10-06

I höstas höll kompetensområdesansvariga Joel Binnquist och Fredrik Dahlman en kompetensdag om micro frontends för oss konsulter på CAG. Det är alltid roligt att ses på kontoret för kompetensutveckling och diskussioner. Detta tillfälle var lika upplyftande och kompetensdagen blev också en ögonöppnare som gav nya insikter att ta med ut i uppdraget hos våra kunder. Kul, för det är precis så vi vill att kompetensutvecklingen ska vara på CAG.

Micro services 

Micro services har de facto blivit mer eller mindre standard när vi designar system. För min egen del har fokus legat på att skapa tjänster i backend varpå frontend har kommit lite i skymundan. Den här dagen blev det tydligt att problemen som finns i backend även finns i frontend. En typisk monolit kan innehålla ganska många rader trasslig frontend-kod. Gamla webbramverk, eller egna lösningar, kan ligga i vägen för den dagliga förvaltningen och för nyutvecklingen. Kanske är ett team ansvarigt för backend och ett annat för frontend vilket kan göra det svårt att skala upp utvecklingen och tiden för att få ut en ny feature i produktionsmiljö blir längre.

I en agil verksamhet behövs en smidig kostym att röra sig i så att inte byxorna spricker där bak när man ska plocka upp ny teknik, utveckla nya features eller bara genomföra nödvändigt underhåll. Därför bör även arkitekturen i lösningen bjuda in till detta.

Micro frontends är en idé om att ett frontend delas upp i olika fragment, därav micro frontends, vilka är oberoende av varandra och att de olika fragmenten kan utvecklas av olika team och med olika tekniker. De olika fragmenten kan sedan tillsammans skapa en komplett webbsida.

En bra princip låter det som. Varje team bör kunna utveckla, testa, driftsätta och underhålla sin kod utan att störas, eller störa andra team. Arbetet ska heller inte behöva koordineras allt för mycket med andra team. Man vill helt enkelt ta hem ansvaret för hela stacken i teamet, både för frontend och för backend. Det borde kunna uppnås om varje micro frontend paras ihop med en bakomliggande mikrotjänst.

Tydlig struktur och ansvar – vägen från monoliten

Så länge all kod sitter fast i en och samma monolit behövs en tydlig koordinering med övriga team. Det behöver säkerställas att den funktionalitet man jobbar med inte påverkar andra områden i monoliten. Dessutom är det inte meningsfullt att behöva bygga och deploya hela monoliten och inte bara de delar man gör förändringar i. Regressionstesterna blir mer omfattande och…ja ni förstår kanske vart jag är på väg.

Om man istället tänker sig att varje team har ansvar för en vertikal del av applikationen, från en del av webbsidan, ett fragment, och dess bakomliggande tjänster så kan det lösa upp en del problem som monoliten medför. Det skulle kunna röra sig om isolerad del av en webbsida, t ex en sökfunktion med tillhörande presentationssida. Om vi skulle utveckla sökfunktionen enligt principen för micro frontends skulle den delen inte bara kunna utvecklas i valfri teknik, den skulle även kunna testas och depeloyas i princip oberoende av andra team. Den kan ha en helt egen livscykel oberoende av andra delar och i de fall vi behöver förändra beroenden eller lyfta versioner i appen eller behöver experimentera med ny teknik så skulle vi kunna göra det utan att störa andra delar i verksamheten. Sammantaget borde detta göra att både nyutveckling och förvaltning gagnas av att följa principen för micro frontends.

Lärdomar att ta med sig

Lärdomarna från kompetensdagen har nu marinerat ett tag och ute på uppdraget finns ett par spännande kandidater att testa principerna för micro frontend på. I monoliten finns en samling interna admin-funktioner insprängda. De är utvecklade i äldre teknik som Java 8 och AngularJS. Den koden vill vi ersätta med ny fräsch teknik utan att slutanvändaren märker av det. Här skulle vi eventuellt kunna ersätta funktion för funktion med ny frontend och länka in detta med en iframe.

Troligtvis bygger vi ett backend i Spring Boot och ett frontend i Angular. Som bygg-pipeline vill vi gå ifrån Jenkins och istället lägga allt i Gitlab. En snabb skiss över hur det då skulle kunna se ut:

En synergieffekt är dessutom att vi blir mer oberoende av andra team för att få full kontroll över livscykeln. På så sätt hoppas vi snabbare kunna leverera funktionalitet till verksamheten.

Just nu är det mycket micro frontends i mina tankar och förhoppningsvis blir det till bra erfarenheter när vi väl kör igång.

Vid pennan/ Stefan Nildén, CAG Contactor

Bolag: CAG Contactor

Grundat: 1987, del av CAG sedan 2005

Branscher: Alla branscher

Specialistområden: Specialister inom Java, Frontend, test och testautomatisering

Passion för utveckling: Det är ett privilegium att få arbeta på CAG med alla kompetenta och välutbildade konsulter som brinner för att skapa värde för våra kunder. Att utvecklas tillsammans driver oss framåt.

Adress: Tegnérlunden 3, 111 61 Stockholm

Kontakta oss om du vill veta mer

Anders Engström

Konsultchef Java

CAG Contactor

+46 (0)70 842 05 94

Nicolas Länninge

VD

CAG Contactor

+46 (0)70 483 43 41

David Caro

Konsultchef Test

CAG Contactor

+46 (0)70 934 33 40