all
Business
data science
design
development
our journey
Strategy Pattern
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.
Alexandra Mendes
Andre Santos

09. april 2024

Min Read

Micro frontend: hvad det er, og hvordan man bruger det til din virksomhed

Nye frontend teknikker dukker op hver dag. Med så mange forskellige tilgange kan det være vanskeligt at vide, hvilke der passer bedst til dit projekt og team. Hvis du ønsker at bruge nyere teknologi i dine projekter, samtidig med at du opretholder høje standarder for ydeevne og vedligeholdelse, kan mikrofrontend muligvis være svaret.

Ved at kombinere mikrotjenester med webapps kan vi skabe kraftfulde, funktionsrige browsere. Dets primære mål er at forestille sig et websted eller en mobilapp som en samling af funktioner, der drives af uafhængige teams.

Dette indlæg forklarer mere detaljeret, hvad en mikrofrontend er, dens fordele, hvordan din virksomhed kan implementere det for din organisation, og eksempler på virksomheder, der allerede bruger det i produktionen.

Lad os se nærmere på denne mindre kendte teknik.

Hvad er Micro Frontend?

En mikrofrontend består af flere små og autonome modulære komponenter. Modulerne er selvstændige og kan bruges af andre sider. Du kan bruge ethvert programmeringssprog til at kode de komponenter, der udgør en mikrofrontend. Normalt er Javascript- og Javascript-rammer de mest populære, men mocro frontend kan udvikles på ethvert sprog og derefter kompileres og pakkes i et Javascript-bundt, der kan importeres og komponeres af den anden frontend.

I mikrofrontend-arkitektur bygges webløsninger ved at nedbryde den monolitiske applikation i mindre stykker og kode, teste og implementere hvert fragment separat. Så tværfunktionelle teams kan udvikle hver komponent (fra en database til en brugergrænseflade) uafhængigt, hvilket gør komponenter uafhængige. Brugere ser hele løsningen snarere end individuelle fragmenter, hvilket sikrer en problemfri oplevelse.

Micro frontend architecture
End to end teams with micro frontend architecture
Kilde: mikrofrontends.org
blue arrow to the left
Imaginary Cloud logo

Kendte virksomheder, der bruger mikrofrontend

Her er et par kendte virksomheder, der bruger mikrofrontend:

  • IKEA - en europæisk møbelforhandler, tilbyder en online shoppingoplevelse.
  • DAZN - en europæisk sportsstreamingtjeneste, der er vokset til ni lande.
  • Oparbejde - et freelancing-netværk, der forbinder uafhængige forretningsfolk over hele verden.
  • Spotify - Denne online streamingmedieudbyder samler desktop-applikationer ved hjælp af frontend microservices.
  • SoundCloud - et europæisk websted for deling af musik og online lyddistributionsplatform, der giver en ensartet oplevelse på tværs af alle platforme.
blue arrow to the left
Imaginary Cloud logo

En kort oversigt over mikrofrontend-arkitekturen

Målet med en mikrofrontend er at give de samme fordele som mikrotjenester ved at eliminere ulemperne forbundet med store frontend-monolitter.

Hvad er fordelene ved den monolitiske tilgang, og hvorfor er det ikke den bedste mulighed for moderne storstilet webudvikling? Lad os undersøge det.

Hvad er Microservices Architecture?

Microservice arkitektur er et designmønster i backend-udvikling. I modsætning til en monolitisk arkitektur omfatter mikrotjenester flere uafhængigt implementerbare komponenter. De er adskilt af forretningsdomæner og er forbundet med API'er, som er nemme at implementere.

Differences between monolithic and microservices architectures
Forskelle mellem monolitiske og mikroservicearkitekturer

Microservices er byggestenene i de fleste moderne webløsninger. Virksomheder vælger ofte denne type arkitektur, når de laver nye webapps eller opdaterer deres gamle software ved at skifte fra en monolitisk back-end til mikrotjenester. Her er de vigtigste:

  • Skalerbarhed. Med mikroservicearkitektur er det nemmere at skalere en webløsning. Et udviklingsteam kan skalere en eller flere tjenester, der har brug for flere ressourcer, og lade resten være i fred.
  • Fleksibilitet. I mikroservice-baserede websystemer er der ingen deling af kode. Ændring af separate tjenester påvirker ikke andre moduler i et program.
  • Modstandsdygtighed. Det sikrer større pålidelighed og fejlmodstand ved hjælp af mikrotjenester. Tjenesterne er adskilte, så hvis den ene går ned, fungerer de andre stadig.
  • Ingen låsning med teknologi. I en enkelt webløsning kan programmører bruge forskellige teknologier til forskellige tjenester.
  • Hurtigere udvikling. Udviklere kan arbejde på flere forskellige tjenester på samme tid. Plus, tjenester kan genbruges. Det reducerer naturligvis den tid, der er nødvendig for udvikling.

Dybest set bør de fleste store webudviklingsprojekter bruge mikrotjenester.

Hvorfor passer en frontend monolit dårligt til mikrotjenester?

Udtrykket frontend monolith refererer til klientsiden af en webapplikation bygget fra en enkelt kodebase. Mange løsninger bruger stadig denne type interfacearkitektur, selv dem med mikroservicearkitektur. Så bagenden af et system er ofte modulær, mens frontenden forbliver solid.

I starten kan dette fungere godt, men der opstår ofte problemer, når en webløsning vokser. Her er et par eksempler:

  • Efterhånden som softwaren ændres, bliver en frontend-monolit for travl og ineffektiv. På grund af dette bremser systemet og bliver mindre effektivt.
  • En stor og tung frontend kan bremse udviklingen, når et system vokser. Selvom tjenester hurtigt kan ændres på bagsiden, kan det tage meget arbejde og tid at skubbe opdateringer til klientsiden.
  • En storstilet webløsning med en frontend i ét stykke er svært at følge med. Der er ingen måde at have separate implementeringer på, så hele systemet kan mislykkes, hvis en del går ned.

Afslutningsvis begrænser en frontend monolit den uafhængige karakter af en mikroservicearkitektur. Flere og flere udviklere bruger mikrofrontend for at undgå dette. Så lad os gå nærmere ind på, hvordan en webløsning fungerer, når en mikrofrontend-arkitektur er bygget oven på mikrotjenester.

Best agile practices to use in your software development cycle
blue arrow to the left
Imaginary Cloud logo

Hvorfor bruge en micro frontend?

Med en mikrofrontend kan virksomheder:

  • Giv en bedre brugeroplevelse: skabe en problemfri oplevelse for brugeren ved at give en ensartet oplevelse på tværs af enheder og tredjepartsplatforme. Du kan opnå det ved at have en enkelt kodebase for alle frontend komponenter. Det kan også hjælpe med at forbedre den samlede brugerfastholdelsesrate ved at reducere tiden til at gennemføre transaktioner eller tilmelde sig en tjeneste.
  • Forbedre udviklingshastigheden: Med mikrofrontend kan teams udvikle og implementere funktioner hurtigere ved at bruge en enkelt kodebase uden at skulle håndtere kompliceret kode. Dette kan føre til betydelige omkostningsbesparelser.
  • Forbedre produktets skalerbarhed: mikrofrontend-tilgangen giver virksomheder mulighed for at skalere antallet af komponenter og kompleksiteten af et produkt uden at skulle omskrive koden. Da mikrofrontend-tilgangen bruger små uafhængige komponenter, kan den let distribueres på tværs af en klynge af servere eller tjenester.

På denne måde kan opbygning af komplekse brugergrænseflader hurtigt og nemt bruge mikrofrontend-tilgangen. Det er også en fremragende mulighed for teams, der ønsker at anvende en moderne softwareteknisk tilgang. Derudover er mikrofrontend meget fleksible, skalerbare og hurtigt implementeret. Udover de tekniske fordele er mikrofrontend også gode for virksomheden, fordi de tilbyder fremragende forretningsværdi og tekniske fordele.

Fordele ved at bruge en mikrofrontend

  1. Autonome hold på accelereret udvikling.
    Et autonomt team kan oprette hver webapp eller webstedskomponent efter en mikrofrontend-tilgang. Hvert team er helt uafhængigt, så hver cyklus af komponentoprettelse starter med idé og slutter med udgivelse og efterproduktion. Flere enheder kan arbejde på det samme projekt samtidigt uden at skulle kommunikere. Da udgivelsescyklusser er meget hurtigere med mikrofrontend, kan flere teams arbejde på det samme projekt på samme tid.
  2. Højere app-stabilitet på grund af løs kobling.
    Mikrofrontend kommunikerer med hinanden, men komponenterne er løst koblet, og hver forbindelse er betydelig. En webløsnings avancerede stabilitet kommer fra det faktum, at en fejl i en komponent ikke påvirker andre.
  1. Mindre kodebaser af individuelle mikrofrontend resulterer i renere kode.
    Monolitiske frontend vokser ustrukturerede og komplekse at vedligeholde over tid, da de har store kodebaser. Mikrofrontend løser dette problem ved at gøre koden for hver mikrofrontend enklere, mindre og dermed meget lettere at administrere. Dette resulterer i renere kode i hele webløsningen.
  2. Hurtigere udrulning af funktioner på grund af uafhængige implementeringer.
    Hver mikrofrontend implementeres separat fra andre komponenter i en webløsning. Funktioner kan leveres til produktion, hvilket giver programmører nogle tanker om, hvad der sker med resten af en applikation. Funktioner kan således rulles ud relativt hurtigt, da de har deres leveringsrørledninger. Ændringer af monolitten hindres ikke, så du kan implementere individuelle funktioner uden problemer.
  3. Nemmere at teste individuelle funktioner med denne metode.
    Den vigtigste fordel ved mikrofrontend er, at de iboende er modulære og opdelt i forskellige komponenter, hvilket gør det lettere at teste individuelle dele af en klientapplikation. Ud over at være iboende modulære drager mikrofrontend også fordel af at være individuelt testbare.
  4. Mindre risikabel implementering af væsentlige ændringer.
    At foretage væsentlige ændringer i en monolitisk frontend er altid risikabelt: en fejl, og alle funktionerne kan gå ned. I modsætning hertil er ændring af mikrofrontend en simpel proces, da selv væsentlige ændringer i en del ikke vil kompromittere hele systemet. På grund af dette vil du ikke opleve nogen angst for at ændre ting, uanset hvor vigtige ændringerne kan være.
  5. Et mindre bundt øger sideindlæsningshastigheden.
    Den langsomme sideindlæsningstid i funktionsrige monolitiske webløsninger er en af hovedårsagerne til den store størrelse af JavaScript-bundtet. I modsætning hertil letter en mikrofrontend-tilgang optimering af sideindlæsningstiden. Da en webside består af mange små bundter, behøver browseren ikke at downloade ubrugt kode hver gang. Dette fører igen til hurtigere sideindlæsning og højere sidehastighed.
  6. Teknologisk uafhængighed.
    En mikrofrontend-arkitektur gør det muligt for udviklere at stable forskellige frontend-rammer inden for en enkelt webløsning. Fordi komponenter er uafhængigt konstrueret, kan hver enkelt oprettes ved hjælp af den mest passende teknologi til at nå projektets mål. Som en selvfølge skal programmører altid være forsigtige, når de vælger rammer til den software, de er ansvarlige for, og samarbejde med andre teams anbefales stadig stærkt. Der er dog ingen fare for, at du sidder fast ved at bruge en ældre ramme i hele appens levetid.

Ulemper ved at bruge en mikrofrontend

  1. En webløsning er ret kompliceret at teste som helhed.
    Det er let at teste en webapp bygget på en mikrofrontend-arkitektur, da hvert modul er isoleret. Problemet er, at test af en webløsning som helhed ikke er det samme som at teste individuelle moduler. Du skal sikre dig, at alle komponenter fungerer sammen som beregnet. Da mikrofrontend er uafhængige og har deres leveringsrørledninger, kan dette være vanskeligt.
  2. Vanskeligheden ved at udvikle og implementere et system.
    På grund af mikrofrontend-arkitekturen kan den minimalistiske struktur gøre udviklings- og implementeringsprocessen mindre ligetil. For eksempel, når flere autonome teams arbejder på det samme projekt, kan løsningen blive rodet med for mange komponenter, hvilket kan resultere i problemer i implementeringsfasen. Det er også svært at samle alle modulerne korrekt og få dem til at passe problemfrit ind i det større billede uden en god forståelse af alle deres afhængigheder.
  3. Inkonsekvens af udvalgte teknologier.
    Frontend-rammer for forskellige moduler kan være en gavnlig teknologikombination, men denne fordel har også en ulempe. Selvom frontend-rammer vælges omhyggeligt, kan du ende med en inkonsekvent teknisk stak. Dette kan føre til et langsom ydelsesproblem og en ubehagelig brugeroplevelse.
  4. Vanskeligheden ved at holde UX sammenhængende.
    Det er udfordrende at holde brugergrænsefladen konsistent, når teams arbejder på forskellige softwarestykker. Talrige uoverensstemmelser kan forekomme, hvis alle udviklere, der er involveret i projektet, har en samlet vision af webløsningen.
  5. Høje indledende investeringer.
    Vedligeholdelse af et mikrofrontend-projekt er dyrt. Det er dyrt at samle og vedligeholde flere frontend-teams. Du har også brug for ledelsespersonale til at planlægge arbejdet, koordinere alt og sikre effektiv teamkommunikation.
blue arrow to the left
Imaginary Cloud logo

Hvornår skal man bruge micro frontend?

På trods af fordelene ved mikrofrontend-arkitektur er det ikke en løsning, der passer til alle. Hver webapplikation er ikke egnet til denne arkitektoniske stil. Når du vælger en mikrofrontend til din webapplikation, hvordan ved du, om det bliver en succes? Der er to typer frontend: monolitisk og mikro.

Lad os diskutere de vigtigste kriterier, der styrer din beslutning. Her er et par eksempler på, hvornår mikrofrontend giver mening:

  • Din onlineløsning er kompliceret, bygget på mikrotjenester og kan opdeles i forskellige selvstændige vertikaler. Antag for eksempel, at du udvikler et virksomhedsressourceplanlægningssystem med flere moduler (f.eks. økonomi, CRM, HR, lager).
  • Du vil have separate teknologistakke til forskellige moduler inden for en enkelt onlineløsning.
  • Du har allerede eller vil ansætte et stort udviklingsteam (eller flere teams), og dit budget tillader det.

Hvis du er usikker på, om mikrofrontend passer til dit projekt, skal du kontakte en pålidelig teknisk partner som Imaginary Cloud. I sidste ende afhænger det af detaljerne i din forretningsplan.

blue arrow to the left
Imaginary Cloud logo

Hvordan fungerer en mikrofrontend

En mikrofrontend består af flere uafhængige og modulære komponenter, der indlæses og vises efter behov. Det betyder, at kun de komponenter, der kræves til en bestemt side, indlæses. Disse komponenter interagerer direkte med dataene og kræver ikke en centraliseret server til at dirigere anmodninger eller behandle data. Ud over de komponenter, der viser indhold, kan en mikrofrontend også have flere hjælpekomponenter, der interagerer med applikationens miljø.

Disse komponenter kan interagere med brugeren eller med andre komponenter. Forvaltningen af applikationens tilstand kan også bruge dem. Disse hjælpekomponenter har normalt minimal funktionalitet og viser ikke noget indhold til brugeren. De kan også kun indlæses, når det er nødvendigt.

blue arrow to the left
Imaginary Cloud logo

Hvordan implementeres en mikrofrontend?

Du kan integrere mikrofrontend på to måder:

Byggetidsintegration
Sådan skrives det meste kode i dag. Beholderen installerer komponenterne som biblioteker, svarende til hvordan du ville installere biblioteker fra npm. Du kan også bruge Module Federation med NextJS, som det ser ud i dag på WebPack 5.

Ulemperne ved denne teknik er synkronisering af flere versioner af biblioteker og byggeproblemer. Det er også svært at bruge flere teknologier. Den endelige pakke vil også være stor, fordi den vil indeholde alle afhængigheder. Desuden skal eventuelle ændringer i afhængigheder implementeres igen, og containeren og alle mikrofrontend er tæt koblet.

Kørselstidsintegration
Sammensætninger til Run-Time Integration er klassificeret i tre typer:

  • Sammensætning på serversiden: Backend-funktionaliteten bestemte, hvilken mikrofrontend der skulle indlæses og hvornår. URL'er bestemmer, hvordan serveren dirigerer anmodninger.
  • Kantsidesammensætning: Orkestreringen sker på selve CDN. Det kan håndtere aktive backends, der normalt håndteres af serveren. Det er også i stand til at levere statisk materiale.
  • Sammensætning på klientsiden: Containerne bestemmer, hvilken version af frontenderne der skal installeres, da begge er afkoblet. Efter behov kan værten anmode om mikrotjenester.
blue arrow to the left
Imaginary Cloud logo

Konklusion

Mikrofrontend-arkitekturen er særlig gunstig for store webudviklingsprojekter baseret på mikrotjenester. Det gør det muligt at udvikle forskellige komponenter af separate, autonome teams af programmører. Som et resultat giver det flere fordele, herunder en hurtigere udrulning af nye funktioner, enklere test af individuelle komponenter og glattere opdateringer.

På trods af fordelene ved mikrofrontend er der også nogle ulemper. En applikation kan for eksempel være vanskelig at teste i sin helhed. Mikrofrontend-projekter er også ret dyre, da de kræver et stort team af udviklere og ledere. Overvej alle implikationerne af ethvert projekt, inden du går videre.

Imaginary Cloud har ekspertise inden for mikrofrontend og monolitiske frontend, så du behøver ikke bekymre dig. Kontakt os, så diskuterer vi din anmodning i detaljer.

New call-to-action
blue arrow to the left
Imaginary Cloud logo
blue arrow to the left
Imaginary Cloud logo
blue arrow to the left
Imaginary Cloud logo
Alexandra Mendes
Alexandra Mendes

Alexandra Mendes er Senior Growth Specialist hos Imaginary Cloud med 3+ års erfaring med at skrive om softwareudvikling, AI og digital transformation. Efter at have gennemført et frontend-udviklingskursus fik Alexandra nogle praktiske kodningsevner og arbejder nu tæt sammen med tekniske teams. Alexandra brænder for, hvordan nye teknologier former erhvervslivet og samfundet, og hun nyder at omdanne komplekse emner til klart og nyttigt indhold for beslutningstagere.

LinkedIn

Read more posts by this author
Andre Santos
Andre Santos

Din daglige webudvikler, der kan lide at gemme sig i backend. Javascript og Ruby er min marmelade. Jeg fumler stadig med Docker, og mine bygninger går i stykker ret ofte.

Read more posts by this author

People who read this post, also found these interesting:

arrow left
arrow to the right
Dropdown caret icon