Download - Dev ops@kelkoo
DevOps@Kelkoo
Alain Delafosse / Nicolas Capponi / Avril 2012
Introduction 2
Présentation d’une intégration d’outils dans le contexte Kelkoo
Zooms techniques
= +
Contrat de session @AlainDelafosse @ncapponi Vous ?
Kelkoo « Shopping Engine » 3
220 personnes en Europe
dont 90 informaticiens à Grenoble
80M appels APIs / mois Pic à 1600 req/S
10M UU / mois
20 000 Produits
300 Catégories par pays
5000 revues
100M offres
avec un turn-over quotidien de 15%
5000 marchands
13 Pays
DevOps 4
Business Development Operations Agile
Methodologies DevOps
Faciliter la communication entre les équipes
Industrialisation du processus de
développement Industrialisation
Infrastructure
DEVOPS Les 3 piliers du mouvement
Le mouvement devops casse le mur entre les dev et les ops
Contexte Kelkoo 5
10 serveurs 10+ DB 1 composant
400 serveurs 70+ DB 200 composants
TGZ + fichiers clefs valeurs
Solution YAHOO
Solution maison
Conception du projet
6
Besoins Idées
Outillage du dév. au déploiement BO de configuration
Gén.de composants installables
Multi -instanciation des composants Réutiliser outils Open Source
Automatisation Déploiements standardisés
Commandes et interfaces simples Outils Open Source
Notre solution: étapes
CLONER CONFIGURER DEVELOPPER PACKAGER CONFIGURER DEPLOYER
7
Infrastructure / OS Applications
Zoom 1: Puppet
COMMUNAUTE +++ + ++
OUTILLAGE EXTENSIONS ++ - ++
SIMPLICITE + - ++
8
CLONER / CONFIGURER 9
CLONER CONFIGURER DEVELOPPER PACKAGER CONFIGURER DEPLOYER
Provisionning: industrialiser l’installation et la configuration initiale des serveurs
OS: kickstart Config Réseau
Partitions Config Users Repos YUM
Drivers Linux
Gestion centralisée des configurations systèmes et modification par exécution de classes Puppet
Users DNS
Réseau SNMP
Repos SSH
SSH
DEVELOPPER / PACKAGER 10
CLONER CONFIGURER DEVELOPPER PACKAGER CONFIGURER DEPLOYER
COMPOSANT
DEPLOIEMENT
Types de Composants - Processing - Webapp - Schema DB - Plugin monitoring - Web services
Génération d’archetypes Génération de deux RPMs par composant Utilisation des dépendances RPMs
Zoom 2: Plugin Maven RPM 11
POM.XML
Binaires
Répertoires Scripts
Librairies
Templates
Valeurs par défaut
Manifest Puppet
RPM COMPOSANT
RPM DEPLOIEMENT
CONFIGURER 12
CLONER CONFIGURER DEVELOPPER PACKAGER CONFIGURER DEPLOYER
TEMPLATES, VALEURS ET COMPOSANTS
ROLES
+
Associer des clefs et des valeurs mais aussi des composants et des serveurs
Un rôle regroupe et abstrait un déploiement de composants et la configuration associée
Zoom 3: Geppetto 13
Serveur 1 Serveur 3 Serveur 2
Base Monitoring
WS platform Tomcat
Monitoring webapp
nagiosTomcatIsAlive-2.1.0 cle1=val1
tomcat-6.2 cle2=val2
Categories Reviews reviews-1.2.0 cle4=val4
categories-3.0.0 cle3=val3
cpu-1.2.0 cle5=val5
cle1=valA cle4=valB cle6=valC
DEPLOYER
Outil en ligne de commande PUNCH
réalisant l’assemblage des
14
CLONER CONFIGURER DEVELOPPER PACKAGER CONFIGURER DEPLOYER
APPLY
RESTORE
LIST
GET
RPM DEPLOIEMENT RPM COMPOSANT VALEURS DE CONFIG
Déployer et configurer avec les données du BO
Récupérer les valeurs de config
Lister les composants déployés
Appliquer une configuration
Zoom 4: Punch 15
Récupération configuration du serveur
Installation RPM déploiement
Calcul des changements
Puppet : désinstaller RPM composants
Puppet : installer RPM composants
searchFeeder-2.1.0 searchFeederInterval=100 searchCleaner-1.5.2 searchCleanerMode=3
Etapes 16
GEPPETTO PUNCH
SERVER
1
1
2
3
4
5
OPS
MVN
JENKINS
2 4
3
5
SVN DEV
1
Déploiement chez Kelkoo
SCRUM
INFRA TEAM
DEV TEAM
DEV TEAM
OPS TEAM
DEV TEAM
DEV TEAM
DEV TEAM
Développe, déploie, teste dans les
environnements QA,DEV parfois
PROD
Développe plugins de monitoring,
déploie dans tous les environnements
Déploient dans tous les environnements
Clone et configure tous les serveurs
Co
mm
un
auté
PAC
K/C
ON
F (ge
stion
colle
ctive de l’o
utillage)
Résultat
Subject: [vécu] Mise en prod accélérée
Date: Thu, 10 Nov 2011 09:24:34 +0100
From: Antoine ----
Pour info, nous avons décidé hier matin de renforcer notre capacité pour la génération des browseBox en ajoutant un serveur.
A la fin de la journée:
* Le serveur était dispo, cloné, DNS à jour, etc...
* Les applications déployées & running
* Le monitoring, alerting et dashboard en place
Soit moins de 10 heures entre la décision d'ajouter du hardware et sa réalisation
complète, cela sans bénéficier d'aucune escalade particulière.
18
0
2
4
6
8
10
12
14
16
18
20
Feature driven (Frontend)
Maintenance driven
Nombre de releases en production par semaine
DevOps@Kelkoo 19
Faciliter la communication entre les équipes Industrialisation du
processus de développement
Industrialisation de l’infrastructure
Vos Options
Gérer des images de déploiement Image OS (Usharesoft)
20
Prendre une solution du marché DeployIT (Xebia labs) Nolio (Nolio)
Construire sa solution Utilisation de paquets systèmes
S’adapter à une solution PAAS Google App Engine
Synthèse 21
ETAPES-> CLONAGE OS CONFIG. DEV. PACKAGING APP CONFIG. DEPLOIEMENT
ARTEFACTS
OS Kickstarts Classes puppet DNS, LDAP, etc
Classes Puppets DNS, LDAP, etc
Artefacts Maven
RPMs REPOS YUM
RPM de Déploiement
RPMs
OUTILS Cobbler Puppet
Puppet Kermit
Maven
Plugin Maven maison YUM Jenkins
Puppet Gepetto
Puppet Punch
ACTEURS
INFRA SA DEV OPS
INFRA SA DEV OPS
DEV SA
DEV SA
DEV SA OPS
DEV SA OPS
SUPPORT COMMUNAUTE PACK/CONF
MERCI……
22
Bonus
CHOIX
• Utilisation des rôles sur une plateforme complexe
• Approfondir évolution DevOps versus SCRUM chez Kelkoo
23
Différents modèles
Responsabilités
Embedded SA Embedded OPS
Embedded OPS + SA
Transversal SA Ops contact No integration
SCRUM SA part of the SCRUM
Ops part of the SCRUM
Both part of SCRUM
SA supporting SCRUM
Dedicated OPS contact
Release SA OPS Various Various Ops contact OPS
L1 / L2 /L3 support
L1 OPS L2/L3 SA
L1/L2 OPS L3 SCRUM
L1/L2 OPS+SA L3 SA+SCRUM
L1 OPS L2/L3 SA/SCRUM
L1/L2 OPS L3 SCRUM
L1 OPS/SCRUM L2/L3 SCRUM
Changes SA OPS OPS / SA SA / OPS OPS OPS
Monitoring SA Producing plugins
SA/SCRUM Producing
plugins
OPS/SA/SCRUM Producing
plugins
SA/SCRUM Producing plugins
OPS /SCRUM
Problem mgt
Capacity mgt
Datanav 26