0% ont trouvé ce document utile (0 vote)
225 vues104 pages

Introduction à DevNet Cisco

DevNet de Cisco est un programme complet offrant des outils, ressources et support pour les développeurs, incluant des laboratoires d'apprentissage, des bacs à sable pour tester des technologies, et une documentation centralisée. Il facilite l'intégration des API Cisco et propose des événements pour favoriser l'échange entre développeurs. Le cycle de vie du développement logiciel (SDLC) est également abordé, avec des méthodologies comme Waterfall, Agile et Lean pour structurer le processus de développement.

Transféré par

Chaima Dridi
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
225 vues104 pages

Introduction à DevNet Cisco

DevNet de Cisco est un programme complet offrant des outils, ressources et support pour les développeurs, incluant des laboratoires d'apprentissage, des bacs à sable pour tester des technologies, et une documentation centralisée. Il facilite l'intégration des API Cisco et propose des événements pour favoriser l'échange entre développeurs. Le cycle de vie du développement logiciel (SDLC) est également abordé, avec des méthodologies comme Waterfall, Agile et Lean pour structurer le processus de développement.

Transféré par

Chaima Dridi
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd

Cour DevNet Cisco

2.DEVNET CISCO

2.1.1 Qu'est-ce que DevNet?

(DevNet est un programme de développement complet)


DevNet ‫هو برنامج متكامل يشمل جميع األدوات والموارد الالزمة للمطورين‬.

(qui comprend un site web, une communauté de développeurs interactive, des outils de développement
coordonnés, des forums de discussion intégrés et des bacs à sable
‫ و "بيئة تجريبية‬،‫ منتديات نقاش‬،‫ أدوات تطوير منسقة‬،‫ مجتمع تفاعلي للمطورين‬،‫( " يتضمن موقع إلكتروني‬bacs
à sable) ‫التي تسمح لك بتجربة البرمجيات في بيئة آمنة‬

(Que vous soyez débutant ou que vous ayez des compétences avancées)
‫سواء كنت مبتدئ أو عندك خبرة متقدمة في البرمجة‬، DevNet ‫متاح ليك‬.

vous pouvez en apprendre davantage grâce à des fonctionnalités telles que:


‫ تقدر تتعلم أكثر من خالل ميزات وموارد متوفرة على‬DevNet.

 Labos d'apprentissage:
Des didacticiels auto-rythmés qui couvrent un large éventail de sujets ; du codage de base à
l'utilisation d'API REST avec diverses technologies
‫ تتضمن مواضيع متنوعة من البرمجة األساسية لحد‬.‫هاذي هي دروس تعلمية تقدر تتعلم فيها على مهل‬
‫استخدام الـ‬APIs ‫ مثل‬REST ‫باستخدام تقنيات مختلفة‬.
 Sandboxes:
Environnements de développement et de test similaires à la production pour une multitude de
technologies
"‫ِبَس ْك "تجّر ب فيها الكود قبل ما تطبقه في الواقع هي بيئات تطوير واختبار تشبه بيئة اإلنتاج‬، .
 Échange de code:
(Un référentiel d'exemples de code écrit par d'autres développeurs)
‫ يمكنلك تستعملها و تتعلم منها‬،‫هذي قاعدة بيانات فيها أمثلة من أكواد كتبها مطورين آخرين‬
 Support pour les développeurs:
(Prise en charge des problèmes liés aux développeurs via des tickets, des chats en direct et des
forums)
DevNet ‫ دردشات مباشرة ومنتديات نقاش‬،‫يوفر دعم للمطورين عبر تذاكر دعم‬
 Documentation du développeur:
(Un emplacement central pour toute la documentation du développeur de produit (API))
‫ الـ‬Documentation ‫ تاع المطورين هي مكان واحد فيه كل الوثائق اللي تحتاجها على منتجات‬Cisco ‫و‬API.
 Cours vidéo:
(Vidéos animées par un instructeur qui enseignent divers sujets, y compris des exercices
pratiques)
‫دورات فيديو مع مدرسين يشرحوا مواضيع مختلفة وتشمل تمارين عملية‬.
 Événements DevNet:
(Événements à travers le monde où vous pouvez trouver les développeurs de DevNet qui
enseignent des cours sur une variété de sujets et donnent des ateliers pratiques)
‫ يعني كيما ورشات عمل وفعاليات‬DevNet ‫ وين تلتقي بالمطورين‬،‫تقام في بلدان مختلفة حول العالم‬
‫وتتعلم منهم‬.

2.2.1 Mise en route avec les ressources DevNet

DevNet offre aux développeurs un point de départ pour toutes les API Cisco, y compris la
documentation des API, l'éducation et le support des développeurs.
DevNet ‫ تتضمن جميع الـ‬،‫ يعطي للمطورين نقطة انطالق‬APIs ‫ متاع‬Cisco، ‫ والدعم‬،‫ التعليم‬،‫مع الوثائق‬.

Une partie de votre certification comprend la compréhension du grand nombre de ressources en ligne
disponibles pour les produits Cisco qui sont pertinentes pour les développeurs, que ce soit en termes
de développement d'applications ou d'automatisation, et ce module traite de ces ressources.
‫ جزء من شهادة‬DevNet ‫ هو أنك تعرف الموارد اللي تلقاها على اإلنترنت لمختلف منتجات‬Cisco، ‫خاصة لتطوير‬
‫التطبيقات أو لألتمتة‬.

Pour une vue d'ensemble de haut niveau, accédez à la page de démarrage de DevNet sur
developer.cisco.com.
‫ إدخل على الصفحة الرئيسية ل‬،‫ ألخذ فكرة عامة‬DevNet ‫ في‬developer.cisco.com.

Vous verrez que le site est organisé selon le type d'offres qui incluent Démarrer maintenant, Pistes
d'apprentissage, Cours vidéo, Sandbox, Échange de code et Échange d'écosystème.
‫ كورسات فيديو‬،‫ مسارات التعلم‬،‫ كيما البداية‬،‫ تلقا الموقع منظم حسب أنواع العروض‬، Sandbox، ،‫تبادل األكواد‬
‫و تبادل الحلول‬.

2.2.2 Laboratoires d'apprentissage DevNet

Les Laboratoires d'apprentissage de DevNet contient des didacticiels couvrant les technologies
d'ingénierie, les langages de programmation et des concepts tels que la programmabilité pilotée par
modèle, les API REST, Python, JavaScript et les instructions et exercices de plateforme Cisco.
Laboratoires DevNet ‫ كيما‬،‫ فيهم دروس تغطي تقنيات البرمجة‬API REST، Python، ‫ و‬JavaScript، ‫مع تمارين‬
‫ على منصات‬Cisco.

Souvent, les Laboratoires d'apprentissage offrent la meilleure solution pour utiliser un Sandbox
DevNet, qui est un environnement préconfiguré déjà installé avec les plates-formes Cisco.
Laboratoires ‫ يوفروا طريقة مثالية باش تستعمل‬Sandbox DevNet، ‫اللي هو بيئة مّج هزة وتخدم على منصات‬
Cisco.

2.2.3 DevNet Sandbox


Lorsque vous développez et testez une technologie, vous voulez un banc de test où vous pouvez tester
le code dans un environnement réaliste sans affecter les systèmes de production.
‫ تحب يكون عندك مكان تجربة باش تجرب الكود في بيئة واقعية بدون ما تأثر‬،‫وقت اللي تطور وال تجرب تقنية‬
‫على األنظمة الحقيقية‬.

Pour ce faire, accédez à l'offre DevNet Sandbox, où vous pouvez essayer le matériel et les
environnements Cisco.
‫ لذلك استعمل‬DevNet Sandbox، ‫ وين تقدر تجرب المعدات والبيئات اللي يوفرهم‬Cisco.

2.2.4 Échanges DevNet

DevNet offre plusieurs façons aux membres de la communauté de partager les uns avec les autres. Ils
sont appelés «Échanges».
DevNet ‫ يسميوهم "التبادالت‬،‫"يوفر طرق مختلفة ألعضاء المجتمع باش يشاركوا بينهم‬.

Actuellement, Automation Exchange, Code Exchange et Ecosystem Exchange sont disponibles.


‫التبادالت المتاحة حاليًا هي‬: Automation Exchange، Code Exchange ‫ و‬Ecosystem Exchange.

2.2.5 Rechercher un cas d'utilisation dans Échange d'automatisation

Échange d'automatisation fournit divers cas d'utilisation pour l'automatisation du réseau, de la liste
des données à l'ajout de configurations, en passant par l'activation de stratégies sur les domaines, les
utilisateurs ou les appareils.
Automation Exchange ‫ من ترتيب البيانات حتى إضافة‬،‫يعطيك حاالت استخدام مختلفة ألتمتة الشبكة‬
‫اإلعدادات وتفعيل السياسات على األجهزة والمجاالت‬.

2.2.6 Prise en charge des développeurs DevNet

DevNet offre une assistance aux développeurs.


DevNet ‫يوفر دعم فني للمطورين‬.

DevNet peut vous aider à résoudre les problèmes d'intégration, de connexions d'API et d'autres
questions spécialisées.
DevNet ‫ الربط مع‬،‫ ينجم يعاونك في حل مشاكل االندماج‬API ‫وغيرها من األسئلة الفنية‬.

Un bon point de départ pour obtenir des réponses est developer.cisco.com/support.


‫ نقطة انطالق مليحة باش تلقى أجوبة هي صفحة الدعم‬developer.cisco.com/support.

2.3.3 Pour aller plus loin


Les événements DevNet sont des occasions de rencontrer la communauté technologique mondiale et de
discuter des innovations. Par exemple, la conférence DevNet Create permet aux passionnés de se retrouver
pour parler des nouveautés et des API. Les événements DevNet Express sont organisés par Cisco et ses
partenaires, et une zone DevNet est présente lors des conférences Cisco Live.

En tunisien : DevNet ،‫يعملوا برشا أحداث باش الناس تتقابل وتحكي على جديد التكنولوجيا‬
‫ كيما‬DevNet Create ‫ وين الناس تجتمع تحكي على‬API ‫ فما زادا أحداث‬.‫ وغيره‬DevNet Express
‫ اللي يتنظموا من‬Cisco ‫وشركائها‬.

Learning Labs

Les Learning Labs sont des exercices pratiques non obligatoires pour ce cours, mais ils permettent de
développer des compétences supplémentaires. Attention, ces exercices peuvent prendre du temps, donc il
faut équilibrer avec le reste des études.

En tunisien : Learning Labs ‫ راهو يمكن‬،‫ حذاري‬.‫ لكن فيهم حاجات تعلم برشا‬،‫موش إجباريين‬
‫ حاول تقسم وقتك بيناتهم وبين بقية الدروس‬،‫ياكلوا برشا وقت‬.

Pré-requis

Pour accéder aux Learning Labs, il vous faut un compte DevNet et une connexion Internet.

En tunisien : ‫ يلزمك حساب‬DevNet ‫ و انترنت باش تنجم تدخل للـ‬Learning Labs.

2.3.4 Project DEVASC - Introduction

Ce projet est conçu pour développer vos compétences techniques et non techniques avec cinq activités. Vous
allez former une équipe, organiser votre travail, et présenter vos résultats.

En tunisien : ‫ عندك‬،‫هالمشروع باش يخليك تخدم في فريق وتعلم مهارات تقنية وغير تقنية‬
‫خمسة أنشطة وين باش تخدموا مع بعضكم وتقدموا المشروع متاعكم‬.

Les compétences du 21e siècle

Les compétences modernes incluent la créativité, la pensée critique, la communication et la collaboration.


Aujourd’hui, il faut des connaissances variées pour répondre aux besoins des nouveaux emplois.
En tunisien : ‫ الزم‬.‫ والتعاون‬،‫ التواصل‬،‫ التفكير النقدي‬،‫مهارات العصر اليوم تشمل اإلبداع‬
‫يكون عندك برشا مهارات في مجاالت مختلفة لخدمة في خدمة جديدة‬.

Les activités du projet

Dans ce projet, vous allez évaluer les besoins du client, faire de la recherche, concevoir une solution, créer
un prototype, tester et l'améliorer.

En tunisien : ،‫ تعملوا بحث‬،‫باش تخدموا في فريق وين باش تحاولوا تفهموا شنو يحب العميل‬
‫ وتعملوا‬،‫ تصمموا حل‬Prototype ‫وتجربوه‬.

2.3.5 Activité de projet 1 - Formation d'équipe

La première activité consiste à former l'équipe en choisissant un facilitateur et un enregistreur pour aider à
organiser les discussions.

En tunisien : ‫ تختاروا واحد يسهل النقاشات وآخر يسجل المالحظات‬،‫أول خطوة‬.

 L'objectif de la gestion des API est de faciliter l'intégration de différentes applications et


systèmes, d'améliorer la collaboration entre les équipes et de favoriser l'innovation
 Qu'est-ce que la programmabilité du réseau ?la possibilité de configurer, de surveiller et de
réagir en temps réel aux événements du réseau
 Quel lien est utilisé à partir des laboratoires d'apprentissage Cisco DevNet pour accéder aux plus
grandes collections de laboratoires ? Tracks
 Quelle option de support pour développeurs Cisco DevNet fournit un support 1-sur-1 aux
membres du programme Partenaire Solution ?ticket basé sur le cas
 Quel est le but de Cisco DevNet ?pour apprendre à tout le monde les différentes offres d'API
Cisco et comment les utiliser

3.Développement de logiciels:
Le processus de développement logiciel (appelé cycle de vie du développement logiciel ou SDLC) est
une méthode organisée pour créer des logiciels de manière structurée. Ce n’est pas juste une question de
codage : il inclut plusieurs étapes importantes, comme comprendre les besoins du client (collecte des
exigences), créer un prototype pour tester l'idée (preuve de concept), ainsi que tester le logiciel et corriger
les erreurs (bogues).
Dans ce module, on va voir les différentes étapes du SDLC, ainsi que les méthodologies qui permettent de
répondre efficacement aux besoins des projets logiciels. La première méthode est Waterfall (cascade), où
chaque étape est planifiée avant de passer à la suivante. En plus de Waterfall, il existe aussi des
méthodologies plus flexibles comme Agile et Lean, qui permettent de s’adapter rapidement aux
changements pendant le développement.

En tunisien : ‫ وال الـ( العملية متاع تطوير البرمجيات‬SDLC) ‫ فيها برشا‬،‫موش كان في الكودينغ‬
‫ نصنعو‬،‫ مراحل كيما فهمان شنو يحب العميل‬Prototype، ‫ في‬.‫ونجربو البرنامج ونصلحو الغالط‬
.‫ وباش نشوفو شوية منهجيات لتنظيم الخدمة‬،‫ باش نحكيو على المراحل هاذي‬،‫هالموديول‬
‫ أول حاجة هي‬Waterfall ‫ أما‬،‫ وين تخدم كل مرحلة كيما تخططتلها‬Agile ‫ و‬Lean ‫يخّليوك تبدل‬
‫في الخدمة وقت ما يلزم‬.

Le cycle de vie du développement logiciel (SDLC) est une méthode pour créer un logiciel de A à Z, depuis
l’idée jusqu’à la livraison au client. Ce cycle est structuré en six phases principales, où chaque phase se
base sur les résultats de la phase qui la précède. Bien qu’il n’y ait pas un modèle unique de SDLC, les
phases les plus souvent utilisées sont les suivantes :

1. Exigences et analyse : Comprendre les besoins et objectifs du client pour définir ce que le logiciel doit
accomplir(exigences) .‫نفهمو شنو يلزم‬
2. Conception : Planifier l’architecture et le design du logiciel, en imaginant comment il fonctionnera. software
‫نخططو الديزاين متاع الـ‬

 conception de haut niveau (HLD) ,de conception de bas niveau (LLD

3. Mise en œuvre : Développer le code et transformer la conception en programme fonctionnel.‫نبرمجوه‬


4. Test : Vérifier le logiciel pour s’assurer qu’il n’a pas d’erreurs et qu’il fonctionne correctement.
5. Déploiement : Installer le logiciel pour que le client puisse commencer à l'utiliser. ‫نركبوه عند الكليون‬
6. Maintenance : Assurer le suivi pour corriger les problèmes et faire les mises à jour nécessaires. ‫نبقاو نصلحو فيه‬
‫ونزيدو حاجات جديدة وقت اللي يلزم‬

 Au cours de la phase de maintenance, l'équipe:

- Fournit une assistance aux clients

- Correction des bogues trouvés dans la production

- Fonctionne sur les améliorations logicielles

- Recueille les nouvelles requêtes du client

Méthodologies de développement de logiciels


Il existe de nombreuses méthodologies différentes, mais nous allons nous concentrer sur les trois plus
populaires:

 Cascade (Waterfall)
 Agile
 Cœur (Lean)

Waterfall :Dans le passé, on utilisait souvent la méthode de la cascade (Waterfall), qui impose de
compléter chaque phase en entier avant de passer à la suivante, sans jamais revenir en arrière. Chaque étape
était documentée de façon détaillée avant d’avancer à l’étape suivante.( Configuration système requis >
Configuration logicielle requise > Analyse >Conception du programme > Codage > Test >Opérations)

 Si les exigences changent au cours de l'itération actuelle, ces nouvelles exigences ne peuvent pas être
incorporées avant la prochaine itération de la cascade

Agile : Selon le Manifeste Agile, les valeurs d'Agile sont :

 Individus et interactions sur les processus et les outils


 Logiciels de travail sur une documentation complète
 Collaboration avec les clients sur la négociation (‫)نخدمو مع الكليونات مش ضدهم‬
 Répondre au changement au lieu de suivre un plan(‫)نحضرو للتغيير ما نتبعوش الخطة بالحرف‬

Douze principes:

 Orientation client - Notre priorité absolue est de satisfaire le client par la livraison rapide et
continue de logiciels de valeur. ‫األولوية إرضاء الكليون‬
 Adoptez le changement et adaptez-vous - Accueillez les exigences changeantes, même en
fin de développement. Des processus agiles exploitent le changement pour offrir un avantage
concurrentiel au client. ‫التغيير نجم يكون في أي وقت‬
 Livraison fréquente de logiciels de travail - Livrez des logiciels de travail fréquemment, de
quelques semaines à quelques mois, avec une préférence à un délai plus court.
 Collaboration - Les gens d'affaires et les développeurs doivent travailler ensemble tous les
jours tout au long du projet. ‫نخدمو مع أصحاب البيزنس ديما‬
 Équipes motivées - Construire des projets autour d'individus motivés. Donnez-leur
l'environnement et le soutien dont ils ont besoin, et faites-leur confiance pour accomplir le
travail. ‫لتيم يكون متحمس ودائما نخدموه على راحو‬
 Conversations en personne - La méthode la plus efficace et la plus efficace pour transmettre
l'information à l'équipe de développement et au sein de celle-ci est la conversation en face à
face. ‫الحكايات وجهًا لوجه هي أحسن حاجة‬
 Logiciel de travail - Le logiciel de travail est la principale mesure du progrès.
 Travailler à un rythme durable - ‫ خدمو بقوة‬Des processus agiles favorisent le
développement durable. Les sponsors, développeurs et utilisateurs devraient être en mesure
de maintenir un rythme constant indéfiniment.
 Environnement agile - Une attention constante à l'excellence technique et une bonne
conception améliorent l'agilité.
 Simplicité - L'art de maximiser la quantité de travail non fait est essentiel.
 Équipes auto-organisatrices - ‫ التيم ينظم روحها وحده‬Les meilleures architectures,
exigences et conceptions émergent des équipes auto-organisatrices.
 Amélioration continue - À intervalles réguliers, l'équipe réfléchit à la façon de devenir plus
efficace, puis écoute et ajuste son comportement en conséquence.

Méthodes agiles:

Scrum: de petites équipes auto-organisatrices qui se réunissent quotidiennement pendant de courtes


périodes et travaillent dans des sprints itératifs

Lean : élimination des efforts gaspillés dans la planification et l'exécution, ainsi que sur la réduction de la
charge cognitive du programmeur.

Programmation Extreme (XP) : Comparé à Scrum, XP est plus prescriptif quant aux meilleures
pratiques en matière d'ingénierie logicielle

Développement axé sur les fonctionnalités (FDD) : Construit le logiciel par "fonctionnalités", avec
des étapes bien planifiées et une équipe répartie en rôles spécifiques.

=>Contrairement à la méthode de cascade, où il y a une longue itération du SDLC, Agile est de nombreuses
itérations rapides du SDLC.

Sprints : les développements avancent par sprints, Un sprint est une période de temps spécifique
(chronométré) qui se situe généralement (de 2 à 4 semaines). Chaque sprint a pour but de livrer une partie
fonctionnelle du logiciel. L’équipe choisit les tâches qu’elle pense pouvoir accomplir dans le temps imparti,
et à la fin, le logiciel doit être prêt à livrer même s’il ne l’est pas toujours.

backlogs :Le backlog est une liste des fonctionnalités souhaitées pour le projet, créée par le propriétaire
du produit. Ce backlog peut être modifié en fonction des retours du client.

Histoires d’utilisateurs : Une histoire d’utilisateur est une description simple d'un besoin utilisateur.
En tant que <user|role>, je voudrais <action>, de sorte que <value|benefit>

Équipes Scrum :Les équipes Scrum sont auto-gérées, avec un maximum de 10 personnes. Chaque jour,
elles se réunissent pour un stand-up (une réunion rapide de 15 minutes). Le Scrum Master les aide à
surmonter les obstacles.
Développement de logiciels Lean: réduire le gaspillage et de maximiser la valeur apportée au client.

les sept principes du Lean sont les suivants :

 Éliminer les déchets : Supprimer tout ce qui n’apporte pas de valeur ajoutée au client.( exemple
déchets :Travail partiellement terminé, Processus supplémentaires, Fonctionnalités
supplémentaires ,Changement de tâche, En attente, Motion ,Défauts
 Amplifier l'apprentissage : Encourager l'apprentissage continu pour améliorer le développement.
 Décider le plus tard possible : Retarder les décisions pour garder de la flexibilité et s'adapter aux
changements.
 Livrer aussi vite que possible : Assurer une livraison rapide pour répondre aux besoins immédiats
du client.
 Renforcer l'équipe : Donner de l'autonomie et de la responsabilité aux membres de l’équipe.
( Chaque personne possède sa propre expertise, alors laissez-lui prendre des décisions dans son
domaine d'expertise)
 Construire l'intégrité dans : L'intégrité du logiciel est lorsque le logiciel répond exactement aux
besoins du client. Un autre niveau d'intégrité est que le logiciel conserve son utilité pour le client.
(Garantir la qualité dès le départ pour un produit fiable.)
 Optimiser l'ensemble : Considérer l'ensemble du processus pour éviter les optimisations isolées.

Types de déchets dans le Lean :

1. Travail partiellement terminé : Travail non fini qui n’apporte rien au client et finit souvent par être
obsolète.
2. Processus supplémentaires : Des étapes inutiles comme des processus trop lourds ou de la
paperasse.
3. Fonctionnalités supplémentaires : Des fonctionnalités non demandées qui ne répondent pas aux
besoins du client.
4. Changement de tâche : La perte de temps liée au changement de tâche d'une personne à une autre.
5. Attente : Les délais dans le projet, que ce soit pour les ressources, les approbations, ou autres.
6. Motion : Le mouvement inutile des personnes ou des documents, ce qui crée une perte de temps et
de concentration.
7. Défauts : Les bugs et erreurs qui affectent la qualité et réduisent la valeur du produit pour le client.

Les motifs de conception originaux

Dans son livre Design Patterns, le Gang of Four a divisé les motifs en trois catégories principales:

 Créationnel - Motifs utilisés pour guider, simplifier et créer des objets logiciels abstraits à l'échelle.
 Structurel - Modèles décrivant des façons fiables d'utiliser des objets et des classes pour différents
types de projets logiciels.
 Comportement - Modèles expliquant comment les objets peuvent communiquer et travailler
ensemble pour relever les défis familiers de l'ingénierie logicielle.

Ils ont énuméré un total de 23 modèles de conception, qui sont maintenant considérés comme la base de
modèles de conception plus récents. La plupart de ces modèles, à un certain niveau, expriment les principes
de base d'une bonne conception logicielle orientée objet.

Plongons plus profondément dans deux des modèles de conception les plus couramment utilisés: le modèle
de conception Observer (un modèle de conception comportementale) et Model-View-Controller (MVC).

 Le contrôle de version, également appelé systèmes de contrôle de version, contrôle de révision ou


contrôle de source, est un moyen de gérer les modifications apportées à un ensemble de fichiers afin de
conserver un historique de ces modifications

Des avantages du contrôle de version sont les suivants:

 Il permet la collaboration - Plusieurs personnes peuvent travailler sur un projet (un ensemble de
fichiers) en même temps sans supplanter les changements de l'autre.
 Responsabilité et visibilité - Sachez qui a apporté les changements, quand ils ont apporté ces
changements et pourquoi.
 Travailler isolément - Créez de nouvelles fonctionnalités indépendamment sans affecter le logiciel
existant.
 Sécurité - Les fichiers peuvent être annulés lorsqu'une erreur est commise.
 Travailler n'importe où - Les fichiers sont stockés dans un référentiel, de sorte que n'importe quel
périphérique peut avoir une copie de travail.

Types de systèmes de contrôle de version

Il existe trois types de systèmes de contrôle de version:

 Local
 Centralisé
 Applications

Système de contrôle de version local(LVCS) :

LVCS utilise une base de données simple pour suivre toutes les modifications apportées au fichier. Dans la
plupart des cas, le système stocke le delta entre les deux versions du fichier.
Lorsque l'utilisateur veut revenir au fichier, le delta est inversé pour accéder à la version demandée.

Système de contrôle de version centralisé (CVCS) :

CVCS utilise un modèle serveur-client.Le référentiel est stocké dans un emplacement centralisé, sur un
serveur. Dans CVCS, une seule personne peut travailler sur un fichier particulier à la fois.
Une personne doit récupérer le fichier pour le verrouiller et effectuer les modifications requises et
l'enregistrer une fois terminé.

Système de contrôle de version distribué(DVCS) :


DVCS est un modèle peer-to-peer. Le référentiel peut être stocké sur un système client, mais il est
généralement stocké dans un service d'hébergement de référentiel. Dans DVCS, chaque individu peut
travailler sur n'importe quel fichier, en même temps, car le fichier local dont la copie de travail est en cours
de modification. Par conséquent, le verrouillage n'est pas nécessaire. Lorsque la personne a apporté les
modifications, elle pousse le fichier vers le référentiel principal qui se trouve dans le service d'hébergement
du référentiel, et le système de contrôle de version détecte tout conflit entre les modifications de fichiers.
Git

Git est une implémentation open source d'un système de contrôle de version distribué, qui est
actuellement la dernière tendance dans le développement de logiciels.

 Un client Git doit être installé sur une machine cliente. Il est disponible pour macOS, Windows et
Linux/Unix.
Une différence clé entre Git et les autres systèmes de contrôle de version est que Git stocke les
données sous forme instantané au lieu de différences (le delta entre le fichier actuel et la version
précédente).

 Si le fichier ne change pas, Git utilise un lien de référence vers le dernier instantané du système au
lieu de prendre un instantané nouveau et identique.

Il y a trois étapes dans Git:


 référentiel ( the .git directory) : Le répertoire .git contient des métadonnées telles que les fichiers
(compressés), les validations et les journaux (historique de validation).

 répertoire de travail : Le répertoire de travail est le dossier visible


 zone de transit : La zone de transit stocke les informations sur ce que l'utilisateur souhaite
ajouté/mettre à jour/supprimer dans le référentiel. L'utilisateur n'a pas besoin d'ajouter tous ses
fichiers modifiés au stage/repo; il peut sélectionner des fichiers spécifiques. Bien qu'il soit appelé
zone, il s'agit en fait d'un fichier d'index situé dans le répertoire .git.
Trois États
Comme il y a trois étapes dans Git, il y a trois états correspondants pour un fichier Git:
 Commis (committed) - Ceci est la version du fichier a été enregistrée dans le référentiel (.git
directory).
 modifié (modified) - Le fichier a changé mais n'a pas été ajouté à la zone de transit ou validé dans le
référentiel.
 staged - Le fichier modifié est prêt à être validé dans le référentiel.

- Git a deux types de référentiels, locaux et distants.


- Un référentiel local est stocké sur le système de fichiers d'une machine cliente, qui est le même sur
lequel les commandes git sont exécutées.
- Un référentiel distant est stocké ailleurs que l'ordinateur client, généralement un serveur ou un service
d'hébergement de référentiel. Les référentiels distants sont facultatifs et sont généralement utilisés
lorsqu'un projet nécessite une collaboration entre une équipe avec plusieurs utilisateurs et machines
clientes.
- Les référentiels distants peuvent être considérés comme le référentiel "centralisé" pour Git, mais cela
n'en fait pas un CVCS. Un référentiel distant avec Git continue d'être un DVCS car le référentiel distant
contiendra le référentiel complet, qui inclut le code et l'historique des fichiers. Lorsqu'une machine
cliente clone le référentiel, elle obtient le référentiel complet sans avoir besoin de le verrouiller, comme
dans un CVCS.
- Une fois le référentiel local cloné à partir du référentiel distant ou le référentiel distant créé à partir du
référentiel local, les deux référentiels sont indépendants l'un de l'autre jusqu'à ce que les modifications
de contenu soient appliquées à l'autre branche par l'exécution manuelle d'une commande Git.
Branchement :
Le branchement permet aux utilisateurs de travailler sur le code indépendamment sans affecter le code
principal dans le référentiel.
Lorsqu'un référentiel est créé, le code est automatiquement placé sur une branche appelée Master

Le branchement permet aux utilisateurs de:

 Travailler sur une fonctionnalité indépendamment tout en bénéficiant d'un système de contrôle de
version distribué
 Travailler simultanément sur plusieurs entités
 Expérimenter des idées de code
 Gardez le code de production, de développement et de fonctionnalité séparément
 Gardez la ligne principale de code stable

Les branches peuvent être locales ou distantes, et elles peuvent être supprimées et avoir leur propre
historique, zone de transit et répertoire de travail.
La création de branche de Git est rapide, et le basculement entre les branches est presque instantané.
Lorsqu'un utilisateur passe d'une branche à une autre, le code dans son répertoire de travail et les fichiers de
la zone de transit changent en conséquence, mais les répertoires du dépôt (.git) restent inchangés.
GitHub et autres fournisseurs
Git et GitHub ne sont pas les mêmes.
Alors que Git est une implémentation du contrôle de version distribué et fournit une interface de ligne de
commande, GitHub est un service fourni par Microsoft qui implémente un service d'hébergement de
référentiel avec Git.
En plus de fournir la fonctionnalité de contrôle de version distribuée et de gestion du code source de Git,
GitHub fournit des fonctionnalités supplémentaires telles que :
- révision du code
- documentation
- gestion de projets
- suivi des bugs
- demande de fonction
GitHub a introduit le concept de « demande d'extraction », qui est un moyen de formaliser une demande par
un contributeur pour examiner les changements tels que le nouveau code, les modifications apportées au
code existant, etc., dans la branche du contributeur pour inclusion dans les branches principales du projet ou
d'autres branches programmées.
GitHub a évolué pour prendre en charge de nombreuses formes de codage collaboratif, notamment:
Repos privés visibles uniquement par les équipes désignées
Projets de "codage social" qui sont publics, mais dont les contributeurs peuvent être anonymes
Des efforts open source à grande échelle avec de nombreux contributeurs, parfois en milliers
GitHub a introduit le concept de "demande d'extraction"‫الطلب متاع السحب‬.
Une demande de retrait est un moyen d'officialiser une demande d'un contributeur pour examiner les
changements tels que le nouveau code, les modifications apportées au code existant, etc., dans la
branche du contributeur pour l'inclure dans la branche principale du projet ou dans d'autres succursales.
L'idiome de requête pull est désormais universellement implémenté dans les services d'hébergement Git.
GitHub n'est pas le seul service d'hébergement de référentiel utilisant Git, d'autres incluent Gitlab et
Bitbucket.
 Pour configurer Git, utilisez l'option —global pour définir les paramètres globaux initiaux.
Commande: git config --global key value
L'utilisation de l'option —global écrira dans le fichier global ~/.gitconfig.
Pour que chaque utilisateur soit responsable de ses modifications de code, chaque installation de Git doit
définir le nom et l'e-mail de l'utilisateur. Pour ce faire, utilisez les commandes suivantes:
$ git config --global user.name "<user's name>"
$ git config --global user.email "<user's email>"

- git init <project directory> : Lorsque vous exécutez la commande git clone, Git:
1.
Crée le répertoire de travail sur le système de fichiers local avec le nom du référentiel ou le
nom spécifié, le cas échéant.
2. Crée un répertoire .git dans le dossier nouvellement créé.
3. Copie les métadonnées du référentiel dans le répertoire .git nouvellement créé.
4. Crée la copie de travail de la dernière version des fichiers de projet.
5. Duplique la structure de branche du référentiel distant cloné et permet le suivi des
modifications apportées à chaque branche, localement et à distance — cela inclut la création et
l'extraction d'une branche active locale, "fourchée" à partir de la branche active actuelle du
référentiel cloné.
- Commande : git clone <repository> [target directory] : obtenir une copie des référentiels existant

- Git prend en charge quatre protocoles de transport principaux pour accéder à <repository>: Local,
Secure Shell (SSH), Git et HTTP.

- git status pour obtenir une liste de fichiers qui ont des différences entre le répertoire de travail et la
branche parent.git status fournit des informations supplémentaires telles que:

o Branche actuelle du répertoire de travail


o Nombre de validations dans le répertoire de travail se trouve derrière la dernière version de la
branche parent
o Instructions sur la mise à jour du référentiel local et comment stage/déstage des fichiers

- git diff : Comparer les modifications entre les fichiers.Pour afficher les modifications entre la version du
fichier dans le répertoire de travail et le dernier commit copié par le clone local depuis la branche parent
dans le dépôt Git:$ git diff <file path>

 Afficher les modifications entre la version du fichier dans le répertoire de travail et un commit
particulier à partir de l'historique des fichiers:$ git diff <commit id> <file path>

 Afficher les modifications entre deux fichiers dans le répertoire de travail ou sur le disque:
$ git diff <file path 1> <file path 2>

- Pour ajouter tous les fichiers modifiés à la zone de transit : $ git add <file path> / $git add <file path
1> ... <file path n> / $ git add.

- la commande git rm est utilisée pour supprimer des fichiers du dépôt Git et les ajouter à la zone de
transit.Pour supprimer le ou les fichiers spécifiés du répertoire de travail et ajouter la modification à la
zone de transit $ git rm <file path 1> ... <file path n>

Pour supprimer les fichiers spécifiés de la zone de transit sans supprimer de répertoire de travail,
utilisez la commande suivante:$ git rm --cached <file path 1> ... <file path n>
Cette option est un processus en deux étapes. Tout d'abord, utilisez la commande standard du
système de fichiers pour supprimer le ou les fichiers. Ensuite, ajoutez le fichier à la scène en utilisant
la commande Git add qui a été discuté plus tôt.Supprimez difinitivement
$ rm <file path 1> ... <file path n> ‫الملف يتنحى من الدوسية وين تخدم‬
$ git add <file path 1> ... <file path n> ‫ توة‬Git ‫يفهم اللي الملف تحذف ويضيف التغيير هذا‬

Mise à jour du référentiel local avec les modifications apportées à la zone de transit

Pour valider les modifications à partir de la zone de transit, utilisez la commande suivante :
$ git commit / $ git commit -m "<message>"
Cette commande combine toutes les modifications de contenu dans la zone de transit en un seul commit et
met à jour le dépôt Git local.
Git Revert est utilisé pour annuler une modification
La commande git reset est utilisée pour annuler définitivement un commit

Mise à jour du référentiel distant


Pour mettre à jour le contenu du référentiel local vers une branche particulière du référentiel distant, utilisez
la commande suivante : $ git push origine <branch name>
Cette commande ne s'exécutera pas correctement s'il y a un conflit avec l'ajout des modifications du dépôt
Git local au dépôt Git distant.
Pour mettre à jour le contenu du référentiel local vers la branche maître du référentiel distant, utilisez la
commande : $ git push origin master

Mise à jour de votre copie locale du référentiel


La mise à jour de la copie locale du référentiel est une étape manuelle.
Commande : git pull
Lors de l'exécution de la commande, les étapes suivantes se produisent :
 Le référentiel local (répertoire .git) est mis à jour avec le dernier commit, l'historique des fichiers,
etc. à partir du dépôt Git distant.
 Le répertoire de travail et la branche sont mis à jour avec le dernier contenu de l'étape 1.
 Un seul commit est créé sur la branche locale avec les modifications de l'étape 1.
 Le répertoire de travail est mis à jour avec le contenu le plus récent.
$ git pull Ou $ git pull origine
Pour mettre à jour la copie locale du dépôt Git à partir d'une branche spécifique, utilisez la commande
suivante : $ git pull origine <branch>
Création et suppression d'une branche
Option 1 : commande git branch pour lister, créer ou supprimer une branche.
Branche $ git <parent branch> <branch name>
Option 2 : commande git checkout pour changer de branche en mettant à jour le répertoire de travail avec le
contenu de la branche. $ git checkout -b <parent branch> <branch name>
Pour supprimer une branche, utilisez la commande suivante : $ git branche -d <branch name>
une liste de toutes les branches locales:$ git branche Ou$ git branche —list

Fusion accélérée
Une fusion rapide est lorsque l'algorithme Git est capable d'appliquer les modifications/commits de la
branche source à la branche cible automatiquement et sans conflit.
Fusionner les conflits
Un conflit de fusion est lorsque Git n'est pas en mesure d'effectuer une fusion rapide car il ne sait pas
comment appliquer automatiquement les modifications des branches ensemble pour le ou les fichiers.
 l'utilisateur doit corriger manuellement ces conflits avant que les branches puissent être fusionnées
ensemble. La correction manuelle du conflit ajoute une nouvelle validation à la branche cible
contenant les validations de la branche source, ainsi que le ou les conflits de fusion fixes.
Exécution de la fusion
Git fournit une commande git merge pour joindre deux ou plusieurs branches ensemble.
Pour fusionner une branche dans la branche/référentiel actuelle du client, utilisez la commande ci-dessous :
$ git merge <branch name>

Pour fusionner une branche dans une branche qui n'est pas la branche/référentiel actuelle du client, utilisez la
commande suivante :
$ git checkout <target branch name>
$ git fusion <source branch name>
Pour fusionner plus d'une branche dans la branche/référentiel actuelle du client, utilisez la commande ci-
dessous :
$ git merge <branch name 1>...<branch name n>

Qu'est-ce qu'un fichier .diff ?


Un fichier .diff est utilisé pour montrer comment deux versions différentes d'un fichier ont changé.
En utilisant des symboles spécifiques, ce fichier peut être lu par d'autres systèmes pour interpréter la manière
dont les fichiers peuvent être mis à jour.
Les symboles et les significations d'un fichier diff unifié sont les suivants :

 La commande git fetch récupère les mises à jour d’un dépôt distant mais ne les fusionne pas. Elle vous
permet de revoir les modifications avant de les intégrer.
 Dans Git, HEAD est un pointeur spécial ou une référence qui pointe vers le commit actuellement extrait
du référentiel.
 Affichage de l'historique des validations:Utilisez la commande git log pour afficher tous les validations
dans l'historique de la branche courante.
 La commande git blame est utilisée pour savoir quel commit est responsable des dernières
modifications apportées à un fichier. Syntaxe : $ git blame <nom de fichier>
 L'option -a n'affecte que les fichiers qui ont été modifiés et supprimés. Cela n'affecte pas les nouveaux
fichiers.git commit -a -m "Change Cisco to NetAcad"

Code Propre

Les codes propres sont le résultat de développeurs essayant de rendre leur code facile à lire et à comprendre
pour les autres développeurs.

Ils suivent certains principes communs liés à la mise en forme, à l'organisation, à l'intuitivité des
composants, à l'objectif et à la réutilisation.

Les codes propres mettent l'accent sur la normalisation, l'organisation appropriée, la modularité, la
fourniture de commentaires en ligne et d'autres caractéristiques qui aident à rendre le code auto-documenté.

Raisons pour lesquelles les développeurs veulent écrire du code propre

 Le code propre est plus facile à comprendre, plus compact et mieux organisé.
 Le code propre, étant modulaire, a tendance à être plus facile à tester en utilisant des méthodes
automatisées telles que les frameworks de test unitaire.
 Le code propre, normalisé, est plus facile à scanner et à vérifier à l'aide d'outils automatisés.
 C'est tout simplement plus agréable.

Méthodes et fonctions
Les méthodes et les fonctions sont des blocs de code qui effectuent des tâches lorsqu'elles sont exécutées.

Voici quelques bonnes pratiques standard pour déterminer si un morceau de code doit être encapsulé (dans
une méthode ou une fonction) :

 Le code qui effectue une tâche discrète, même si elle n'est effectuée qu'une seule fois, peut être
candidat à l'encapsulation.
 Le code de tâche utilisé plus d'une fois devrait probablement être encapsulé.
 Les méthodes et les fonctions peuvent être écrites une fois et exécutées autant de fois que
nécessaire.
 Si elles sont utilisées correctement, les méthodes et les fonctions simplifieront le code et réduiront
le risque de bogues.

Syntaxe d'une fonction en Python :

Les arguments et les paramètres ajoutent de la flexibilité aux méthodes et aux fonctions.

Déclarations de retour:

L'instruction return fait référence à la valeur de retour spécifiée à l'aide du mot-clé return suivi d'une variable
ou d'une expression.Une instruction return met fin à l'exécution d'une fonction et renvoie le contrôle à la
fonction appelante.

Lorsqu'une instruction return est exécutée, la valeur de l'instruction return est renvoyée et tout code ci-
dessous est ignoré.

Déclarations de retour:
L'instruction return fait référence à la valeur de retour spécifiée à l'aide du mot-clé return suivi d'une variable
ou d'une expression.Une instruction return met fin à l'exécution d'une fonction et renvoie le contrôle à la
fonction appelante.

Lorsqu'une instruction return est exécutée, la valeur de l'instruction return est renvoyée et tout code ci-
dessous est ignoré.

Syntaxe d'une fonction avec une instruction de retour en Python :

Méthodes Fonctions

Les méthodes sont des blocs de code asso Les fonctions sont des blocs de code auto
ciés à un objet, généralement pour la progr nomes.
ammation orientée objet.

Modules:

 Les développeurs utilisent généralement des modules pour diviser un grand projet en petites parties afin
que le code puisse être lu et compris facilement.
 Ils se composent d'un ensemble de fonctions et contiennent généralement une interface pour d'autres
modules à intégrer.
 Un module est empaqueté sous la forme d'un seul fichier et devrait fonctionner indépendamment.
 Il s'agit essentiellement d'une bibliothèque et ne peut pas être instanciée

Classes:

 Dans la plupart des langages Object-Orient Programming (OOP), et en Python, les classes sont un
moyen de grouper les données et les fonctionnalités. Chaque déclaration de classe définit un nouveau
type d'objet.
 Les classes peuvent avoir des variables de classe et des variables d'objet.
 De nouvelles classes peuvent être définies, en fonction des classes existantes précédemment définies, de
sorte qu'elles héritent des propriétés, des membres de données et des fonctionnalités (méthodes).
 Une classe peut être instanciée (créée) plusieurs fois, et chacune avec ses propres valeurs d'attribut de
données spécifiques à l'objet.

Examen de code :‫مراجعة الكود‬


 Un examen de code est lorsque les développeurs regardent la base de code, un sous-ensemble de code
ou des modifications de code spécifiques et fournissent des commentaires. Ces développeurs sont
souvent appelés réviseurs.
 Le processus de révision du code n'intervient qu'une fois que les modifications de code sont terminées et
testées.
 Le but des révisions de code est de s'assurer que le code final :
 Est facile à lire
 Est facile à comprendre
 Suit les meilleures pratiques de codage
 Utilise une mise en forme correcte
 Est exempt de bugs
 Dispose de commentaires et de documents appropriés

=> Le code est propre


Les manières de revoir et examiner le code les plus courants sont les suivants :
 Revue formel du code : Les développeurs ont une série de réunions pour examiner l'ensemble de la

base de code. Ce type de révision de code est souvent appelé inspection Fagan ‫ تفتيش‬et est

courant pour les projets qui utilisent la méthodologie de développement logiciel cascade.
 Revue du code basé sur les modifications : Également connu sous le nom d'examen de code
assisté par un outil, cet examen examine le code qui a été modifié à la suite d'un bogue, d'une
histoire d'utilisateur, d'une fonctionnalité, d'une validation, etc.
 Revue du code à l'épaule ‫المباشر‬: Un réviseur regarde par-dessus l'épaule‫ على المباشر‬du
développeur qui a écrit le code et fournit des commentaires.
 Transfert de mail: Il peut se produire à la suite des courriels automatiques envoyés par les
systèmes de gestion du code source lors d'un contrôle.

Les tests de logiciels sont classiquement subdivisés en deux catégories générales :


 Les tests fonctionnels visent à déterminer si le logiciel fonctionne correctement. Est-ce qu'il se
comporte comme prévu dans un sens logique, depuis les niveaux de détail les plus bas examinés
avec les tests unitaires, jusqu'aux niveaux plus élevés de complexité explorés dans les tests
d'intégration ?
 Les tests non fonctionnels examinent la facilité d'utilisation, les performances, la sécurité, la
résilience, la conformité, la localisation et bien d'autres problèmes. Ce type de test permet de
déterminer si le logiciel est adapté à ses besoins, fournit la valeur voulue et minimise les risques.
 Les développeurs traduisent les exigences sous forme de tests, puis écrivent des logiciels pour réussir
ces tests. C'est ce qu'on appelle Test-Driven Development (TDD).
Test unitaires:
 Test fonctionnel détaillé de petits morceaux de code (lignes, blocs, fonctions, classes et autres
composants isolés) est appelé Unit Testing.
 Ces frameworks de test sont des logiciels qui vous permettent de faire des assertions sur des conditions
testables et de déterminer si ces assertions sont valides à un moment de l'exécution.
Exemples de frameworks de test pour Python :

 PyTest: est pratique. Il exécute automatiquement tous les scripts qui commencent par test_ ou se
terminent par _test.py et dans ces scripts, exécute automatiquement toutes les fonctions commençant
par 'test_' ou 'tests_'.
Nous pouvons tester unitaire un morceau de code en le copiant dans un fichier, en important
pytest, en ajoutant des fonctions de test nommées, en enregistrant le fichier sous un nom de fichier
qui commence également par 'tests_ », et en l'exécutant avec PyTest.
 unittest : exige une syntaxe différente de PyTest.
Pour unittest, vous devez sous-classer la classe TestCase intégrée et tester en remplaçant ses
méthodes intégrées ou en ajoutant de nouvelles méthodes dont les noms commencent par 'test_'.

Test d’integration:
Les tests d'intégration garantissent que toutes les unités individuelles s'intègrent correctement pour faire une
application complète.

Développement piloté par les tests (TDD)


 Si vous voulez tester votre code pour valider l'application à la lumière des exigences, cela implique que
vous devez écrire le code de test avant même d'écrire le code de l'application.
 Après avoir exprimé les exigences dans votre code de test, vous pouvez ensuite écrire le code
d'application jusqu'à ce qu'il réussisse les tests que vous avez créés dans le code de test.
 Le modèle de base de TDD est un processus répété en cinq étapes :
 Créez un nouveau test.
 Exécutez des tests pour voir si un échoue pour des raisons inattendues.
 Écrivez le code de l'application pour réussir le nouveau test.
 Exécutez des tests sur le code de l’application pour voir s'il y a un échec.
 Améliorer le code de l'application.

Formats de données
 Les API REST vous permettent d'échanger des informations avec des services et équipements distants.
 Les trois formats standard les plus populaires pour l'échange d'informations avec les API distantes sont
XML, JSON et YAML.
 L'analyse XML, JSON ou YAML est une exigence fréquente d'interaction avec les API. Un modèle
souvent rencontré dans les implémentations d'API REST est le suivant :
 Authentifier, généralement en affichant une combinaison utilisateur/mot de passe et en récupérant
un jeton expirant pour l'authentification des demandes ultérieures.
 Exécutez une requête GET vers un point de terminaison donné (authentification si nécessaire) pour
récupérer l'état d'une ressource, demandant XML, JSON ou YAML comme format de sortie.
 Modifiez le fichier XML, JSON ou YAML renvoyé.
 Exécutez un POST (ou PUT) sur le même point de terminaison (encore une fois, en s'authentifiant
si nécessaire) pour modifier l'état de la ressource, en demandant à nouveau XML, JSON ou YAML
comme format de sortie et en l'interprétant selon les besoins pour déterminer si l'opération a réussi.

XML (Extensible Markup Language) est une méthodologie générique pour envelopper des données
textuelles dans des balises symétriques pour indiquer la sémantique.
Il est un dérivé de Structured Generalized Markup Language (SGML), et également le parent de HyperText
Markup Language (HTML).Les noms de fichiers XML se terminent généralement par « .xml ».

Corps

Corps du document XML : À l'exception des deux premières lignes d'un document XML, le reste du
document est considéré comme le corps.
Noms de balises définis par l'utilisateur : les noms de balises XML sont définis par l'utilisateur. Si vous
composez du XML pour votre propre application, choisissez des noms de balises qui expriment clairement
la signification des éléments de données, leurs relations et leur hiérarchie.
Encodage de caractères spécial :Les données sont transmises en XML sous forme de texte lisible.
Prologue XML : Le prologue XML est la première ligne d'un fichier XML.
Commentaires en XML : les fichiers XML peuvent inclure des commentaires, en utilisant la même
convention de commentaire utilisée dans les documents HTML.
Attributs XML : XML vous permet d'incorporer des attributs dans des balises pour transmettre des
informations supplémentaires.

les espaces de noms XML


Les espaces de noms sont définis par l'IETF et d'autres autorités Internet, organisations et autres entités, et
leurs schémas sont généralement hébergés en tant que documents publics sur le Web.
Les espaces de noms sont identifiés par des URI (Uniform Resource Names) pour rendre les documents
persistants accessibles sans que le demandeur ait à se préoccuper de leur emplacement.
L'exemple de code ci-dessous montre l'utilisation d'un espace de noms, défini comme la valeur d'un attribut
xmlns, pour affirmer que le contenu d'un appel de procédure distante XML doit être interprété
conformément à la norme NETCONF 1.0 héritée.

Interprétation du XML
Dans l'exemple des espaces de noms XML, la structure est représentée sous la forme d'une liste ou d'un
tableau unidimensionnel (appelé 'instances') d'objets (chacun identifié comme 'instance' par des balises de
bracketing). Chaque objet d'instance contient deux paires clé-valeur indiquant un ID d'instance unique et un
type de serveur VM.

JSON:
JSON, ou JavaScript Object Notation, est un format de données dérivé de la façon dont les littéraux d'objets
complexes sont écrits en JavaScript.
Les noms de fichiers JSON se terminent généralement par « .json ».
Voici un exemple de fichier JSON, contenant deux valeurs qui sont des chaînes de texte, l'une est une valeur
booléenne et deux sont des tableaux :

Types de données de base JSON : les types de données de base JSON incluent des nombres, des chaînes,
des booléens ou des nulls.
Objets JSON : Comme en JavaScript, les objets individuels dans JSON comprennent des paires clé/valeur,
qui peuvent être entourées d'accolades, individuellement.
Cartes et listes JSON: Dans ce cas, chaque paire clé/valeur n'a pas besoin de son propre ensemble de
crochets, mais l'objet entier le fait.Les objets composés JSON peuvent être profondément imbriqués, avec
une structure complexe. Il peut également exprimer des tableaux ordonnés JavaScript (ou « listes ») de
données ou d'objets.
Aucun commentaire dans JSON : Contrairement à XML et YAML, JSON ne prend en charge aucun type
de méthode standard pour inclure des commentaires non analysés dans le code.
Espaces insignifiants : les espaces dans JSON ne sont pas significatifs, et les fichiers peuvent être indentés
en utilisant des onglets ou des espaces comme vous le souhaitez, ou pas du tout. (l’espace n’a pas aucun
effet)

YAML:
YAML Ain't Markup Language (YAML) est un sur-ensemble de JSON conçu pour une lisibilité humaine
encore plus facile.
En tant que sur-ensemble de JSON, les analyseurs YAML peuvent généralement analyser des documents
JSON (mais pas vice-versa).
Par conséquent, YAML est meilleur que JSON à certaines tâches, y compris la possibilité d'intégrer JSON
directement (y compris les guillemets) dans les fichiers YAML.

Structure de fichiers YAML : Les fichiers YAML s'ouvrent conventionnellement avec trois tirets (— seuls
sur une ligne) et se terminent par trois points (... de même).
Types de données YAML : Les types de données de base YAML incluent des nombres, des chaînes, des
booléens ou des nulls.
Objets de base : Dans YAML, les types de données de base sont assimilés aux clés.
YAML Indentation et structure de fichier : YAML indique sa hiérarchie à l'aide de l'indentation.
Cartes et listes : YAML représente facilement des types de données plus complexes, tels que des cartes
contenant plusieurs paires clé/valeur et des listes ordonnées.
 Les cartes sont généralement exprimées sur plusieurs lignes, en commençant par une clé
d'étiquette et un deux-points, suivis par des membres, en retrait sur les lignes suivantes :

Les listes (tableaux) sont représentées par des membres en retrait optionnel précédés d'un tiret et d'un espace
uniques :

Les cartes et les listes peuvent également être représentées dans une soi-disant « syntaxe de flux », qui
ressemble beaucoup à JavaScript ou Python :
Longues chaînes :Elles sont représentées à l'aide d'une syntaxe « pliante », où les sauts de ligne sont
présumés être remplacés par des espaces lorsque le fichier est analysé/consommé, ou dans une syntaxe sans
pliage.

Commentaires : Les commentaires dans YAML peuvent être insérés n'importe où sauf dans une longue
chaîne littérale, et sont précédés du signe de hachage et d'un espace.
ce
#This is a comment
Plus de fonctionnalités YAML : YAML a beaucoup plus de fonctionnalités, le plus souvent rencontrées lors
de l'utilisation dans le contexte de langages spécifiques, comme Python, ou lors de la conversion en JSON
ou d'autres formats. Par exemple, YAML 1.2 prend en charge les schémas et les balises, qui peuvent être
utilisés pour désambigurer l'interprétation des valeurs.
Par exemple, pour forcer un nombre à être interprété comme une chaîne, vous pouvez utiliser le ! !str, qui
fait partie du schéma YAML « Failsafe »

Analyse et serialisation:
Analyser signifie analyser un message, le diviser en ses parties constitutives, et comprendre leurs objectifs
en contexte.
La sérialisation est à peu près le contraire de l'analyse.
Les langages de programmation populaires tels que Python intègrent généralement des fonctions d'analyse
faciles à utiliser qui peuvent accepter les données renvoyées par une fonction d'E/S et produire une structure
de données interne sémantique équivalente contenant des données typées valides.
Du côté sortant, ils contiennent des sérialiseurs qui transforment les structures de données internes en
messages sémantiques équivalents formatés sous forme de chaînes de caractères.

Resumer de module
 Six phases de SDLC : Exigences et analyse, conception, implémentation, test, déploiement et
maintenance.
 Trois modèles de développement logiciel populaires sont Waterfall, Agile et Lean.
 Le modèle de conception MVC simplifie le développement d'applications qui dépendent des
interfaces utilisateur graphiques.
 Le contrôle de version conserve l'historique des modifications apportées à un fichier. Types de
systèmes de contrôle de version : Local, Centralisé et Distribué.
 Git est une implémentation open source d'un système de contrôle de version distribué et dispose de
deux types de référentiels : local et distant.
 Le code propre est le résultat de développeurs essayant de rendre leur code facile à lire et à
comprendre pour les autres développeurs.
 La révision du code implique l'examen d'une base de code, d'un sous-ensemble de code ou d'un
changement de code spécifique pour fournir des commentaires.
 Trois formats standard les plus populaires pour l'échange d'informations avec des API distantes :
XML, JSON et YAML.
 L'analyse nécessite d'analyser un message, de le diviser en parties constitutives et de comprendre
leurs objectifs en contexte. La sérialisation est à peu près le contraire.

Python:
La commande pip3 freeze, quand elle est exécutée dans un environnement virtuel Python 3, affiche une liste
de toutes les dépendances Python installées dans cet environnement.

4.API:
Les API définissent la façon dont les utilisateurs, les développeurs et les autres applications interagissent
avec les composants d'une application. Avec tant d'API à utiliser, vous devez être sûr de bien comprendre les
fondements.
Une API permet à un logiciel de parler à un autre. Un API est semblable à une prise de courant. Sans prise
de courant, que devriez-vous faire pour alimenter votre ordinateur portable?
 Ouvrir le mur Dénuder les fils
 Épisser les fils ensemble
 Comprendre tous les fils dans le mur
Une API peut utiliser des interactions Web courantes ou des protocoles de communication, et elle peut
également utiliser ses propres normes propriétaires. Par exemple, une application de recommandation de
restaurants peut utiliser une API de carte pour afficher les lieux, sans développer elle-même une fonction de
mappage. L'API définit ce qui est accessible et comment, garantissant que les fonctionnalités partagées le
sont de manière sécurisée.
Les API peuvent être livrées de l'une des deux manières suivantes: synchrone ou asynchrone.
 Les API synchrones :
répondent directement à une demande, fournissant généralement des données (ou une autre réponse
appropriée) immédiatement.

Quand les API sont-elles synchrones?

Les API sont généralement conçues pour être synchrones lorsque les données de la requête sont facilement
disponibles, par exemple lorsque les données sont stockées dans une base de données ou dans une mémoire
interne. Le serveur peut immédiatement récupérer ces données et répondre immédiatement.
Avantages d'une conception d'API synchrone:

Les API synchrones permettent à l'application de recevoir des données immédiatement. Si l'API est
conçue correctement, l'application aura de meilleures performances car tout se passe rapidement.
Cependant, si elle n'est pas conçue correctement, la requête API sera un goulot d'étranglement car
l'application doit attendre la réponse.

 Les API asynchrones :

fournissent une réponse indiquant que la demande a été reçue, mais que cette réponse ne contient pas de
données réelles. Le serveur traite la demande, ce qui peut .prendre du temps, et envoie une notification (ou
déclenche un rappel) avec les données après le traitement de la demande. Le client peut alors agir sur les
données renvoyées.

Quand les API sont-elles asynchrones?

Les API sont généralement conçues pour être asynchrones lorsque la requête est une action qui prend un
certain temps pour le serveur ou si les données ne sont pas facilement disponibles.

Avantages d'une conception d'API asynchrone

Les API asynchrones permettent à l'application de poursuivre l'exécution sans être bloquée pendant le temps
nécessaire au serveur pour traiter la demande. Par conséquent, l'application peut avoir de meilleures
performances car elle peut multitâche et faire d'autres requêtes. Cependant, l'utilisation inutile ou excessive
d'appels asynchrones peut avoir l'effet inverse sur les performances.

Les trois types les plus populaires de styles architecturaux API sont RPC, SOAP et REST.

1) Remote Procedure Call (RPC) est un modèle requête-réponse qui permet à une application
(agissant en tant que client) d'effectuer un appel de procédure à une autre application
(agissant en tant que serveur). L'application «serveur» se trouve généralement sur un autre
système du réseau.

+ Dans l'utilisation la plus courante de RPC, le client envoie une requête synchrone au serveur et
est bloqué pendant que le serveur traite la demande.

2) SOAP est un protocole de messagerie. Il est utilisé pour communiquer entre des applications
qui peuvent être sur différentes plates-formes ou construites avec différents langages de
programmation. Il s'agit d'un protocole basé sur XML qui a été développé par Microsoft.
SOAP est couramment utilisé avec le transport HTTP (HyperText Transfer Protocol),
mais peut être appliqué à d'autres protocoles. SOAP est indépendant, extensible et neutre.
Indépendant

SOAP a été conçu pour que tous les types d'applications puissent communiquer les uns
avec les autres. Les applications peuvent être construites en utilisant différents langages de
programmation, peuvent fonctionner sur différents systèmes d'exploitation et peuvent être
aussi différentes que possible.

Extensibles

SOAP lui-même est considéré comme une application de XML, donc les extensions peuvent
être construites au-dessus de celui-ci. Cette extensibilité vous permet d'ajouter des
fonctionnalités telles que la fiabilité et la sécurité.

Sans opinion

SOAP peut être utilisé sur n'importe quel protocole, y compris HTTP, SMTP, TCP, UDP ou
JMS.

Messages SOAP

Un message SOAP est juste un document XML qui peut contenir quatre éléments:

o Envelope : C'est l'élément racine qui utilise l'espace de noms SOAP


(http://www.w3.org/2003/05/soap-envelope) pour indiquer qu'il s'agit d'un message SOAP.

o Header : Dans cet exemple, l'en-tête contient des informations d'authentification avec un
élément AuthHeader, incluant Username et Password comme exemples.
o Body : C'est l'élément central qui transporte les données destinées au destinataire. Ici, nous
avons une requête GetDataRequest avec des paramètres Parameter1 et Parameter2.

o Fault (facultatif) : Si une erreur se produit, un élément Fault serait ajouté

3) REST :

Style architectural défini par Roy Fielding dans sa thèse de 2000, combinant plusieurs
concepts pour définir une interface de connecteur uniforme. Roy Fielding définit REST
comme un style hybride, dérivé de plusieurs styles architecturaux basés sur le réseau qu'il a
décrits ailleurs dans le document.

Six contraintes de REST :

 Client-serveur : Séparation des rôles du client et du serveur pour faciliter la portabilité et la


simplification du développement.

 Sans état : Chaque requête contient toutes les informations nécessaires ; pas de session côté
serveur.

 Mémoire cache : Les réponses du serveur peuvent être mises en cache pour améliorer les
performances.

 Interface uniforme : Principes d’interaction cohérents, incluant :

o Identification des ressources : Une ressource doit être identifiée dans la demande
comme l'objet individuel auquel le serveur accédera et manipulera. Une ressource
peut être n'importe quelle information telle qu'un document, une image, une personne,
une collection d'autres ressources, etc. Par exemple, dans la demande de modification
d'un mot de passe pour un utilisateur, l'utilisateur individuel doit être identifié.

o Manipulation des ressources via des représentations : le client reçoit une


représentation de la ressource du serveur. Cette représentation doit contenir
suffisamment de données ou de métadonnées pour que le client puisse manipuler la
ressource

o Messages auto-descriptifs : Chaque message doit contenir toutes les informations


permettant au destinataire de traiter le message. Des exemples d'informations peuvent
être:

 Type de protocole
 Le format de données du message
 L'opération demandée
o Hypermedia comme moteur de l'état de l'application : Les données envoyées par
le serveur doivent inclure des actions et des ressources supplémentaires disponibles
pour que le client puisse accéder à des informations supplémentaires sur la ressource.

 Système en couches : Structure en couches où chaque niveau offre des services aux niveaux
supérieurs et consomme les services des niveaux inférieurs.

 Code à la demande (facultatif) : Possibilité pour le serveur d’envoyer du code exécutable au


client pour enrichir les fonctionnalités, mais à utiliser avec prudence pour des raisons de
sécurité

 Ce sont les bases de REST qui le rendent "RESTful" lorsqu'elles sont appliquées.

Une API de service Web REST (REST API) est une interface de programmation qui communique via
HTTP tout en respectant les principes du style architectural REST.

Parce que les API REST communiquent via HTTP, elles utilisent les mêmes concepts que le protocole
HTTP: Requêtes/réponses HTTP | Verbes HTTP | Codes d'état HTTP |Entêtes/corps HTTP

 Les requêtes d'API REST sont composées de quatre composants principaux:

 Identificateur de ressources uniformes (URI)(1)


 Méthode HTTP
 En-tête
 Corps

(1) Un URI est essentiellement le même format que l'URL que vous utilisez dans un navigateur pour
accéder à une page Web. La syntaxe comprend les composants suivants dans cet ordre particulier:

 Système : les deux options sont:


 http — la connexion est ouverte
 https -- la connexion est sécurisée
 Autorité : compose de deux parties(hôte , port) : L' hôte est le nom d'hôte ou l'adresse IP du serveur
qui fournit l'API REST (service Web). Le port est le point de terminaison de communication, ou le
numéro de port, associé à l'hôte. Le port est toujours précédé d'un deux-points (:). Notez que si le
serveur utilise le port par défaut (80 pour HTTP et 443 pour HTTPS), le port peut être omis de l'URI.
 Chemin : Pour une API REST, le chemin est généralement connu sous le nom de chemin de
ressource et représente l'emplacement de la ressource, des données ou de l'objet, à manipuler sur le
serveur. Le chemin est précédé d'une barre oblique (/) et peut se composer de plusieurs segments
séparés par une barre oblique (/).
 Requête : Si la requête est présente, elle est précédée d'un point d'interrogation ( ? ). Il n'existe pas
de syntaxe spécifique pour les paramètres de requête, mais elle est généralement définie comme un
ensemble de paires clé-valeur séparées par une esperluette (&).
Par exemple : http://example.com/update/person?id=42&email=person%40example.com

Hôte : Port / Chemin /

(2) Methode http :

(3) En-têtes HTTP : Les API REST utilisent des en-têtes HTTP pour échanger des informations
supplémentaires entre le client et le serveur. Les en-têtes sont des paires nom-valeur ([nom]:[valeur]) et
peuvent être des en-têtes standards ou personnalisés.

 Types d’en-têtes :

 En-têtes de requête : Fournissent des informations supplémentaires sur la requête mais ne


concernent pas directement le contenu du message.
 En-têtes d’entité : Décrivent le contenu du corps de la requête, comme le type de données.

(4) Corps de la requête : Utilisé avec certaines méthodes HTTP (comme POST, PUT, PATCH)
pour envoyer les données relatives à la ressource que le client veut manipuler. Si un corps est présent,
l'en-tête Content-Type doit indiquer le type de données envoyé.

Les réponses API REST sont essentiellement des réponses HTTP. Ces réponses communiquent les
résultats de la requête HTTP d'un client. La réponse peut contenir les données demandées, indiquer que
le serveur a reçu sa demande, ou même informer le client qu'il y a eu un problème avec sa demande.
Les réponses API REST sont similaires aux requêtes, mais sont composées de trois composants
principaux:

 État HTTP
 En-tête
 Corps

État HTTP

Les API REST utilisent les codes d'état HTTP standard dans la réponse pour informer le client si la
requête a réussi ou échoué. Le code d'état HTTP lui-même peut aider le client à déterminer la
raison de l'erreur et peut parfois fournir des suggestions pour résoudre le problème.

Les codes d'état HTTP sont toujours à trois chiffres. Le premier chiffre correspond à la catégorie de la
réponse. Les deux autres chiffres n'ont pas de sens, mais sont généralement assignés par ordre
numérique. Il y a cinq catégories différentes:

 1xx – Informationnel : le serveur a reçu la demande mais n'a pas fini de la traiter
 2xx – Succès : le serveur a reçu et accepté la demande
 3xx – Redirection : le client a une action supplémentaire à prendre pour que la demande soit
complétée
 4xx - Erreur du client : la requête contient une erreur, telle qu'une mauvaise syntaxe ou une entrée
non valide
 5xx - Erreur du serveur : le serveur est incapable de répondre à la demande même si la demande
elle-même est valide

Réponses de succès (2xx)

 200 OK : La requête a réussi et le serveur renvoie les données demandées.


 201 Créé : Une nouvelle ressource a été créée avec succès.
 202 Accepté : La requête a été acceptée pour traitement, mais le traitement n’est pas encore terminé.

Erreurs côté client (4xx)

 400 Requête incorrecte : Le serveur ne peut pas traiter la requête en raison d’une erreur du client
(syntaxe invalide, paramètres manquants, etc.).
 401 Non autorisé : La requête nécessite une authentification, mais les identifiants fournis sont
invalides ou manquants.
 403 Interdit : Le serveur comprend la requête mais refuse de l’exécuter (souvent à cause de
permissions insuffisantes).
 404 Introuvable : La ressource demandée est introuvable sur le serveur.
Erreurs côté serveur (5xx)

 500 Erreur interne du serveur : Le serveur a rencontré une condition inattendue qui l’empêche de
traiter la requête.
 503 Service indisponible : Le serveur est temporairement incapable de traiter la requête (surcharge,
maintenance, etc.).

=>Vous pouvez obtenir des détails sur chaque code d'état HTTP à partir du registre officiel des codes
d'état HTTP, qui est géré par Internet Assigned Numbers Authority (IANA).

En-têtes de réponse:

En-têtes d'entité Les en-têtes d'entité sont des informations supplémentaires qui décrivent le contenu du
corps du message.

 Corps de la réponse de l'API :


Le corps de la réponse contient les données demandées par le client. Parfois, quand la requête échoue, ce
corps peut fournir des informations supplémentaires pour aider à comprendre le problème.
 Pagination des réponses :
Quand une API doit envoyer beaucoup de données, elle les divise en plusieurs parties pour économiser
de la bande passante. Le client peut demander une certaine page de données, et l'API répond avec la page
correspondante. La pagination est souvent gérée via des paramètres dans la requête.
 Données compressées :
Pour les grandes quantités de données, l'API peut compresser les réponses pour économiser de la
bande passante. Le client demande la compression dans la requête, et le serveur envoie les données
compressées.
 Diagrammes de séquence avec API REST :
Un diagramme de séquence montre les échanges entre les différentes parties d’un système, comme un
client et un serveur. Dans le contexte d’une API REST, il montre comment les requêtes et les réponses se
produisent entre le client, le serveur et d'autres composants, comme une base de données. Les échanges
peuvent être synchrones (un échange complet avant le suivant) ou asynchrones (l’échange continue après
une période).

 Pour des raisons de sécurité, la plupart des API REST nécessitent une authentification afin que les
utilisateurs aléatoires ne puissent pas créer, mettre à jour ou supprimer des informations de
manière incorrecte ou malveillante

L'authentification est l'acte qui consiste à vérifier l'identité de l'utilisateur. L'utilisateur prouve qu'il est ce
qu'il dit être. Par exemple, lorsque vous vous rendez à l'aéroport, vous devez présenter votre pièce d'identité
délivrée par le gouvernement ou utiliser des données biométriques pour prouver que vous êtes la personne
que vous prétendez être.

Mécanismes de l’authentification :
 Authentification de base :

 Utilise un nom d'utilisateur et un mot de passe encodés en Base64.


 Transmise dans l'en-tête : Authorization: Basic <username>:<password>.
 Peu sécurisée à moins d'être utilisée avec HTTPS.

 Authentification au porteur (Bearer) :

 Utilise un jeton généré par un serveur d'authentification (souvent avec OAuth ou SSO).
 Transmise dans l'en-tête : Authorization: Bearer <bearer token>.
 Plus sécurisée que l'authentification de base et doit être utilisée avec HTTPS.

 Clé API :

 Une chaîne alphanumérique unique assignée à un utilisateur par un serveur.


 Peut être partagée dans l'URL, l'en-tête, ou le corps de la requête.
 Utilisée principalement avec HTTPS pour garantir la sécurité.
 Clé publique (partageable) et clé privée (ne doit pas être partagée). Les clés API n'expirent
généralement pas.

L'autorisation est l'utilisateur prouvant qu'il dispose des autorisations nécessaires pour effectuer l'action
demandée sur cette ressource. Par exemple, lorsque vous allez à un concert, tout ce que vous avez besoin de
montrer est votre billet pour prouver que vous êtes autorisé à y entrer. Vous n'avez pas nécessairement à
prouver votre identité.
Mécanismes de l’autorisation :

1. OAuth (Open Authorization) :


o OAuth combine authentification et autorisation pour donner à des applications tierces un
accès limité à des ressources protégées, sans partager les informations d'identification de
l'utilisateur.
o OAuth est plus sécurisé que d'autres méthodes d'authentification, c'est pourquoi il est souvent
recommandé pour les API REST.
o Il existe deux versions principales : OAuth 1.0 et OAuth 2.0, ce dernier étant le plus utilisé
aujourd'hui. Il n'est pas rétrocompatible avec OAuth 1.0.
2. Fonctionnement de OAuth 2.0 :
o OAuth 2.0 permet à une application tierce d'agir pour le compte d'un utilisateur, sans que
celui-ci n'ait à transmettre ses informations d'identification.
o Le processus implique l'obtention d'un jeton d'accès après une interaction entre l'utilisateur
et le serveur d'autorisation (souvent un fournisseur d'identité).
o L'application utilise ce jeton pour s'authentifier via l'authentification au porteur.
o Le service de l'API REST vérifie la validité du jeton auprès du serveur d'autorisation avant de
permettre l'accès aux ressources.

En résumé, OAuth 2.0 permet une gestion sécurisée de l'accès aux données d'un utilisateur sans exposer ses
informations sensibles à des applications tierces.

 Limitation de débit API :


o Elle permet de contrôler le nombre de requêtes qu'un utilisateur ou une application peut
faire dans un délai donné.
o C'est une pratique courante pour les API publiques, afin d'éviter une surcharge des serveurs et
de garantir une utilisation équitable des ressources.
 Bénéfices de la limitation de débit :
o Éviter la surcharge du serveur : en limitant les requêtes simultanées, on évite que le serveur
ne soit submergé par un trop grand nombre de demandes.
o Améliorer le service : en régulant le nombre de requêtes, cela permet d'assurer un meilleur
temps de réponse pour tous les utilisateurs.
o Protéger contre les attaques DoS (Denial of Service) : limiter le nombre de requêtes par
utilisateur permet de se prémunir contre les attaques où un serveur est submergé de demandes
malveillantes.
 Gestion des limites de débit :
o Les utilisateurs doivent comprendre les algorithmes utilisés pour limiter les requêtes afin de
ne pas dépasser ces limites.
o Les applications doivent être conçues pour gérer proprement les erreurs liées à ces limites,
comme les réponses d'erreur lorsque la limite est atteinte (par exemple, un code HTTP 429
pour trop de requêtes).

En résumé, la limitation de débit est essentielle pour la performance, la sécurité et la gestion des ressources
d'une API.

Il existe plusieurs algorithmes pour limiter le débit des requêtes dans les API REST. Les plus courants sont :
1. Seau qui fuit (Leaky Bucket) : Les requêtes entrantes sont placées dans une file d'attente et traitées
à un rythme constant. Si la file d'attente est pleine, la demande est rejetée.
2. Seau à jetons (Token Bucket) : Chaque utilisateur reçoit un nombre de jetons qu'il peut utiliser dans
un certain intervalle de temps. Lorsqu'un utilisateur fait une demande, un jeton est retiré et la
demande est traitée. Si aucun jeton n'est disponible, la demande est rejetée. Les jetons sont
réapprovisionnés à intervalles réguliers.
3. Compteur de fenêtre fixe (Fixed Window Counter) : Un compteur fixe est utilisé pour déterminer
combien de requêtes peuvent être traitées dans une période donnée. Si la limite est atteinte, les
requêtes suivantes sont rejetées jusqu'à ce que la période soit réinitialisée.
4. Compteur de fenêtre coulissante (Sliding Window Counter) : Semblable au compteur de fenêtre
fixe, mais il prend en compte les demandes effectuées dans un laps de temps glissant. Si la limite est
atteinte dans les 60 dernières secondes, la demande sera rejetée.

La documentation d'une API inclut généralement des informations sur la limitation du débit et l'unité
de temps. En outre, beaucoup d'API ajoutent ces informations dans les en-têtes de réponse. Cependant,
comme il n'y a pas de standard unique, les clés utilisées dans ces en-têtes peuvent varier d'une API à
l'autre. Voici quelques exemples courants :

1. X-RateLimit-Limit : Indique le nombre maximal de requêtes que l'utilisateur peut faire dans une
période donnée.
2. X-RateLimit-Remaining : Montre le nombre de requêtes restantes que l'utilisateur peut effectuer
avant de dépasser la limite.
3. X-RateLimit-Reset : Indique l'heure à laquelle la fenêtre de limitation du débit sera réinitialisée.

Ces informations permettent au client de suivre combien de demandes supplémentaires il peut encore
faire dans la fenêtre actuelle, ce qui aide à éviter de dépasser la limite de débit.

Dépassement de la limite de débit

Si la limite est dépassée, le serveur rejette la requête et renvoie une réponse HTTP avec un message
d'erreur. En plus du message, le serveur envoie généralement un code d'état HTTP pour indiquer
l'erreur. Les codes les plus utilisés sont :

 429: Too Many Requests : Cela signifie que l'utilisateur a effectué trop de demandes dans un laps
de temps.
 403: Forbidden : L'accès est interdit, souvent utilisé quand la limite a été dépassée.

Il est important que le client soit programmé pour gérer ces codes d'état spécifiques selon l'API qu'il
utilise.

Un webhook est un mécanisme qui permet à une application de recevoir des notifications en temps
réel lorsqu'un événement spécifique se produit sur une autre plateforme. Ce mécanisme fonctionne
comme un rappel HTTP ou un HTTP POST envoyé à une URL spécifique que vous avez fournie à
l'avance. L'idée est simple : au lieu de demander constamment à un service si un événement a eu lieu
(ce qu'on appelle "l'interrogation"), le service vous prévient directement dès que l'événement se
produit.

Comment ça fonctionne ?

Les webhooks permettent d'éviter l'interrogation, qui consiste à envoyer régulièrement des requêtes
pour vérifier si une condition est remplie. Cela peut être inefficace et peu performant, car chaque
interrogation nécessite un traitement, tant du côté client que du serveur. De plus, l'interrogation n'est
pas en temps réel, car elle se fait à intervalles fixes, ce qui peut entraîner des retards dans la
réception des notifications d'événements.

Avec un webhook, lorsque l'événement survient, le serveur envoie immédiatement un HTTP POST
à l'URL que vous avez enregistrée. Cela permet de recevoir les données en temps réel, sans avoir
besoin de sonder continuellement l'API. Ce mécanisme est donc plus efficace et réactif.

Les rôles inversés

Les webhooks sont aussi appelés des API inversées car l'application s'abonne à un serveur webhook.
L'application fournit un URI (Uniform Resource Identifier) à l'avance, et le serveur appelera cet URI
lorsqu'un événement se produira. Ainsi, le serveur devient l'appelant et l'application l'appelé, ce qui
inverse les rôles habituels des appels API où l'application est l'appelante et le serveur l'appelé.

Exemple d'utilisation

 Cisco DNA Center : Ce service propose des webhooks pour permettre aux applications tierces de
recevoir des notifications lorsqu'un événement réseau se produit. Par exemple, si un périphérique
réseau devient inaccessible, un webhook envoie un HTTP POST à l'URL de l'application, qui reçoit
un message détaillant l'incident. ‫ يوفروا‬webhooks ‫لتمكين التطبيقات من استقبال إشعارات في حالة‬
‫وقوع أحداث معينة في الشبكة‬.
 Cisco Webex Teams : Vous pouvez configurer un webhook pour recevoir des notifications à chaque
fois qu'un nouveau message est posté dans une salle spécifique. Cela évite de devoir interroger
constamment l'API de Webex pour vérifier la présence de nouveaux messages. ‫ تقدر تضبط‬webhook
‫باش توصلك إشعارات كلما يتكتب رسالة جديدة في غرفتكم‬.

En résumé

Les webhooks améliorent l'efficacité des applications en permettant de recevoir des notifications
immédiates sans avoir besoin de recourir à l'interrogation, ce qui réduit la charge serveur et permet
une communication en temps réel.

Exigences à respecter pour consommer un webhook :

1. L'application doit être en fonctionnement : L'application doit être active en permanence pour
pouvoir recevoir les requêtes HTTP POST envoyées par le fournisseur du webhook. Cela signifie
qu'elle doit être accessible et capable de traiter les requêtes entrantes.
2. Enregistrement d'un URI auprès du fournisseur de webhook : L'application doit fournir une
URL (URI) au fournisseur de webhook, de manière à ce que le fournisseur sache où envoyer la
notification lorsque l'événement cible se produit. C'est cette URL qui sera utilisée pour notifier
l'application.
3. Gestion des notifications entrantes : Une fois qu'un webhook envoie une notification à l'URI de
l'application, cette dernière doit être capable de la recevoir et de la traiter. L'application devra
décoder la notification (souvent sous forme de données JSON) et y réagir en fonction de
l'événement.

Difficultés liées aux webhooks :

Travailler avec des webhooks peut parfois être complexe car il s'agit souvent d'une interaction avec
un tiers (le fournisseur du webhook). Si un problème survient, il peut être difficile de diagnostiquer
la cause, car l'événement peut provenir de plusieurs sources (le serveur, le réseau, etc.).

Outils de test pour webhooks :

Il existe plusieurs outils en ligne gratuits qui peuvent vous aider à tester et à déboguer vos webhooks.
Ces outils permettent à votre application de recevoir des notifications et de visualiser leur contenu.
Ils sont très utiles lors de la conception et de l'implémentation de webhooks pour vérifier que tout
fonctionne correctement avant de passer à une utilisation en production. Certains de ces outils vous
permettent même de simuler des notifications pour tester le comportement de votre application.

Exemple d'outils de test populaires :

 Webhook.site : Permet de recevoir et de visualiser les requêtes webhook envoyées par un serveur.
 RequestBin : Crée un endpoint pour capturer les requêtes HTTP entrantes et inspecter les données.
 ngrok : Permet de créer un tunnel vers un serveur local pour tester des webhooks en environnement
de développement.

Ces outils vous permettent de valider facilement le bon fonctionnement de vos webhooks avant de
les déployer en production.

Dépannage des requêtes API REST

À un certain moment, vous vous retrouverez à faire des requêtes d'API REST et ne pas obtenir la
réponse que vous attendiez. Dans cette partie, vous apprendrez à résoudre les problèmes d'API REST
les plus courants

Erreur côté client

Si une requête échoue, commencez par vérifier si le problème vient du côté client.
Questions à se poser :

 L'URI est-elle correcte ? : Une erreur courante est l'URI mal formée. Vérifiez toujours le guide de
l'API pour vous assurer que l'URI que vous utilisez est valide.
o Exemple : Si l'URI est incorrect et qu'il manque un schéma (comme http:// ou https://), vous
pourriez obtenir une erreur MissingSchema dans le traçage des logs.
o Exemple de nom de domaine incorrect : si le domaine spécifié dans l'URI est mal
orthographié, vous pourriez voir une erreur comme ConnectionError ou Max retries
exceeded.
 Y a-t-il un problème de connectivité ? : Si l'URI est correcte mais la connexion échoue, vous devez
vous assurer qu'il n'y a pas de problèmes de connectivité réseau, de proxy, de pare-feu, ou de VPN
qui empêchent la requête de parvenir au serveur.
 Problèmes SSL : Si l'API utilise HTTPS, vous devez vérifier que la connexion SSL est réussie. Une
erreur de certificat invalide peut provoquer un échec de la requête.
o Exemple : Si le certificat SSL est auto-signé ou invalide, l'erreur SSLError peut apparaître.
Vous pouvez temporairement désactiver la vérification SSL en ajoutant verify=False dans la
bibliothèque requests en Python, mais cela n'est pas recommandé en production.

2. Erreur côté serveur

Si tout semble correct côté client, le problème peut venir du serveur.

Questions à se poser :

 Le serveur fonctionne-t-il ? : Assurez-vous que le serveur API est en ligne. Il peut être éteint, avoir
un problème réseau, ou le nom de domaine peut avoir changé.
o Pour tester la connectivité du serveur, vous pouvez essayer d'accéder à l'API par son adresse
IP ou vérifier son statut.
 Problèmes de communication serveur-client : Même si le serveur fonctionne, il peut y avoir des
problèmes de communication entre le client et le serveur, comme des pertes de paquets ou des
problèmes de réseau. Utilisez un outil de capture de paquets comme Wireshark ou tcpdump pour
diagnostiquer ces problèmes.

3. Résolution des erreurs côté client et côté serveur

 Côté client : Les erreurs côté client peuvent souvent être résolues en corrigeant l'URI, en vérifiant la
connectivité, ou en résolvant les problèmes SSL.
 Côté serveur : Si le problème vient du serveur, vous devrez probablement contacter l'administrateur
du serveur pour résoudre le problème, surtout si le serveur est inaccessible ou si des erreurs sont
observées côté serveur.
 Pour toutes les demandes qui ont un code d'état de retour, procédez comme suit pour résoudre les
erreurs:
 Étape 1: Vérifiez le code de retour. Cela peut aider à afficher le code de retour dans votre script
pendant la phase de développement.
Étape 2: Vérifiez le corps de la réponse. Affiche le corps de la réponse pendant le développement; la
plupart du temps, vous pouvez trouver ce qui s'est mal passé dans le message de réponse envoyé avec
le code d'état.
 Étape 3: Si vous ne parvenez pas à résoudre le problème en utilisant les deux étapes ci-dessus,
utilisez la référence de code d'état pour comprendre la définition du code d'état.
 400 - Bad Request

La requête n'a pas pu être comprise par le serveur en raison d'une syntaxe mal formée. Vérifiez la syntaxe de
votre API.

L'une des causes d'une erreur 400 Mauvaise requête est la ressource elle-même. Vérifiez deux fois le point
de terminaison et la ressource que vous appelez, avez-vous mal orthographié l'une des ressources ou oublié
les "s" pour le rendre pluriel, comme /device versus /devices ou /interface versus /interfaces? L'URI est-il
bien formé et complet?

 401 - Unauthorized

Ce message d'erreur signifie que le serveur n'a pas pu authentifier la demande.

Vérifiez vos informations d'identification, y compris le nom d'utilisateur, le mot de passe, la clé d'API, le
jeton, etc. S'il n'y a aucun problème avec ces éléments, vous pouvez vérifier à nouveau l'URI de requête, car
le serveur peut refuser l'accès en cas d'URI de requête incorrecte

 403 – Forbidden

Le code d'état 403 n'est pas un problème d'authentification; le serveur croit en l'identité de l'utilisateur, c'est
juste que l'utilisateur n'a pas assez de privilèges pour utiliser cette API particulière.

 404 - Not Found


Le serveur n'a trouvé rien correspondant à l'URI de la requête; vérifiez l'URI de la requête pour vous assurer
qu'il est correct. Si le code fonctionnait, vous pouvez vérifier le dernier guide de référence d'API, car la
syntaxe d'une API peut changer au fil du temps.
Considérez l'API Cisco DNA Center "get all interfaces". Le titre dit, "all interfaces", donc vous essayez
d'utiliser api/v1/interfaces, mais vous obtenez une erreur 404 car la requête API est en fait api/v1/interface.
 405 - Method Not Allowed
Dans ce cas, la demande a été reconnue par le serveur, mais la méthode spécifiée dans la requête a été
rejetée par le serveur. Vous pouvez vérifier le guide de référence de l'API pour voir quelles méthodes le
serveur attend. La réponse du serveur peut également inclure un Allow header contenant une liste de
méthodes valides pour la ressource demandée.
 406 - Not Acceptable
Cette erreur indique que la ressource cible n'a pas de représentation actuelle qui serait acceptable pour le
client. Le serveur possède les données, mais ne peut pas les représenter à l'aide des options répertoriées dans
les en-têtes Accept- du client.
 407 - Proxy Authentication Required
Ce code est similaire à 401 (Non autorisé), mais indique que le client doit d'abord s'authentifier avec le
proxy. Dans ce scénario, il existe un serveur proxy entre le client et le serveur, et le code de réponse 407
indique que le client doit d'abord s'authentifier auprès du serveur proxy.
 409 - The request could not be completed due to a conflict with the current state of the target resource.
Par exemple, un conflit de modification dans lequel une ressource est modifiée par plusieurs utilisateurs
provoquerait une erreur 409. Une nouvelle tentative de la demande peut aboutir, tant que le conflit est résolu
par le serveur.
 415 - Unsupported Media Type
Dans ce cas, le client a envoyé un corps de requête dans un format que le serveur ne prend pas en charge.
Par exemple, si le client envoie XML à un serveur qui accepte uniquement JSON, le serveur renvoie une
erreur 415.
 500 - Internal Server Error : Le serveur a rencontré une condition inattendue qui l'empêche de traiter
la demande.
 501 - Not Implemented : La fonctionnalité demandée n'est pas prise en charge par le serveur, par
exemple, une méthode de requête non reconnue.
 502 - Bad Gateway : Le serveur, agissant comme une passerelle, a reçu une réponse invalide d’un autre
serveur.
 503 - Service Unavailable : Le serveur est temporairement surchargé ou en maintenance, donc
indisponible pour traiter la demande.
 504 - Gateway Timeout : Le serveur n'a pas reçu de réponse à temps d'un autre serveur nécessaire pour
répondre à la demande.
 Conseils : Pour les erreurs 500 et 501, vérifiez la validité de la requête dans le guide API. Pour les autres
erreurs, consultez l'administrateur du serveur API pour résoudre le problème.
 Curl montre comment accéder au contenu affiché dans le corps de la réponse à l'aide de curl.

Quelle est la signification du terme « flux » en ce qui concerne le cadre d'autorisation OAuth 2.0 ?

done

Il s'agit d'un processus permettant à un utilisateur d'API d'obtenir un jeton d'accès à partir du serveur
d'autorisation.

5.Reseaux

Qu'est-ce qu'un réseau ? Un réseau connecte des périphériques (ordinateurs, imprimantes) via des
équipements réseau (commutateurs, routeurs). Les réseaux locaux (LAN) utilisent souvent l'Ethernet
(câblé) ou le Wi-Fi (sans fil), et les périphériques se connectent via des cartes réseau (NIC).
Suites de protocoles : Le TCP/IP est le modèle standard pour Internet, tandis que le modèle OSI, utilisé
pour la classification en couches, est surtout théorique aujourd'hui. Quelques autres protocoles, comme
AppleTalk et Novell NetWare, ont été remplacés par TCP/IP.

Modèles OSI et TCP/IP : Les deux modèles décrivent les opérations en couches, ce qui garantit la
cohérence des protocoles. Le modèle OSI comprend 7 couches, chacune assurant une fonction spécifique,
tandis que le modèle TCP/IP est simplifié et plus pratique.

Encapsulation de données : Les données sont encapsulées couche par couche, où chaque étape ajoute une
unité de protocole unique pour faciliter le transfert d'informations.

Couches OSI (Principales) :

 Physique (couche 1) : Transmission de signaux physiques.( Bits)


 Liaison de données (couche 2) : Communication directe entre appareils connectés(cables…).(
Trames)
o Sous-couche MAC (Medium Access Control) — La sous-couche MAC est chargée de
contrôler la façon dont les périphériques d'un réseau accèdent au support de transmission et
obtiennent l'autorisation de transmettre des données.
o Sous-couche Logical Link Control (LLC) — La sous-couche LLC est responsable de
l'identification et de l'encapsulation des protocoles de couche réseau, des contrôles de
vérification des erreurs et de la synchronisation des trames.
 Réseau (couche 3) : Adressage (IPv4/IPv6) et routage des données. (Paquets)
o Adressage - Tous les appareils doivent être configurés avec une adresse IP unique pour
l'identification sur le réseau.
o Routage - Les protocoles de routage fournissent des services permettant de diriger les
paquets vers un hôte de destination sur un autre réseau.
 Transport (couche 4) : Fiabilité des communications avec TCP (pour applications nécessitant une
livraison garantie) ou UDP (pour applications en temps réel).( Segments)
 Session (couche 5) : Établissement de sessions entre deux hôtes.
 Présentation (couche 6) : Conversion des données pour la couche application.
 Couche d'application (couche 7) :La couche d'application est la couche OSI la plus proche de
l'utilisateur final et contient une variété de protocoles généralement requis par les utilisateurs. Un
protocole d'application largement utilisé est HyperText Transfer Protocol (HTTP) et sa version
sécurisée HTTPS.(Donnees)
 Encapsulation et désencapsulation : Quand un périphérique envoie des données, chaque couche
ajoute un en-tête (ou une remorque) aux données pour les transmettre correctement à la couche
suivante. Le périphérique de destination, quant à lui, retire (désencapsule) chaque en-tête pour
reconstituer les données.
 Couche d’accès réseau (lien) : Elle s’occupe de déplacer les trames de données entre les cartes
réseau sur le même réseau local, comme avec les commutateurs Ethernet.
 Couche Internet : Elle est responsable d’envoyer les données à travers plusieurs réseaux. Les
routeurs, qui fonctionnent à cette couche, permettent l’interconnexion de réseaux et l’acheminement
des paquets vers leur destination. Cette couche utilise l’adresse IP, avec les versions IPv4 (32 bits) et
IPv6 (128 bits).

2. Les trois plans d’un routeur

 Plan de gestion : Gère le trafic destiné au périphérique lui-même, par exemple via SSH pour
l’administration ou SNMP pour la gestion du réseau.
 Plan de contrôle : Traite les données pour maintenir les fonctions réseau (par exemple, en
utilisant des protocoles de routage comme OSPF, BGP, et EIGRP).
 Plan de données : Gère le transfert des paquets via le matériel en suivant les instructions du plan
de contrôle, permettant aux données de passer rapidement d’un port à un autre.

Ce résumé inclut les éléments essentiels d'un réseau, des protocoles, et des couches OSI pour une
compréhension générale des réseaux et de leur fonctionnement.
Ethernet :

Dans un réseau local (LAN), la technologie la plus utilisée pour connecter des appareils est Ethernet.
Ethernet est une norme définie par l’IEEE qui décrit les règles et procédures permettant aux appareils de
communiquer. Cela comprend des directives pour le câblage, les longueurs maximales des câbles et les
protocoles de signalisation sur les couches physique et liaison de données du modèle OSI. Par exemple,
différents types de câbles, comme le coaxial ou la fibre optique, peuvent être utilisés selon les normes
Ethernet.

Organisation des bits en trames Ethernet


Les bits sont organisés en "trames", qui sont des conteneurs transportant les données à travers le réseau. Une
trame Ethernet est composée de plusieurs parties :

1. Préambule : Une séquence de 1 et 0 pour synchroniser la communication entre appareils.


2. Délimiteur de début de trame (SFD) : Indique la fin du préambule et le début de la trame.
3. Adresse MAC de destination : Identifie l’appareil qui doit recevoir la trame.
4. Adresse MAC source : Indique l’adresse de l’appareil qui envoie la trame.
5. Type : Spécifie le protocole de la couche réseau, par exemple, IPv4 ou IPv6.
6. Données : Contient les données provenant de la couche réseau.
7. Séquence de vérification de trame (FCS) : Utilisée pour vérifier que la trame a été transmise sans
erreurs.

Les adresses MAC jouent un rôle essentiel dans la transmission des trames sur un réseau local. Elles
permettent de s’assurer que les données vont au bon appareil au sein du même réseau. Si les données doivent
aller vers un autre réseau, la trame est envoyée au routeur (passerelle par défaut), qui va désencapsuler la
trame, puis encapsuler à nouveau les données pour le prochain routeur ou pour l’appareil final.

 Tous les périphériques réseau sur le même réseau doivent avoir une adresse MAC unique

Une adresse MAC est composée de 12 nombres hexadécimaux, ce qui signifie qu'elle a 48 bits. Il y a deux
composants principaux d'un MAC. Les 24 premiers bits constituent l'OUI. Les 24 derniers bits
constituent l'adresse du poste d'extrémité assignée par le fournisseur, comme le montre la figure.

 24 bits OUI - L'OUI identifie le fabricant de la carte réseau. L'IEEE réglemente l'attribution des
numéros UI. Dans l'OUI, il y a 2 bits qui ont une signification uniquement lorsqu'ils sont utilisés
dans le champ d'adresse de destination (DA) de l'en-tête Ethernet:
 Adresse de station d'extrémité 24 bits assignée par le fournisseur - Cette partie identifie de
manière unique le matériel Ethernet.

Une adresse MAC peut être affichée de l'une des manières suivantes :

0050.56c0.0001 Ou 00:50:56:c0:00:01 Ou 00-50-56-c0-00-01

Les adresses MAC de destination incluent les trois principaux types de communications réseau:
 Unicast - Communication dans laquelle une trame est envoyée à partir d'un hôte et est adressée à une
destination spécifique. Dans une transmission monodiffusion, il n'y a qu'un seul expéditeur et un seul
récepteur. La transmission monodiffusion est la forme prédominante de transmission sur les réseaux
locaux et sur Internet.
 Diffusion - Communication dans laquelle une trame est envoyée d'une adresse à toutes les autres
adresses. Dans ce cas, il n'y a qu'un seul expéditeur, mais l'information est envoyée à tous les
récepteurs connectés. La transmission par diffusion est essentielle pour envoyer le même message à
tous les périphériques du réseau local. Les diffusions sont généralement utilisées une fois qu'un
appareil recherche l'adresse MAC de la destination.
 Multicast - Communication dans laquelle des informations sont envoyées à un groupe spécifique
d'appareils ou de clients. Contrairement à la transmission de diffusion, dans la transmission de
multidiffusion, les clients doivent être membres d'un groupe de multidiffusion pour recevoir les
informations.

Le commutateur crée et gère une table (appelée table d'adresses MAC) qui correspond à l'adresse MAC de
destination avec le port utilisé pour se connecter à un nœud. La table d'adresses MAC est stockée dans la
mémoire adressable de contenu (CAM), ce qui permet des recherches très rapides.

Le commutateur construit dynamiquement la table des adresses MAC en examinant l'adresse MAC source
des trames reçues sur un port. Pour transmettre les trames, le commutateur recherche une correspondance
entre l'adresse MAC de destination qui figure dans la trame et une entrée de la table d'adresses MAC. Selon
le résultat, le commutateur décidera s'il faut filer ou enfler le cadre. Si l'adresse MAC de destination figure
dans le tableau des adresses MAC, il l'enverra par le port spécifié. Sinon, elle inondera tous les ports, sauf le
port d'arrivée.

Un réseau local virtuel (VLAN) est utilisé pour segmenter différents domaines de diffusion de couche 2 sur

un ou plusieurs commutateurs. Un VLAN regroupe des appareils sur un ou plusieurs réseaux locaux qui sont
configurés pour communiquer comme s'ils étaient reliés au même fil, alors qu'en fait ils sont situés sur
plusieurs segments de réseaux locaux différents. Comme les VLANs sont basés sur des connexions logiques
plutôt que physiques, ils sont extrêmement flexible.

Par exemple, dans la figure, l'administrateur réseau a créé trois VLAN en fonction de la fonction de ses
utilisateurs: ingénierie, marketing et comptabilité. Notez que les appareils n'ont pas besoin d'être sur le
même étage.

Les VLANs segmentent les réseaux de couche 2 en domaines de diffusion distincts, permettant de séparer le
trafic selon la configuration des ports du commutateur. Chaque VLAN agit comme un domaine de diffusion
indépendant, et le trafic ne peut pas passer directement d'un VLAN à un autre sans un routeur ou un
commutateur de couche 3.

Les VLANs sont identifiés par un ID VLAN (jusqu'à 4096 selon la norme IEEE 802.1Q), et chaque port du
commutateur est affecté à un VLAN spécifique. Pour étendre un VLAN sur plusieurs commutateurs, on
utilise un trunk VLAN qui transmet le trafic de plusieurs VLANs en insérant une balise (tag) contenant l’ID
VLAN dans chaque trame.

Les VLANs se divisent en trois catégories : réservé, normal et étendu. Le protocole VTP (VLAN
Trunking Protocol) permet de propager la configuration des VLANs à tous les commutateurs du réseau.

Les couches d'interconnexion dans le cadre des protocoles IPv4 et IPv6

Les protocoles IPv4 (Internet Protocol version 4) et IPv6 (Internet Protocol version 6) appartiennent à la
couche réseau (Layer 3) du modèle OSI. Cette couche est responsable de l'adressage, du routage et de
l'acheminement des paquets de données à travers les différents réseaux. IPv4 et IPv6 sont utilisés pour
acheminer les données entre les dispositifs d'un réseau, en particulier dans les communications inter-réseaux.

Voici une explication détaillée de IPv4 et IPv6, ainsi que de leurs différences et avantages :

1. IPv4 (Internet Protocol version 4)

 Structure d'adresse :
o Une adresse IPv4 est composée de 32 bits, généralement représentée en notation décimale
pointée. Cela donne un total de 4 milliards d'adresses possibles (2^32).
o Exemple d’adresse IPv4 : 192.168.1.1.
 Format de paquet :
o Le paquet IPv4 est divisé en plusieurs champs (adresse source, adresse destination, durée de
vie, protocole, etc.) et a une taille maximale de 65 535 octets.
o IPv4 supporte la fragmentation des paquets en cas de besoin.
 Caractéristiques principales :
o Adresse : 32 bits, permettant un nombre limité d'adresses.
o Routage : Utilise un routage basé sur les tables de routage et le masque de sous-réseau pour
définir les réseaux et sous-réseaux.
o Contrôle de congestion et erreur : Ne possède pas de mécanisme natif pour contrôler la
congestion ou les erreurs, mais il fonctionne avec des protocoles supérieurs comme TCP pour
gérer cela.
 Avantages :
o Large adoption et infrastructure bien établie.
o Compatible avec la majorité des dispositifs existants.
 Limitations :
o Le nombre limité d'adresses (32 bits) a entraîné une pénurie d'adresses IP, ce qui a conduit au
déploiement de NAT (Network Address Translation) pour résoudre ce problème.
o Manque de certaines fonctionnalités de sécurité, comme l'authentification et le chiffrement
natifs.
2. IPv6 (Internet Protocol version 6)

 Structure d'adresse :
o Une adresse IPv6 utilise 128 bits, ce qui permet un nombre presque illimité d'adresses
(2^128, soit environ 340 sextillions d'adresses).
o Exemple d’adresse IPv6 : 2001:0db8:85a3:0000:0000:8a2e:0370:7334.
o Les adresses IPv6 sont divisées en huit groupes de quatre chiffres hexadécimaux, et les zéros
peuvent être omis (par exemple, 2001:db8::1).
 Format de paquet :
o Le format de paquet IPv6 est plus simple que celui d'IPv4, avec moins de champs optionnels,
ce qui améliore l'efficacité de traitement.
o IPv6 ne supporte pas la fragmentation en tant que processus dans les routeurs, mais laisse la
responsabilité de la fragmentation au dispositif source si nécessaire.
 Caractéristiques principales :
o Adresse : 128 bits, offrant une quantité pratiquement illimitée d'adresses uniques.
o Routage : Le routage IPv6 est plus efficace grâce à un système de hiérarchisation des
adresses et à un meilleur agencement des sous-réseaux.
o Autoconfiguration : IPv6 permet l'auto-configuration des dispositifs, ce qui simplifie le
déploiement et la gestion.
o Sécurité : IPv6 inclut des mécanismes de sécurité natifs (IPSec pour le chiffrement et
l'authentification), qui étaient optionnels dans IPv4.
 Avantages :
o Une quantité d'adresses pratiquement infinie permet de répondre aux besoins croissants en
termes d'Internet des objets (IoT) et de dispositifs connectés.
o Une meilleure sécurité et une gestion plus fluide du réseau.
o Simplification du processus de routage et des tables de routage plus efficaces.
o Prise en charge de la configuration automatique des dispositifs (stateless autoconfiguration).
 Limitations :
o Bien que IPv6 soit plus avancé, son adoption reste lente, et de nombreux réseaux n'ont pas
encore migré vers IPv6.
o La compatibilité avec IPv4 nécessite des mécanismes de transition (par exemple, dual-stack,
tunneling), ce qui peut entraîner des complexités dans le déploiement.

Comparaison entre IPv4 et IPv6 :

Critère IPv4 IPv6


Longueur d'adresse 32 bits 128 bits
Nombre d'adresses
Environ 4 milliards (2^32) 340 sextillions (2^128)
possibles
Notation de l'adresse Décimale pointée (ex : 192.168.1.1) Hexadécimale (ex : 2001:db8::1)
Fragmentation Supportée par les routeurs et sources Se fait uniquement au niveau de la
Critère IPv4 IPv6
source
Sécurité IPSec optionnel IPSec natif (obligatoire)
Configuration Non (requiert DHCP ou configuration
Oui (stateless autoconfiguration)
automatique manuelle)
Complexité de Complexité de migration et adoption
Bien établi et largement déployé
déploiement lente

Conclusion :

Les protocoles IPv4 et IPv6 jouent un rôle central dans l'acheminement des données entre les systèmes
informatiques, mais ils diffèrent sur plusieurs aspects clés, notamment la taille de l'adresse, la sécurité, et la
configuration des dispositifs. Bien qu'IPv4 soit encore largement utilisé, l'IPv6 est la solution de l'avenir,
apportant des avantages en termes de scalabilité, de sécurité, et de gestion des adresses.

La transition vers IPv6 est essentielle pour répondre aux besoins de l'Internet moderne, en particulier avec
l'augmentation du nombre d'appareils connectés et de services nécessitant des adresses uniques.

DHCP (Dynamic Host Configuration Protocol)

 Description :
o DHCP est un protocole qui attribue automatiquement des adresses IP aux appareils d'un
réseau. Cela permet de simplifier la gestion des adresses IP, particulièrement dans les réseaux
de grande taille.
o Le serveur DHCP attribue une adresse IP, un masque de sous-réseau, une passerelle par
défaut et les serveurs DNS aux appareils clients.
 Fonctionnement :
o Lorsqu'un appareil se connecte à un réseau, il envoie une requête DHCP pour obtenir une
adresse IP. Le serveur DHCP répond avec une adresse IP disponible, et parfois des
informations de configuration supplémentaires.
 Avantages :
o Simplicité : Réduit la nécessité d'attribuer manuellement des adresses IP.
o Gestion centralisée : Facilite la gestion des adresses IP sur l'ensemble du réseau.
o Efficacité : Évite les conflits d'adresses IP et garantit que chaque appareil a une adresse
unique.
o Flexibilité : Permet de modifier la configuration du réseau sans toucher chaque appareil.

2. DNS (Domain Name System)

 Description :
o DNS est un système de gestion des noms de domaine qui traduit les noms de domaine lisibles
(ex. : www.example.com) en adresses IP numériques utilisées par les équipements réseau
pour se connecter entre eux.
o Le DNS fonctionne comme un annuaire qui permet à un utilisateur d'accéder à des sites web
en utilisant des noms conviviaux plutôt que des adresses IP complexes.
 Fonctionnement :
o Lorsqu'un utilisateur tape un nom de domaine dans son navigateur, une requête DNS est
envoyée à un serveur DNS pour traduire ce nom en une adresse IP.
o Le serveur DNS retourne l'adresse IP correspondante, permettant ainsi la connexion à l'hôte
cible.
 Avantages :
o Accessibilité : Permet aux utilisateurs d'accéder facilement aux ressources réseau via des
noms compréhensibles.
o Scalabilité : Fonctionne à l'échelle mondiale et permet de gérer des millions de domaines.
o Réduction des erreurs : Évite les erreurs potentielles liées à la saisie d'adresses IP.
o Mise en cache : Accélère la résolution des noms en utilisant des caches locaux.

3. SNMP (Simple Network Management Protocol)

 Description :
o SNMP est un protocole utilisé pour la surveillance et la gestion des équipements réseau tels
que les routeurs, les switches, les serveurs et autres périphériques réseau.
o Il permet de collecter des informations sur les performances, les erreurs et l'état des
équipements en temps réel.
 Fonctionnement :
o Un gestionnaire SNMP interroge les agents SNMP installés sur les périphériques réseau. Ces
agents collectent des données de performance et d'état, puis envoient ces informations au
gestionnaire.
o SNMP utilise des OID (Object Identifiers) pour identifier les variables et les informations sur
les équipements.
 Avantages :
o Centralisation : Permet de gérer et surveiller tous les équipements réseau depuis une seule
interface.
o Automatisation : Aide à automatiser la surveillance des performances du réseau.
o Réduction des coûts : Diminue la nécessité de surveillance manuelle constante.
o Proactivité : Permet de détecter et résoudre les problèmes de réseau avant qu'ils n'affectent
les utilisateurs finaux.

4. NTP (Network Time Protocol)


 Description :
o NTP est un protocole utilisé pour synchroniser l'heure des équipements réseau avec une
source de temps fiable (souvent un serveur NTP).
o Il garantit que tous les dispositifs du réseau (serveurs, routeurs, ordinateurs) ont une heure
correcte et cohérente, ce qui est essentiel pour les journaux d'événements et les processus de
sécurité.
 Fonctionnement :
o Les équipements client envoient une requête NTP à un serveur NTP. Le serveur répond avec
l'heure exacte.
o Le client ajuste ensuite son horloge en fonction de l'heure reçue.
 Avantages :
o Précision : Assure une synchronisation horaire précise sur tout le réseau.
o Sécurité : L'heure précise est essentielle pour les horodatages dans les journaux de sécurité.
o Gestion efficace : Permet une gestion plus efficace des tâches programmées et des processus
distribués dans les réseaux complexes.
o Fiabilité : Aide à éviter les erreurs dues à des décalages horaires, notamment pour les
applications critiques.

5. NAT (Network Address Translation)

 Description :
o NAT est un mécanisme qui permet de masquer les adresses IP privées utilisées dans un
réseau local (LAN) en une seule adresse IP publique.
o Il est couramment utilisé pour permettre à plusieurs appareils sur un réseau privé d’accéder à
Internet via une seule adresse IP publique.
 Fonctionnement :
o Lorsque qu'un appareil dans un réseau privé communique avec Internet, son adresse IP privée
est remplacée par l'adresse IP publique du routeur. Ce dernier effectue la translation des
adresses avant de transmettre les paquets.
 Avantages :
o Économie d'adresses IP : Permet à plusieurs appareils de partager une seule adresse IP
publique.
o Sécurité : Cache l'architecture interne du réseau, réduisant ainsi les risques d'attaques
directes.
o Flexibilité : Peut être utilisé dans divers scénarios de mise en réseau, y compris les réseaux
domestiques et d'entreprise.
o Simplification : Permet de relier facilement plusieurs appareils à Internet sans avoir besoin
de multiples adresses IP publiques.

Vérification de la connectivité réseau


Avant de se pencher sur l'application elle-même, il est essentiel de s'assurer que le problème n'est pas lié à la
connectivité du réseau. Vérifiez les éléments suivants :

a. Vérification des câbles et des connexions physiques

 Assurez-vous que tous les câbles sont correctement branchés et que les périphériques physiques
comme les routeurs, les switches et les modems fonctionnent correctement.

b. Tester la connectivité avec ping et traceroute

 Utilisez des outils comme ping pour tester la connectivité entre le client et le serveur.
o Exemple : ping <adresse IP du serveur>
 Utilisez traceroute pour voir le chemin emprunté par les paquets et détecter les points de
défaillance.
o Exemple : traceroute <adresse IP du serveur>

c. Vérification des DNS

 Si l'application utilise un nom de domaine pour se connecter au serveur, vérifiez si la résolution DNS
fonctionne.
o Exemple : nslookup <nom de domaine>
 Si vous avez une mauvaise résolution DNS, le problème peut être dû à un serveur DNS mal
configuré.

d. Vérification des ports et des pare-feu

 Assurez-vous que les ports nécessaires sont ouverts à la fois sur le serveur et le client.
o Utilisez la commande telnet ou nc (Netcat) pour vérifier la connexion sur un port spécifique.
 Exemple : telnet <adresse IP du serveur> <port>
 Vérifiez si un pare-feu bloque l'accès aux services requis.

2. Vérification des services côté serveur

Le problème peut également résider dans les services sur le serveur. Voici quelques éléments à vérifier :

a. Vérification de l'état des services

 Vérifiez si le service de l'application est bien en fonctionnement. Pour les serveurs Linux, vous
pouvez utiliser :
o systemctl status <nom du service>
 Sur les serveurs Windows, utilisez le gestionnaire de services ou la commande netstat pour vérifier si
les services sont actifs.

b. Vérification des logs du serveur


 Consultez les journaux des applications et des serveurs (par exemple, Apache, Nginx, etc.) pour
identifier des erreurs ou des problèmes spécifiques.
o Exemple : /var/log/syslog sur Linux ou Event Viewer sur Windows.

c. Vérification de la base de données

 Si l'application se connecte à une base de données, vérifiez que celle-ci est en ligne et accessible.
 Vérifiez les logs de la base de données pour des erreurs d'authentification ou de connectivité.

d. Vérification des ressources du serveur

 Vérifiez les ressources système sur le serveur (CPU, mémoire, espace disque, etc.) pour détecter tout
problème qui pourrait affecter la performance des applications.

3. Vérification des paramètres de l'application

Les paramètres de configuration de l'application peuvent aussi être à l'origine des problèmes de connectivité.

a. Vérification de la configuration du fichier de l'application

 Vérifiez que les paramètres de connexion à la base de données, les adresses de serveur, les ports et
autres configurations sont corrects dans le fichier de configuration de l'application.

b. Vérification des versions et des mises à jour

 Assurez-vous que l'application est à jour et qu'il n'y a pas de conflits de versions entre le client et le
serveur.
 Si l'application a récemment été mise à jour, vérifiez s'il y a des bugs ou des modifications non
testées dans la nouvelle version.

c. Vérification des protocoles et des dépendances

 Certaines applications dépendent de services externes (API, services web, etc.). Vérifiez si ces
services sont en ligne et si l'application est correctement configurée pour interagir avec eux.

4. Vérification du côté client

Le problème de connectivité peut également être lié au client (par exemple, l'ordinateur de l'utilisateur, le
navigateur ou l'application mobile).

a. Vérification des paramètres du réseau local

 Vérifiez si le client a une adresse IP valide et s'il peut accéder à Internet ou au réseau local.
 Si le client est sur un réseau privé ou VPN, vérifiez si la connexion au réseau est établie
correctement.

b. Vérification du cache DNS et des cookies

 Effacez le cache DNS ou les cookies du navigateur pour éliminer toute information obsolète qui
pourrait affecter la connectivité.
o Exemple : ipconfig /flushdns sur Windows.
 Si le client utilise un proxy, assurez-vous que la configuration est correcte.

c. Vérification des mises à jour de l'application cliente

 Si l'application cliente nécessite des mises à jour (par exemple, un navigateur ou une application
mobile), vérifiez qu'elles sont à jour.

5. Dépannage des erreurs spécifiques

Certaines erreurs courantes peuvent fournir des informations utiles pour diagnostiquer le problème.

a. Erreur 404 (Page non trouvée)

 Vérifiez que l'URL saisie est correcte et que la page existe sur le serveur.

b. Erreur 500 (Erreur interne du serveur)

 Cela indique souvent un problème côté serveur. Vérifiez les logs du serveur pour plus de détails.

c. Erreur de timeout ou de connexion refusée

 Cela peut être dû à un problème de réseau, à un service en panne ou à un pare-feu bloquant la


connexion. Vérifiez les services côté serveur et les connexions réseau.

6. Outils et ressources de dépannage

 Wireshark : Utilisé pour analyser le trafic réseau et identifier les problèmes de connectivité.
 PingPlotter : Un outil pour vérifier la connectivité réseau en temps réel.
 Telnet/Netcat : Pour tester les connexions sur des ports spécifiques.
 Traceroute : Pour déterminer où les paquets se perdent ou sont retardés.
 Loggly/Splunk : Pour la collecte et l’analyse des logs d’application.
 cURL/Postman : Pour tester les API et les services web.
Conclusion

Le dépannage des problèmes de connectivité des applications nécessite une approche systématique, en
partant des vérifications réseau de base jusqu'aux configurations spécifiques de l'application. L'utilisation
d'outils adaptés et la vérification des journaux de système et d'application sont essentielles pour
diagnostiquer et résoudre les problèmes de manière efficace.

Résumer :

Introduction aux notions de base des réseaux

Un réseau se compose de périphériques finaux tels que des ordinateurs, des périphériques mobiles et des
imprimantes connectés par des périphériques réseau tels que des commutateurs et des routeurs. Le réseau
permet aux appareils de communiquer entre eux et de partager des données. Une suite de protocoles est un
ensemble de protocoles qui fonctionnent ensemble pour fournir des services de communication réseau
complets. Les modèles de référence OSI et TCP/IP utilisent des couches pour décrire les fonctions et les
services qui peuvent se produire sur cette couche. La forme qu'emprunte une donnée sur n'importe quelle
couche est appelée unité de données de protocole. À chaque étape du processus d'encapsulation, une PDU a
un nom différent pour refléter ses nouvelles fonctions : données, segment, paquet, trame et bits.

Les couches du modèle de référence OSI sont décrites ici de bas en haut:

1. La couche physique est responsable de la transmission et de la réception des flux de bits bruts.
2. La couche de liaison de données fournit des communications NIC à NIC sur le même réseau.
3. La couche réseau fournit des services permettant aux appareils finaux d'échanger des données sur les
réseaux.
4. La couche de transport offre la possibilité de fiabilité et de contrôle du débit.
5. La couche de session permet aux hôtes d'établir des sessions entre eux.
6. La couche de présentation spécifie le contexte entre les entités de la couche d'application.
7. La couche d'application est la couche OSI la plus proche de l'utilisateur final et contient une variété
de protocoles généralement requis par les utilisateurs.

Les périphériques finaux implémentent des protocoles pour l'ensemble de "pile", toutes les couches. La
source du message (données) encapsule les données avec les protocoles appropriés, tandis que la destination
finale désencapsule chaque en-tête de protocole/remorque pour recevoir le message (données).

Couche d'interface réseau

Ethernet est un ensemble de directives et de règles qui permettent à divers composants réseau de travailler
ensemble. Ces directives spécifient le câblage et la signalisation au niveau des couches physiques et de
liaison de données du modèle OSI. Dans la terminologie Ethernet, le conteneur dans lequel les données sont
placées pour la transmission est appelé une trame. La trame contient des informations d'en-tête, des
informations de remorque et les données réelles qui sont transmises. Les champs importants d'un cadre
d'adresse MAC sont le préambule, le SFD, l'adresse MAC de destination, l'adresse MAC source, le type, les
données et le FCS. Chaque carte NIC possède une adresse MAC (Media Access Control) unique qui
identifie le périphérique physique, également appelée adresse physique. L'adresse MAC identifie
l'emplacement d'un périphérique final spécifique ou d'un routeur sur un réseau local. Les trois principaux
types de communications réseau sont: monodiffusion, diffusion et multidiffusion.

Le commutateur crée et gère une table (appelée table d'adresses MAC) qui correspond à l'adresse MAC de
destination avec le port utilisé pour se connecter à un nœud. Pour transmettre les trames, le commutateur
recherche une correspondance entre l'adresse MAC de destination qui figure dans la trame et une entrée de
la table d'adresses MAC. Selon le résultat, le commutateur décidera s'il faut filer ou enfler le cadre. Si
l'adresse MAC de destination figure dans le tableau des adresses MAC, il l'enverra par le port spécifié.
Sinon, elle inondera tous les ports, sauf le port d'arrivée.

Un VLAN regroupe des appareils sur un ou plusieurs réseaux locaux qui sont configured pour communiquer
comme s'ils étaient reliés au même fil, alors qu'en fait ils sont situés sur plusieurs segments de réseaux
locaux différents. Les VLAN définissent les domaines de diffusion de la couche 2. Les VLANs sont souvent
associés à des réseaux IP ou à des sous-réseaux. Une agrégation est une liaison point à point entre deux
périphériques réseau qui porte plusieurs VLAN. Un trunk de VLAN permet d’étendre les VLAN à
l’ensemble d’un réseau. Les VLANs sont organisés en trois plages: réservées, normales et étendues.

Couche d'interréseautage

Les réseaux interconnectés doivent avoir des moyens de communiquer, et l'interréseautage fournit que
"entre" (inter) réseaux méthode de communication. Chaque appareil d'un réseau possède une adresse IP
unique. Une adresse IP et une adresse MAC sont utilisées pour l'accès et la communication sur tous les
périphériques réseau. Sans adresses IP, il n'y aurait pas d'internet. Une adresse IPv4 est 32 bits, chaque octet
(8 bits) étant représenté comme une valeur décimale séparée par un point. Cette représentation est appelée
notation décimale en pointillés. Il existe trois types d'adresses IPv4 : l'adresse de réseau, l'adresse d'hôte et
l'adresse de diffusion. Le masque de sous-réseau IPv4 (ou longueur du préfixe) est utilisé pour différencier
la partie réseau de la partie hôte d'une adresse IPv4.

Le protocole IPv6 est conçu pour être le successeur de l'IPv4. L'IPv6 dispose d'un espace d'adressage plus
large de 128 bits, fournissant 340 undecillions d'adresses possibles. L'agrégation préfix IPv6, la
renumérotation simplifiée du réseau et les fonctionnalités de multihébergement de site IPv6 fournissent une
hiérarchie d'adressage IPv6 qui permet un routage plus efficient. Les adresses IPv6 sont représentées comme
une série de fields hexadécimaux 16 bits (hextet) séparés par des deux-points (:) au format: x:x:x:x:x:x:x:x.
Le format préféré inclut toutes les valeurs hexadécimales. Deux règles peuvent être utilisées pour réduire la
représentation de l'adresse IPv6: 1. Omettre les zéros en tête dans chaque hextet, et 2. Remplacez une seule
chaîne d'hextets zéro par un double deux-points (።).

Une adresse de monodiffusion IPv6 est un identifieur pour une interface unique, sur un seul nœud. Une
adresse de monodiffusion globale (GUA) (ou adresse de monodiffusion globale agrégable) est une adresse
IPv6 similaire à une adresse IPv4 publique. Le préfixe de routage global est le préfixe, ou la partie réseau, de
l'adresse qui est attribuée par le fournisseur, tel qu'un ISP, à un client ou à un site. Le champ ID de sous-
réseau est la zone située entre le préfixe de routage global et l'ID d'interface. L'ID d'interface IPv6 est
l'équivalent de la partie hôte d'une adresse IPv4. Une adresse link-local IPv6 (LLA) permet à un appareil de
communiquer avec d'autres appareils IPv6 sur la même liaison et uniquement sur cette liaison (sous-réseau).
Les adresses de multidiffusion IPv6 sont semblables aux adresses de multidiffusion IPv4. Rappelez-vous
qu'une adresse de multidiffusion est utilisée pour envoyer un même paquet à un ou plusieurs destinataires
(groupe de multidiffusion). Il s'agit de deux groupes de multidiffusion communs affectés à IPv6 : ff02::1
groupe de multidiffusion tous nœuds, et ff02::2 groupe de multidiffusion tous routeurs.

Un routeur est un périphérique réseau qui fonctionne sur la couche Internet du modèle TCP/IP ou couche
réseau de couche 3 du modèle OSI. Le routage implique le transfert de paquets entre différents réseaux. Les
routeurs utilisent une table de routage pour acheminer entre les réseaux. Un routeur a généralement deux
fonctions principales: la détermination du chemin et le routage ou le transfert de paquets. Une table de
routage peut contenir les types d'entrées suivants: réseaux directement connectés, routes statiques, routes par
défaut et routes dynamiques.

Appareils réseau

Un concept clé de la commutation Ethernet est le domaine de diffusion. Un domaine de diffusion est une
division logique dans laquelle tous les périphériques d'un réseau peuvent atteindre les uns les autres par
diffusion au niveau de la couche de liaison de données. Les commutateurs peuvent désormais transmettre et
recevoir des données simultanément. Les commutateurs ont les fonctions suivantes:

 Fonctionner au niveau de la couche d'accès au réseau du modèle TCP/IP et de la couche 2 de liaison


de données du modèle OSI
 Filtrer ou flood trames en fonction des entrées de la table d'adresses MAC
 Avoir un grand nombre de ports haute vitesse et full duplex

Le commutateur fonctionne dans l'un des modes de commutation suivants: découpe et stockage et transfert.
Les commutateurs LAN ont une densité de port élevée, des tampons de trame volumineux et une
commutation interne rapide.

Les routeurs sont nécessaires pour atteindre les périphériques qui ne se trouvent pas sur le même réseau
local. Les routeurs utilisent des tables de routage pour acheminer la traffic entre différents réseaux. Les
routeurs sont reliés à différents réseaux (ou sous-réseaux) via leurs interfaces et ont la capacité d'acheminer
la trafique des données entre eux.

Les routeurs ont les fonctions suivantes:

 Ils fonctionnent au niveau de la couche internet du modèle TCP/IP et de la couche 3 du réseau du


modèle OSI.
 Router les paquets entre les réseaux en fonction des entrées de la table de routage.
 Ils prennent en charge une grande variété de ports réseau, y compris divers ports LAN et WAN qui
peuvent être cuivre ou fibre optique. Le nombre d'interfaces sur les routeurs est généralement
beaucoup plus petit que les commutateurs, mais la variété des interfaces prises en charge est plus
grande. Les adresses IP sont configurées sur les interfaces.
Il existe trois mécanismes de transmission de paquets pris en charge par les routeurs : la commutation de
processus, la commutation rapide et le CEF.

Un mur de feu est un système matériel ou logiciel qui empêche l'accès non autorisé au réseau ou en dehors.
Le type le plus basique de la paroi est un mur de firewall de paquets sans état. Vous créez des règles
statiques qui autorisent ou refusent les paquets, en fonction des informations d'en-tête de paquet. Le mur de
feu examine les paquets lorsqu'ils traversent le mur de feu, les compare à des règles statiques et autorise ou
refuse la trafique en conséquence. Le poteau de filtering de paquets avec état effectue la même inspection
d'en-tête que le porewall de filtering de paquets sans état, mais conserve également une trace de l'état de
connexion. Pour garder une trace de l'état, ces coupe-feu maintiennent une table d'état. Le type le plus
avancé de la paroi de la couche d'application est la paroi de la couche d'application. Avec ce type,
l'inspection en profondeur du paquet se produit jusqu'à la couche 7 du modèle OSI.

L'équilibrage de charge améliore la répartition des charges de travail entre plusieurs ressources
informatiques, telles que les serveurs, les grappes de serveurs, les liaisons réseau, etc. L'équilibrage de
charge des serveurs permet d'assurer la disponibilité, l'évolutivité et la sécurité des applications et des
services en répartissant le travail d'un seul serveur sur plusieurs serveurs. Au niveau du périphérique,
l'équilibreur de charge assure une haute disponibilité du réseau en prenant en charge: la redondance des
périphériques, l'évolutivité et la sécurité. Au niveau du service réseau, un équilibreur de charge fournit des
services avancés en prenant en charge la haute disponibilité des services, l'évolutivité et la sécurité au niveau
des services.

Les diagrammes de réseau affichent une représentation visuelle et intuitive du réseau, comment tous les
appareils sont-ils connectés, dans quels bâtiments, étages, placards se trouvent, quelle interface se connecte à
ce périphérique final, etc. Il existe généralement deux types de diagrammes de réseau: diagrammes de
connectivité physique de couche 2, et Diagrammes de connectivité logique de couche 3. Les diagrammes de
la couche 2 ou de la connectivité physique sont des diagrammes de réseau représentant la connectivité des
ports entre les périphériques du réseau. Il s'agit essentiellement d'une représentation visuelle de quel port
réseau sur un périphérique réseau se connecte à quel port réseau sur un autre périphérique réseau. Les
diagrammes de connectivité logique de couche 3 sont des diagrammes de réseau qui affichent la connectivité
IP entre les périphériques du réseau.

Protocoles de mise en réseau

Telnet et SSH, ou Secure Shell, sont tous deux utilisés pour se connecter à un ordinateur distant et se
connecter à ce système à l'aide d'informations d'identification. Telnet est moins répandu aujourd'hui parce
que SSH utilise le chiffrement pour protéger les données qui passent par la connexion réseau et que la
sécurité des données est une priorité absolue. HTTP signifie Hyper Text Transfer Protocol, et HTTPS ajoute
le mot-clé "Secure" à la fin de l'acronyme. Ce protocole est reconnaissable dans les navigateurs Web comme
celui à utiliser pour se connecter à des sites Web. NETCONF a une valeur de port normalisée, 830.
RESTCONF n'a pas de valeur de port réservé, donc vous pouvez voir diverses implémentations de valeurs
différentes.
Le protocole Dynamic Host Configuration (DHCP) est utilisé pour transmettre les informations de
configuration aux hôtes d'un réseau TCP/IP. DHCP alloue les adresses IP de trois manières: automatique,
dynamique et manuelle. Les opérations DHCP comprennent quatre messages entre le client et le serveur:
découverte du serveur, offre de bail IP, demande de bail IP et accusé de réception de bail IP.

Le protocole DNS définit un service automatisé qui associe les noms des ressources à l'adresse réseau
numérique requise. Il comprend le format des demandes, des réponses et des données. Les communications
du protocole DNS utilisent un format unique appelé message DNS. Le serveur DNS stocke différents types
d'enregistrements de ressource utilisés pour résoudre des noms. Ces enregistrements contiennent le nom,
l'adresse et le type d'enregistrement.

Le système SNMP se compose de trois éléments:

 SNMP manager: Système de gestion du réseau (NMS)


 Agents SNMP (nœud géré)
 Base d’informations de gestion (MIB)

Il existe deux types principaux de requêtes de gestionnaire SNMP, à savoir get et set. Une requête get est
utilisée par le système de gestion de réseau (NMS) afin d'obtenir des données de la part d'un périphérique.
Une requête set est utilisée par le système de gestion de réseau (NMS) afin de modifier les variables de
configuration du périphérique de l'agent. Les déroutements sont des messages non sollicités alertant le
gestionnaire SNMP d'une condition ou d'un événement sur le réseau. Les protocoles SNMPv1 et SNMPv2c
utilisent des identifiants de communauté qui contrôlent l'accès à la base de données MIB. Les chaînes de la
communauté SNMP (y compris en lecture seule et en lecture-écriture) authentifient l'accès aux objets de la
MIB. Considérer le MIB comme une "carte" de tous les composants d'un périphérique gérés par SNMP.

NTP est utilisé pour distribuer et synchroniser le temps entre les serveurs de temps distribué et les clients.
Une source de temps faisant autorité est généralement une horloge radio, ou une horloge atomique reliée à
un serveur de temps. Les serveurs NTP peuvent s'associer dans plusieurs modes, y compris: client/serveur,
actif/passif symétrique et diffusion.

NAT (Network Address Translation) aide à résoudre le problème de l'épuisement des adresses IPv4. NAT
fonctionne en mappant des milliers d'adresses internes privées à une gamme d'adresses publiques. En
mappant les adresses IPv4 externes et internes, NAT permet à une organisation dont les adresses ne sont pas
routables globalement se connecter à Internet en traduisant les adresses en un espace d'adressage
globalement routable. La fonction NAT comprend quatre types d'adresses:

 Adresse locale interne


 Adresse globale interne
 Adresse locale externe
 Adresse globale externe

Les types de NAT incluent: NAT statique, NAT dynamique et traduction d'adresses de port (PAT).
Dépannage des problèmes de connectivité des applications

Le dépannage réseau suit généralement les couches OSI. Vous pouvez commencer de haut en bas en
commençant par la couche d'application et en descendant vers la couche physique, vous pouvez aller de bas
en haut. Si vous ne trouvez aucun problème de connectivité réseau à l'une des couches du modèle OSI, il est
peut-être temps d'examiner le serveur d'applications.

Les utilisations courantes de ifconfig sont les suivantes:

 Configurer l'adresse IP et le masque de sous-réseau pour les interfaces réseau.


 Interroger l'état des interfaces réseau.
 Activer/désactiver les interfaces réseau.
 Modifier l'adresse MAC sur une interface réseau Ethernet.

ping est un utilitaire logiciel utilisé pour tester l'accessibilité du réseau IP pour les hôtes et les périphériques
connectés à un réseau spécifique. Il est également disponible sur pratiquement tous les systèmes
d'exploitation et est extrêmement utile pour résoudre les problèmes de connectivité. L'utilitaire ping utilise le
protocole ICMP (Internet Control Message Protocol) pour envoyer des paquets à l'hôte cible, puis attend les
réponses d'écho ICMP. Basé sur cet échange de paquets ICMP, ping signale les erreurs, la perte de paquets,
le temps aller-retour, le temps de vie (TTL) pour les paquets reçus, et ainsi de suite.

traceroute utilise des paquets ICMP pour déterminer le chemin d'accès à la destination. Le champ Time to
Live (TTL) dans l'en-tête de paquet IP est principalement utilisé pour éviter les boucles infinies dans le
réseau. Pour chaque saut ou routeur traversé par un paquet IP, le champ TTL est décrémenté par un. Lorsque
la valeur de champ TTL atteint 0, le paquet est ignoré. Habituellement, le champ TTL est défini sur sa valeur
maximale, 255, sur l'hôte qui est la source du traffic, car l'hôte tente de maximiser les chances que ce paquet
arrive à sa destination. traceroute inverse cette logique et incrémente progressivement la valeur TTL du
paquet qu'il envoie, à partir de 1 et continue d'ajouter 1 au champ TTL sur le paquet suivant et ainsi de suite.
La définition d'une valeur TTL de 1 pour le premier paquet signifie que le paquet sera ignoré sur le premier
routeur. Par défaut, la plupart des routeurs envoient à la source du traffic un paquet ICMP Time Exceded
l'informant que le paquet a atteint une valeur TTL de 0 et doit être ignoré.

nslookup est un autre utilitaire de ligne de commande utilisé pour interroger DNS afin d'obtenir le mappage
du nom de domaine à l'adresse IP. Cet outil est utile pour déterminer si le serveur DNS configé sur un hôte
spécifique fonctionne comme prévu et résout réellement les noms d'hôte en adresses IP. Il se peut qu'un
serveur DNS ne soit pas du tout configé sur l'hôte, alors assurez-vous de vérifier /etc/resolv.conf sur les
systèmes d'exploitation UNIX et que vous avez au moins un serveur de noms défini.
6 . Déploiement :

Dans les premiers temps des ordinateurs, il n'y avait pas de choix quant à la façon de déployer votre
logiciel; vous l'avez simplement installé sur l'ordinateur lui-même. Aujourd'hui, ce modèle est connu sous
le nom de "métal nu", mais il est seulement l'une des nombreuses options disponibles pour vous. Ces options
incluent des machines virtuelles, des conteneurs et des options plus récentes telles que l'informatique sans
serveur.

Sans système d'exploitation (Métal nu)

 Un déploiement de métal nu est essentiellement déployé sur un ordinateur réel. Il est utilisé pour
installer un logiciel directement sur l'ordinateur cible.
 Dans cette méthode, le logiciel peut accéder directement au système d'exploitation et au matériel.
 Il est utile pour les situations nécessitant un accès à du matériel spécialisé ou pour les applications
HPC (High Performance Computing).
 Il est maintenant utilisé comme infrastructure pour héberger des infrastructures de virtualisation et de
cloud.

Machines virtuelles (VM)

 Les machines virtuelles partagent les ressources de l'hôte. C'est comme un ordinateur au sein de
l'ordinateur et possède sa propre puissance de calcul, ses interfaces réseau et son propre stockage.
 L'hyperviseur est un logiciel qui crée et gère les VM.
 Les machines virtuelles s'exécutent au-dessus d'un hyperviseur qui fournit aux machines virtuelles un
matériel simulé ou un accès contrôlé au matériel physique sous-jacent.

Infrastructure basée sur des conteneurs

 Les conteneurs ont été conçus pour offrir les mêmes avantages que les machines virtuelles, tels que
l'isolation des charges de travail et la possibilité d'exécuter plusieurs charges de travail sur une seule
machine, mais ils sont architecturés un peu différemment.

 Les conteneurs partagent les ressources de l'hôte, y compris le noyau.


Un conteneur partage le système d'exploitation de la machine hôte et utilise des binaires et des
bibliothèques spécifiques au conteneur.
Informatique sans serveur / Serverless Computing

 L'informatique sans serveur tire parti d'une tendance moderne vers des applications qui s'articulent
autour des services. Application fait un appel à un autre programme ou charge de travail pour
accomplir une tâche particulière, pour créer un environnement où les applications sont mises à
disposition sur une base « au besoin ».
Cela fonctionne comme suit :
 Étape 1.Le développeur crée une application.
 Étape 2.Le développeur déploie l'application en tant que conteneur, afin qu'elle puisse
s'exécuter facilement dans n'importe quel environnement approprié.
 Étape 3.Le développeur déploie ce conteneur vers un fournisseur de calcul sans serveur.
 Étape 4.L'application appelle à une fonction (spin up/spin down).
 Étape 5.Le fournisseur exécute une instance du conteneur, effectue la tâche nécessaire et
renvoie le résultat à l’demandeur de l’application.
 Le modèle informatique sans serveur signifie que vous n'avez aucun contrôle sur la machine hôte, de
sorte qu'il peut ne pas être approprié du point de vue de la sécurité.

Dans les premiers temps de l'informatique, l'infrastructure était assez simple. Le logiciel fonctionnait sur un
seul ordinateur et les réseaux pouvaient relier plusieurs ordinateurs ensemble.
Maintenant, l'infrastructure est devenue plus compliquée, avec diverses options disponibles pour la
conception de l'infrastructure, telles que différents types de nuages.

 Sur site signifie tout système qui se trouve littéralement dans les limites du bâtiment.
Sur site sont les centres de données traditionnels qui hébergent des machines individuelles qui sont
provisionnées pour des applications plutôt que pour des clouds.
 Ces centres de données traditionnels avec des serveurs dédiés aux applications individuelles, ou aux
machines virtuelles, qui permettent à un seul ordinateur d'agir comme plusieurs ordinateurs.
 L'exploitation d'un centre de données local traditionnel exige que les serveurs, les périphériques de
stockage et l'équipement réseau soient commandés, reçus, assemblés en racks, déplacés vers un
emplacement et câblés pour l'alimentation et les données. Toute cette configuration de l'infrastructure
prend du temps et des efforts.
 Les problèmes liés à l’infrastructure « Sur Site » peuvent être résolus en passant à une solution basée
sur le cloud.

Un cloud est un système qui fournit un provisionnement en libre-service pour les ressources de
calcul, la mise en réseau et le stockage.
Cloud Computing est un modèle qui offre aux utilisateurs du réseau un accès à la demande, à un
ensemble de ressources informatiques partagées et configurables, et qui peuvent être rapidement mises à
la disposition du client sans interaction direct avec le prestataire de service»
Dans une infrastructure de cloud privé, l'organisation contrôle toutes les ressources.
Dans la plupart des cas, un cloud privé est situé dans un centre de données et toutes les ressources qui
s'exécutent sur le matériel appartiennent à l'organisation propriétaire.
L'avantage d'un cloud privé est que l'on a un contrôle complet sur l'endroit où il se trouve.
Une équipe opérationnelle est nécessaire pour gérer le cloud et le maintenir en service.

Un cloud public est identique à un cloud privé, mais il est géré par un fournisseur de cloud public.

 Les clients du cloud public peuvent partager des ressources avec d'autres organisations. Sinon, les
fournisseurs de cloud public peuvent fournir aux clients une infrastructure dédiée.
 Avec un cloud public, l'organisation ne contrôle pas les ressources.
 Un cloud public est utile pour augmenter virtuellement aussi longtemps que la charge l'exige, puis
diminuer lorsque le trafic est lent.
Un inconvénient du cloud public est connu comme le problème du « voisin bruyant ».

Le cloud hybride est la combinaison de deux types différents de nuages.


Le cloud hybride est utilisé pour faire le pont entre un cloud privé et un cloud public au sein d'une
seule application.
Le cloud hybride combine le cloud public et le cloud privé pour fournir des ressources et une sécurité
supplémentaires si nécessaire.
Le cloud hybride se distingue par l'utilisation de plus d'un nuage au sein d'une seule application.
Les orchestrateurs de conteneurs sont devenus très populaires auprès des entreprises qui utilisent des
déploiements de cloud hybride.
Le cloud Edge gagne en popularité en raison de la croissance de l'Internet des objets (IoT).

Le cloud Edge permet aux ressources de se rapprocher de l'endroit où elles sont nécessaires.
L'informatique en cloud Edge comprend un ou plusieurs nuages centraux qui agissent comme un hub
pour les nuages périphériques eux-mêmes.
Le matériel pour les clouds de périphérie est situé le plus près possible de l'utilisateur.
Le cloud Edge s'exécute sur du matériel beaucoup plus petit, de sorte qu'il peut être plus limité aux
ressources.

Docker :
Le moyen le plus populaire de conteneuriser une application et de la déployer en tant que
conteneur c’est Docker. Un conteneur est un moyen d'encapsuler tout ce dont vous avez besoin
pour exécuter votre application, afin qu'elle puisse être facilement déployée dans une variété
d'environnements.
Docker est un moyen de créer et d'exécuter ce conteneur.
Docker est un format qui enveloppe un certain nombre de technologies différentes pour créer des
conteneurs. Ces technologies sont les suivantes :
 Espaces de noms - Ces espaces isolent différentes parties du conteneur en cours d'exécution.
 Groupes de contrôle – Ces groups sont un concept Linux standard qui permet au système de
limiter les ressources utilisées par une application.
 Systèmes de fichiers Union – Ces UnionFS sont des systèmes de fichiers qui sont construits
couche par couche, combinant des ressources.
Une image Docker est un ensemble de fichiers en lecture seule qui n'ont pas d'état et qui
contient du code source, des bibliothèques et d'autres dépendances nécessaires à l'exécution d'une
application.

Un conteneur Docker est l'instance d'exécution d'une image Docker.


La création d'un conteneur consiste à extraire une image ou un modèle d'un référentiel, puis à
l'utiliser pour créer un conteneur.

Donc, une version simplifiée du flux de travail de création d'un conteneur ressemble à ceci:

Étape 1. Créez une nouvelle image à l'aide de docker build ou tirez une copie d'une image
existante d'un registre à l'aide de docker pull. (Selon les circonstances, cette étape est facultative.
Voir l'étape 3.)

Étape 2. Exécutez un conteneur basé sur l'image en utilisant docker run ou docker container
create.

Étape 3. Le démon Docker vérifie s'il possède une copie locale de l'image. Si ce n'est pas le cas, il
extrait l'image du registre.

Étape 4. Le démon Docker crée un conteneur basé sur l'image et, si docker run a été utilisé, se
connecte à celui-ci et exécute la commande demandée.

Comme vous pouvez le voir, si vous voulez créer un déploiement basé sur le conteneur de l'exemple
d'application, vous devrez créer une image. Pour ce faire, vous avez besoin d'un Dockerfile.

Si vous avez utilisé un langage de codage tel que C, vous savez qu'il vous a fallu compiler votre
code. Si c'est le cas, vous connaissez peut-être le concept d'un "makefile". C'est le fichier que
l'utilitaire make utilise pour compiler et construire toutes les pièces de l'application.

 C'est ce qu'un Dockerfile fait pour Docker. Il s'agit d'un fichier texte simple, nommé Dockerfile. Il
définit les étapes que la commande docker build doit suivre pour créer une image qui peut ensuite être
utilisée pour créer le conteneur cible.

Vous pouvez créer un Dockerfile très simple qui crée un conteneur Ubuntu. Utilisez la commande cat pour
créer un Dockerfile, puis ajoutez From ubuntu au fichier. Entrez Ctrl+D pour enregistrer et quitter le fichier
avec le texte suivant et l'enregistrer dans votre répertoire actuel.

vous pouvez utiliser la commande docker build pour construire l'image


L'option -t est utilisée pour nommer la construction. Notez le point (.) à la fin de la commande qui spécifie
que l'image doit être construite dans le répertoire courant.

Utilisez docker build —help pour voir toutes les options disponibles.

Entrez la commande docker images pour voir votre image dans la liste des images sur la machine virtuelle
DEVASC

La commande docker run pour l'exécuter

Vous êtes maintenant dans un shell bash INTÉRIEUR de l'image docker que vous avez créée. Changez dans
le répertoire de base et entrez ls pour voir qu'il est vide et prêt à l'emploi. Entrez exit pour quitter le
conteneur Docker et revenir au système d'exploitation principal de votre machine virtuelle DEVASC.

Considérez le Dockerfile suivant dont l’objectif est conteneuriser une application Python :
Explication des commandes :
La commande From installe Python dans l'image Docker.
La commande WORKDIR indique à Docker d'utiliser /home/ubuntu comme répertoire de travail.
La commande COPY indique à Docker de copier le fichier du répertoire courant de Dockerfile
dans/home/ubuntu.
La commande RUN permet d'exécuter directement des commandes sur le conteneur.
La commande CMD démarre l’application sample-app.py lorsque l'utilisateur exécute le conteneur.
La commande EXPOSE indique à Docker que le port d’écoute est 8080.

 Après avoir construit l'image en utilisant dockerfile, créez un nouveau conteneur et effectuez un travail
en entrant la commande docker run.
Le paramètre -d est abrégé pour —detach et indique que l'image doit s'exécuter en arrière-plan.
Le paramètre -P indique à Docker de le publier sur le port exposé.
Pour afficher les processus conteneurs actifs :docker ps

L'attribution de noms est également effectuée avec l' option—name.

Même si le conteneur écoute sur le port 80, il s'agit simplement d'un port interne. Docker a spécifié un
port externe comme 32774, qui sera transporté vers le port interne.
Cela vous permet d'exécuter plusieurs conteneurs qui écoutent sur le même port sans avoir de
conflits.
Pour extraire l'exemple de site Web de l'application, utilisez l'adresse IP publique du serveur hôte et ce
port est utilisé.

Lorsque votre conteneur est en cours d'exécution, vous pouvez vous y connecter comme vous le feriez
pour n'importe quel hôte physique ou virtuel à l'aide de la commande exec de l'hôte sur lequel le
conteneur s'exécute.

Arrêter un conteneur en cours d'exécution: docker stop pythontest supprimer : docker stop pythontest

supprimer un conteneur en cours d'exécution, il faut forcer la suppression : docker rm -f pythontest d

Enregistrer une image Docker dans un registre :

Pour rendre l'image disponible pour les utilisateurs, stockez-la dans un registre d'images.
Par défaut, Docker utilise le registre Docker Hub, mais les utilisateurs peuvent également créer leur
propre registre. Pour commencer le processus
Connectez-vous au registre :

Valider le conteneur en cours d'exécution avec la commande docker commit.

Utilisez la commande docker tag pour donner à l'image la balise qui a été validée.

La première partie, le référentiel, est généralement le nom d'utilisateur du compte stockant l'image. Ensuite
est le nom de l'image, puis enfin la balise facultative.
Maintenant, l'image est prête à être poussée dans le référentiel.

Notez que la nouvelle image est stockée aussi localement.

CI/CD

CI : l'intégration continue est que vous, et tous les autres développeurs du projet, fusionnez
continuellement vos modifications avec la branche principale de l'application existante.

Le processus d'intégration continue offre un certain nombre d'avantages supplémentaires :

 Compilation code
 Exécution de test unitaire
 Analyse des codes statiques
 Tests d'intégration
 Emballage et gestion des versions
 Publication du package de version vers Docker Hub ou d'autres référentiels de packages

CD : Distribution (livraison) continu :

 Après l’automatisation des tests unitaires dans le cadre de l’intégration continue, la distribution
continue automatise la publication du code validé dans un référentiel. La distribution continue
permet de disposer d’une base de code toujours prête à être déployée dans un environnement de
production.
 La livraison continue, pour être efficace, doit s’appuyer sur des référentiels capables de proposer
une fonctionnalité de suivi de version pour avoir la possibilité de revenir (le plus automatiquement
possible) à une version antérieure du livrable en cas de problème. Des solutions existent comme
« Nexus Repository » ou « Azure DevOps Artifacts »
 Le processus du Continuous Delivery ressemble à ceci:
Étape 1 : Commencez par l'artefact de version créé dans le cadre du processus CI.
Étape 2 : Déploiement automatique de la version candidate lors de la mise en scène.
Étape 3 : Exécuter les tests de gating qui étaient identifiés par l'équipe ou l'organisation.
Étape 4 : Si tous les tests de gating réussissent, étiquetez cette construction comme adaptée à la
production.

CD :Déploiement continu :

 Le déploiement continu est l'expression ultime de CI/CD. Lorsque des modifications sont
apportées, testées, intégrées à la branche principale et testées à nouveau, elles sont déployées en
production grâce à l'automatisation. Cela signifie que le code est constamment déployé en
production, ce qui signifie que vos utilisateurs seront vos testeurs finaux.
 En d'autres termes, le déploiement continu est un type spécial de livraison continue, dans lequel
chaque build marqué comme prêt pour la production est déployé.
 Certaines organisations privilégient ce type de déploiement car cela signifie que les utilisateurs
disposent toujours du code le plus à jour. La plupart des organisations adoptent une approche
plus prudente qui exige un humain pour pousser le code à la production.

Prévenir l'impact sur les utilisateurs


Bien que nous essayions de faire des tests approfondis dans le cadre du processus CI/CD, il y a
toujours la possibilité qu'une mauvaise construction passe la porte. Afin d'éviter d'affecter les
utilisateurs, ou au moins de limiter l'impact, vous pouvez utiliser des stratégies de déploiement
telles que:

 Rolling upgrade (Mise à niveau progressive): les modifications sont régulièrement


déployées de manière à ne pas avoir d'impact sur les utilisateurs actuels, et utilisateurs ne
devrait avoir à réinstaller le logiciel.
 Canary Release : La nouvelle version est déployée à un sous-ensemble d'utilisateurs. Si
ces utilisateurs rencontrent des problèmes, les modifications peuvent être facilement
annulées. Si ces utilisateurs ne rencontrent pas de problèmes, les modifications sont
déployées vers le reste de la production.
 Deployment bleu-green : un environnement entièrement nouveau (bleu) est créé avec le
nouveau code, mais l'ancien environnement (vert) est conservé en réserve. Les deux
environnements de production configurés de manière identique. Un Rollback eest possible
car l’ancien déploiement est encore opérationnel.

Avantages de CI/CD :
Les entreprises sont disposées à apporter un changement radical à leurs processus en raison
des avantages que présente l'utilisation de la CI/CD pour le développement. Parmi les avantages
plus notables, on cite:

 Intégration avec des méthodologies agiles - Le développement agile est construit autour de
l'idée de sprints courts, après quoi l'équipe de développeurs fournit une application
fonctionnelle avec un sous-ensemble des fonctionnalités requises. CI/CD fonctionne dans ce
même cadre de sprint court. Chaque commit est une version du concept "livrer une version de
travail du logiciel".
 Temps moyen de résolution plus court (MTTR) - Étant donné que les modifications sont
petites, il devient beaucoup plus facile d'isoler les défaillances lorsqu'elles se produisent, de
les corriger ou de les annuler et de résoudre les problèmes.
 Déploiement automatisé - Grâce aux tests automatisés et au déploiement prévisible, vous
avez la possibilité d'effectuer des déploiements automatisés. Cela signifie qu'il est possible
d'utiliser des stratégies de déploiement telles que le déploiement de canary release, dans
lequel un ensemble d'utilisateurs obtient le nouveau jeu de fonctionnalités et le reste obtient
l'ancien. Ce processus vous permet de tester en direct la nouvelle fonctionnalité pour vous
assurer qu'elle fonctionne comme prévu avant de la déployer sur l'ensemble de la base
d'utilisateurs.
 Fonctionnalités moins perturbatrices - Avec le développement des fonctionnalités en petits
morceaux et parce qu‘elles ont été soigneusement testés avant l'adoption à grande échelle, lla
résolution des erreurs est plus facile et elle est plus susceptible d'être traitée en temps
opportun plutôt que d'accumuler une dette technique.
 Temps de mise sur le marché amélioré - Comme les fonctionnalités peuvent être déployées
individuellement, elles peuvent être proposées aux utilisateurs beaucoup plus rapidement que
si elles devaient être déployées en même temps.

Réseaux et sécurité : De nos jours, vous devez prendre en compte la mise en réseau pour tous
les cas d'utilisation sauf les plus simples. Cela est particulièrement vrai lorsqu'il s'agit de
déploiements dans le cloud et les conteneurs. Voici quelques-unes des applications que vous
devez prendre en compte en matière de déploiement dans le cloud:

 Pare-feu
 Équilibreurs de charge
 DNS
 Procurations inversées (Reverse proxies)

Les pare-feu sont la défense la plus élémentaire d'un ordinateur contre l'accès non autorisé par des
personnes ou des applications. Ils peuvent prendre n'importe quel nombre de formes, allant d'un
périphérique matériel dédié à un paramètre au sein du système d'exploitation d'un ordinateur individuel.
Au niveau le plus élémentaire, un pare-feu accepte ou rejette les paquets en fonction des adresses IP et des
ports auxquels ils sont adressés. Par exemple, considérez un serveur Web. Ce serveur a sur lui le logiciel du
serveur Web réel, ainsi que l'application qui représente le site et la base de données qui contient le contenu
affiché par le site. Sans pare-feu, le serveur pouvait être accessible de plusieurs façons

- configurez un pare-feu avec des "règles" spécifiques, qui sont superposées les unes sur les autres. Par
exemple, vous pouvez avoir cette règle:

Refuser tout accès à qui que ce soit, avec ces règles...

 Autoriser les requêtes TCP à porter 443 de n'importe qui


 Bloquer toutes les requêtes TCP au port 22
 Bloquer toutes les requêtes TCP au port 80

(HTTPS et SSH utilisent des requêtes TCP.)

 Dans certains cas, vous voulez activer l'accès, mais pas uniquement de n'importe qui. Par exemple, vous
pouvez configurer vos systèmes de sorte que les connexions aux systèmes sensibles ne puissent
provenir que d'une seule machine. Ceci est appelé une "boîte de saut", et tout le monde doit d'abord se
connecter à ce serveur, puis se connecter à la machine cible à partir de là. Une boîte de saut peut être
utilisée pour fournir un accès supplémentaire tout en fournissant une couche de sécurité supplémentaire.
 quelques éléments à prendre en compte lorsqu'il s'agit de pare-feu:

 Les pare-feu doivent empêcher l'accès any en dehors de l'application non testée de se produire.
 Les pare-feu doivent être configurés pour que l'application puisse être testée de manière appropriée.
Par exemple, si l'application doit accéder à une version de développement d'une base de données, les
règles de pare-feu doivent l'autoriser.
 L' environnement doit être aussi proche que possible d'une réplique de production afin de
détecter rapidement tout problème de configuration lié au pare-feu.

Notez que les pare-feu n'empêchent pas seulement le trafic d'entrer; ils peuvent également être configurés
pour empêcher le trafic de sortir.

Un équilibreur de charge fait exactement ce qu'il dit; il prend des demandes et les "équilibre" en les
répartissant entre plusieurs serveurs.

Sessions persistantes - Si une application nécessite une session persistante, par exemple, un utilisateur doit
être connecté, l'équilibreur de charge envoie des demandes au serveur gérant cette session.

Round robin - Avec l'équilibrage de charge round robin, le serveur envoie simplement chaque requête au
serveur "suivant" de la liste.

Moins de connexions - Il est souvent logique d'envoyer des requêtes au serveur le moins "occupé" - le
moins de connexions actives.
Hash IP - Avec cet algorithme, l'équilibreur de charge prend une décision basée sur un hachage (une valeur
encodée basée sur l'adresse IP de la requête).

DNS :

DNS, ou le système de noms de domaine, est la façon dont les serveurs sur Internet traduisent des noms
lisibles par l'homme (tels que developer.cisco.com ou www.example.com) en adresses IP routables par
machine telles que 74.125.157.99 (pour Google) ou 208.80.152.201 (pour Wikipedia). Ces adresses IP sont
nécessaires pour naviguer réellement sur Internet.

Dans le déploiement de logiciels, ce système est bénéfique car vous pouvez modifier la signification de ces
adresses. Dans cet exemple, l'application est codée pour rechercher la base de données dans
database.example.com:5000, qui vit à l'adresse IP 203.0.113.25.

vous pouvez créer une version de développement de l'application, et vous voulez qu'elle touche une version
de développement de la base de données, qui vit à 172.24.18.36.( définir la machine de développement pour
qu'elle utilise un serveur DNS répertoriant database.example.com comme 172.24.18.36. Vous pouvez tester
l'application par rapport à la base de données de test sans apporter de modifications à l'application.).

Proxy direct : Utilisé par les utilisateurs pour accéder aux ressources externes (comme les sites web) en
masquant leur adresse IP.

Proxy inverse : Placé devant un serveur interne, il filtre et redirige les requêtes entrantes vers le bon serveur
en interne. Le proxy inverse peut aussi surveiller le trafic, fonctionnant un peu comme un pare-feu ou un
équilibrage de charge (distribution du trafic pour éviter la surcharge). Ce type de proxy est souvent utilisé
pour le déploiement sécurisé d’applications.

Un proxy inverse est similaire à un proxy standard: cependant, alors qu'un proxy normal fonctionne pour
faire en sorte que les requêtes provenant de plusieurs ordinateurs semblent toutes provenir du même client,
un proxy inverse fonctionne pour s'assurer que les réponses semblent toutes provenir du même serveur.

Meilleures pratiques pour le stockage de données chiffrées :

 Chiffrement bidirectionnel : On chiffre les données sensibles (par exemple, des dossiers
médicaux) avec une clé, qu'on utilise pour les déchiffrer.
 Chiffrement unidirectionnel : Utilisé pour les données qu’on n’a pas besoin de récupérer, mais
seulement de comparer (ex. les mots de passe). Cela produit un « brouillage » irréversible, et pour
vérifier le mot de passe, on compare les versions chiffrées.

Stockage des clés : Utiliser un service de gestion de clés ou un matériel sécurisé pour ne pas laisser la clé en
base de données.

Vulnérabilités logicielles
 Les logiciels, y compris les bibliothèques tierces, peuvent contenir des failles de sécurité. Utilisez
des outils de scan comme Bandit, Brakeman pour vérifier les vulnérabilités et assurez-vous qu’une
personne dans votre équipe suit les correctifs récents de sécurité.

Limiter le stockage de données

 Ne stockez que les informations essentielles. Si un code suffit, n'enregistrez pas le numéro de carte
complet.

Stockage dans le cloud

 Le cloud représente un risque, car vos données sont stockées sur des serveurs extérieurs. Assurez-
vous de chiffrer vos données avant de les envoyer sur le cloud pour éviter tout accès non autorisé.

Sécuriser les appareils mobiles

 Les appareils comme les ordinateurs portables, tablettes ou téléphones sont facilement perdus.
Assurez-vous que les données y sont chiffrées.

Sécuriser le transport des données

 SSH : Utilisez SSH pour les connexions serveur pour assurer l’authentification et le chiffrement.
 TLS : Employez toujours HTTPS pour les échanges en ligne, remplaçant les anciennes normes
comme SSL.
 VPN : Un VPN chiffre le trafic et restreint l’accès aux ressources privées du réseau.

L'injection SQL est une technique de piratage qui consiste à insérer des commandes SQL dans des
champs d'entrée pour exploiter les failles d'une application et accéder aux données de manière non
autorisée.

Les attaques par injection SQL permettent aux attaquants d'usurper leur identité, d'altérer les données
existantes, de provoquer des problèmes de répudiation tels que l'annulation des transactions ou la
modification des soldes, de permettre la divulgation complète de toutes les données du système, de
détruire les données ou de les rendre indisponibles, et de devenir administrateurs de la base de données
serveur.

l s'agit du placement de code malveillant dans les instructions SQL, via l'entrée de page Web. Cela se
produit généralement lorsque vous demandez à un utilisateur d'entrer, comme son nom d'utilisateur/ID
d'utilisateur, et au lieu d'un nom/ID, l'utilisateur vous donne une instruction SQL que vous exécuterez sans le
savoir sur votre base de données.

Regardez l'exemple suivant qui crée une instruction SELECT en ajoutant une variable (uid) à une chaîne
select. La variable est récupérée à partir de l'entrée de l'utilisateur en utilisant request.args("uid"):
Un exemple est SQL Injection basée sur 1=1 est toujours vrai (en Sql-Speak).

Un créateur de logiciels malveillants ou un pirate peut avoir accès à tous les profils utilisateur de la base de
données, 2019 OR 1=1 (Toujours vrai)en tapant simplement dans le champ de saisie.

SELECT * FROM Users WHERE UserId = 2019 OR 1=1;

SELECT * FROM UserProfiles WHERE Name ="" OR ""="" AND Pass ="" OR ""=""

Le code SQL ci-dessus est valide et renvoie toutes les lignes de la table "Users", car OU ""="" est toujours
TRUE.

L'instruction SQL ci-dessous retournera toutes les lignes de la table "UserProfiles", puis supprimera la table
"UserImages".

Exemple:

SELECT * FROM UserProfiles; DROP TABLE UserImages

Détecter et empêcher l'injection SQL:

Outils Open Source :

Pour faciliter la détection d'une attaque par injection SQL, les développeurs ont créé de bons moteurs de
détection. Quelques exemples sont SQLMap ou SQLNinja.

Les outils d'analyse de code source ou SAST (Static Application Security Testing) analysent le code
source à la recherche de failles, comme les dépassements de tampon ou les injections SQL

Pare-feu de base de données

 Les pare-feux de bases de données, un type de pare-feu d'application web, surveillent les requêtes
SQL. Ils détectent les requêtes malveillantes basées sur des motifs communs d’injections, comme les
blocs OR et UNION, pour protéger les données sensibles.

Utilisation d'instructions préparées et de requêtes paramétrées


 En utilisant des requêtes préparées (ou requêtes paramétrées), les développeurs définissent la
structure SQL et fournissent les paramètres utilisateur séparément. Cela empêche la modification de
la requête par des entrées malveillantes.

Utilisation de procédures stockées

 Les procédures stockées, lorsqu’elles n’incluent pas de SQL dynamique, agissent comme des
requêtes paramétrées et protègent des injections. Cependant, si des requêtes dynamiques sont
nécessaires, il faut une validation rigoureuse des entrées pour éviter les failles.

Validation d'entrées par liste blanche

 La validation par liste blanche permet de restreindre les valeurs acceptables des paramètres
utilisateurs (par exemple, les noms de tables ou d'ordres de tri). Cela réduit les risques d’injection en
vérifiant que les valeurs d'entrée correspondent à celles prévues dans le code.

Échappement des entrées utilisateur

 En dernier recours, les entrées utilisateur peuvent être échappées pour empêcher l'interprétation
comme du code SQL. Cette technique dépend du SGBD utilisé et peut être fragile, donc elle est à
privilégier pour le code hérité ou les cas où d'autres méthodes sont impossibles.

Principe du moindre privilège

 Limiter les droits d'accès des comptes de base de données aux privilèges strictement nécessaires
(lecture, écriture) réduit l’impact d’une attaque réussie. Évitez d'exécuter des applications en tant que
root et définissez des comptes avec des privilèges restreints pour chaque application.

Utiliser plusieurs comptes de base de données

 Utiliser des comptes distincts pour chaque application web ou fonctionnalité spécifique (connexion,
inscription, etc.) permet un contrôle fin des droits d'accès en fonction des besoins de chaque tâche.

Vues SQL

 Vous pouvez utiliser les vues SQL pour augmenter davantage les détails d'accès en limitant l'accès en
lecture à des champs spécifiques d'une table ou à des jointures de tables. Il pourrait avoir des avantages
supplémentaires.

l'OWASP?

Le projet Open Web Application Security Project (OWASP) vise à fournir de l'éducation, des outils et
d'autres ressources pour aider les développeurs à éviter certains des problèmes de sécurité les plus courants
dans les applications Web. Les ressources fournies par l'OWASP comprennent:
 Outils - OWASP produit des outils tels que le OWASP Zed Attack Proxy (ZAP), qui recherche les
vulnérabilités pendant le développement, OWASP Dependency Check, qui recherche les
vulnérabilités connues dans votre code, et OWASP DefectDojo, qui rationalise le processus de test.
 Projets de code - OWASP produit l'OWASP ModSecurity Core Rule Set (CRS), des règles
génériques de détection d'attaques qui peuvent être utilisées avec les pare-feu d'applications Web, et
OWASP CSRFGuard, qui aide à prévenir les attaques CSRF (Cross-Site Request Forgery).
 Projets de documentation - OWASP est peut-être mieux connu pour ses projets de documentation,
notamment la norme de vérification de la sécurité des applications OWASP, le top dix de l'OWASP,
qui décrit les 10 problèmes de sécurité les plus courants dans les applications Web, et la fiche de
triche OWASP , qui explique comment atténuer ces problèmes.

XSS (Cross-Site Scripting)

Les attaques XSS se produisent quand un contenu soumis par un utilisateur, sans être correctement filtré ou
"désinfecté", est affiché à d'autres utilisateurs.

Types d'attaques XSS

1. Stored XSS (XSS stocké) : Le code malveillant est stocké dans la base de données et exécuté pour
chaque utilisateur qui consulte la page.
2. Reflected XSS (XSS réfléchi) : Un attaquant pourrait tromper quelqu'un en cliquant sur un lien qui
inclut du code malveillant en paramètre.

La stratégie principale pour éviter les attaques XSS est de désinfecter le contenu avant de l'afficher. En
particulier, OWASP recommande de ne pas afficher du contenu non vérifié dans :

 Les balises de scripts internes.


 Les commentaires.
 Les noms d’attributs.
 Les noms de balises.
 Les balises de style CSS.

Pour afficher du contenu en toute sécurité, il est recommandé de passer par des outils de nettoyage
spécialisés, comme OWASP Java HTML Sanitizer, HTMLSanitizer ou Python Bleach.

CSRF (Cross-Site Request Forgery)

Les attaques CSRF (Cross-Site Request Forgery) sont similaires aux attaques XSS (Cross-Site
Scripting), car dans les deux cas, l'attaquant incite l'utilisateur à exécuter du code malveillant à son insu.
Cependant, la différence majeure est que les attaques CSRF ne visent pas directement le site de
l'attaquant, mais plutôt un site auquel l'utilisateur est déjà connecté et authentifié.
=> Il est important de noter que même si l'utilisateur évite de cliquer sur des liens suspects, une attaque XSS
sur un autre site pourrait permettre à un attaquant de manipuler le navigateur de l'utilisateur sans qu'il ne
fasse quoi que ce soit.

Caractéristiques de la CSRF

 L'attaquant ne voit jamais les résultats de l'attaque. Il doit être capable de prédire les
conséquences pour que l'attaque fonctionne.
 Les attaques CSRF sont difficiles à prévenir, mais des mesures de protection existent, notamment
l'utilisation de jetons de sécurité uniques pour chaque requête.

Méthode de prévention

Une des méthodes les plus efficaces pour prévenir les attaques CSRF est l'utilisation de jetons CSRF. Ces
jetons sont des chaînes uniques générées pour chaque session d'utilisateur et envoyées avec chaque requête
qui modifie des données.

Top 10 de OWASP :

 Injection : C'est quand l'attaquant arrive à injecter des commandes dans une requête pour manipuler la
base de données.

 Authentification brisée : Ça arrive quand on gère mal les mots de passe et la connexion, rendant le
système vulnérable.

 Exposition des données sensibles : C'est quand des données sensibles comme les mots de passe sont
volées. On doit les crypter.

 XXE : C'est une vulnérabilité dans le traitement des fichiers XML, qu'on peut éviter en utilisant JSON.

 Contrôle d'accès rompu : Ça permet à un attaquant de contourner les règles d'accès. Il faut protéger les
ressources sensibles.

 Configuration erronée : Quand le système n'est pas bien configuré, il devient vulnérable. Faut durcir la
sécurité.

 XSS : L'attaquant insère des scripts malveillants dans les pages web. On doit vérifier toutes les entrées
utilisateurs.

 Désérialisation non sécurisée : L'attaquant manipule des objets envoyés par le serveur pour gagner des
privilèges. On doit valider tout ce qui est désérialisé.

 Composants vulnérables : Il faut éviter d'utiliser des composants avec des failles de sécurité et s'assurer
qu'ils sont à jour.

 Journalisation insuffisante : Si on ne garde pas assez de logs, on peut pas détecter les attaques à temps.
Faut surveiller tout le système.

l'authentification et du stockage sécurisé des mots de passe


1. Mots de passe en texte clair :

 Problème : Les mots de passe stockés en texte clair dans la base de données sont une méthode
simple mais très vulnérable. En cas de piratage de la base de données, les mots de passe des
utilisateurs sont directement exposés.

2. Hachage des mots de passe :

 Hachage : Le hachage transforme un mot de passe en une chaîne de caractères fixe et irréversible, ce
qui protège les mots de passe en cas de fuite de la base de données. C'est une méthode plus sécurisée
que le texte clair.

3. Mots de passe salés :

 Problème avec le hachage simple : Si des utilisateurs choisissent le même mot de passe, leur
hachage sera identique, ce qui peut être exploité par des attaquants.
 Solution - Sel : Ajouter un "sel" (une valeur aléatoire) à chaque mot de passe avant de le hacher
garantit que même les mots de passe identiques donneront des hachages différents. Cela protège
contre les attaques par dictionnaire et les tables arc-en-ciel.

4. Stockage des mots de passe salés :

 Stockage des sels et hachages : Le sel est généralement stocké en texte clair dans la base de
données, avec le hachage du mot de passe. Lors de la connexion, le sel est récupéré et ajouté au mot
de passe fourni par l'utilisateur, puis ce mot de passe salé est haché à nouveau pour vérifier si le
hachage correspond à celui stocké.

5. Sécurité supplémentaire :

 Authentification multi-facteurs : Même avec des mots de passe hachés et salés, l'authentification à
un seul facteur reste vulnérable aux attaques. Il est recommandé d'utiliser l'authentification multi-
facteurs pour ajouter une couche de sécurité supplémentaire.

Piratage de mot de passe :

Devinette de mot de passe :

 Définition : Consiste à tenter de deviner ‫ خمن‬le mot de passe d'un utilisateur via une série de
tentatives.
 Protection : Le verrouillage de compte est une technique utilisée pour limiter le nombre de
tentatives de connexion infructueuses.

Attaque de dictionnaire :

 Définition : Utilisation d'une liste de mots fréquents, comme ceux présents dans un dictionnaire,
pour tenter de trouver un mot de passe.
 Protection : L'utilisation de mots de passe complexes, comme des phrases secrètes, rend cette
attaque moins efficace.

Attaque précalculée par dictionnaire / Tables arc-en-ciel :


 Définition : Consiste à créer une table avec les hachages de mots de passe communs, ce qui accélère
l'attaque.
 Protection : Utilisation de "salt" (sel), qui rend chaque mot de passe unique et empêche cette
attaque.

Ingénierie sociale :

 Définition : Manipuler une personne pour obtenir un mot de passe ou des informations sensibles.
 Techniques : Utilisation de biais cognitifs pour convaincre quelqu'un de révéler ses informations
personnelles (comme des appels téléphoniques ou des faux messages).
 Principes de l'influence humaine (Cialdini) :
o Réciprocité : Donner pour recevoir.
o Preuve sociale : Suivre ce que font les autres.
o Autorité : Obéir à ceux qui semblent avoir de l'autorité, etc.
o Aimant : Les gens sympathique sont en mesure de persuader les autres plus efficacement. Ce
principe est bien connu des vendeurs. Les gens sont facilement persuadés par des gens
familiers qu'ils aiment.

Force du mot de passe :

 Définition : La force d'un mot de passe est déterminée par sa longueur, sa complexité et son
imprévisibilité.
 Exemple : "motdepasse" est faible, "passw0rd123" est meilleur, mais "Pass#W0rd$123" est fort

Bonnes pratiques et directives NIST :

 Recommandations : Utiliser des mots de passe longs et complexes, éviter les indices de mot de
passe, et ne pas forcer la réinitialisation périodique des mots de passe.

7.Automatisation et infrastructure

L'automatisation consiste à utiliser du code pour configurer, déployer et gérer les applications, et
s'applique aux infrastructures comme le calcul, le stockage, et le réseau. Des outils comme Ansible,
Marionnette et Chef permettent une gestion automatisée de ces services.

 Chez Cisco, les solutions d'automatisation permettent de gérer les infrastructures réseau de manière
programmable, en utilisant des API et en intégrant ces outils. Cette automatisation est essentielle pour
suivre la rapidité et l'agilité nécessaires dans le marché concurrentiel actuel.
- Cisco propose plusieurs solutions d'automatisation, avec des niveaux de complexité croissants,
notamment via la plateforme DevNet Automation Exchange :
 Marche (Walk) : Cette phase consiste en une collecte de données en lecture seule pour surveiller les
configurations réseau sans les modifier. Cela aide à auditer les changements et à maintenir les
configurations conformes.
 Exécuter (Run) : Ici, des actions plus avancées sont possibles, comme la mise à jour du réseau par
les utilisateurs, la gestion quotidienne des configurations et l’automatisation des processus de
déploiement pour chaque étape de la vie des applications (Jour 0, Jour 1, etc.).
 Voler (Fly) : Ce niveau inclut des processus complexes via CI/CD, tels que le déploiement
d’applications et la gestion proactive des utilisateurs et appareils.
Les processus manuels, tels que l'attente de disponibilité de l'infrastructure, la configuration et le
déploiement manuels des applications et la maintenance du système de production, sont lents et très
difficiles à mettre à l'échelle.
Les opérations manuelles (anciens) ralentissent les entreprises et augmentent les risques de pannes (couts
financiers) et d’erreurs humaines.
Automatiser les tâches de déploiement, de configuration, et de maintenance permet :
1. D'augmenter la vitesse et la flexibilité : Un déploiement rapide permet aux entreprises de saisir
rapidement de nouvelles opportunités.
2. De réduire les coûts : Les erreurs de configuration manuelle peuvent coûter des centaines de milliers
de dollars en temps d'arrêt.
3. De diminuer la dépendance et les risques d'obsolescence : L'automatisation aide à éviter des
dépendances rigides entre les composants logiciels.
L'écosystème de logiciels moderne est collaboratif, flexible, et en constante évolution. Cependant, il
comporte des risques si les configurations deviennent difficiles à gérer et à sécuriser. En automatisant,
les entreprises restent flexibles tout en limitant les erreurs dues aux dépendances complexes et en
améliorant la gestion des mises à jour.
L'automatisation complète, ou Full-Stack Automation, répond aux besoins modernes d'agilité et de
fiabilité dans la gestion des infrastructures et des applications. Voici pourquoi elle est indispensable :
1. Libre-service (Self-service)
Les structures libre-service automatisées permettent aux utilisateurs de demander une infrastructure
à la demande, notamment:
 Composants d'infrastructure standard tels que les instances de base de données et les
terminaux VPN
 Plateformes de développement et de test
 Serveurs Web renforcés et autres instances d'application, ainsi que les réseaux isolés et l'accès
Internet sécurisé qui les rendent utiles, sécuritaires et résistants aux erreurs
 Plateformes d'analyse telles que Apache Hadoop, Elastic Stack, InfluxData et Splunk
2. Échelle sur demande (Scale on demand) :
Les applications et les plateformes doivent pouvoir évoluer ‫ التوسع‬vers le haut et vers le bas en
fonction des besoins de trafic et de charge de travail et utiliser une capacité hétérogène. Un
exemple est la mise à l'échelle du cloud privé au cloud public et la mise en forme appropriée du
trafic. Les plates-formes cloud peuvent fournir la possibilité de mettre à l'échelle automatiquement
(mise à l'échelle automatique) des machines virtuelles, des conteneurs ou des charges de travail sur
une infrastructure sans serveur.
3. Observabilité
Un système observable permet aux utilisateurs d'inférer ‫ باستنتاج‬l'état interne d'un système
complexe à partir de ses sorties. L'observabilité (parfois abrégée en o11y) peut être obtenue grâce à la
surveillance des plateformes et des applications.
L'observabilité peut également être obtenue grâce à des tests proactifs de production pour les
modes de défaillance et les problèmes de performance. Mais, dans une opération dynamique qui
inclut la mise à l'échelle automatique et d'autres comportements d'application, la complexité
augmente et les entités deviennent éphémères. Un rapport récent du fournisseur de framework
d'observabilité DataDog, indique que la durée de vie moyenne d'un conteneur sous orchestration n'est
que de 12 heures; les microservices et les fonctions ne peuvent fonctionner que pendant quelques
secondes. Les entités éphémères observables et les tests en production ne sont possibles qu'avec
l'automatisation.
4. Atténuation automatisée des problèmes
Certains fabricants de logiciels et experts en observabilité recommandent ce que l'on appelle
Chaos Engineering. Cette philosophie repose sur l'affirmation selon laquelle la défaillance est
normale: au fur et à mesure que les applications évoluent, certaines pièces échouent toujours. Pour
cette raison, les applications et les plates-formes doivent être conçues pour:
 Minimiser les effets des problèmes : Reconnaître rapidement les problèmes et acheminer le
trafic vers d'autres capacités, en veillant à ce que les utilisateurs finaux ne soient pas
gravement touchés et à ce que le personnel des opérations de garde ne soit pas inutilement
paginé.
 l'auto-guérison : Allouez les ressources en fonction de la stratégie et redéployez
automatiquement les composants défectueux selon les besoins pour rétablir l'état sain de
l'application dans les conditions actuelles.
 Suivre les événements : Souvenez-vous de tout ce qui a mené à l'incident, afin que les
corrections puissent être planifiées et que des post-mortems puissent être effectués.
 Certains défenseurs de Chaos Engineering préconisent même l'utilisation d'outils d'automatisation pour
provoquer des défaillances contrôlées (ou aléatoires) dans les systèmes de production. Cela met
continuellement au défi Dev et Ops d'anticiper les problèmes et de renforcer la résilience et la capacité
d'auto-guérison. Les projets open source tels que Chaos Monkey et les plateformes «Failure-as-a-
Service» comme Gremlin sont spécialement conçus pour briser les choses, à la fois au hasard et de
manière beaucoup plus contrôlée et empirique. Une discipline émergente est appelée "test d'injection
d'échec".
Infrastructure définie par logiciel - Un argument pour l'automatisation
L'infrastructure définie par logiciel, également connue sous le nom de cloud computing, permet aux
développeurs et aux opérateurs d'utiliser des logiciels pour demander, configurer, déployer et gérer
des ressources de calcul, de stockage et de réseau virtualisés et virtualisés.
 Le cloud computing permet également des plates-formes et des services plus abstraits, tels que la
base de données en tant que service (DaaS), la plate-forme en tant que service (PaaS), l'informatique
sans serveur, l'orchestration de conteneurs, etc.
 Les clouds privés permettent aux entreprises d'utiliser du matériel coûteux sur site beaucoup plus
efficacement.
 Les clouds publics et privés hébergés permettent aux entreprises de louer des capacités en fonction
des besoins, les laissant évoluer et croître (ou diminuer) plus rapidement, simplifiant la
planification et évitant les investissements en capital fixe.

Avantages des paradigmes du cloud


 Libre-service (plates-formes à la demande) - Les ressources cloud peuvent être disponibles dans
les heures ou les minutes suivant leur besoin. Accélérer ainsi toutes les phases de développement et
permettre une mise à l'échelle rapide de la capacité de production. Les applications peuvent être
mises à l'échelle dans la région de cloud public, l'ensemble de services ou le fournisseur le plus
rentable.
 Spécification étroite, cohérence, répétabilité - Les développeurs peuvent capturer et standardiser
des configurations uniques, en maintenant la cohérence configurationnelle des plates-formes grâce au
développement, aux tests, à la mise en scène et à la production. Le déploiement d'une application et
d'une configuration dont le fonctionnement a été vérifié empêche les bogues qui peuvent être
introduits lors des modifications manuelles de la configuration de la plate-forme.
 Abstraction de plateforme - Les technologies de conteneur abstraient les applications et les plates-
formes les unes des autres, en encapsulant les dépendances des applications et en laissant votre
application conteneurisée s'exécuter sur un environnement hôte génériquement spécifié.
Défis des paradigmes du cloud
L’automatisation dans le cloud est cruciale pour surmonter des défis comme la complexité de gestion, la
sécurité, les accès, et le contrôle des coûts. En standardisant les configurations et en appliquant
automatiquement les règles de sécurité, elle réduit les erreurs humaines et facilite la gestion des
accès. Elle aide également à surveiller les ressources pour éviter des frais inattendus et optimise
l’utilisation dans le cloud privé. En somme, l’automatisation simplifie la gestion, améliore la sécurité, et
optimise les dépenses cloud.
Applications distribuées et dynamiques - Un autre cas pour l'automatisation
Les applications monolithiques bien que conceptuellement simples, ne répondent pas très bien à ces besoins.
Pour ces raisons et pour d'autres, les architectures d'applications modernes sont de plus en plus distribuées.
Ils sont construits à partir de composants petits et relativement légers que l'on appelle parfois des
microservices. Ces composants peuvent être isolés dans des conteneurs, connectés via des services de
découverte et de messagerie (dont la connectivité réseau abstraite) et soutenus par des bases de données
résilientes et évolutives (qui conservent l'état).
- Les applications basées sur des microservices peuvent (en théorie) être mises à l'échelle service par
service, en fonction des besoins de trafic ou de performances. Cette architecture permet de tirer le
meilleur parti de l'infrastructure hyperconvergée, qui permet un réglage précis de la connectivité et des
services de calcul, de stockage et de réseau pour répondre aux exigences de charge dynamique des
applications.
Avantages des microservices
 Évolutivité- les microservices peuvent être mis à l'échelle et équilibrés la charge selon les besoins
sur de nombreux serveurs en réseau ou même plusieurs centres de données ou régions de cloud
public géographiquement séparées. Cela élimine les points de défaillance uniques et fournit autant de
capacité spécifique à chaque tâche que les conditions l'exigent, partout où cela est nécessaire,
éliminant ainsi la congestion.
 Outils d'automatisation de l'infrastructure - De plus en plus, le dynamisme des applications
basées sur des microservices est assuré par l'infrastructure. Ces «orchestrateurs» de conteneurs
comme Kubernetes ou Mesos, automatisent la mise à l'échelle à la demande, l'auto-guérison et plus
encore.
Défis des microservices
 Complexité accrue - Les microservices signifient qu'il y a beaucoup de pièces mobiles à configurer
et à déployer. Il existe des opérations plus exigeantes, notamment la mise à l'échelle à la demande,
l'auto-guérison et d'autres fonctionnalités.
 L' automatisation est une exigence - les méthodes manuelles ne peuvent pas faire face de façon
réaliste à la complexité du déploiement et de la gestion des applications dynamiques et de leurs
plates-formes orchestrateurs, avec leurs opérations à grande vitesse et autonomes et leurs bits et
pièces éphémères et éphémères.
Ces besoins commerciaux et techniques, tendances et dynamiques encouragent les développeurs et les
opérateurs à utiliser l'automatisation partout pour les tâches suivantes:
 Gérez toutes les phases de création, de configuration, de déploiement et de gestion du cycle de vie
des applications. Cela inclut le codage, les tests, la mise en scène et la production.
 Gérez les infrastructures définies par logiciel au nom des applications que vous créez.
 Parallèlement à vos applications, pour préserver, mettre à jour et améliorer continuellement le code
d'automatisation. Ce code vous aide à développer, tester, mettre en scène, surveiller et exploiter nos
applications à des échelles de production et dans divers environnements. Vous pouvez de plus en plus
traiter tout ce code comme un seul produit de travail.
Dans l'écosystème informatique d'entreprise traditionnel de pré-virtualisation, séparer Dev des Ops semblait
judicieux. Tant que l'infrastructure était basée sur des investissements en équipement (matériel installé,
provisionné, configuré et géré manuellement), elle nécessitait des contrôleurs d'accès. Les gardiens de
l'Opération travaillaient à une échelle de temps différente de celle des utilisateurs et des développeurs, et
avaient des incitations et des préoccupations différentes.
Au début des années 2000, un mouvement a commencé pour traiter Dev et Ops comme une seule entité:
 Rendez les codeurs responsables du déploiement et de la maintenance
 Traiter l'infrastructure virtualisée comme un code
l'ingénieur de fiabilité du site (SRE).
Google a été l'une des premières entreprises à comprendre et à institutionnaliser un nouveau type de
description de poste hybride Dev+Ops. Il s'agissait de l'ingénieur de fiabilité du site (SRE). Le rôle du SRE
est destiné à fusionner les disciplines et les compétences de Dev and Ops, en créant un nouveau livre de
spécialité et de meilleures pratiques pour faire des Ops avec des méthodes logicielles.
L'approche SRE a été adoptée par de nombreuses autres entreprises. Cette approche repose sur:
 Responsabilité partagée
 Adopter le risque
 Reconnaissance de l'échec comme normal
 Engagement à utiliser l'automatisation pour réduire ou éliminer le "labeur (toil)"
 Mesure de tout
 Qualifier le succès en termes d'atteinte des objectifs quantitatifs de niveau de service.
Debois et "Infrastructure agile"
Lors de l'Agile 2008, le développeur belge Patrick Debois a donné une présentation intitulée Agile
Infrastructure and Operations. Sa présentation a discuté de la façon d'appliquer les méthodes Developer à
Ops tout en maintenant que Dev et Ops devraient rester séparés. Néanmoins, l'année suivante, Debois fonça
la série d'événements DevOpsDays.

Allspaw et Hammond
Vers la fin des années 2000, DevOps était de plus en plus populaire. Parmi les premières illustrations
convaincantes de sa valeur figurait une présentation de John Allspaw et Paul Hammond à VelocityConf en
2009. Dans cette présentation, les auteurs décrivent un ensemble simple de meilleures pratiques DevOps
fondées sur l'idée que Dev et Ops coopèrent activent l'entreprise. Ces meilleures pratiques comprennent :
 Infrastructure automatisée
 Contrôle des versions partagées
 Des constructions et des déploiements en une seule étape
SLO/SLI(SLO ‫ )المقاييس اللي نقيس بيها إذا كنا وصلنا لـ‬et budgets d'erreurs : DevOps repose sur
la définition d'objectifs mesurables appelés SLO (Objectifs de Niveau de Service) et SLI (Indicateurs de
Niveau de Service) pour évaluer la performance des systèmes. L'idée est de fournir une valeur mesurable à
l'entreprise tout en reconnaissant qu'il est impossible de garantir la perfection. Les budgets d'erreurs
permettent de calculer une certaine marge d'erreur acceptée dans les services fournis sans compromettre la
qualité globale. Si les erreurs dépassent un certain seuil, des actions correctives peuvent être prises.
SLA (‫ )اتفاقية‬vs SLO (‫ )هدف‬: Les SLA (Accords de Niveau de Service) sont des engagements externes
concernant la performance d'un service, souvent définis pour être facilement respectés. En revanche, les
SLO sont des objectifs internes plus ambitieux, qui visent à dépasser les attentes des SLA tout en gardant
une certaine marge d'erreur. Le budget d'erreur est la différence entre l'idéal (100% de disponibilité) et les
SLO réalistes.
 En résumé, DevOps et SRE sont des approches qui intègrent l'automatisation, l'acceptation des échecs
comme partie normale du processus, et une gestion proactive des services avec des objectifs
mesurables pour garantir une livraison efficace tout en maintenant une haute qualité.

 shell : Le shell est essentiel pour l'automatisation des tâches sur des systèmes comme Linux, et Bash
(Bourne Again Shell) est le shell par défaut sur la plupart des distributions Linux.
 Utilisation de Bash : Bash permet d'écrire des scripts en utilisant directement les commandes de la
ligne de commande. C'est une méthode simple et rapide pour automatiser des tâches de base.
 Limitations de Bash : Bash est efficace pour des scripts simples mais devient limité quand la
complexité augmente, surtout dans des environnements cloud ou avec des données complexes.
 Langages plus sophistiqués : Des langages comme Python ou Node.js sont utilisés pour des
automatisations plus complexes, en particulier avec des kits SDK (ex. AWS SDK). Ces langages
permettent de traiter des erreurs, des réponses asynchrones et des jeux de données complexes, ce que
Bash ne peut pas faire facilement.
 Configuration nécessaire : Lorsqu'on utilise des langages comme Python ou Node.js, il faut
installer et configurer les outils et bibliothèques nécessaires sur les systèmes de développement et sur
les machines distantes.
 Automatisation impérative : Utiliser des langages comme Bash ou Python pour automatiser des tâches
consiste à écrire une séquence de commandes dans un ordre précis pour atteindre un objectif.
 Amélioration de scripts : Pour rendre un script plus sûr et réutilisable, il doit :
 Vérifier le système cible (par exemple, Debian ou CentOS).
 Installer une application uniquement si elle n'est pas déjà présente.
 Sauvegarder les fichiers avant modification et utiliser des outils précis comme awk et sed pour
manipuler les fichiers de configuration.
 Sécurité et flexibilité des scripts : Il faut encapsuler la complexité et créer des scripts réutilisables avec
des paramètres, des bibliothèques et des fonctions.
 Meilleures pratiques :
 Normaliser les paramètres et erreurs.
 Organiser le code en hiérarchie pour séparer les tâches simples et complexes.
 Séparer les données spécifiques du code pour que celui-ci soit réutilisable.
 Idempotence : L'objectif est de toujours obtenir un état souhaité, quelle que soit l'état initial du système.
Un script doit être idempotent, c'est-à-dire qu'il ne doit pas causer d'effets secondaires si exécuté plusieurs
fois. Les principes sont :
 Vérifier que le changement n'a pas déjà été effectué (ne rien faire si ce n'est pas nécessaire).
 Assurer que le système est dans un état vérifié avant d'apporter des modifications.
 Tester l'idempuissance pour éviter des effets secondaires indésirables.
 Immabilité : En infrastructure as code, l'immuabilité signifie qu'aucun changement n'est effectué sur un
système en direct. Les modifications sont appliquées via des composants neufs et vérifiés.

 Méthodes pour configurer des systèmes distants :


 Utilisation de SCP : Transférer des scripts avec scp puis les exécuter via ssh.
 Cat | SSH : Diriger un script vers une machine distante en utilisant cat | ssh et exécuter des
commandes en séquence.
 SFTP : Utiliser un client SFTP pour transférer des scripts, définir des permissions et les exécuter.
 Utilitaires wget/curl : Récupérer des scripts depuis un serveur web avec wget ou curl et les
exécuter après les avoir transférés.
 Git : Utiliser Git pour récupérer des scripts depuis un dépôt, cloner, extraire une branche et exécuter.
 Solutions comme VNC/NoMachine : Installer une solution complète d'opérations à distance pour
exécuter des scripts via un environnement graphique.
 Cloud : Injecter des scripts via la CLI ou l'UI Web dans des machines virtuelles lors du démarrage.
 Important à noter : Ces méthodes sont essentielles pour l'automatisation des processus, surtout quand
les outils de déploiement avancés ne couvrent pas tous les cas ou environnements.
Les infrastructures de cloud computing IaaS (Infrastructure-as-a-Service) sont une cible typique de
l'automatisation.
De tels scripts sont aidés par de nombreux outils qui simplifient l'accès aux cibles d'automatisation.
Notamment:
 Les CLI et les kits de développement logiciel (SDK) qui enveloppent le REST et d'autres interfaces
du matériel, des entités d'infrastructure virtuelle, des plans de contrôle d'ordre supérieur et des API de
cloud. Cela rend leurs fonctionnalités accessibles depuis les shells (et via les scripts Bash) et dans les
programmes Python.
 Les outils de ligne de commande et les analyseurs intégrés de Python peuvent analyser les sorties
JSON et YAML renvoyées par les CLIs et les SDK dans des formats jolis et faciles à lire et dans des
structures de données Python natives pour une manipulation facile.
 Cisco UCS :
 Cisco utilise Intersight RESTful API pour gérer l'infrastructure UCS/Hyperflex, avec des kits SDK
pour Python et PowerShell, ainsi que des modules Ansible.
 L'API Intersight est compatible OpenAPI, permettant l'utilisation de Swagger et autres outils open
source.
 VMware :
 Datacenter CLI permet de gérer vCenter Server et VMware Cloud sur AWS via une interface en
ligne de commande.
 vSphere CLI pour gérer les hôtes ESXi, vCenter et autres produits VMware sur Linux et Windows.
 PowerCLI pour Windows PowerShell permet de gérer divers produits VMware (vSphere, vCloud,
vSAN, etc.).
 SDK VMware disponibles pour Python et autres langages.
 OpenStack :
 Le client OpenStack CLI (OSC) permet d'interagir avec les API OpenStack (Compute, Identity,
Storage, etc.).
 SDK OpenStack disponibles pour Python et d'autres langages populaires.
Les outils d'automatisation comme Ansible, Puppet et Chef simplifient l'accès aux utilitaires du système
d'exploitation et aux fonctions API. Ils normalisent le processus et accélèrent l'écriture de code grâce à des
valeurs par défaut intelligentes.
Mobilisation de la communauté :
 Les versions open source des outils permettent à la communauté de contribuer à leur développement
et de partager des ressources comme des playbooks et des recettes, disponibles sur des référentiels
publics comme GitHub ou Ansible Galaxy.
Idempotency :
Un logiciel est dit idempotent si son exécution produit toujours le même résultat, quelle que soit la
fréquence d'exécution. Dans le cadre du déploiement, l'idempuissance permet de garantir que les
modifications apportées à l'infrastructure sont reproductibles et sans effet secondaire. Elle permet de
résoudre des problèmes d'infrastructure, de mettre à jour les configurations ou de gérer la mise à l'échelle en
toute sécurité.
Les outils d'automatisation adoptent deux approches : procédurale (comme Chef) et déclarative (comme
Ansible ou Puppet). Un code procédural décrit comment atteindre un état, tandis qu'un code déclaratif
décrit l'état final désiré, que l'outil va tenter de réaliser de manière optimale.
Procédure vs Déclaratif :
La gestion de l'infrastructure repose sur plusieurs couches, comme le provisionnement, la configuration, le
déploiement et l'orchestration.
 Le provisionnement concerne l'installation de l'infrastructure de base (par exemple, le système
d'exploitation).
 La configuration inclut l'installation d'applications.
 Le déploiement traite des applications complexes comme les clusters.
 L'orchestration gère la dynamique des ressources (par exemple, auto-scaling).
Sans état (Statelessness) :
Les applications sans état ne conservent aucune donnée locale entre les requêtes. Cela les rend faciles à
déployer et à mettre à l'échelle. À l'inverse, les applications avec état doivent conserver des informations
utilisateur entre les requêtes, ce qui complique leur déploiement et leur mise à l'échelle.

Le premier outil d'automatisation moderne a probablement été Puppet, introduit en 2005 comme open
source, puis commercialisé sous le nom de Puppet Enterprise par Puppet Labs en 2011.
Actuellement, les outils les plus populaires sont Ansible, Marionnette et Chef. Ils partagent les
caractéristiques suivantes:
 Relativement facile à apprendre
 Disponible en version open source
 Les plugins et les adaptateurs leur permettent de contrôler directement ou indirectement de
nombreux types de ressources :infrastructure sans métal définie par logiciel (Cisco UCS, appareils
Cisco), cloud privé (VMware, OpenStack) et cloud public (Amazon Web Services, Microsoft Azure,
Google Cloud Platform).

Ansible est une solution d'automatisation open-source populaire, qui facilite la gestion de configurations et
le déploiement d'applications. Elle fonctionne sans nécessiter d'agents sur les hôtes distants, et est
compatible avec n'importe quel système Linux. L'outil est géré via une interface en ligne de commande, et
son code est principalement écrit en YAML.
Architecture et Fonctionnement :
 Nœud de Contrôle : Il s'agit d'une machine exécutant Ansible et qui se connecte aux hôtes distants
via SSH pour exécuter des tâches, injecter des scripts Python, ou même installer Python sur des
systèmes sans.
 Modules : Ansible offre de nombreux modules pour interagir avec les systèmes distants, comme apt
pour gérer les paquets ou raw pour exécuter des commandes shell.
 Playbooks : Les playbooks définissent les tâches à accomplir sur les hôtes distants, en utilisant des
rôles pour structurer le code. Cela permet de réutiliser des configurations et de rendre le code plus
lisible.
 Rôles : Un rôle contient des tâches spécifiques, permettant une meilleure organisation du code et sa
réutilisation.
Installation et Code :
 Installation : Ansible est installé sur un nœud de contrôle Linux, et peut être configuré pour gérer
plusieurs hôtes via SSH.
 Structure des Fichiers : Le code est organisé en fichiers YAML qui contiennent des séquences de
tâches, et la structure permet de gérer les variables, les fichiers de rôle, et l'inventaire des hôtes.
Gestion à Grande Échelle :
 Pour des déploiements à grande échelle, des outils comme Red Hat Ansible Tower ou AWX
(version open-source) permettent de gérer plusieurs nœuds de contrôle avec des interfaces web et des
API REST.
 Ansible Vault permet de sécuriser les informations sensibles (mots de passe, clés API) en les
chiffrant.
Exemple de Playbook :
Un playbook typique pourrait installer Python sur tous les serveurs, configurer des nœuds Kubernetes, et
gérer des rôles comme l'installation de Docker ou la configuration des nœuds.
En résumé, Ansible est un outil puissant pour automatiser les tâches d'infrastructure et est adapté aux
environnements de grande taille, avec une gestion centralisée via des outils comme Ansible Tower ou AWX.

1. Puppet et son fonctionnement : Puppet est un outil d'automatisation pour la gestion de la


configuration des systèmes. Il utilise un serveur central (anciennement Puppet Master) et des agents
installés sur les machines cibles. Les agents récupèrent les informations des systèmes (via Facter) et
appliquent les configurations définies sur le serveur, via une communication sécurisée SSL.
2. Architecture : Le serveur Puppet communique avec les hôtes via les ports 8140 et 8142. Il peut être
installé sous Linux, en machine virtuelle ou conteneur Docker, ce qui permet de s'adapter à différents
environnements. Puppet permet aussi de gérer des équipements qui ne supportent pas les agents à
travers des modules et des agents proxy.
3. Installation et configuration : L'installation de Puppet nécessite un serveur relativement puissant et
une configuration de clients qui interagiront avec lui. Les configurations sont organisées dans des
environnements spécifiques (par exemple, production) et se présentent sous forme de fichiers
manifests. Ces fichiers, écrits dans un langage inspiré de Ruby, définissent les actions de
configuration à appliquer.
4. Scalabilité : Puppet est capable de gérer un grand nombre d'hôtes (jusqu'à 4000). Pour plus d'échelle,
il est possible d'ajouter des serveurs de compilation et de configurer un équilibrage de charge pour
répartir la charge. Puppet Enterprise va encore plus loin, avec des solutions comme une base de
données PostgreSQL pour gérer plus de clients et des interfaces graphiques pour faciliter
l'administration.
5. Modules Cisco : Puppet est également utilisé pour automatiser la gestion des équipements Cisco,
comme les systèmes IOS et UCS, grâce à des modules dédiés.

------ Résumé
Il s'agit d'une introduction de haut niveau à trois trousses d'outils DevOps modernes. Vous devriez
maintenant être prêt à:
 Déployez et intégrez des versions gratuites des principaux composants d'Ansible, Puppet et/ou Chef
sur une gamme de supports, des machines virtuelles de bureau (telles que les machines virtuelles
VirtualBox) aux machines virtuelles basées sur le cloud sur Azure, AWS, GCP ou d'autres plates-
formes IaaS.
 Découvrez le langage déclaratif, le style de construction et d'organisation de chaque plate-forme sous
forme de code, et obtenez une idée de la portée de sa bibliothèque de ressources, de plugins et
d'intégrations.
 Apprenez à automatiser certaines des tâches informatiques courantes que vous pouvez effectuer au
travail ou à résoudre les problèmes de déploiement et de gestion du cycle de vie que vous définissez
vous-même, dans votre laboratoire à domicile. Des exercices pratiques et des travaux vous donneront
une idée complète de la façon dont chaque plate-forme aborde les thèmes de configuration et vous
aideront à surmonter les problèmes informatiques quotidiens.
Si vous bâtissez votre réputation auprès de la communauté, sachez que presque rien n'impressionne vos
homologues informatiques autant qu'une base de code bien exécutée et automatisée de déploiement ou de
gestion pour un logiciel complexe et égratignant. Des entreprises entières reposent sur la base de savoir
comment déployer des systèmes complexes dans des configurations robustes, telles que des bases de
données spécialisées, l'orchestration de conteneurs et les frameworks cloud tels que Kubernetes et
Openstack.
Sois réaliste, cependant. Ce sont toutes des plateformes extrêmement complexes et sophistiquées qui mettent
les utilisateurs à maîtriser des années, alors ne vous découragez pas si vous les trouvez déroutants! Atteignez
les communautés des produits que vous aimez utiliser (ou que votre milieu de travail approuve) et vous
apprendrez plus rapidement.
GitOps est une méthode de gestion des opérations informatiques qui utilise Git comme source unique pour
la configuration et le déploiement d'infrastructures et d'applications. Les changements sont effectués dans
Git, puis automatiquement appliqués à l'infrastructure à l'aide d'outils comme Flux ou ArgoCD.
Résumé :
GitOps permet de gérer l’infrastructure et les applications de manière déclarative via des fichiers dans un
dépôt Git. Chaque changement est versionné et appliqué automatiquement, assurant traçabilité, sécurité et
réversibilité des modifications. C’est une pratique courante pour gérer des environnements Kubernetes.
Dans ce modèle, chaque branche se déploie sur une infrastructure séparée.
 Développement - Les développeurs font des modifications dans la branche Développement, classent
des validations et font des demandes d'extraction. Ces demandes sont satisfaites par un processus de
gating automatisé et sont mises en file d'attente pour des tests automatisés. Les opérateurs voient les
résultats des tests automatisés, et les développeurs itèrent jusqu'à ce que les tests réussissent. Les
modifications sont ensuite fusionnées dans la branche Test pour le prochain niveau de révision.
 Test - Lorsque les modifications sont fusionnées de Development à Test, le code est déployé dans un
environnement de test plus vaste et est soumis à un ensemble plus étendu de tests automatisés.
 Production - Les modifications testées sont à nouveau examinées et fusionnées avec Production, à
partir de laquelle les déploiements de version sont effectués.

Test et Validation Automatisés


Dans cette section, Cisco propose des solutions et des pratiques pour automatiser les tests dans des
architectures réseaux pilotées par logiciel. Cela vise à réduire l'incertitude liée à leur performance et leur bon
fonctionnement.
Défis des infrastructures de test
Les outils comme Ansible, Puppet ou Chef transforment l'infrastructure en code. Cependant, DevOps
nécessite des moyens plus précis pour tester et valider les infrastructures, détecter les problèmes potentiels et
résoudre les erreurs rapidement.
Les tests unitaires comme pytest, associés à l'automatisation et à l'intégration continue (CI/CD), permettent
de tester automatiquement les modifications de code.
Défis des tests réseau
Tester un réseau est complexe car il dépend de nombreux équipements et logiciels. Les erreurs de
configuration peuvent être difficiles à détecter et entraîner des risques de sécurité ou de dégradation des
performances. Avec l'augmentation de la virtualisation et des réseaux définis par logiciel (SDN), la gestion
et les tests restent un défi, bien que des progrès aient été réalisés.
Tester les réseaux définis par logiciel (SDN)
Cisco a développé des solutions comme ACI et DNA Center pour faciliter la gestion des réseaux SDN. Ces
solutions utilisent des modèles déclaratifs pour configurer et automatiser les réseaux, ce qui permet une
gestion plus rapide, une meilleure portabilité et une version contrôlée des configurations réseau.
Solution de test : PyATS
PyATS (Python Automated Test System) est une solution de Cisco pour tester les périphériques réseau. Elle
est modulaire, flexible et peut être utilisée pour tester des configurations réseau avant leur mise en
production. PyATS interagit avec les périphériques via des API et fournit des outils pour automatiser les
tests et la collecte de données, en facilitant le débogage et la gestion des configurations réseau dans des
environnements SDN ou Cloud.
En résumé, Cisco propose des outils comme PyATS pour automatiser le test et la validation des réseaux
SDN, réduisant les risques liés aux erreurs de configuration et facilitant la gestion des infrastructures
complexes.

Les fichiers VIRL sont utilisés pour décrire et configurer des topologies réseau virtuelles dans VIRL. Ces
fichiers contiennent des informations sur les équipements, leurs connexions, et les configurations spécifiques
des périphériques. Ils peuvent inclure des routeurs, des commutateurs, des pare-feu et d'autres équipements,
et sont utilisés pour simuler des réseaux complexes de manière sécurisée et efficace.
Les fichiers VIRL sont généralement au format .virl et peuvent être créés via l'interface de VIRL ou en
utilisant des outils comme VIRL API ou YANG Models pour une automatisation avancée. Ils sont ensuite
chargés dans la plateforme pour créer et tester des topologies réseau virtuelles.

Resume de ce module :

Automatisation de l'infrastructure avec Cisco


L'automatisation utilise du code pour configurer, déployer et gérer les applications ainsi que les
infrastructures et services de calcul, de stockage et de réseau sur lesquels elles s'exécutent. Vous avez le
choix quant à la façon de contrôler par programmation vos configurations et votre infrastructure réseau.
Walk: Automatisation en lecture seule. Run: activez les stratégies et offrez un libre-service sur plusieurs
domaines. Fly: Déployez des applications, des configurations réseau et bien plus encore via CI/CD. Les
processus manuels sont toujours sujets à des erreurs humaines, et la documentation destinée aux humains est
souvent incomplète et ambiguë, difficile à tester et rapidement obsolète. L'automatisation est la réponse à
ces problèmes. Les avantages de l'automatisation complète de la pile sont le libre-service, l'évolutivité à la
demande, l'observabilité et l'atténuation automatisée des problèmes. L'infrastructure définie par logiciel,
également connue sous le nom de cloud computing, permet aux développeurs et aux opérateurs d'utiliser des
logiciels pour demander, configurer, déployer et gérer des ressources de calcul, de stockage et de réseau
virtualisés et virtualisés. Les architectures d'applications modernes sont de plus en plus distribuées. Ils sont
construits à partir de composants petits et relativement légers que l'on appelle parfois des microservices.
DevOps et SRE
Pour que l'automatisation complète soit vraiment efficace, elle nécessite des changements dans la culture
organisationnelle, y compris la réduction des divisions historiques entre le développement (développement)
et les opérations (opérations). DevOps a évolué et continue d'évoluer dans de nombreux endroits en
parallèle. Certains événements clés ont façonné la discipline telle que nous la connaissons aujourd'hui.
Moments de définition 1: Ingénierie de fiabilité du site (SRE). Le rôle du SRE vise à fusionner les
disciplines et les compétences de Dev et Ops.
Définition des moments 2: Debois et «Agile Infrastructure» Debois était un partisan de l'automatisation de
l'infrastructure virtuelle, de l'utilisation du contrôle de version pour stocker le code de déploiement de
l'infrastructure et de l'application de méthodes Agile au développement et à la maintenance de solutions de
niveau infrastructure.
Moments de définition 3: Allspaw et Hammond
John Allspaw et Paul Hammond ont fait une présentation à VelocityConf en 2009. Il décrit l'automatisation,
le travail d'équipe, le partage des responsabilités, la transparence, la confiance, la responsabilité mutuelle et
les pratiques de communication.
Les DEVOP/SRE ont de nombreux principes fondamentaux et pratiques exemplaires:
 Un accent sur l'automatisation
 L' idée que "l'échec est normal"
 Un remaniement de la "disponibilité" en termes de ce qu'une entreprise peut tolérer
Scripts d'automatisation de base
L'outillage d'automatisation fonctionne en partie en enveloppant la fonctionnalité shell, les utilitaires du
système d'exploitation, les fonctions API et d'autres éléments de plan de contrôle. Mais les outils ne
résolvent toujours pas tous les problèmes de déploiement et de configuration. C'est pourquoi chaque outil
d'automatisation dispose d'une ou plusieurs fonctions qui exécutent des commandes et des scripts de base sur
des cibles et renvoient des résultats. Par exemple, dans Ansible, ces fonctions incluent command, shell et
raw. Les outils d'automatisation comme Ansible, Puppet ou Chef offrent des fonctionnalités puissantes par
rapport aux stratégies d'automatisation ad hoc utilisant BASH, Python ou d'autres langages de
programmation. Une procédure impérative est une séquence ordonnée de commandes visant à atteindre un
objectif. La séquence peut inclure le contrôle du débit, les conditions, la structure fonctionnelle, les classes
et plus encore. Pour configurer des systèmes distants, vous devez accéder aux scripts et les exécuter. Deux
façons (parmi plusieurs) de le faire sont: stocker les scripts localement, les transmettre aux machines cibles
avec un utilitaire shell comme scp , puis se connecter à la machine distante en utilisant ssh et les exécuter.
Ou bien, vous pouvez diriger des scripts vers une machine distante en utilisant cat | ssh et les exécuter en
séquence avec d'autres commandes, en capturant et en renvoyant les résultats à votre terminal, le tout en une
seule commande. Les infrastructures de cloud computing IaaS (Infrastructure-as-a-Service) sont une cible
typique de l'automatisation. L'automatisation du cloud vous permet de provisionner des hôtes virtualisés, de
configurer des réseaux virtuels et d'autres services de connectivité, de réquisition, puis de déployer des
applications sur cette infrastructure. Les IaaS et d'autres types de cloud d'infrastructure fournissent
également des CLI et des SDK qui permettent une connexion facile à leurs interfaces sous-jacentes,
généralement basées sur REST.
Outils d'automatisation
Trois des outils d'automatisation les plus populaires sont Ansible, Puppet et Chef. Les outils d'automatisation
comme Ansible, Puppet ou Chef offrent des fonctionnalités puissantes par rapport aux stratégies
d'automatisation ad hoc utilisant BASH, Python ou d'autres langages de programmation. Le logiciel
Idempotent produit le même résultat souhaitable chaque fois qu'il est exécuté. Dans les logiciels de
déploiement, l'idempuissance permet la convergence et la composabilité. Le code procédural peut atteindre
l'idempuissance, mais de nombreux outils de gestion de l'infrastructure, de déploiement et d'orchestration ont
adopté une autre méthode, qui consiste à créer un déclaratif. Un déclaratif est un modèle statique qui
représente le produit final souhaité.
L'architecture de base d'Ansible est très simple et légère. Le nœud de contrôle d'Ansible s'exécute sur
pratiquement n'importe quelle machine Linux exécutant Python 2 ou 3. Toutes les mises à jour du système
sont effectuées sur le nœud de contrôle. Les plugins permettent à Ansible de collecter des faits et d'effectuer
des opérations sur une infrastructure qui ne peut pas exécuter Python localement, telles que les interfaces
REST du fournisseur de cloud. Ansible est largement géré à partir de la ligne de commande Bash, avec un
code d'automatisation développé et maintenu à l'aide de n'importe quel éditeur de texte standard.
L'architecture de base de Puppet présente les caractéristiques suivantes: un serveur désigné pour héberger les
principaux composants d'application appelés Puppet Server, le Facter qui est le service de collecte des faits,
le PuppetDB, qui peut stocker des faits, des catalogues de nœuds et l'historique des événements de
configuration récents, et un client sécurisé, un Puppet Agent, installé et configuré sur les machines cibles.
Les opérateurs communiquent avec le serveur Puppet en grande partie via SSH et la ligne de commande.
Les principaux composants de Chef sont le poste de travail Chef, qui est un poste de travail opérateur
autonome, le client Chef Infra (l'agent hôte) qui s'exécute sur les hôtes et récupère les modèles de
configuration et met en œuvre les modifications requises, et le serveur Chef Infra qui répond aux requêtes
des agents Chef Infra sur les hôtes validés et répond avec des mises à jour de configuration, sur lesquelles
les agents convergent ensuite la configuration de l'hôte.
L'infrastructure comme code
L'immuabilité signifie littéralement «l'état d'être immuable», mais dans le langage DevOps, elle se réfère à la
maintenance des systèmes entièrement sous forme de code, n'effectuant aucune opération manuelle sur eux.
S'engager à l'immuabilité vous permet de traiter votre base de code d'automatisation comme vous le feriez
pour n'importe quel code d'application:
● Vous pouvez être sûr que la base de code décrit ce qui est en cours d'exécution sur des serveurs nus ou
cloud.
● Vous pouvez gérer les procédures Agile de base de code et l'utilisation structurée du contrôle de version
pour garder les choses claires et simples.
Automatisation des tests
DevOps a généralement besoin de moyens plus précis pour définir et implémenter les infrastructures,
certifier que les infrastructures déployées fonctionnent selon les besoins, assurer de manière proactive son
bon fonctionnement, prendre des mesures préventives lorsque des défaillances sont imminentes et détecter et
résoudre les problèmes en cas d'erreurs.
Lorsque vous utilisez des outils de test unitaire comme pytest en tandem avec l'automatisation d'ordre
supérieur et de concert avec la livraison continue (CI/CD), vous pouvez créer des environnements où le code
peut être automatiquement testé lorsque des modifications sont apportées.
Les frameworks de tests unitaires font des tests une partie de votre base de code, en suivant le code à travers
les validations de développeurs, les requêtes d'extraction et les portes de révision de code vers QA/Test et
Production. Ceci est particulièrement utile dans les environnements de développement piloté par des tests
(TDD), où l'écriture de tests est un processus continu qui mène réellement le développement, encourageant
automatiquement des niveaux très élevés de couverture des tests.
Simulation de réseau
La simulation de réseau fournit un moyen de tester les configurations réseau, de déboguer le code de
configuration et de travailler avec l'infrastructure et les API Cisco et d'apprendre de manière sûre, pratique et
non coûteuse.
VIRL (Cisco Virtual Internet Routing Laboratory) Le VIRL peut fonctionner sur du métal nu, ou sur de
grandes machines virtuelles sur plusieurs plateformes d'hyperviseurs.

8.Plateformes et dev cisco :


Cisco propose plusieurs centres de développement pour faciliter l'accès aux technologies selon les
domaines, tels que Cloud, Collaboration, IoT, Sécurité, etc. Chaque centre fournit des ressources et des
outils pour chaque technologie.
1. Cloud : Cisco travaille avec AWS et Google pour des solutions de cloud hybride, utilisant Docker et
Kubernetes.
2. Collaboration : Avec Webex, Cisco propose des solutions pour la communication et les appels, avec
des API pour l'intégration.
3. Centre de données : Cisco offre des solutions pour le datacenter, intégrant l’automatisation avec des
outils comme ACI et PyATS.
4. IoT et Edge Computing : Solutions pour connecter et gérer des capteurs et des données IoT en
environnements variés.
5. Réseau : Cisco fournit des équipements réseau programmables via API, facilitant l'automatisation.
6. Sécurité : Solutions pour la gestion des menaces et la protection des réseaux et applications.
7. Sans fil et mobile : Solutions pour des réseaux Wi-Fi robustes, incluant la localisation et l’analyse en
temps réel.
8. Développement d'applications : Intégration d'API pour des solutions personnalisées, notamment
avec Webex pour la collaboration.

 Un SDK (Software Development Kit) est un kit d'outils pour développer des applications sur un
système spécifique.
 Un SDK contient des bibliothèques, de la documentation, et des exemples de code. Il est plus
complet qu'une API, qui est un simple ensemble d'URI documentés.
 Exemple : pour une application iOS, il faut installer le SDK iOS ; pour utiliser l'API Google Maps, il
suffit d'une référence et d'identifiants.
 Les SDK facilitent certaines tâches, comme l'authentification, la gestion de la pagination, ou la
limitation des appels API.
 Cisco offre plusieurs SDK pour intégrer leurs solutions, tels que :
o Webex Teams Android SDK : pour intégrer Webex dans des apps Android.
o Jabber Web SDK : pour des applications de communication unifiée (voix, vidéo,
messagerie).
o Cisco DNA Center SDK : pour gérer les réseaux mixtes Cisco et non Cisco.
o Cisco UCS et IMC Python SDKs : pour automatiser la gestion des serveurs en Python.
 Exemple d'utilisation du SDK Python Webex Teams : gestion des utilisateurs et authentification
simplifiée avec un accès facilité aux données.
Résumé dialectal : Un SDK c'est un kit d'outils pour coder des applis sur un système particulier, Cisco offre
plusieurs pour intégrer leurs services (Webex, Jabber).

La programmabilité pilotée par un modèle permet de configurer des appareils réseau en utilisant des
modèles standardisés, facilitant ainsi leur gestion et leur configuration automatique, contrairement aux
méthodes manuelles comme les CLI (interfaces de ligne de commande). Cela repose sur un modèle de
données, qui est une description structurée d'un appareil ou service, facilitant la gestion de ses configurations
via un langage de modélisation, souvent YANG.
YANG est un langage permettant de définir des modèles de données pour la configuration des appareils
réseau, compatible avec des protocoles comme NETCONF et RESTCONF. YANG peut être utilisé pour
modéliser des configurations d’équipement de manière standard et programmée. Il existe des modèles
ouverts (indépendants des fournisseurs) et natifs (spécifiques aux fabricants, comme Cisco).
Les avantages de la programmabilité basée sur YANG incluent :
 Standardisation de la configuration pour tous les appareils
 Compatibilité avec différents protocoles et encodages (JSON, XML)
 Simplification de la configuration via des APIs programmables (ex : YDK)
Avec pyang, il est possible de transformer des fichiers YANG en une structure lisible, facilitant la lecture et
la configuration des appareils.

Il y a quatre déclarations principales dans un module YANG:


 Container: Un regroupement d'autres instructions (n'a pas de "Valeur").
 List: plusieurs enregistrements contenant au moins une "clé" de feuille et une hiérarchie arbitraire
d'autres instructions.
 Leaf: une seule paire clé/valeur.
 Leaf-list: paire clé/valeurs multiples du même type.

NetConf :
 NETCONF (Network Configuration) est un protocole défini par l'IETF (RFC7519) conçu pour installer,
manipuler et supprimer la configuration des dispositifs de réseau. Il fonctionne avec les modèles de données
YANG et utilise le protocole RPC sécurisé par SSH.
 Pile de programmabilité : NETCONF est intégré dans une pile de programmabilité modulaire qui
comprend des API pilotées par modèle, le YANG Development Kit (YDK), et les modèles de données
YANG.
 Codage XML : NETCONF utilise XML pour coder les données de configuration et les messages de
protocole.
 Opérations de NETCONF : propose des opérations pour gérer les configurations de périphériques et
obtenir l’état des périphériques, telles que la récupération, la configuration, la copie et la suppression des
données de configuration.
 Comparaison avec SNMP :
 SNMP fonctionne avec un modèle pull pour récupérer les données et ne gère pas bien les plates-
formes haute densité. Il manque de fonctionnalités comme la découverte des MIB supportées, les
transactions et la sauvegarde/restauration.
 NETCONF propose plusieurs magasins de données de configuration (candidat, en cours d'exécution,
démarrage), supporte les transactions, permet la validation des configurations, la distinction entre
données de configuration et d’exploitation, et offre des fonctionnalités avancées telles que le filtrage
et les notifications d'événements.
 Magasins de données de NETCONF :
 En cours d'exécution : obligatoire.
 Candidat et démarrage : optionnels, pour faciliter les modifications de configuration sans impact
direct.
 Laboratoire : un exercice pratique permettra de manipuler NETCONF pour accéder à un périphérique
IOS XE.

RestConf :
 RESTCONF (RFC 8040) est un protocole qui permet un accès de type REST aux informations de
configuration et de contrôle réseau. Basé sur NETCONF, il utilise les mêmes modèles de données et syntaxe
définis en YANG, mais encapsule les commandes dans des messages HTTP.
 Pile de programmabilité : RESTCONF fait partie d’une pile comprenant des API, protocoles, et
modèles de données, permettant l'accès et la modification de configurations via XML ou JSON.
 Commandes HTTP : RESTCONF utilise les verbes HTTP (GET, POST, PUT, PATCH, DELETE) pour
accéder et manipuler les données de configuration, en s'appuyant sur les modèles YANG.
 Objectif de RESTCONF : Il n'est pas conçu pour remplacer NETCONF, mais fournit une interface
HTTP simplifiée, RESTful, compatible avec les modèles de données NETCONF. Un même périphérique
peut offrir à la fois les interfaces NETCONF et RESTCONF.
 Comparaison NETCONF vs RESTCONF :
 NETCONF : plus complet, avec support des stockages de données candidats et des verrouillages de
données.
 RESTCONF : plus simple, avec uniquement le stockage en cours d'exécution, sans verrouillage, et
avec des transactions limitées à un seul appel.
 Syntaxe URI de RESTCONF : L'URI de base de RESTCONF suit le format /restconf/<resource-
type>/<yang-module:resource>, où les variables sont définies dynamiquement par les modèles YANG.
 Exemple de requête GET :
 Une requête GET /restconf renvoie les ressources disponibles. Par exemple, une requête :
http
Copier le code
GET /restconf HTTP/1.1
Host: example.com
Accept: application/yang-data+json
pourrait renvoyer :
json
Copier le code
{
"ietf-restconf:restconf": {
"data": {},
"operations": {},
"yang-library-version": "2016-06-21"
}
}
 Laboratoire : Un exercice permettra de pratiquer RESTCONF pour interagir avec un périphérique IOS
XE.

Gestion des réseaux Cisco


Gestion des réseaux Cisco (Détails pour QCM)
1. Présentation des réseaux Cisco
 Rôle des équipements Cisco : Cisco est un leader dans la fourniture de solutions réseau, y compris
des routeurs, des commutateurs (switches), des points d'accès sans fil, des pare-feu, et des dispositifs
de sécurité.
 Types d'équipements Cisco :
o Routeurs : Connectent différents réseaux (LAN, WAN) et gèrent le trafic entre eux.
o Commutateurs (Switches) : Facilitent la communication interne d'un réseau local (LAN) en
connectant plusieurs dispositifs (PC, imprimantes, serveurs).
o Points d'accès sans fil (AP) : Permettent la connectivité sans fil au sein des réseaux.
o Pare-feu Cisco (ASA) : Assurent la sécurité en contrôlant les flux entrants et sortants.
o Contrôleurs Cisco : Gèrent l'infrastructure réseau et assurent la gestion centralisée des
périphériques Cisco.
2. Protocoles de gestion réseau
 SNMP (Simple Network Management Protocol) :
o Utilisé pour collecter des informations et gérer les périphériques réseau.
o Modèle pull : l'appareil réseau envoie ses informations de manière passive à un serveur de
gestion.
o MIB (Management Information Base) : Base de données structurée contenant des
informations sur les dispositifs réseau.
o Limitations de SNMP : Pas de gestion de transactions ou de sauvegarde/restauration de
configuration.
 NETCONF :
o Protocole pour la gestion de la configuration des équipements réseau via des messages XML.
o Supporte plusieurs stocks de données : en cours d'exécution, candidat, et démarrage.
o Transactions : Permet des modifications de configuration en toute sécurité avec validation et
possibilité d'annulation.
o Prise en charge de la gestion des configurations et de l'état des périphériques de manière
dynamique.
 RESTCONF :
o Basé sur REST (Representational State Transfer) pour l’accès aux configurations via
HTTP.
o Utilise YANG pour décrire les modèles de données.
o Verbes HTTP utilisés : GET, POST, PUT, DELETE, et PATCH pour la gestion des
configurations en temps réel.
o Moins complexe que NETCONF mais avec des limitations sur les transactions et la gestion
des bases de données.
3. Modélisation et gestion des données réseau
 YANG (Yet Another Next Generation) :
o Langage de modélisation de données largement utilisé dans la gestion des réseaux.
o Décrit la structure des données (configuration, état, événements) pour des équipements
comme les routeurs et les commutateurs.
o Intégré dans des protocoles comme NETCONF et RESTCONF pour standardiser les
interactions avec les équipements réseau.
 Exemples d’utilisation de YANG :
o Création de modèles pour gérer des configurations complexes (comme les VLANs, les
interfaces réseau, etc.).
o Définition de la syntaxe et de la structure des commandes dans les protocoles de gestion
(NETCONF et RESTCONF).
4. Outils et interfaces de gestion Cisco
 Cisco DNA Center :
o Plateforme de gestion centralisée et d'automatisation des réseaux Cisco.
o Fournit une vue d'ensemble du réseau, des rapports analytiques et des options d'optimisation
des performances.
 Cisco Prime Infrastructure :
o Plateforme pour gérer les réseaux sans fil et filaires, optimiser les performances et effectuer
des configurations centralisées.
o Outils de dépannage avancés, ainsi que la gestion des mises à jour et des configurations.
 Cisco Command Line Interface (CLI) :
o Interface en ligne de commande pour configurer et gérer les équipements Cisco.
o Utilisation de commandes spécifiques pour configurer les interfaces réseau, les VLANs, les
protocoles de routage, etc.
5. Automatisation de la gestion réseau
 API Cisco :
o Permet une gestion programmée des périphériques via des appels API RESTful.
o Utilisation de scripts pour automatiser la configuration, la surveillance et la maintenance des
dispositifs réseau.
 Programmabilité du réseau :
o Intégration avec des outils comme Ansible et Python pour automatiser les tâches réseau.
o Configuration dynamique et gestion des services réseau à grande échelle sans intervention
manuelle.
6. Sécurité de la gestion réseau
 AAA (Authentication, Authorization, and Accounting) :
o Authentication : Identification de l'utilisateur (par exemple, via un serveur RADIUS ou
TACACS+).
o Authorization : Définition des droits d'accès des utilisateurs (qui peut configurer ou
superviser quoi).
o Accounting : Surveillance des activités des utilisateurs pour assurer la conformité et
l'auditabilité.
 Gestion des mises à jour et des correctifs :
o Surveillance des vulnérabilités sur les équipements réseau (par exemple, via Cisco Security
Advisories).
o Processus de mise à jour pour appliquer des correctifs de sécurité et améliorer la stabilité du
réseau.
7. Surveillance et dépannage réseau
 Logs et Syslog :
o Les logs permettent de suivre les événements système et les erreurs réseau.
o Syslog est un protocole standard utilisé pour envoyer des messages d'événements à un
serveur central de gestion.
 Cisco NetFlow :
o Utilisé pour surveiller les flux de trafic réseau.
o Permet d’identifier les applications ou les utilisateurs consommant une grande quantité de
bande passante.
 Outils de diagnostic Cisco :
o Ping : Vérifie la connectivité réseau entre deux dispositifs.
o Traceroute : Identifie le chemin pris par les paquets entre l'émetteur et le récepteur.
o show : Commande utilisée dans le CLI Cisco pour afficher des informations détaillées sur
l’état des interfaces, des routes, etc.
8. Haute disponibilité et redondance
 Protocoles de redondance :
o HSRP (Hot Standby Router Protocol) : Permet la redondance de routeur sur un réseau,
garantissant qu’un autre routeur prend la relève en cas de défaillance.
o VRRP (Virtual Router Redundancy Protocol) : Similaire à HSRP, mais plus largement
standardisé.
 Tolérance de panne :
o Assure une connectivité continue même en cas de panne d’un périphérique réseau clé.
o Redondance des liens et des équipements critiques pour éviter les pannes de réseau.
9. Bonnes pratiques de gestion réseau
 Sauvegarde des configurations :
o Effectuer des sauvegardes régulières de toutes les configurations de périphériques réseau pour
prévenir la perte de données importantes.
 Documentation des configurations :
o Maintenir une documentation détaillée des configurations réseau pour faciliter la gestion, les
audits et les modifications.
 Surveillance proactive :
o Utiliser des outils pour surveiller en continu la santé du réseau et détecter les problèmes avant
qu'ils n'affectent les utilisateurs.
 Planification de la capacité :
o Évaluer régulièrement les besoins en bande passante et en ressources réseau pour éviter les
goulets d'étranglement et garantir la croissance future.

Introduction à Cisco UCS


 Cisco UCS est une plateforme de calcul convergente développée pour simplifier l’infrastructure des
datacenters en intégrant des serveurs, du stockage, des réseaux et de la gestion dans une architecture
unifiée.
 UCS permet de gérer des ressources matérielles et logicielles via une seule interface, facilitant
l'automatisation, la gestion et l'évolutivité.
2. Architecture de Cisco UCS
 UCS Manager (UCSM) : Interface de gestion centrale qui contrôle l'infrastructure UCS, notamment
les serveurs, les châssis et les réseaux.
 UCS B-Series (Blade Servers) :
o Serveurs lames conçus pour offrir des performances et une densité élevée dans un format
compact.
o Chaque lame peut être configurée indépendamment, mais toutes sont gérées par un UCS
Manager unique.
 UCS C-Series (Rack-Mount Servers) :
o Serveurs montés en rack offrant des performances élevées et une grande capacité de stockage.
o Idéaux pour les applications nécessitant de grandes ressources informatiques ou des capacités
de stockage étendues.
 UCS Fabric Interconnect :
o Commutateurs qui agissent comme des hubs pour connecter les serveurs UCS aux autres
éléments du réseau et de stockage.
o Fournissent une connectivité réseau et de gestion, et gèrent le trafic entre les différents
composants du système UCS.
3. Principaux composants Cisco UCS
 UCS Blade Chassis :
o Contient les serveurs lames UCS B-Series, les alimentations, les modules de ventilation, et
les interconnexions.
 UCS Fabric Interconnects :
o Fournissent une connectivité entre les châssis UCS, les serveurs, les systèmes de stockage, et
les réseaux externes.
o Ils gèrent les données réseau, le stockage, et l'administration du système.
 UCS Manager :
o Interface de gestion unifiée permettant de configurer, surveiller, et administrer l'infrastructure
UCS.
o Permet la gestion des profils de serveur, des configurations réseau, du stockage et de la
politique de gestion.
 UCS Virtual Interface Card (VIC) :
o Carte d'interface réseau qui permet de gérer les connexions réseau et de stockage sur les
serveurs lames UCS.
o Permet de virtualiser les interfaces réseau et de stockage à l'aide de la technologie de
virtualisation Cisco.
4. Gestion et Automatisation avec Cisco UCS
 UCS Manager permet de gérer tous les aspects de l'infrastructure, y compris la configuration, le
suivi, et la gestion de l’alimentation.
 Automatisation des configurations :
o La gestion des configurations peut être automatisée à l’aide de Profiles de Serveur UCS, qui
définissent les configurations matérielles et logicielles pour les serveurs lames.
o Les profils permettent de déployer des configurations cohérentes sur plusieurs serveurs en
quelques minutes.
 UCS Central :
o Solution pour la gestion de plusieurs systèmes UCS dans un environnement multi-site.
o Fournit une gestion centralisée des politiques, de la configuration et des alertes.
 UCS Director :
o Plateforme d’automatisation et de gestion des services informatiques dans un environnement
Cisco UCS.
o Permet l'automatisation du provisionnement de serveurs, des services de stockage et des
applications.
5. Avantages de Cisco UCS
 Convergence : Cisco UCS permet de réduire le nombre de composants matériels nécessaires, ce qui
simplifie la gestion et réduit la complexité du datacenter.
 Évolutivité : Grâce à son architecture modulaire, Cisco UCS peut facilement évoluer pour s'adapter
à la croissance des besoins en ressources.
 Automatisation : L’automatisation des processus de configuration et de gestion réduit le temps
d'administration et minimise les erreurs humaines.
 Virtualisation : Cisco UCS offre une intégration transparente avec les environnements de
virtualisation (VMware, Microsoft Hyper-V, etc.), ce qui permet de mieux utiliser les ressources.
 Haute disponibilité et tolérance aux pannes : Le système UCS est conçu pour garantir la continuité
des services en cas de défaillance d’un composant.
6. Cisco UCS pour les environnements Cloud et Big Data
 Cisco UCS est particulièrement adapté pour les environnements de cloud privé, hybride et public.
 Il prend en charge les applications Big Data, les bases de données distribuées, et les applications
nécessitant des performances élevées grâce à une architecture flexible.
 Cisco UCS et Cloud : Il permet une gestion centralisée des ressources informatiques, avec un
provisionnement dynamique pour les applications cloud.
 Cisco UCS et Big Data : Grâce à sa haute performance et à sa capacité d’intégration avec les
systèmes de stockage, UCS est utilisé dans des environnements Big Data pour fournir des ressources
informatiques adaptées.
7. Intégration avec des technologies Cisco
 Cisco ACI (Application Centric Infrastructure) : Cisco UCS s’intègre bien avec Cisco ACI pour
fournir une infrastructure de réseau définie par logiciel, permettant une gestion et une orchestration
optimisées des ressources du réseau.
 Cisco HyperFlex : Solution convergée qui combine le stockage, la mise en réseau et la virtualisation
dans une seule solution. Elle fonctionne bien avec UCS pour des environnements virtualisés.
8. Sécurité dans Cisco UCS
 UCS Manager Security :
o Cisco UCS Manager propose plusieurs fonctionnalités de sécurité, telles que la gestion des
utilisateurs et des rôles, l’audit, et l’intégration avec les systèmes d’identification
d’entreprise.
 Chiffrement des données : Les données en transit entre les composants UCS peuvent être chiffrées
pour assurer la sécurité de l’information.
 Protection contre les attaques : Cisco UCS intègre des mécanismes de sécurité pour protéger
l’infrastructure contre les attaques, en particulier dans des environnements multi-tenant.
9. Maintenance et Mise à jour Cisco UCS
 Mises à jour logicielles et firmware : Cisco UCS permet de maintenir facilement à jour les
composants matériels et logiciels à l’aide de l’UCS Manager.
 Gestion des alertes : Le système fournit une surveillance en temps réel et des alertes pour informer
les administrateurs des problèmes potentiels ou des conditions de performance.
 Maintenance prédictive : Cisco UCS utilise des outils de gestion avancée pour surveiller l’état du
matériel et prévenir les pannes avant qu'elles ne se produisent.
10. Cas d'utilisation de Cisco UCS
 Virtualisation des serveurs : Cisco UCS est largement utilisé dans des environnements où la
virtualisation est utilisée pour maximiser l’utilisation des ressources et améliorer l'efficacité.
 Applications d'entreprise : Grâce à ses capacités de traitement et de stockage, Cisco UCS est un
excellent choix pour les applications ERP, CRM, et de gestion de bases de données.
 Solutions Cloud : Les entreprises utilisent Cisco UCS pour fournir des solutions de cloud privé et
hybride, en bénéficiant de son évolutivité et de sa capacité d’automatisation.
11. Exemples d’architecture Cisco UCS
 Scénario 1 : Utilisation d’une solution UCS avec des serveurs lames pour héberger des
environnements virtualisés (VMware) pour une entreprise de taille moyenne.
 Scénario 2 : Déploiement de Cisco UCS pour soutenir une application de Big Data avec des besoins
de traitement de données à haute performance dans un environnement cloud hybride.
Cisco Unified Communications Manager (Unified CM)
 Fonction principale : Initialement conçu pour acheminer les appels sur un réseau IP, Unified CM a
évolué pour inclure la gestion des périphériques, le routage des appels, ainsi que la gestion des
profils et des paramètres utilisateurs.
 Utilisations : Il est utilisé dans divers secteurs tels que les hôpitaux, les banques, les universités et
les organismes gouvernementaux, afin de gérer de manière centralisée un grand nombre de
périphériques et de profils d'utilisateurs.
 Fonctionnalités : Unified CM permet d’automatiser le provisionnement des périphériques et des
appels, offrant une solution unifiée pour les communications d'entreprise.
 API : Cisco a développé des API comme AXL et UDS qui permettent d’étendre les fonctionnalités
du système et d’automatiser la gestion des périphériques et des appels.
2. Centre de Contact Cisco
 Fonction principale : Le centre de contact gère et achemine les appels, le texte, la vidéo et les
données vers les bons agents au moment opportun, tout en fournissant des outils de gestion pour les
superviseurs et les agents.
 Utilisations : Il est utilisé pour gérer les centres d'appels à haut volume et peut être intégré à Unified
CM ou utilisé de manière autonome.
 Finesse : C'est un bureau d'agent et de superviseur permettant une interface personnalisée, avec des
API qui offrent plus de flexibilité pour adapter les bureaux aux besoins spécifiques des utilisateurs,
notamment pour un service client plus ciblé.
3. Webex - Outils de Collaboration Cisco
 Webex Teams : Une application qui combine réunions et messagerie pour améliorer la collaboration.
Elle simplifie les interactions en offrant des outils de discussion et de gestion de projet en temps réel.
 Webex API : Permet la création de robots de chat et d'intégrations afin d'automatiser certaines tâches
et d’améliorer l'efficacité des interactions.
 Appareils Webex : Inclut des outils tels que des tableaux blancs numériques, des unités de
téléprésence et des contrôles de salle. Grâce à l’API XAPI, les appareils Webex peuvent être
personnalisés pour mieux répondre aux besoins des utilisateurs en matière de collaboration.
*-------------------------------
la Sécurité des Réseaux Cisco
Les réseaux sont des cibles naturelles pour les cybermenaces, et pour y faire face, il est essentiel d'utiliser
des solutions automatisées pour surveiller, détecter et gérer les risques de manière plus efficace qu'avec des
processus manuels. Cisco, en tant qu'entreprise de réseau, propose un large éventail de technologies et de
solutions de sécurité qui permettent une gestion centralisée et automatisée des risques et des menaces.
1. Importance de l'Automatisation dans la Sécurité
 Risque et Surveillance : L'intensification du trafic sur les réseaux et le volume de données à
surveiller rendent les processus manuels inefficaces pour sécuriser les réseaux. Une personne ou
même une équipe ne peut pas gérer les menaces efficacement sans une automatisation.
 Utilisation des Scripts : Les scripts permettent de traiter les données beaucoup plus rapidement
qu'un humain. Ils sont également reproductibles, évitant ainsi des erreurs humaines lors de la
configuration des systèmes et de l'identification des problèmes de sécurité.
2. Technologies de Sécurité Cisco
Cisco propose plusieurs technologies de sécurité avancées qui peuvent être configurées et gérées via des
API, permettant une gestion automatisée et efficace de la sécurité réseau.
 Advanced Malware Protection (AMP) for Endpoints : AMP fournit une protection avancée contre
les malwares sur les points de terminaison (ordinateurs, appareils mobiles). Il aide à détecter, bloquer
et enquêter sur les menaces en temps réel.
 Cisco Firepower Management Center (FMC) : Le FMC est une solution de gestion centralisée qui
permet de configurer et de superviser les pare-feu Cisco Firepower, offrant ainsi une visibilité
complète sur le trafic et les menaces réseau.
 Cisco Firepower Threat Defense (FTD) : FTD est une solution de défense contre les menaces qui
intègre des capacités de pare-feu, de prévention des intrusions (IPS) et de détection des menaces,
assurant une protection en temps réel contre les attaques réseau.
 Cisco ISE (Identity Services Engine) : Cisco ISE est une plateforme de gestion des identités et des
accès qui permet de contrôler et sécuriser l'accès au réseau en fonction des utilisateurs, appareils et
politiques de sécurité.
 Cisco Threat Grid : Threat Grid est une plateforme de détection et d'analyse des menaces qui
permet d'analyser les malwares en profondeur et d’évaluer leur impact sur les systèmes en temps
réel, avec des capacités d'apprentissage automatique pour améliorer la détection des menaces.
 Cisco Umbrella : Cisco Umbrella est une solution de sécurité basée sur le cloud qui protège contre
les menaces sur Internet, notamment les attaques de phishing, le malware et les sites malveillants.
Elle fournit une couche de protection DNS pour bloquer l'accès à des contenus nuisibles.
Conclusion
Les solutions de sécurité Cisco offrent une défense robuste contre les menaces sur les réseaux en utilisant
des technologies avancées comme AMP, Firepower, ISE, Threat Grid, et Umbrella. Grâce à l'automatisation
et à la gestion via API, les entreprises peuvent renforcer leur sécurité, détecter les menaces plus rapidement,
et réduire les erreurs humaines, tout en assurant la sécurité de leurs infrastructures.

Resumee :
Comprendre la plate-forme API de Cisco
Pour vous aider à trier toutes les offres de développement Cisco, DevNet crée des centres de développement
pour chaque groupe technologique, et ces centres de développement constituent un moyen pratique de
regrouper les technologies. Les centres de développement Cisco comprennent: Unified Communications
Manager, Cloud, Collaboration, Data center, Internet of Things (IoT) et Edge Computing, Mise en réseau,
Sécurité, Sans fil et mobile, et les développeurs d'applications.
Les SDKs Cisco
SDK signifie Software Development Kit. Généralement, un SDK contient un ensemble d'outils de
développement logiciel intégrés pour le développement d'applications pour un périphérique ou un système
spécifique. Un SDK peut fournir des méthodes d'authentification plus simples ainsi que l'activation des
actualisations de jetons dans le cadre du package. Les SDK aident souvent avec les contraintes de pagination
ou de limitation des taux sur les réponses pour une API particulière. Cisco fournit une large gamme de SDK
sur différentes plates-formes Cisco.
Comprendre la programmabilité des réseaux et les modèles de dispositifs
La programmabilité pilotée par un modèle hérite de la puissance des modèles, en faisant correspondre les
capacités et les services des appareils aux modèles standardisés, ce qui facilite la configuration des
périphériques réseau. Un modèle de données est une méthode structurée pour décrire n'importe quel objet.
Par exemple, les données personnelles figurant sur un passeport ou un permis de conduire peuvent décrire
une personne d'une manière individuelle, de sorte que ce sont les deux "modèles de données". YANG,
acronyme de Yet Another Next Generation, est "un langage de modélisation des données utilisé pour
modéliser les données de configuration et d'état manipulées par le protocole de configuration du réseau
(NETCONF), les appels de procédure à distance NETCONF et les notifications NETCONF". Il existe deux
types de modèles YANG, ouverts et natifs. Network Configuration (NETCONF) est un protocole conçu pour
installer, manipuler et supprimer la configuration des périphériques réseau. C'est le protocole principal
utilisé avec les modèles de données YANG aujourd'hui. Le protocole NETCONF fournit un petit ensemble
d'opérations pour gérer les configurations des périphériques et récupérer les informations sur l'état des
périphériques. Le protocole de base fournit des opérations de récupération, configuration, copie et
suppression des stockages de données de configuration. RESTCONF utilise les modèles de banque de
données et les verbes de commande définis dans le protocole NETCONF (Network Configuration Protocol),
encapsulés dans les messages HTTP. RESTCONF n'est pas destiné à remplacer NETCONF, mais plutôt à
fournir une interface HTTP qui respecte les principes REST et est compatible avec le modèle de banque de
données NETCONF.
Gestion des réseaux Cisco
L'automatisation réseau est utilisée pour diverses tâches courantes au sein d'une organisation:
provisionnement des périphériques, gestion des logiciels de périphériques, contrôles de conformité, rapports,
dépannage, collecte de données et télémétrie. IOS est l'acronyme de "Internetwork Operating System". IOS
était le système d'exploitation d'origine pour les routeurs Cisco Systems et les commutateurs réseau Cisco.
IOS XE est la plateforme programmable de nouvelle génération. Dans IOS XE, le plan de contrôle et le plan
de données sont séparés. Le plan de contrôle "contrôle" le réseau, ce qui signifie qu'il stocke les itinéraires,
cartographie, généralement tous les "signaux" qui sont nécessaires pour exécuter le routeur ou le
commutateur. Le plan de données contient les données réelles du client, de l'utilisateur ou de l'application
qui doivent passer le long du réseau d'un périphérique à un autre.
Un Cisco DNA Center est un contrôleur de base et une plate-forme d'analyse pour les grandes et moyennes
organisations et est au cœur d'un Cisco IBN. Il fournit un tableau de bord unique pour la gestion du réseau,
l'automatisation du réseau, l'assurance réseau, la surveillance, l'analyse et la sécurité. Centre DNA Cisco
fournit à la fois un tableau de bord de l'interface graphique Web et l'API RESTful Intent utilisée pour
accéder par programme à ses services et fonctions. Toutes les méthodes API Intent répondent avec une
charge utile de contenu structuré par JSON. Les méthodes PUT et POST API d'intention nécessitent une
charge utile de requête JSON. Les requêtes POST et PUT sont traitées de manière asynchrone dans le Cisco
DNA Center.
La plate-forme Cisco ACI est la solution Cisco pour SDN. Le système de gestion centralisé est l'APIC, un
cluster de contrôleurs. Les modules ACI/MSO permettent la création simple d'éléments de playbook pour
effectuer des tâches de recherche, d'administration et de gestion sur une structure ACI. Pour simplifier le
développement d'applications avec ACI, Cisco a développé Cobra, une bibliothèque Python robuste pour
l'API REST APIC. Les objets de la bibliothèque Cobra (SDK) mappent 1:1 aux objets du MIT Cisco ACI.
Cisco Meraki est une suite de solutions réseau gérées dans le cloud qui offre une source unique de gestion
pour l'infrastructure, les emplacements et les périphériques.
Le cloud Meraki utilise l'emplacement physique des points d'accès pour estimer l'emplacement d'un client.
NX-OS est un système d'exploitation de datacenter pour le commutateur Nexus. Avec les commutateurs
Nexus exécutant NX-OS, vous pouvez provisionner automatiquement les commutateurs Cisco dans le
datacenter et orchestrer les modifications de la même manière que vous configurez un serveur Linux.
NSO permet aux opérateurs d'adopter dynamiquement la solution de configuration de service, en fonction
des changements intervenus dans le portefeuille de services proposé. Il offre la vision SDN en fournissant
une interface logiquement centralisée au réseau hétérogène. NSO dispose de trois composants: interface
programmable pilotée par modèle (modèles YANG), base de données de configuration et couches
d'abstraction de périphériques et de services. Un service NSO est une fonction fournie par des périphériques
réseau. La création, la modification ou la suppression du service manipulent la configuration réelle des
périphériques finaux. Les transactions de service ont effectué des opérations logiques complètes répondant
aux propriétés de transaction ACID (Atomic, Consistant DB, Isolated et Durable).
SD-WAN prend en charge l'intégration d'API tierces, ce qui permet de simplifier, de personnaliser et
d'automatiser les opérations quotidiennes. Cisco SD-WAN inclut les protocoles de routage courants utilisés
pour tous les déploiements SD-WAN d'entreprise, tels que BGP, OSPF, VRRP et IPv6.
Gestion informatique Cisco
Le système UCS (Cisco Unified Computing System), ainsi que ses logiciels et ses auxiliaires SaaS, fournit
une installation physique et logique complète pour le calcul, la mise en réseau et le stockage dans le centre
de données moderne.
Cisco UCS Manager s'exécute sur l'interconnexion de fabric principale et se voit attribuer une adresse IP
virtuelle (VIP), avec possibilité de basculement vers l'interconnexion de fabric subordonné. Les demandes
de gestion Cisco UCS Manager à partir de l'interface graphique ou de l'interface de ligne de commande sont
encodées en XML. Toutes les requêtes XML à Cisco UCS sont asynchrones et se terminent sur le
gestionnaire Cisco UCS actif. Cisco UCS Manager assure la médiation de toutes les communications au sein
du système; aucun accès direct de l'utilisateur aux composants Cisco UCS n'est requis.
Les serveurs Cisco UCS Manager sont soit des serveurs lames qui résident dans le châssis (serveurs de la
série B), soit montés en rack (serveurs de la série C). Les deux sont connectés à une paire redondante de
commutateurs appelés IF (UCS Fabric Interconnections).
Les objets gérés Cisco UCS sont des représentations XML d'une entité physique et logique dans le système
UCS. La documentation de l'API Cisco UCS est généralement appelée documentation UCS Object Model.
La documentation Object Model est disponible avec UCS Platform Emulator ou en ligne. Chaque classe et
méthode d'objet UCS est répertoriée dans la documentation avec les types UCS, les événements, les erreurs,
et les messages Syslog.
UCS PowerTool est une bibliothèque d'applets de commande PowerShell qui permettent la gestion des
environnements UCS à partir des systèmes d'exploitation Microsoft, via l'API UCS XML.
Cisco UCS Director étend l'unification des couches informatiques et réseau par le biais de Cisco UCS afin
de fournir une visibilité et une gestion des composants de l'infrastructure du centre de données. Vous pouvez
utiliser Cisco UCS Director pour configurer, administrer et surveiller les composants Cisco et non-Cisco pris
en charge. Lorsque vous activez le menu développeur, l'interface graphique Cisco UCS Director fournit une
option de menu développeur permettant aux développeurs d'accéder aux métadonnées du rapport et au
navigateur d'API REST.
Cisco Intersight est une plate-forme de gestion de systèmes SaaS (Software as a Service) capable de gérer
l'infrastructure à la périphérie et à distance ainsi que dans le datacenter. Lorsque vous utilisez le service,
vous pouvez faire évoluer l'infrastructure vers le haut ou vers le bas à mesure que les besoins augmentent ou
diminuent. Comme il fournit une API REST pour accéder au MIM, vous pouvez gérer l'infrastructure sous
forme de code. L'API Intersight est constamment disponible avec un modèle de gestion basé sur le cloud.
Plateformes de collaboration Cisco
La suite de solutions de collaboration sur site et dans le cloud de Cisco comprendUnified Communications
Manager, Contact Center, Finesse et Webex. Gestionnaire des communications unifiées de Cisco est
également connu sous le nom de CM unifié, CUCM ou CallManager. La fonction principale de Unified CM
est de gérer les utilisateurs de téléphone, les téléphones IP, les numéros d'annuaire, et de connecter et gérer
les appels vers les destinations souhaitées.
AXL est une interface basée sur XML/SOAP qui fournit un mécanisme d'insertion, de récupération, de mise
à jour et de suppression de données de la base de données de configuration de communication unifiée. L'API
AXL est destinée à l'administration et à la configuration.
UDS est une API basée sur REST qui fournit un mécanisme d'insertion, de récupération, de mise à jour et de
suppression de données de la base de données de configuration de communication unifiée. L'API UDS est
conçue pour permettre aux utilisateurs finaux de configurer les paramètres.
Finesse est l'agent de centre de contact et le bureau de superviseur de Cisco basé sur un navigateur. Finesse
dispose d'API REST et d'API JavaScript qui peuvent être utilisées pour créer des bureaux d'agent
entièrement personnalisés, intégrer les fonctionnalités du centre de contact dans les applications et intégrer
des applications dans le bureau de l'agent et du superviseur Finesse. Cette intégration peut être réalisée sous
la forme de gadgets OpenSocial.
Cisco Webex Teams est une solution de collaboration en ligne qui permet de connecter les personnes et les
équipes grâce au chat, à la voix et à la vidéo. Avec l'application Webex Teams, vous avez accès à des espaces
de travail virtuels sécurisés. Vous utilisez également la messagerie et le partage de fichiers avec des
intégrations d'applications tierces. Webex Teams vous permet d'utiliser une seule application pour contenir
du contenu et des informations pour la collaboration en équipe. Teams s'intègre également aux appareils
Cisco Webex. Les informations restent sûres et sécurisées grâce à la sécurité et à la conformité avancées
intégrées. Les appareils Cisco Webex offrent un accès à toutes les fonctionnalités de Webex. Les cartes
Webex, les appareils de salle et les appareils de bureau permettent la collaboration grâce à la vidéo, aux
appels et à la programmabilité.
Plateformes de sécurité Cisco
Cisco fournit un large portefeuille de technologies de sécurité et de familles de produits configurables et
gérables via les API:
 Advanced Malware Protection (AMP) for Endpoints - AMP pour les points terminaux fournit un
accès API pour automatiser les flux de travail de sécurité et inclut des fonctionnalités avancées de
sandboxing pour inspecter tous les fichiers qui ressemblent à des logiciels malveillants de manière
sûre et isolée. AMP fonctionne avec les appareils Windows, Mac, Linux, Android et iOS via des
déploiements de cloud public ou privé.
 Cisco Firepower Management Center (FMC) - FMC est une console de gestion centrale pour le
pare-feu de nouvelle génération Firepower Threat Defense (FTD). Cette console peut configurer tous
les aspects de votre FTD, y compris les fonctionnalités clés telles que les règles de contrôle d'accès et
la configuration des objets de stratégie, telles que les objets réseau. FMC fournit une base de données
de configuration centralisée permettant un partage efficace des objets et des stratégies entre les
appareils. Il fournit une API REST pour configurer un sous-ensemble de ses fonctionnalités.
 Cisco Firepower Threat Defense (FTD) - La configuration FTD avec Firepower Device Manager
fournit également des services de protection, notamment le suivi, la sauvegarde et la protection des
certificats d'autorité de certification; la gestion, la sauvegarde, le chiffrement et la protection des clés
privées; la gestion des clés IKE; et les ACL pour sélectionner trafic pour les services.
 Cisco Identity Services Engine (ISE) - ISE fournit un moteur basé sur des règles permettant l'accès
réseau basé sur des règles aux utilisateurs et aux périphériques. Il vous permet d'appliquer la
conformité et de rationaliser les opérations d'accès au réseau des utilisateurs. Avec les API ISE, vous
pouvez automatiser le confinement des menaces lorsqu'une menace est détectée. Il s'intègre aux
déploiements d'identité existants.
 Cisco Threat Grid - Threat Grid est une plateforme d'analyse des logiciels malveillants qui combine
l'analyse statique et dynamique des logiciels malveillants avec des renseignements sur les menaces
provenant Vous pouvez ajouter une appliance Threat Grid à votre réseau ou utiliser le service Threat
Grid dans le cloud. Il peut également être intégré à d'autres technologies de sécurité telles que AMP.
 Cisco Umbrella - Umbrella utilise DNS pour renforcer la sécurité sur le réseau. Vous configurez
votre DNS pour diriger le trafic vers Umbrella et Umbrella applique des paramètres de sécurité à sa
liste globale de noms de domaine en fonction des stratégies de votre organisation.

Vous aimerez peut-être aussi