Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
41 changes: 41 additions & 0 deletions docs/project/overview/pres_app.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
# Presentation de l'application

Voici une succincte description de l’application, point de départ du projet DevOps.

**Description des fichiers et contenu**

L'application est actuellement une implémentation de FastAPI, conçue pour une exécution dans un environnement Dockerisé.
Elle utilise Traefik comme reverse proxy et gestionnaire de certificats SSL, ce qui renforce la sécurité des échanges de données. Les données utilisateur sont gérés à l'aide d'une base de données PostgreSQL assurant fiabilité et performance. Cette approche centralisée facilite la gestion et le déploiement sur une seule machine ou serveur.

## Présentation des composants de l'application

On peut décrire les différents composants comme suit:
* FastAPI est un framework web moderne et réputé, conçu pour la création d'APIs avec Python, qui offre des performances élevées et une écriture de code facile et intuitive. La validation des données et la sérialisation sont automatiquement gérées, réduisant ainsi le travail manuel et les risques d'erreur. FastAPI supporte la programmation asynchrone, permettant la gestion efficace de requêtes simultanées, ce qui est particulièrement utile pour les opérations d'entrée/sortie ou pour les services qui doivent gérer de nombreuses connexions simultanément.
* Docker, un outil qui permet de 'containeriser' l'application pour un déploiement et une gestion simplifiés. Le code est structuré et pensée pour un déploiement via Docker.
* Traefik joue un double rôle. D'une part, il agit comme un reverse proxy. Il gère le routage redirigeant les requêtes vers les bons services de l'application. D'autre part, il sert de gestionnaire de certificats SSL, une fonctionnalité essentielle pour sécuriser les communications, les échanges de données sur Internet. Cette intégration montre un souci de sécurisation et d'optimisation du trafic réseau.
* PostgrèsSQL est chargé de gérer, stocker les données utilisateur. Il est reconnu pour sa robustesse, sa fiabilité, sa stabilité, sa performance et sa conformité aux standards SQL.

L'ensemble du code montre une cohérence dans le choix des technologies qui s’intègrent parfaitement ensemble.

## Description de l'Architecture Monolithique

Dans son format d’origine, l’application est structurée en tant que système monolithique. ce qui signifie que toutes ses composantes fonctionnelles - base de données, traitement des données, interface utilisateur - sont intégrées dans une unique Répertoire de code source. Cette architecture centralisée facilite la gestion et le déploiement.

**Avantages**

Cette architecture offre des avantages initiaux tels que la simplicité de développement et de déploiement. En effet, en concentrant toutes les fonctions en un seul point, la coordination entre différents composants est intrinsèquement simplifiée, réduisant ainsi la complexité de communication entre divers modules.

**Limites de l'Architecture Monolithique**

Toutefois, cette architecture présente des limites, notamment en termes de scalabilité et de flexibilité. Avec l'évolution des besoins et des fonctionnalités, le système monolithique peut devenir lourd et difficile à maintenir. Chaque mise à jour ou modification nécessite le redéploiement de l'intégralité de l'application, ce qui augmente les risques d'erreurs et de temps d'arrêt. En outre, les performances peuvent être affectées par la taille croissante de l'application. Le système monolithique devient moins réactif et plus difficile à optimiser. La sécurité peut également devenir une préoccupation, car une faille dans un composant pourrait potentiellement compromettre l'ensemble du système.


## L'évolution vers le cloud et Micro-services
**Transition, réflexion sur l'Évolution vers le Cloud et Micro-services**

Face à ces défis, Nous allons repenser l'architecture de l'application pour mieux répondre aux exigences modernes de scalabilité, de performance et de sécurité. C'est dans ce contexte que l'idée de la faire évoluer vers une architecture orientée micro-services, déployée dans un environnement cloud, que notre projet prendra forme.


**Objectif**

Le projet s'orientera donc vers une migration de l'application vers le cloud, en utilisant les méthodes DevOps apprises en cours. Bien que la structure monolithique actuelle soit maintenue, l'objectif est d'optimiser son déploiement et sa gestion dans le cloud, en exploitant les avantages des technologies et pratiques DevOps, sans nécessairement procéder à une restructuration complète ou au développement de nouvelles fonctionnalités, compte tenu des contraintes de temps.
6 changes: 6 additions & 0 deletions docs/project/requirements/.pages
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
title: Project requirements
nav:
- index.md
- user_stories.md
- tech_requirements.md
- key_components.md
121 changes: 6 additions & 115 deletions docs/project/requirements/index.md
Original file line number Diff line number Diff line change
@@ -1,121 +1,12 @@
---
tags:
- requirements
- specifications
---
# Project requirements

# Requirements and specifications

A DevOps project implementing a containerized microservices application architecture in the Cloud requires a detailed study and careful elicitation of the functional and non-functional requirements.

## Project context
We start by gathering needs by collecting user stories, from which we extract technical requirements. Finally, before specifying and design the target architecture, we focus our attention on the specific requirements for the key components of the system.

L'administrateur système DevOps automatise le déploiement des infrastructures sur un cloud privé, public ou hybride.
[Architectural and Technical User Stories](user_stories.md)

Secteurs d’activités :
[Architectural and Technical Requirements](tech_requirements.md)

une entreprise de services du numérique (ESN)
une ESN spécialisée qui offre des prestations d'hébergement Cloud (Cloud Provider)
un éditeur de logiciel
la DSI d'une entreprise qui possède un service dédié aux développements informatiques

Type d'emplois accessibles :

ingénieur DEVOPS
SysOPS DEVOPS
ingénieur système DEVOPS
ingénieur Cloud
développeur Cloud

### Contexte de l’examen du titre professionnel (RNCP)

L’infrastructure des entreprises se déploie de plus en plus dans le cloud.
32% des entreprises en 2018 contre 97 % en 2021 ont déployé une partie de leur infrastructure en cloud public.
Selon l’étude annuelle de Flexera « state of the cloud report » en 2021, 80% des entreprises gère leur infrastructure en cloud hybride, intégrant cloud public et cloud privé.
Cette évolution oblige les équipes systèmes, qui doivent automatiser les tâches de déploiement, à acquérir de nouvelles compétences.
Parallèlement, les équipes de développeurs ont mis en place la méthode Agile, qui leur permet de produire très régulièrement des nouvelles versions de leurs applications.
La mise en production des applications nécessitait auparavant le respect d’une procédure longue suivie par les équipes systèmes, appelées Ops (comme opérations en anglais).
Il était nécessaire que le temps de mise en production soit raccourci comme l’a été celui du
développement des nouvelles versions.
La démarche DevOps qui vise à faciliter la collaboration entre les « Dev » (développeurs) et les « Ops » poursuit cet objectif.
80% des entreprises ont adopté la démarche DevOps en 2021, pour 41% en 2017.
(source : statistiques IDC EMEA Cloud and infrastructures Services, février 2021)
Les administrateurs système DevOps interviennent sur le déploiement des infrastructures en cloud et sur la mise en production des applications et ils sont très recherchés sur le marché de l’emploi.
Cet emploi nécessite une bonne connaissance des systèmes d’exploitation, de la virtualisation et du développement de scripts d’automatisation ainsi que la maitrise de nombreux outils spécifiques.
L’emploi fait appel à un ensemble particulier de compétences et de connaissances qui relèvent à la fois du développement de scripts, de l‘utilisation de différentes plateformes, de l’administration de systèmes, de méthodologie de tests et de collaboration avec d’autres équipes de techniciens.
Le titre professionnel « Administrateur système DevOps » (niveau 6) réunit les compétences nécessaires pour l’emploi.
Il est structuré en trois blocs de compétences :
* Automatiser le déploiement d’une infrastructure dans le cloud
* Déployer une application en continu
* Superviser les services déployés
Il permet de répondre aux besoins des entreprises et favorise l’évolution professionnelle des administrateurs système en poste souhaitant développer de nouvelles compétences.


### Définition de l’emploi type et des conditions d’exercice (RNCP)

L’administrateur système DevOps automatise le déploiement des infrastructures sur un cloud privé, public ou hybride.
Lorsqu’il travaille chez un éditeur de logiciel ou dans une DSI en relation avec les équipes de développeurs, l’administrateur système DevOps déploie en continu les applications.
Il supervise les services déployés et traite les alertes remontées.
Afin d’automatiser le déploiement des infrastructures sur le cloud, l’administrateur système DevOps automatise la création de serveurs à l’aide de scripts, il les configure et les connecte entre eux, puis il utilise une plateforme de type Ansible pour configurer le déploiement et contrôler celui-ci.
Lorsqu’il est chargé de déployer une application en continu, en relations avec les équipes de développeurs, il prépare des environnements de tests et de pré-production.
Il prépare les différents serveurs de données et le stockage associé, ainsi que les containers destinés à recevoir l’application.
Ensuite il migre les données et déploie l’application dans l’environnement de pré-production.
Il échange en permanence avec l’équipe des développeurs pour corriger les dysfonctionnements
découverts lors des différentes phases de tests.
A l’aide d’une plateforme de type Kubernetes, il déploie l’application et ses mises à jour successives sur l’environnement de production.
L’administrateur système DevOps supervise les infrastructures et applications qu’il a déployées, pour ce faire, il définit les indicateurs à surveiller et installe et configure une solution de supervision.
Lorsqu’il constate une anomalie ou qu’une alerte est remontée, il corrige ou fait corriger le problème.
Afin de résoudre un problème de configuration, comprendre la cause d’un dysfonctionnement ou installer un nouvel outil, il échange sur les forums des communautés professionnelles, éventuellement en anglais.
La plupart des documentations techniques sont rédigées en anglais, l’administrateur système DevOps doit être capable de les lire pour y retrouver l’information qu’il recherche et interpréter correctement les conseils qui y sont donnés. Cela correspond au niveau B2 du cadre européen pour la compréhension écrite.
Il devra parfois poser des questions ou apporter une réponse sur des forums d’utilisateurs en langue anglaise, le niveau B1 du cadre européen pour l'expression écrite est suffisant.
Il utilise une démarche logique pour diagnostiquer la cause d’un dysfonctionnement et y remédier, il effectue une veille active pour maintenir à jour ses compétences.
Cet emploi nécessite la maitrise de nombreux outils et langages ainsi que la compréhension de concepts abstraits.
L’administrateur système DevOps est en contact avec les équipes de développeurs, son responsable technique, les équipes réseau et sécurité, les fournisseurs des solutions d’hébergement, les communautés professionnelles des outils qu’il utilise.
L’administrateur système DevOps travaille dans une entreprise de services du numérique (ESN), chez un opérateur Cloud, chez un éditeur de logiciel ou dans la DSI d’une grande entreprise.
Il travaille en équipe sous la responsabilité du responsable technique ou du directeur des systèmes d’information de son entreprise.
Dans certains cas, cette activité se réalise entièrement à distance


## Project perimeter

Activités visées :

Lorsqu'il travaille chez un éditeur de logiciel ou dans une DSI en relation avec les équipes de développeurs, l'administrateur système DevOps déploie en continu les applications.

Il supervise les services déployés et traite les alertes remontées. Afin d'automatiser le déploiement des infrastructures sur le cloud, l'administrateur système DevOps automatise la création de serveurs à l'aide de scripts, il les configure et les connecte entre eux, puis il utilise une plateforme de type Ansible pour configurer le déploiement et contrôler celui-ci.

Lorsqu'il est chargé de déployer une application en continu, en relations avec les équipes de développeurs, il prépare des environnements de tests et de pré-production.

Il prépare les différents serveurs de données et le stockage associé, ainsi que les containers destinés à recevoir l'application. Ensuite il migre les données et déploie l'application dans l'environnement de pré-production.

Il échange en permanence avec l'équipe des développeurs pour corriger les dysfonctionnements découverts lors des différentes phases de tests.

A l'aide d'une plateforme de type Kubernetes, il déploie l'application et ses mises à jour successives sur l'environnement de production.

L'administrateur système DevOps supervise les infrastructures et applications qu'il a déployées, pour ce faire, il définit les indicateurs à surveiller et installe et configure une solution de supervision.

Lorsqu'il constate une anomalie ou qu'une alerte est remontée, il corrige ou fait corriger le problème.

Afin de résoudre un problème de configuration, comprendre la cause d'un dysfonctionnement ou installer un nouvel outil, il échange sur les forums des communautés professionnelles, éventuellement en anglais.

La plupart des documentations techniques sont rédigées en anglais, l'administrateur système DevOps doit être capable de les lire pour y retrouver l'information qu'il recherche et interpréter correctement les conseils qui y sont donnés. Cela correspond au niveau B2 du cadre européen pour la compréhension écrite.

Il devra parfois poser des questions ou apporter une réponse sur des forums d'utilisateurs en langue anglaise, le niveau B1 du cadre européen pour l'expression écrite est suffisant.

Il utilise une démarche logique pour diagnostiquer la cause d'un dysfonctionnement et y remédier, il effectue une veille active pour maintenir à jour ses compétences.

Cet emploi nécessite la maitrise de nombreux outils et langages ainsi que la compréhension de concepts abstraits.

L'administrateur système DevOps est en contact avec les équipes de développeurs, son responsable technique, les équipes réseau et sécurité, les fournisseurs des solutions d'hébergement, les communautés professionnelles des outils qu'il utilise.

L'administrateur système DevOps travaille dans une entreprise de services du numérique (ESN), chez un opérateur Cloud, chez un éditeur de logiciel ou dans la DSI d'une grande entreprise.

Il travaille en équipe sous la responsabilité du responsable technique ou du directeur des systèmes d'information de son entreprise.

Dans certains cas, cette activité se réalise entièrement à distance.


## Project objectives

* Acquire the technical and methodological knowledge and know-how necessary to perform the function of administrator/engineer/architect DevOps/Cloud.
* Validate the french certification ["Administrateur Système DevOps” RNCP36061](https://www.francecompetences.fr/recherche/rncp/36061/).
* Validate the [DevUniversity](https://www.devuniversity.com/) ["DevOps engineer"](https://www.devuniversity.com/formation-devops) training in its Bootcamp format.
[Specific Requirements for Key Components](key_componenents.md)
Loading