Přeskočit na obsah
_CORE
AI & Agentic Systems Core Informační Systémy Cloud & Platform Engineering Data Platforma & Integrace Security & Compliance QA, Testing & Observability IoT, Automatizace & Robotika Mobile & Digital Banky & Finance Pojišťovnictví Veřejná správa Obrana & Bezpečnost Zdravotnictví Energetika & Utility Telco & Média Průmysl & Výroba Logistika & E-commerce Retail & Loyalty
Reference Technologie Blog Knowledge Base O nás Spolupráce Kariéra
Pojďme to probrat

GDPR a IT systémy — technická příprava na nařízení

10. 05. 2018 3 min čtení CORE SYSTEMSdevops

Manuální deployment v pátek v 17:00 — každý to zná, nikdo to nechce opakovat. Automatizovaná CI/CD pipeline eliminuje lidské chyby, zkracuje feedback loop a umožňuje nasazovat desítkykrát denně s důvěrou. Ukážeme si, jak ji postavit.

Anatomie moderní CI/CD pipeline

Pipeline není jen „build a deploy”. Kvalitní pipeline má jasně definované stages, kde každá fáze musí projít, než se spustí další:

  • Commit stage — lint, unit testy, compile (< 5 min)
  • Build stage — Docker image build, artifact packaging
  • Security stage — SAST, dependency scanning, container scanning
  • Test stage — integrační testy, API testy, e2e testy
  • Staging deploy — automatický deployment na staging prostředí
  • Production deploy — manuální approval + automated rollout

GitLab CI — pipeline as code

GitLab CI definuje pipeline v souboru .gitlab-ci.yml přímo v repozitáři. Výhoda: pipeline je verzovaná spolu s kódem.

stages:
  - test
  - build
  - security
  - deploy-staging
  - deploy-prod

unit-tests:
  stage: test
  image: node:10-alpine
  script:
    - npm ci
    - npm run lint
    - npm run test:unit -- --coverage
  artifacts:
    reports:
      junit: coverage/junit.xml
  only:
    - merge_requests
    - master

build-image:
  stage: build
  image: docker:stable
  services:
    - docker:dind
  script:
    - docker build -t $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA .
    - docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
  only:
    - master

dependency-scan:
  stage: security
  image: node:10-alpine
  script:
    - npm audit --audit-level=high
  allow_failure: true

deploy-staging:
  stage: deploy-staging
  script:
    - kubectl set image deployment/api api=$CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
    - kubectl rollout status deployment/api --timeout=120s
  environment:
    name: staging
  only:
    - master

deploy-production:
  stage: deploy-prod
  script:
    - kubectl set image deployment/api api=$CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
    - kubectl rollout status deployment/api --timeout=300s
  environment:
    name: production
  when: manual
  only:
    - master

Jenkins — flexibilní veterán

Jenkins je v enterprise prostředí stále dominantní. Jenkinsfile (deklarativní pipeline) přináší pipeline-as-code i do Jenkins světa:

pipeline {
    agent { docker { image 'node:10-alpine' } }
    stages {
        stage('Test') {
            steps {
                sh 'npm ci'
                sh 'npm run test:unit'
            }
            post {
                always { junit 'coverage/junit.xml' }
            }
        }
        stage('Build') {
            steps {
                sh "docker build -t api:${env.BUILD_NUMBER} ."
                sh "docker push registry.company.com/api:${env.BUILD_NUMBER}"
            }
        }
        stage('Deploy Staging') {
            steps {
                sh "kubectl set image deployment/api api=registry.company.com/api:${env.BUILD_NUMBER}"
            }
        }
        stage('Deploy Production') {
            input { message 'Deploy to production?' }
            steps {
                sh "kubectl set image deployment/api api=registry.company.com/api:${env.BUILD_NUMBER}"
            }
        }
    }
}

GitLab CI vs Jenkins — co vybrat?

  • GitLab CI: lepší developer experience, integrovaný s GitLab repozitářem, jednodušší konfigurace, shared runners zdarma. Ideální pro menší až střední týmy.
  • Jenkins: flexibilnější, obrovský ekosystém pluginů (1500+), lepší pro komplexní enterprise pipeline s custom kroky. Vyžaduje správu Jenkins serveru.
  • Trend 2018: GitLab CI rychle roste, Jenkins drží pozici díky legacy instalacím a enterprise adopci.

Security v pipeline — shift left

Bezpečnostní kontroly patří do pipeline, ne až na konec development cyklu:

  • SAST (Static Application Security Testing) — SonarQube, Bandit (Python), ESLint security plugin
  • Dependency scanning — npm audit, OWASP Dependency Check, Snyk
  • Container scanning — Clair, Trivy pro skenování Docker images
  • Secret detection — git-secrets, truffleHog pro odhalení commitnutých credentials

Důležité: security stage by neměla blokovat deployment na první den. Začněte s allow_failure: true a postupně zpřísňujte, až tým vyřeší existující findings.

Zero-downtime deployment

Kubernetes rolling update je základ, ale nestačí. Pro skutečný zero-downtime potřebujete:

  • Readiness probes — Kubernetes posílá traffic až když je pod ready
  • Graceful shutdown — aplikace dokončí running requests před zastavením
  • Database migrations — backward-compatible migrace (expand-contract pattern)
  • Feature flags — oddělte deployment od release (LaunchDarkly, unleash)

Metriky pipeline

Co neměříte, nezlepšíte. Sledujte:

  • Lead time — čas od commitu po produkční deployment
  • Deployment frequency — kolikrát denně/týdně nasazujete
  • MTTR — mean time to recovery po failed deploymentu
  • Change failure rate — procento deploymentů vyžadujících hotfix/rollback

Tyto čtyři metriky pocházejí z výzkumu DORA (DevOps Research and Assessment) a korelují s výkonností celé organizace.

Pipeline je investice, která se vrátí za týdny

Postavení kvalitní CI/CD pipeline trvá 2–5 dní. Návratnost přijde okamžitě — méně bugů v produkci, rychlejší feedback pro vývojáře, méně stresu při release. Začněte jednoduše (test + build + deploy) a iterujte. Dokonalá pipeline neexistuje, ale každá automatizovaná pipeline je lepší než žádná.

gdprcompliancesecuritydata protection