API de Traduction avec Pipeline CI/CD Complète
Auteur: Eya Ziri
Projet: Translation API DevOps
Ce projet démontre l'implémentation complète d'une pratique DevOps moderne autour d'une API de traduction. L'application a été containerisée, sécurisée, monitorée et déployée via un pipeline CI/CD automatisé avec intégration Kubernetes.
- Backend: Python 3.9 + Flask
- Cache: Redis 7 avec fallback mémoire
- Containerisation: Docker + Docker Compose
- Orchestration: Kubernetes (minikube)
- CI/CD: GitHub Actions
- Monitoring: Prometheus Metrics
- Sécurité: Bandit (SAST) + OWASP ZAP (DAST)
- Logging: Structured JSON Logs
Utilisateur → Load Balancer → Kubernetes Service → Pods API → Redis Cache ↓ External Translation API ↓ Monitoring & Metrics
- Trigger: Push sur main/develop ou PR
- Test: Tests unitaires et intégration
- Security: Scans SAST/DAST automatisés
- Build: Construction image Docker
- Push: Publication sur Docker Hub
- Deploy: Déploiement Kubernetes
- Report: Génération de rapports
- Durée moyenne: 8-12 minutes
- Success Rate: 95%+
- Artifacts: 5 rapports générés automatiquement
| Catégorie | Métriques | Usage |
|---|---|---|
| HTTP | requests_total, request_duration_seconds | Performance API |
| Business | translations_total, cache_hits | Métriques métier |
| System | active_requests, redis_connected | Santé système |
- Format JSON pour l'ingestion
- Trace IDs pour le correlation
- Niveaux: DEBUG, INFO, WARNING, ERROR
- Endpoint
/healthavec vérifications complètes - Liveness/Readiness probes Kubernetes
- Métriques de disponibilité
- Outils: Bandit avec configuration custom
- Règles: Exclusion des faux positifs connus
- Rapports: HTML et JSON pour intégration
- Outils: OWASP ZAP Baseline Scan
- Coverage: Scan automatique de l'API déployée
- Sévérité: Focus sur Medium/High vulnerabilities
- Headers de sécurité HTTP
- Timeouts configurables
- Validation des inputs
- Gestion sécurisée des secrets
- Namespace: Isolation
translation-app - Replicas: 2 pour haute disponibilité
- Resources: Limits et requests configurés
- Probes: Liveness/Readiness checks
- Service: NodePort pour l'accès
apiVersion: apps/v1
kind: Deployment
metadata:
name: translation-api
namespace: translation-app
spec:
replicas: 2
selector:
matchLabels:
app: translation-api