Department: Computer science and communication systems
Specialization: Data Engineering
Module: DevOps Processes

Course description

Back DevOps

  • Objectives

    A la fin du cours, l'étudiant est capable de:

    • Témoigner de l'importance de rédiger (ou de faire rédiger) un code informatique de qualité.
    • Rappeler et appliquer des bonnes pratiques contribuant à l'écriture d'un code de qualité, donc facilement lisible, documenté, testable, reproductible et maintenable à moyen voir long terme
    • Justifier l'importance des outils de build et de gestion de dépendances tel que make, ant, maven ou npm, savoir en mettre en oeuvre certains, les utiliser et les configurer au mieux pour garantir la robustesse.
    • Comprendre le concept de la dette technique, saisir les risques associés, et adopter des pratiques permettant de maîtriser sa dette.
    • Mettre en oeuvre des méthodes contribuant à la production et à la conservation d'une base de code de qualité, quasi toujours opérationnelle et maîtrisée, telle que le pair programming, la revue de code ou le test-driven development.
    • Résumer l'origine de la philosophie DevOps, mentionner les sources d'inspiration, citer les trois grands principes (flow, feedback, continuous improvement), et surtout comprendre comment appliquer cette philosophie à ses futurs projets.
    • Décrire les principes d'intégration continue (CI) et de déploiement continu (CD).
    • Rappeler les étapes standards d'un pipeline de livraison ou de déploiement.
    • Saisir l'ultime importance de soigner son travail et ses développements, par égard pour ses futurs clients, collègues ou mandataires, et par égard pour lui-même.
  • Content
    • Introduction au DevSecOps, aux meilleures pratiques en matière de sécurité et maintenance évolutive de developement (SSDLC: clean code, secure code, code review, threat modeling, automated code and security testing, security configuration management, operations).
    • Intégration et Déploiement continu (CI/CD): concepts, processus et d'outils (tels Gitlab, Github Actions).
    • Automatisation des tests: Approches de test (BDDs, TDD) et types de tests (unitaires, test d'intégration, tests UI automatisés), couverture des tests.
    • Outils de monitoring de la qualité de code tels que SonarLint, SonarCube. Règles basiques de robustesse
    • MLOps: DevOps appliqué au machine learning: meilleures pratiques, versioning des données.
    • Optionnel: Orchestration de services (avec des platformes tels Kubernetes) et le scaling qui vient avec ces technologies
    • - Le rôle et l'importance des outils de compilation, de gestion des dépendances, d'assemblages etc. L'importance de rendre les processus de build reproductibles, si possible sur n'importe quel environnement. Bonnes pratiques pour la gestion de dépendances (e.g. maven, gradle).
    • - Problématique de la maintenance du code, surtout dans le contexte moderne de mise à jour quasi continue et d'évolutivité des produits logiciels. Introduction au concept de la dette technique.
    • Règles d'or pour un code lisible, en particulier longueur des classes et méthodes, nommage, complexité, commentaires, documentation.
    • Utilisation raisonnée de GIT : noms des commit, soumission de merge request. Comment procéder à une revue de code.
    • Fondements de la doctrine devOps : principes de flux, de feedback et d'amélioration continue. Origines de la doctrine.

Type of teaching and workload

Lecture course (including exercises)
32 periods
Travail personnel
28 periods

Course specification

Year of validity
2024-2025
Weight
3rd year
Semester
Spring
Program
French,Bilingual
Department
Computer science and communication systems
Language of instruction
French
ID
B3C-DEOP-S
Level
Advanced
Course type
Core
Study program
Bachelor

Evaluation methods

  • Continuous assessment

Intructor(s) and/or coordinator(s)

Sandy Ingram, Philippe Joye, Michael Mäder, Sébastien Rumley, Jacques Supcik, Beat Wolf