
Master de Formation Permanente en Cloud Apps : Développement et Déploiement d'Applications dans le Cloud
Madrid, Espagne
DURÉE
2 Years
LANGUES
Espagnol
RYTHME
À plein temps
DATE LIMITE D'INSCRIPTION
Date limite de dépôt des demandes
DATE DE DÉBUT AU PLUS TÔT
Demander la date de début la plus proche
FRAIS DE SCOLARITÉ
EUR 3 550
FORMAT D'ÉTUDE
Apprentissage à distance
Introduction
À l'heure actuelle, le cloud computing ou cloud computing devient populaire. Ce paradigme informatique offre aux organisations une plateforme de publication d'applications sur Internet. Grâce à ses services, ces applications peuvent être plus évolutives, plus tolérantes aux pannes et peuvent être mises à jour plus fréquemment et avec moins d'erreurs. Toutefois, afin de tirer parti des nouvelles plates-formes, il est nécessaire que les applications soient conçues et mises en œuvre selon une série de modèles et en utilisant certaines technologies. Ces applications conçues spécifiquement pour ces nouvelles plateformes sont appelées applications cloud natives, que l'on pourrait traduire par applications cloud natives.
Buts
L'objectif du master est de présenter et d'appliquer les techniques, outils, plateformes et bonnes pratiques qui permettent le développement et le déploiement d'applications Internet tirant parti des nouvelles tendances offertes par le cloud computing. Contrairement aux autres masters du secteur, l'objectif est de couvrir le cycle de vie complet du développement et de la maintenance des applications : méthodologies de développement, qualité des logiciels, technologies de mise en œuvre des applications Internet, plateformes de cloud computing et maîtrise du cycle d'intégration et de déploiement. Pour cette raison, le programme de master est divisé en quatre modules qui couvrent tous ces aspects :
- Module I : Qualité logicielle : Conception, Architecture, Tests et XP
- Module II : Services Web : technologies, protocoles, tests et architectures
- Module 3 : Applications cloud natives
- Module IV : DevOps, intégration et déploiement continu
Admissions
Curriculum
Module I - Qualité logicielle : conception, architecture, tests et XP
- Conception et qualité des logiciels
- Modèles, connaissances et complexité
- Logiciels, disciplines et évolution
- Design, conception modulaire et conception orientée objet
- Modèles et architecture logicielle
- Modèles de conception
- Modèles créationnels, structurels et comportementaux
- Architecture logicielle
- Style architectural Mv*
- Styles architecturaux agiles : hexagonal, oignon, épuré
- Tests de logiciels
- Méthodologie de test
- Conception du test : boîte noire contre boîte blanche
- Tests unitaires
- Doubles dans les tests
- Programmation extrême
- Refactorisation
- Développement piloté par les tests
- Programmation extrême (Xp)
- Scrum
- Processus de développement unifié (Pud)
Module II - Services Web : technologies, protocoles, tests et architectures
Durée : 10 semaines
Programme:
- Technologies et protocoles de services Web
- Introduction aux technologies de services Web
- Des applications Web
- Apis reposants
- Bases de données
- Construction et déploiement
- Programmation réactive
- Protocoles : Rest, Grpc, Graphql et Queues
- La cyber-sécurité
- Gestion des identités
- Vulnérabilités dans les services Web
- Architectures et modèles de services Web
- introduction
- Motifs
- Architecture hexagonale et épurée
- Tests de services Web
- introduction
- Tests avec Spring et Testcontainers
- Tests de l'API de repos
- Tests de contrats axés sur le consommateur
- Tests d'acceptation
- Tests de charge
- Tests d'interface dans les applications Web
- Persistance et analyse des données
- Persistance relationnelle
- Bases de données multimodèles
- Évolution de la base de données
- Persistance non relationnelle
- Introduction à la science des données
Module III - Applications cloud natives
Durée : 12 semaines
Programme:
- Cloud computing
- introduction
- Services Web Amazon
- Services Cloud
- Plateforme en tant que service
- Applications cloud natives
- Sans serveur
- Opérations
- Sécurité et confidentialité dans le cloud
- Conteneurs et orchestrateurs
- Conteneurs Docker
- Docker Composer
- Sécurité Docker
- Kubernetes
- Sécurité dans Kubernetes
- Applications Kubernetes avec barre
- Outils de développement avec Kubernetes
- Évolutivité et tolérance aux pannes
- Microservices
- Introduction aux microservices
- Architectures : Ddd, Cqrs et Sourcing d'événements
- Modèles de microservices
- Communication entre services
- Transactions de la saga
- API externe
- Du monolithe aux microservices
Module IV - Devops, intégration et déploiement continu
Durée : 6 semaines
Programme:
- Référentiels et modèles de développement
- Cycle de vie du logiciel
- Contrôle de version Git
- Modèles de développement : Gitflow et Tbd
- Développement avec Monorepo
- Intégration et livraison continues
- introduction
- Services Ci : actions Github et Jenkins
- Analyse du code statique
- Gestion des artefacts
- Déploiement continu
- introduction
- Changements parallèles
- Déploiement incrémentiel : Bleu-vert et Canary
- Outils de déploiement continu
- Tests en production
Projet de Master Final
Après avoir suivi toutes les matières, vous devez faire un mémoire de maîtrise (Tfm). Dans ce travail, les connaissances acquises sont appliquées et développées. Il ne s’agit pas d’un petit projet « jouet », c’est plutôt l’excuse parfaite pour approfondir un sujet qui intéresse l’étudiant. Les professeurs proposent une série de sujets, mais les étudiants peuvent également proposer des projets qui les motivent. Par exemple, cette technologie que vous n'avez jamais le temps d'étudier en profondeur, de mettre en œuvre une architecture spécifique que vous avez en tête pour quelque chose que vous faites au travail, de comparer différentes alternatives, etc. Les projets de master finaux peuvent être réalisés individuellement ou en groupe. Des groupes d'étudiants, ce qui leur permet d'aller plus loin dans leurs objectifs.
Résultat du programme
Compétences générales:
- CG1 : Capacité à concevoir, rédiger, organiser, planifier et développer des projets dans le domaine du génie informatique ayant pour objet la conception, le développement ou l'exploitation de systèmes, services et applications informatiques.
- CG2 : Capacité à définir, évaluer et sélectionner des plateformes matérielles et logicielles pour le développement et l'exécution de systèmes, services et applications informatiques, selon les connaissances acquises.
- CG3 : Capacité à concevoir et développer des systèmes ou architectures informatiques centralisés ou distribués intégrant du matériel, des logiciels et des réseaux selon les connaissances acquises.
- CG4 : Capacité à résoudre des problèmes avec initiative, prise de décision, autonomie et créativité. Capacité à savoir communiquer et transmettre des connaissances, des compétences et des aptitudes dans le domaine du développement et du déploiement d'applications logicielles.
- CG5 : Connaissances pour effectuer des mesures, des calculs, des évaluations, des expertises, des études, des rapports, des planifications de tâches et autres travaux informatiques similaires, conformément aux connaissances acquises.
- CG6 : Que les étudiants aient la capacité de rassembler et d'interpréter des données pertinentes pour porter des jugements qui incluent une réflexion sur des questions pertinentes de nature sociale, technique, scientifique ou éthique.
Talents spécifiques:
- CE1 : Capacité à appliquer des méthodologies de développement de logiciels. Programmation particulièrement extrême avec ses valeurs, ses principes et ses bonnes pratiques.
- CE2 : Capacité à suivre les recommandations de code propre (clean code) et de bonne conception orientée objet pour produire du code de qualité.
- CE3 : Capacité à concevoir et mettre en œuvre des tests logiciels pour guider le développement de logiciels et garantir leur qualité.
- CE4 : Capacité à améliorer la qualité du code afin qu'il puisse être étendu.
- CE5 : Capacité à utiliser efficacement des bibliothèques et des frameworks (frameworks) pour le développement d'applications Internet.
- CE6 : Capacité à concevoir et mettre en œuvre des protocoles de communication pour des applications Internet.
- CE7 : Capacité à choisir le style architectural le plus adapté à la mise en œuvre d'applications Internet maintenables et faciles à tester de manière automatisée.
- CE8 : Capacité à concevoir, mettre en œuvre et exécuter des tests fonctionnels et non fonctionnels d'applications Internet.
- CE9 : Capacité à inclure les mécanismes d'authentification et d'autorisation des utilisateurs les plus appropriés dans les applications Internet
- CE10 : Capacité à utiliser de bonnes pratiques pour éviter les vulnérabilités et atténuer leurs effets en cas d'exploitation.
- CE12 : Capacité à modéliser des données d'application et leurs relations à l'aide de technologies de bases de données relationnelles et non relationnelles.
- CE13 : Capacité à choisir les technologies de persistance les plus appropriées en fonction des besoins de l'application.
- CE14 : Capacité à savoir comment se comporte un système persistant distribué, évolutif et tolérant aux pannes.
- CE15 : Capacité à concevoir des processus de mise à jour pour des applications de production qui nécessitent des modifications dans la structure des données sans affecter la fourniture du service.
- CE16 : Capacité à connaître les principales technologies utilisées dans le domaine de la data science et quels services elles proposent pour la mise en œuvre d'applications.
- CE17 : Capacité à évaluer et choisir les services du fournisseur de cloud computing les plus adaptés à une application Internet en fonction de ses besoins.
- CE18 : Capacité à utiliser les technologies d'infrastructure comme code pour gérer les systèmes informatiques et connaître leurs avantages par rapport aux modèles traditionnels.
- CE19 : Capacité à utiliser des conteneurs pour empaqueter et distribuer des applications Internet.
- CE20 : Capacité à utiliser efficacement un système d'orchestration de conteneurs pour le déploiement et la gestion d'une application Internet basée sur des conteneurs.
- CE21 : Possibilité de mettre à jour une application dans un orchestrateur de conteneur progressivement et sans interruption de service.
- CE22 : Capacité à concevoir et mettre en œuvre des applications utilisant les services fournis par les fournisseurs de cloud tels que la messagerie électronique, les bases de données, le stockage de fichiers, etc.
- CE23 : Capacité à concevoir, mettre en œuvre et utiliser des systèmes d'observabilité pour la gestion d'applications en production.
- CE24 : Capacité à concevoir et à mettre en œuvre des applications évolutives et tolérantes aux pannes à l'aide des services de réplication et d'équilibrage de charge fournis par les fournisseurs de cloud et les orchestrateurs de conteneurs.
- CE25 : Capacité à appliquer efficacement une architecture basée sur des microservices pour la mise en œuvre d'une application Internet.
- CE26 : Capacité à concevoir et à mettre en œuvre une application utilisant des plateformes de fonctions en tant que service et à déterminer quand elles sont appropriées par rapport à d'autres alternatives.
- CE27 : Capacité à connaître l'ensemble des pratiques DevOps d'automatisation des processus entre les équipes de développement et d'exploitation.
- CE28 : Capacité à connaître et choisir les différentes alternatives existantes pour mettre en œuvre un système d'intégration et de déploiement continu.
- CE29 : Capacité à définir des tâches dans des systèmes d'intégration et de déploiement continus pour automatiser le cycle de vie du code source depuis son ajout au référentiel de code jusqu'à sa publication en production.
- CE30 : Capacité à gérer les artefacts obtenus à partir du code source tout au long de son cycle de vie et dans ses différents types de maturité (release, bêta, snapshot, etc).
- CE31 : Capacité à utiliser efficacement les outils et technologies disponibles pour mettre à jour une application de production sans panne de service et sans erreurs.