Modernisering af applikationer behøver ikke være en byrde – det er nu enklere end nogensinde: Del 2

Hvordan vælger jeg den rigtige software arkitektur?

Valget af arkitektur er afgørende for udviklingen af software, og det afhænger af forskellige faktorer, herunder kompleksiteten af applikationen, behovet for skalerbarhed, vedligeholdelse og udvidelse over tid. Her er en kort oversigt over de fire arkitekturmodeller:

1. Monolith (Monolitisk arkitektur)

  • Beskrivelse: En enkelt, omfattende applikation, hvor alle komponenter er tæt integreret og kører som én enhed.
  • Fordele: Simpelt at udvikle, teste og vedligeholde. Mindre kompleksitet i starten.
  • Udfordringer: Sværere at skalere og opdatere uafhængigt. Kan føre til større nedetid ved opdateringer.

2. Modular Monolith

  • Beskrivelse: En variation af monolitisk arkitektur, hvor koden er opdelt i moduler eller komponenter for at lette vedligeholdelse og opdateringer.
  • Fordele: Lettere at vedligeholde og opdatere end en traditionel monolit. Nogle fordele ved mikroservicestilgang uden fuldstændig kompleksitet.
  • Udfordringer: Kan stadig have begrænsninger i skalerbarhed og uafhængig opdatering sammenlignet med microservices.

3. SOA (Serviceorienteret Arkitektur)

  • Beskrivelse: En arkitekturmodel, der fokuserer på opdeling af applikationen i tjenester, hvor hver tjeneste udfører en specifik forretningsfunktion og er uafhængig af de andre.
  • Fordele: Fremmer genanvendelighed af tjenester, løs kobling mellem komponenter og muliggør nem integration af forskellige systemer.
  • Udfordringer: Kræver nøje planlægning af tjenesteinteraktioner og en robust infrastruktur til at håndtere kommunikation mellem tjenester.

4. Microservices (Mikroservicearkitektur)

  • Beskrivelse: Opdeler applikationen i små, uafhængige tjenester, der kommunikerer via API'er. Hver tjeneste udfører en specifik forretningsfunktion.
  • Fordele: Høj grad af skalerbarhed, uafhængige opdateringer, bedre fejltolerance og mulighed for at anvende forskellige teknologier.
  • Udfordringer: Øget kompleksitet i styring og koordinering af mikrotjenester. Kræver mere robuste systemmonitorerings- og administrationsværktøjer.

Valget mellem disse arkitekturmodeller afhænger af faktorer som applikationens størrelse, kompleksitet, fremtidige krav og organisationens evne til at håndtere den valgte arkitektur. En afvejning mellem simplicitet og skalerbarhed er ofte nøglen til at træffe det rette valg.

Optimal Udnyttelse af Cloud-teknologi: Forbedring af Kundeoplevelse og Udvikleroplevelse

Med min baggrund som softwareudvikler ønsker jeg at fremhæve nogle funktioner, hvor cloud-teknologien out of the box, bringer forretningsværdi både i forhold til kundeoplevelsen og udvikleroplevelsen under implementering af software.

Green / Blue deployment:

Green / Blue deployment er en metode, hvor der opretholdes to produktionsmiljøer - et "grønt" og et "blåt". Mens det ene miljø (det grønne) er i produktion og betjener brugerne, kan udviklere implementere opdateringer og ændringer i det andet miljø (det blå). Når ændringerne er klar, kan trafikken nemt skiftes fra det grønne miljø til det blå og vice versa. Dette muliggør opdateringer uden nedetid, hvilket forbedrer kundeoplevelsen.

Canary release:

Canary release indebærer gradvis at udrulle nye softwareopdateringer til en lille del af brugerne, før de frigives bredt. Dette giver mulighed for at overvåge systemets ydeevne og registrere eventuelle fejl eller problemer, før de påvirker alle brugere. Ved at frigive ændringer i små portioner kan man hurtigt identificere og løse eventuelle problemer, hvilket bidrager til en mere stabil og pålidelig kundeoplevelse. Samtidig giver det udviklere mulighed for at få feedback og justere hurtigt baseret på brugernes reaktioner.

Disse metoder inden for cloud-teknologi illustrerer, hvordan implementeringen af grøn / blå deployment og canary release kan optimere kundeoplevelsen ved at sikre en mere robust og fejlfri softwareudrulning samt forbedre udviklernes oplevelse ved at muliggøre hurtigere og mere sikre implementeringer.

Skalerbarhed og automatisk skalering:

En afgørende egenskab ved moderne cloud-teknologi er skalerbarheden. Auto scaling tillader systemer at tilpasse sig dynamisk baseret på belastningen. Når der er behov for mere ressourcer, kan systemer automatisk skalere op, og når belastningen aftager, kan de skalere ned. Dette sikrer optimal ydeevne uden unødvendig overskydende kapacitet. Skalerbarhed og auto scaling bidrager væsentligt til at forbedre både kundeoplevelsen og udvikleroplevelsen ved at sikre effektiv ressourceudnyttelse og omkostningseffektivitet.

Grunden til, at jeg har nævnt de tre funktioner, er netop, fordi når det skal udføres on-premises, kræver det ekstra overvejelser omkring anskaffelse af en ekstra server, load-balancer, opsætning og konfiguration samt ekstra drifts- og licensomkostninger til serverinfrastrukturen. Disse udfordringer bliver imidlertid håndteret i eksisterende cloud-løsninger, hvor de tre nævnte funktioner er indbygget. Dette frigør udviklernes fokus til at levere høj kvalitetskoder, samtidig med at kunderne nyder godt af hurtig responstid og pålidelighed i cloud-miljøet. Det er naturligvis flere eksempler som backup, dækning af flere regioner mv.

Jeg fortsætter med min næste artikel, del 3, hvor jeg går videre med valg af relationer mellem applikationsmodernisering og DevOps, teknologivalg og et udviklingsteam.

Læs også: Del 1

Del 1 udforsker hvordan Azures moderne features, gør applikationsmodernisering til en mere overskuelig og gennemførlig proces, samt hvordan det kan være nøglen til at styrke din virksomheds digitalisering.

Læs også: Del 3

Et vigtigt element i applikationsmodernisering, er behovet for DevOps-processer og Cloud IaC (Infrastructure as Code). Det kan lyde voldsomt, men der er mening med den tætte relation.

Maytham Fahmi
Senior Architect,
Cloud, Infrastructure & Security
maytham.fahmi@fellowmind.dk