Plan de formation - Développement Backend et Administration Linux
Objectifs généraux
À l'issue de ce parcours, l'apprenant devra être capable de :
- Utiliser Linux de manière autonome.
- Se connecter et administrer un serveur via SSH.
- Utiliser Git pour le versionnement du code.
- Appliquer un workflow Git Flow.
- Collaborer via GitHub ou GitLab.
- Utiliser efficacement un IDE moderne (PyCharm ou VS Code).
- Utiliser Sublime Merge pour gérer le cycle de vie d'un projet Git.
- Développer des scripts et applications en Python.
- Développer des applications web dynamiques en PHP.
- Concevoir une application web avec Django.
- Concevoir et administrer une base de données MySQL.
- Utiliser phpMyAdmin et Adminer pour l'administration des bases de données.
- Écrire des requêtes SQL incluant des jointures.
- Comprendre les principaux composants d'une architecture backend moderne.
- Déployer et maintenir une application sur un serveur Linux.
Phase 1 : Linux et SSH
OverTheWire Bandit
Objectif
- Maîtriser les bases de Linux et du terminal.
- Comprendre le fonctionnement des connexions SSH.
- Développer son autonomie en ligne de commande.
Résultat attendu
- Niveau 10 minimum atteint.
- Niveau 20 recommandé.
Ressource
https://overthewire.org/wargames/bandit/
Linux Journey
Objectif
- Comprendre les concepts fondamentaux de Linux.
- Maîtriser les fichiers, permissions, utilisateurs, processus et réseau.
Résultat attendu
- Modules Grasshopper et Journeyman terminés.
Ressource
Parcours Linux Stéphane Robert
Objectif
- Renforcer les connaissances Linux à travers une documentation complète en français.
- Acquérir les bases de l'administration système.
Résultat attendu
- Progression sur les principaux chapitres du parcours.
Ressource
https://blog.stephane-robert.info/docs/admin-serveurs/linux/parcours/
Phase 2 : Outils du développeur
Git
Objectif
- Comprendre le versionnement du code.
- Gérer l'historique d'un projet.
Compétences visées
- git init
- git clone
- git add
- git commit
- git status
- git log
- git diff
- git push
- git pull
- git fetch
- git merge
- git rebase
Résultat attendu
- Gestion autonome d'un dépôt Git.
Ressources
- Documentation officielle : https://git-scm.com/doc
- Parcours interactif (recommandé) : https://learngitbranching.js.org
GitHub ou GitLab
Objectif
- Héberger et partager du code.
- Collaborer avec d'autres développeurs.
Compétences visées
- Création de dépôts.
- Création de branches.
- Gestion des clés SSH.
- Pull Requests / Merge Requests.
- Gestion des issues.
Résultat attendu
- Publication d'un projet personnel sur GitHub ou GitLab.
Ressources
Git Flow
Objectif
- Organiser le développement d'un projet.
Compétences visées
- Branche main
- Branche develop
- Branches feature
- Branches release
- Branches hotfix
Résultat attendu
- Utilisation du workflow Git Flow sur les projets du parcours.
Ressource
https://nvie.com/posts/a-successful-git-branching-model/
Sublime Merge
Objectif
- Gérer Git à l'aide d'une interface graphique moderne.
Compétences visées
- Création de commits.
- Gestion des branches.
- Merge.
- Rebase.
- Résolution de conflits.
- Gestion des tags.
Résultat attendu
- Gestion complète d'un dépôt Git via Sublime Merge.
Ressource
PyCharm
Objectif
- Utiliser un environnement professionnel pour le développement Python et Django.
Compétences visées
- Création de projets.
- Gestion des environnements virtuels.
- Débogage.
- Exécution de tests.
- Intégration Git.
- Refactoring.
Résultat attendu
- Développement d'un projet Python ou Django depuis PyCharm.
Ressource
https://www.jetbrains.com/pycharm/
Visual Studio Code (optionnel)
Objectif
- Disposer d'un éditeur polyvalent pour Python, PHP, SQL et Linux.
Compétences visées
- Extensions.
- Terminal intégré.
- Débogage.
- Git.
- Connexion SSH distante.
Résultat attendu
- Maîtrise des fonctionnalités essentielles de VS Code.
Ressource
Phase 3 : Bases de données
SQLZoo
Objectif
- Apprendre SQL par la pratique.
Compétences visées
- SELECT
- WHERE
- GROUP BY
- ORDER BY
- JOIN
Résultat attendu
- Section JOIN complétée.
Ressource
MySQL
Objectif
- Comprendre le fonctionnement d'une base de données relationnelle.
Compétences visées
- Création de bases de données.
- Création de tables.
- Relations entre tables.
- Index.
- Contraintes.
- Sauvegardes.
Résultat attendu
- Création et administration d'une base de données complète.
Ressource
phpMyAdmin
Objectif
- Administrer une base de données via une interface web.
Compétences visées
- Gestion des bases.
- Gestion des utilisateurs.
- Import et export.
- Sauvegarde et restauration.
Résultat attendu
- Administration courante d'une base MySQL.
Ressource
Adminer
Objectif
- Utiliser un outil léger d'administration de bases de données.
Compétences visées
- Connexion aux bases.
- Gestion des tables.
- Exécution de requêtes SQL.
Résultat attendu
- Maîtrise des opérations courantes d'administration.
Ressource
Phase 4 : Développement Backend
Python
Objectif
- Acquérir les bases solides du langage Python.
Compétences visées
- Variables.
- Fonctions.
- Modules.
- Exceptions.
- Programmation orientée objet.
- Fichiers.
Ressource
Résultat attendu
- Progression significative sur la roadmap Python.
PHP
Objectif
- Comprendre le développement web côté serveur.
Compétences visées
- Variables.
- Fonctions.
- Tableaux.
- Formulaires.
- Sessions.
- Cookies.
- PDO.
Résultat attendu
- Réalisation d'une application CRUD connectée à MySQL.
Ressource
Django
Objectif
- Développer des applications web modernes avec Python.
Compétences visées
- Models.
- Views.
- Templates.
- URLs.
- Authentification.
- ORM.
Ressources
- Roadmap : https://roadmap.sh/django
- Documentation officielle : https://docs.djangoproject.com
Résultat attendu
- Développement d'une application Django fonctionnelle.
Phase 5 : Services Backend et Architecture
Roadmap Backend
Objectif
- Comprendre les composants d'une architecture backend moderne.
Compétences visées
- Redis.
- Cache.
- Celery.
- Reverse Proxy.
- API.
- Sécurité.
Ressource
Résultat attendu
- Compréhension globale des composants backend modernes.
Redis
Objectif
- Comprendre le cache et les structures de données en mémoire.
Compétences visées
- Cache applicatif.
- Sessions.
- Files d'attente.
Résultat attendu
- Mise en place d'un cache Redis simple.
Ressource
Celery
Objectif
- Exécuter des tâches asynchrones.
Compétences visées
- Workers.
- Queues.
- Planification de tâches.
Résultat attendu
- Intégration de tâches asynchrones dans une application.
Ressource
Phase 6 : Déploiement et Administration
Déploiement d'application
Objectif
- Déployer une application sur un serveur Linux.
Compétences visées
- SSH.
- Caddy (reverse proxy utilisé dans ce projet).
- Gunicorn.
- PHP-FPM.
- MySQL.
- Logs.
- Sauvegardes.
Résultat attendu
- Application accessible publiquement sur un serveur.
Ressources
- Caddy : https://caddyserver.com/docs
- Gunicorn : https://gunicorn.org
Projet final
Infrastructure
- Serveur Linux.
- Connexion SSH.
- Gestion des utilisateurs.
- Sauvegardes.
Base de données
- MySQL ou MariaDB.
- Administration avec phpMyAdmin ou Adminer.
Développement
Option 1 : PHP
- Authentification.
- CRUD complet.
- Gestion des utilisateurs.
Option 2 : Django
- Authentification.
- CRUD complet.
- Gestion des utilisateurs.
Gestion de projet
- Git.
- Git Flow.
- GitHub ou GitLab.
- Sublime Merge.
Déploiement
- Mise en production.
- Configuration Caddy.
- Documentation technique.
Critères de validation
Le parcours est considéré comme validé lorsque :
- Phase 1 Linux validée : Bandit niveau 10+ et Linux Journey modules Grasshopper et Journeyman complétés.
- SQLZoo section JOIN complétée.
- Git maîtrisé et Git Flow appliqué.
- Le code est hébergé sur GitHub ou GitLab.
- Sublime Merge utilisé pour la gestion du dépôt.
- Un IDE (PyCharm ou VS Code) utilisé efficacement.
- L'administration MySQL maîtrisée via phpMyAdmin et Adminer.
- Une application PHP ou Django développée et fonctionnelle.
- Une application déployée sur Linux.
- Le projet final documenté et versionné.