Retour d’Expérience d’une Intégration Continue avec Docker/Gitlab/Jenkins

Logo Docker

J’ai récemment monté pour un client une Intégration Continue basée sur Docker, Gitlab et Jenkins. L’objectif était de proposer une Intégration Continue ayant pour couverture les postes de développement, la plateforme de build permettant de passer les tests unitaires, ainsi que la plateforme d’intégration à disposition du client et des responsables du projet à des fins de recette. La plateforme de production quant à elle a été montée sur des VMs (par opposition aux containers) dédiées en utilisant évidemment le contenu des Dockerfiles qui nous servait de modèle de configuration comme pourrait le faire un descripteur Puppet.

Gitlab et Jenkins ont été choisis car ce sont des valeurs sûres qui font bien le travail qui leur revient : gestion des sources avec une interface graphique efficace pour Gitlab (en fait c’est Github @home) et Jenkins pour l’ordonnancement des builds/tests unitaires et des déploiements. Le pari était plus sur l’utilisation de Docker et la manière de l’intégrer dans l’Intégration Continue afin d’en tirer le maximum d’avantages. Plusieurs objectifs ont donc été ciblés (et atteints) via l’utilisation de Docker, mais des difficultés ont également été rencontrées.

C’est ce que je vais vous présenter dans la suite de cet article.

[...]

AWS re:Invent 2013 (2.3/2) : Use Cases – Concept du monitoring à grande échelle avec S3 et EMR par Netflix

Logo Netflix

Cet article fait suite à la synthèse des sorties annoncées lors du summit AWS re:Invent 2013 qui s’est déroulé cette année du 12 au 15 Novembre à Las Vegas. Nous allons aborder dans ce dernier article de la série l’utilisation que Netflix fait de EMR et de S3 pour sa télémétrie, comprendre la collecte des métriques de ses infrastructures World Wide en un endroit centralisé pour les utiliser dans le cadre d’un monitoring.

Cet article se base sur une présentation très intéressante de Roy Rapoport (Netflix) qui nous a fait partager l’architecture de Atlas, leur outil maison de monitoring mis en place pour traiter le volume colossale d’informations générées par leur infrastructure, autant au niveau de la collecte que de l’exploitation (analyse). L’un des points cruciaux est de pouvoir avoir un accès rapide à ces millions de métriques, à savoir une faible latence entre la génération de la métrique dans l’infrastructure distribuée et sa mise à disposition sur de multiples dimensions dans l’outil de monitoring centralisé.

Vous pourrez retrouvez également les autres articles de cette série consacrée au retour d’expérience du summit AWS en suivant ces liens Optimisation de son cluster EMR (Elastic MapReduce)Créer son NAS sur AWS : NFS, CIFS & GFS (GlusterFS) ou bien encore Accélérer la délivrance de son contenu via CloudFront et Route 53. C’est parti pour l’article 2.3 de la série ! :o)

[...]

AWS re:Invent 2013 (2.2/2) : Use Cases – Accélérer la délivrance de son contenu via CloudFront et Route 53

Waterfall Graphs

Cet article fait suite à la synthèse des sorties annoncées lors du summit AWS re:Invent 2013 qui s’est déroulé cette année du 12 au 15 Novembre à Las Vegas. Nous allons aborder dans cet article l’accélération de la délivrance du contenu d’un site via CloudFront et Route 53. Cet article va expliquer les mécanismes mis en place au niveau de CloudFront pour optimiser la vitesse de récupération du contenu depuis la source et de distribution vers le navigateur, voire même comment améliorer l’envoi de données depuis un formulaire vers votre serveur Web en passant par CloudFront qui sert de relai. Nous verrons également quels contenus sont éligibles à être cachés.

Cet article se base sur une présentation très intéressante de Kalyanaraman Prasad (AWS) et Parviz Deyhim (AWS), de même que les illustrations qui en sont tirées. Je diverge des avis présentés durant la session sur 2 points que je signalerai dans l’article.

Vous pourrez retrouvez également les autres articles de cette série consacrée au retour d’expérience du summit AWS en suivant ces liens Optimisation de son cluster EMR (Elastic MapReduce)Créer son NAS sur AWS : NFS, CIFS & GFS (GlusterFS) ou bien encore Concept du monitoring à grande échelle avec S3 et EMR par Netflix. C’est parti pour l’article 2.2 de la série ! :o)

[...]

AWS re:Invent 2013 (2.1/2) : Use Cases – Créer son NAS sur AWS : NFS, CIFS & GFS (GlusterFS)

NAS sur AWS : NFS sous Linux

Cet article fait suite à la synthèse des sorties annoncées lors du summit AWS re:Invent 2013 qui s’est déroulé cette année du 12 au 15 Novembre à Las Vegas. Nous allons aborder dans cet article la mise en place d’un NAS (Network Attached Storage) sur une infrastructure AWS (VPC ou EC2 standalone) afin de partager des fichiers via le réseau selon les protocoles NFS (Network File System) pour Unix et CIFS (Common Internet File System) pour Windows. Nous mettrons dans ce cadre un cluster inter-AZs (Availability Zone/Zone d’Accessibilité) basé sur PaceMaker et DRBD. Nous aborderons une alternative basée sur GFS (GlusterFS) afin de mettre à disposition des instances EC2 de votre infrastructure vos fichiers de manière transparente et distribuée. Cet article se base sur une présentation très intéressante de Craig Carl (AWS).

Vous pourrez retrouvez également les autres articles de cette série consacrée au retour d’expérience du summit AWS en suivant ces liens Optimisation de son cluster EMR (Elastic MapReduce)Accélérer la délivrance de son contenu via CloudFront et Route 53 ou bien encore Concept du monitoring à grande échelle avec S3 et EMR par Netflix. C’est parti pour l’article 2.1 de la série ! :o)

[...]

AWS re:Invent 2013 (2.0/2) : Use Cases – Optimisation de son cluster EMR

Logo Hadoop

Cet article fait suite à la synthèse des sorties annoncées lors du summit AWS re:Invent 2013 qui s’est déroulé cette année du 12 au 15 Novembre à Las Vegas. Je me propose, dans cet article, de vous exposer quelques bonnes pratiques et retours intéressants glanés durant les sessions et échanges au niveau des stands du Central : ces retours supplémentaires portent sur des sujets bien précis comme Créer son NAS sur AWS : NFS, CIFS & GFS (GlusterFS)Optimisation de son cluster EMR (Elastic MapReduce)Accélérer la délivrance de son contenu via CloudFront et Route 53 ou bien encore Concept du monitoring à grande échelle avec S3 et EMR par Netflix.

Comme bien souvent, j’ai été un peu optimiste de vouloir faire un seul et unique article sur ces sujets. Comme il y a pas mal de choses à dire, je vais faire un article pour chacun des 4 retours afin de les exposer plus en détail, ce sera d’autant plus intéressant… Enfin je l’espère ! :o)

[...]

AWS re:Invent 2013 (1/2) : News

AWS re:Invent 2013

Le summit AWS re:Invent 2013 s’est déroulé cette année du 12 au 15 Novembre à Las Vegas. Ces 4 jours ont été l’occasion d’assister à la mise à disposition de plusieurs nouveaux services (Amazon Kinesis, Amazon CloudTrail, Amazon WorkSpaces et Amazon AppStream), de nouvelles fonctionnalités majeures dans des services existants (support du moteur PostgreSQL dans RDS, Cross Region Read-replicas pour RDS, Global Secondary Indexes dans DynamoDB, Identity Federation avec SAML 2.0 et Redshift Snapshot Copy) et pour finir de nouveaux types d’instances EC2 (c3 dans la gamme super computing et i2 dans la gamme disques hautes performances).

Le summit a été également l’occasion d’assister à de nombreuses sessions proposées par les équipes AWS, par des clients ou bien par des partenaires présentant leurs solutions basées sur AWS. Il a également été possible d’échanger sur les stands du Central avec les éditeurs de solutions et intégrateurs gravitant autour de l’univers AWS.

Je me propose, dans cet article, de revenir sur les nouveautés dévoilées durant ce summit AWS re:Invent 2013. Je proposerai, dans un ou plusieurs articles ultérieurs, quelques bonnes pratiques et retours intéressants glanés durant les sessions et échanges au niveau des stands du Central : ces retours supplémentaires porteront sur des sujets bien précis comme Créer son NAS sur AWS : NFS, CIFS & GFS (GlusterFS), Optimisation de son cluster EMR (Elastic MapReduce)Accélérer la délivrance de son contenu via CloudFront et Route 53 ou bien encore Concept du monitoring à grande échelle avec S3 et EMR par Netflix.

[...]

Introduction à OpenStack (2.5/2) : utilisation via les APIs

Ceilometer

Voici le dernier article de la série dédiée à l’introduction à OpenStack ! Le premier article présentait les différents modules/projets composant OpenStack et le second article décrivait l’installation d’un environnement de développement/test OpenStack sur une VM unique via Devstack et l’utilisation des services via la console web Horizon. Il est à présent temps d’utiliser les services via ce qui fait d’un environnement virtualisé un vrai Cloud : les APIs. Toutes les fonctionnalités disponibles sur la plate-forme OpenStack sont accessibles via ces APIs : les interfaces graphiques web (comme Horizon) ou client lourd, les outils de type CLI (Command Line Interface) ou bien les librairies des différents langages utilisent ces APIs. C’est ce qui fait que le Cloud est Cloud : tout est pilotable par le code, que ce soit la création de machines virtuelles, le stockage de données, la création de réseaux, … Je vais donc vous présenter un exemple d’utilisation de ces APIs via un petit scénario dans lequel nous allons tout d’abord nous authentifier via Keystone et récupérer un token qui sera ensuite passé aux autres services, et en particulier au service d’object storage Swift pour charger un fichier dans un container et lister le contenu du container et au service Ceilometer pour récupérer les métriques d’utilisation de l’object storage et constater (ou pas ;ob) que le tout (informations Swift et informations Ceilometer) est cohérent. Nous allons donc débuter ce tutoriel, l’article 2.5 de l’introduction à OpenStack.

[...]

Introduction à OpenStack (2/2) : installation Devstack et utilisation via console web Horizon

Logo DevStack

Pour faire suite à l’article précédent présentant les différents modules composant OpenStack, voici comment installer et utiliser cette stack logicielle libre permettant de déployer un Cloud de type IaaS sur votre propre infrastructure. L’objectif est d’abord d’installer OpenStack intégralement sur une unique VM afin de pouvoir ensuite tester les services (via console web et APIs). Inutile de préciser que cette installation mono-VM n’a pour seul objectif que de servir à des fins de développement et de tests et ne peut en aucun cas servir pour de la production. J’utiliserai Vagrant et VirtualBox comme support d’installation et Devstack comme installeur d’OpenStack. Une fois la plate-forme prête, je vous expliquerai les quelques premières manipulations que vous pourrez effectuer via la console web d’administration. Je donnerai ensuite dans le prochain article (je pensais tout faire dans cet article, mais je me rends compte que le contenu risque d’être – trop – dense :o)) un certain nombre d’exemples d’utilisation des APIs des différents services qui vous permettent d’accéder aux mêmes fonctionnalités que la console web (et plus encore), mais avec du code ou des lignes de commandes. Les services que j’installe dans mon exemple sont les suivants : Nova, Glance, Cinder, Swift (avec un seul réplicat), Quantum, Keystone, Ceilometer et Horizon. Pour plus de détails sur chacun des modules précités, je vous invite à lire cet article : Introduction à OpenStack (1/2) : les modules.

[...]

Introduction à OpenStack (1/2) : les modules

Logo OpenStack

OpenStack est une stack logicielle libre développée en Python et permettant de déployer un Cloud de type IaaS sur votre propre infrastructure avec des fonctionnalités similaires aux offres bien connues du marché comme celle de Amazon pour n’en citer qu’une. OpenStack est constitué d’un ensemble de modules (ou projets) adressant des fonctionnalités complémentaires permettant de mettre en oeuvre un Cloud de type IaaS : Nova pour le compute (instances virtuelles), Glance pour la gestion des images d’OS à destination des instances virtuelles, Cinder pour le stockage sous forme de disques réseau attachés à une instance virtuelle (block storage), Swift pour le stockage orienté objets, Quantum (ou mutnauQ) pour la gestion de réseaux logiques, Keystone pour la gestion des identités afin de permettre l’authentification et l’accès aux autres services, Ceilometer pour la capture et l’agrégation de métriques du système (metering), Horizon pour l’utilisation/l’administration des autres modules via une console web et Oslo pour un ensemble de librairies proposant des fonctionnalités transverses aux différents modules. D’autres modules sont en cours d’intégration, comme Heat par exemple, pour ajouter des fonctionnalités à la solution. Nous allons maintenant rentrer un peu plus dans le détail de chacun de ces modules pour vous expliquer à quoi ils correspondent et à quels besoins ils répondent plus précisément. J’écrirai un second article par la suite pour vous donner les premiers éléments qui vous seront nécessaires afin que vous puissiez commencer à tester le produit avec une procédure d’installation et des exemples de code.

[...]

Tests de performances (partie 1/2) : préparation et analyse

Test de performances Certains acteurs dans le développement se demandent quelle approche employer avec les tests de performances. Pourtant, dans un cadre de gestion de projet en cycle en V ou en mode Agile, une campagne de tests de performances peut être considérée comme un projet classique, un projet qui dépend du projet d’implémentation. Nous comprenons alors que la première contrainte d’un projet de tests de performances est le calendrier prévisionnel. D’un côté, il faut prévoir à l’avance une plage afin de préparer les scénarios de tests et les machines associées, s’assurer qu’une équipe sera disponible pour effectuer le test et, de l’autre, il faudra attendre que le projet d’implémentation soit assez avancé afin d’avoir un ensemble cohérent à tester.
Nous verrons durant cet article la démarche à entreprendre pour déterminer le besoin des tests de performances ainsi que l’architecture et les scénarios appropriés, les types de performance, l’automatisation des lancements de tirs et enfin l’analyse des résultats.

[...]