You are currently viewing Forskellen mellem CI og CD

Forskellen mellem CI og CD

I teknologiens verden støder vi ofte på mange forkortelser. En af de mest almindelige i softwareudviklingsverdenen er “CI/CD”.
Men hvad betyder den egentlig?

CI: Står for “Kontinuerlig Integration”. Forestil dig et team af udviklere, som hver især laver små ændringer i en app. Med CI sørger man for, at disse ændringer jævnligt og automatisk samles og testes, så alt stadig fungerer, som det skal. Det er som at sikre, at alle brikker i et puslespil stadig passer sammen, selvom man ændrer lidt på nogle af dem.

CD: Her bliver det lidt tricky, for “CD” kan betyde to ting:

  1. “Kontinuerlig Levering” – Det er trinnet efter integration. Når koden er testet og klar, bliver den automatisk gjort klar til at blive sendt ud i den “virkelige verden”, men vi venter med at sætte den i drift, indtil vi beslutter os for det.
  2. “Kontinuerlig Udrulning” – Her går man skridtet videre. Når koden er testet og klar, bliver den automatisk udrullet, så brugerne kan se og bruge de nye ændringer med det samme.

Hvorfor er det smart? Tidligere skulle udviklere ofte vente dage eller uger for at se deres ændringer i aktion. Med CI/CD kan ændringer ses næsten øjeblikkeligt. Det gør det lettere at rette fejl, forbedre apps og reagere hurtigt på feedback.

Værktøjer: Der findes mange redskaber, som kan hjælpe teams med at implementere CI/CD, for eksempel Jenkins, Tekton Pipelines og mange andre. Valget af værktøj afhænger ofte af teamets behov og præferencer.

Redskaber samt overvejelser der kan hjælpe teams med at implementere CI/CD

1. Værktøjer til Continuous Integration (CI):

  • Jenkins: En af de mest populære open-source CI-servere.
  • Travis CI: En cloud-baseret CI-tjeneste integreret med GitHub.
  • CircleCI: En anden cloud-baseret CI-tjeneste med integration til GitHub og Bitbucket.
  • GitLab CI: En del af GitLab-platformen, der giver CI/CD-funktionalitet.

2. Værktøjer til Continuous Deployment/Delivery (CD):

  • Spinnaker: Skabt af Netflix, fokuserer på kontinuerlig levering.
  • GoCD: Et open-source værktøj med fokus på visuel modellering af workflows.
  • Jenkins: Ud over CI understøtter Jenkins også CD med forskellige plugins.

3. Containerisering & Orkestrering:

  • Docker: Gør det muligt at skabe og køre software i containere.
  • Kubernetes: En open-source platform designet til orkestrering af containeriserede applikationer.
  • OpenShift: En Kubernetes-baseret containerplatform fra Red Hat.

4. Konfigurationsstyring:

  • Ansible: En simpel automation platform.
  • Chef: En automationsplatform designet til at administrere infrastruktur som kode.
  • Puppet: Et værktøj, der automatiserer udrulning og styring af infrastruktur.

5. Version Control:

  • Git: Et distribueret versionskontrolsystem.
  • GitHub, GitLab, Bitbucket: Tjenester der tilbyder Git-repository hosting, og som ofte integrerer med CI/CD-værktøjer.

6. Monitoring og Feedback:

  • Prometheus: Et open-source overvågningssystem.
  • Grafana: Et open-source platform til overvågning og visualisering.

7. Kulturelle Overvejelser:

  • Kommunikation: CI/CD kræver tæt samarbejde mellem udvikling og drift. Teams bør have regelmæssige check-ins for at diskutere processer og forbedringer.
  • Uddannelse: Sørg for, at alle forstår værdien og best practices af CI/CD.
  • Feedback loops: Oprethold korte og effektive feedback loops for at rette fejl hurtigt.

8. Planlægning & Strategi:

  • Pilotprojekt: Start med en pilot for at teste CI/CD-processen og forstå de potentielle udfordringer.
  • Gradvis Udrulning: Når du udvider til flere projekter, skal du tage det gradvist for at sikre, at processerne er solide.

9. Sikkerhed:

  • Automatiseret Sikkerhedstest: Indarbejd sikkerhedsscanninger og tests i CI/CD-pipelinen.
  • Adgangskontrol: Sørg for, at kun autoriserede personer kan udføre udrulninger og ændringer.

Implementering af CI/CD kan være kompleks, men ved at kombinere de rette værktøjer med en kultur, der værdsætter samarbejde, feedback og kontinuerlig forbedring, kan teams transformere deres softwareudviklingsproces.