Hov. Du er ikke logget ind.
DU SKAL VÆRE LOGGET IND, FOR AT INTERAGERE PÅ DENNE SIDE
Hvor mange stjerner giver du?

Softwareudvikling i Dinero

9.058 Visninger
Hvor mange stjerner giver du? :
06 July 2023

I Dinero arbejder vi konstant på at forbedre vores software-udviklingsprocesser, så vi kan levere bedre og mere pålidelige løsninger til vores kunder.

I dette ekspertindlæg vil vi dykke lidt ned i nogle af de metoder og teknikker, vi anvender i vores udviklingsproces, herunder GitHub Flow, automatiserede tests, microservices, og hvordan vi kan deploye op til 50 gange om dagen.


GitHub Flow gør det nemt at samarbejde og levere kode sikkert

GitHub Flow er en simpel og effektiv arbejdsgang for softwareudvikling, der gør det nemt for udviklere at samarbejde og levere kode hurtigt og sikkert. Hos Dinero har vi valgt at bruge GitHub Flow af flere grunde:

  • Enkelhed og forståelighed: GitHub Flow er let at forstå og følge, hvilket gør det nemt for nye udviklere
  • Hurtig feedback: Med GitHub Flow kan udviklere hurtigt få feedback fra deres kolleger gennem pull requests og automatiserede test. Det sikrer, at kode er gennemgået og godkendt, før den merges og deployes til produktion
  • Sikkerhed og stabilitet: GitHub Flow gør det muligt for udviklere at arbejde i isolerede branches og teste deres ændringer i et sikkert miljø, før de merges til main branchen. Det reducerer risikoen for fejl og ustabilitet i produktion


Når en udvikler vil lave en ændring i Dinero, skal de blot trække den nyeste main branch ned og gøre følgende:

  • Oprette en ny branch ud fra main 
  • Lave sine ændringer i den nye branch
  • Pushe branchen 
  • Forespørge pull request fra en eller flere kolleger 
  • Lave eventuelle ændringer eller, hvis godkendt, merge med main branchen
  • Færdig – nu er koden klar til deployet

På GitHub rapporterer vores CI/CD pipeline selv ind, om alt er gået grønt (build + test) – på den måde kan de selv nemt se, om det hele er, som det skal være, og merge den med ro i maven uden faktisk at besøge vores build server.

Vi opfordrer generelt alle udviklere i Dinero til at holde deres branches og pull requests små. Få ændringer gør det nemmere for reviewere og eventuelle testere af det pågældende pull request at overskue ændringerne. Det er også nemmere at lokalisere, hvilke ændringer eventuelle fejl er opstået i.

Du kan læse mere om GitGub Flow her: https://docs.github.com/en/get-started/quickstart/github-flow  



Feature toggles bruger vi især ved større features

Feature toggles er en teknik, der gør det muligt at skjule, aktivere eller deaktivere bestemte funktioner i en applikation uden at ændre koden. 

Du har måske hørt udtrykket; “Vi ligger skinnerne mens vi kører toget”, men med feature toggles kan vi lægge et helt nyt spor, uden nogen bemærker det, og først når det er testet, tager vi det nye spor i brug. 

Vi bruger typisk feature toggles ved større features, hvor vi ønsker at kunne tilføje ændringer og forbedringer løbende. De løbende ændringer gør det muligt at holde pull request små og hurtige og, vigtigst af alt, kan udvikleren og product få hurtig feedback. 

Når product hele tiden kan følge med i given feature, mindsker behovet for estimater og spørgsmål om, hvornår en given feature er klar. 

Vi starter typisk med at tilføje vores egne testfirmaer til en ny feature toggle. Herefter tilføjes rigtige firmaer, som har ønsket at teste, og til sidst udrulles det til alle. 

Hvis det skulle vise sig, at der har sneget sig en fejl ind, kan vi hurtigt slukke for feature toggles, indtil fejlen er rettet. Den løbende udrulning gør også, at vi kan følge med i performance og sikre, at det ikke belaster systemet, efterhånden som der kommer flere testere på.

 


Automatiserede test er en vigtig del af udviklingen

I Dinero gør vi meget ud af vores automatiserede test. Det er en vigtig del af vores udvikling for, at vi kan udgive løbende, uden det går ud over kvaliteten og stabiliteten af vores applikation. 

Vi bruger Continuous Integration (CI) og Continuous Deployment (CD) for at automatisere forskellige testtyper i vores pipeline, herunder unit tests, integration tests og end-to-end-test. 

Det hele starter hos udvikleren, hvor testene bliver skrevet og herefter kørt manuelt. I nogle services kan man køre alle tests inden for få sekunder, mens det i andre services tager længere tid, så her kører man kun de mest relevante. 

Når en branch bliver pushet til GitHub, begynder alle test straks at køre for den givne branch. Det vil hurtigt afsløre fejl og synliggøre noget, man måske har overset. 

På branchen bliver der som udgangspunkt kun kørt unit test og integration test, men ved større ændringer i funktionalitet eller udseende har vores udviklere mulighed for at få en fuld kopi af Dinero op at køre i et lukket testmiljø. 

I det tilfælde vil der også blive kørt end-to-end-test, og det er også muligt at tilgå miljøet for qa-testere (ved behov for manuel testing). Som en lille ekstra sikkerhed er vores pipeline skruet sammen til at detektere ændringer i frontend og i de tilfælde automatisk at køre end-to-end-test.

Når en udvikler merger sine ændringer i main branchen, kører alle unit test igen, samtidig med at ændringerne deployes til staging-miljøet. Når den del er overstået, køres der end-to-end-test ovenpå staging-miljøet. 

Hvis alle tests kører grønt her, ryger ændringerne automatisk i produktion. Denne proces tager et sted mellem 45 - 55 minutter for vores monolith og 15 minutter for microservices. Vi har så vidt muligt forsøgt at køre alle test parallelt for at minimere køretiden så meget som muligt, men med 6.000 test tager det lidt tid.  

Når ændringer automatisk bliver udgivet til produktion, er det vigtigt, at man også automatisk får besked, hvis noget går galt alligevel på trods af test m.m. Her bruger vi værktøjet, Data Dog, som overvåger systemet og giver besked på Slack, hvis der kommer fejl eller længere svartider. 

Hvis uheldet skulle være ude, har vi mulighed for enten at rulle den pågældende ændring tilbage eller lave et hurtigt fix som efterfølgende udgives. 


Vil du vide mere?

Softwareudviklingsprocessen i Dinero bygget op omkring enkle, men effektive, arbejdsgange. Vi tror på, at en agil og kontinuerlig udviklingsproces med et solidt fundament af automatiserede tests og en gennemsigtig arbejdsgang, som GitHub Flow, er nøglen til at skabe bedre og mere pålidelige løsninger for vores kunder.

Vi stræber efter at holde os opdateret med de nyeste teknologier og metoder inden for softwareudvikling og vil fortsat investere i vores udviklingsteam og infrastruktur for at sikre, at vi altid leverer det bedst mulige produkt til vores kunder.

Hvis du vil vide mere om, hvordan vi arbejder i Dinero, kan du smide en kommentar til indlægget, eller hvis du er interesseret i at blive en del af vores team, er du altid velkommen til at kontakte os eller besøge os på https://dinero.dk/jobs/ for at se aktuelle jobåbninger. 

Tak, fordi du tog dig tid til at læse om vores softwareudviklingsproces. Vi håber, det gav et lille indblik i, hvordan vi arbejder med softwareudvikling i Dinero.

Hvor mange stjerner giver du? :
Få besked når Michael skriver Skriv dig op