Post on 12-Jan-2015
description
transcript
DevOps@Kelkoo
Alain Delafosse / Nicolas Capponi / Octobre 2012
2Introduction
Présentation d’une intégrationd’outils dans le contexte Kelkoo
Zooms techniques
= +
@AlainDelafosse @ncapponi Vous ?
3Kelkoo « Shopping Engine »
220 personnes en Europe
dont 90 informaticiens à Grenoble
80M appels APIs / moisPic à 1600 req/S
10M UU / mois
20 000 Produits
300 Catégories par pays5000 revues
100M offres avec un turn-over quotidien de 15%
5000 marchands
13 Pays
4DevOps
Business Development OperationsOperationsAgile
Methodologies DevOps
Le mouvement devops casse le mur entre les dev et les ops
DéploiementChangement
Monitoring
Détection d’incident
Correction et analyse
Gestion de problème
Tests Release
Correction et analyse
Développement
5DevOps
PEOPLEFaciliter la communication entre les équipes
PROCESSIndustrialisation du
processus de développement OUTILS
Industrialisation déploiement et gestion Infrastructure
« devministration »
DEVOPSLes 3 piliers du mouvement
Accompagner le changement et gérer le risque en construisant une intense culture de collaboration et d'automatisation
6Contexte Kelkoo
1999 Création
2001 Split systè
mes
2004 Rachat par Y
ahoo
2008 Indépendance
10 serveurs10+ DB1 composant
400 serveurs70+ DB200 composants
TGZ + fichiers clefs valeurs
Solution YAHOO
Solution maison
7Conception du projet
BesoinsIdées
Outillage du dév. au déploiementBO de configuration
Gén.de composants installables
Multi -instanciation des composantsRéutiliser outils Open Source
Automatisation Déploiements standardisés
Commandes et interfaces simplesOutils Open Source
8Notre solution: étapes
CLONER CONFIGURER
DEVELOPPER
PACKAGER
CONFIGURER DEPLOYER
Infrastructure / OS Applications
9Zoom 1: Pourquoi Puppet
COMMUNAUTE ++ + +++OUTILLAGEEXTENSIONS ++ - +SIMPLICITE + - -
Gérer des serveurs
Fournit un langage pour décrire la configuration du serveur
Modifie le serveur pour atteindre l’état décrit
1
2
10CLONER / CONFIGURER
CLONER
CONFIGUR
ER
DEVELOPP
ER
PACKAGER
CONFIGUR
ER
DEPLOYER
Provisionning: industrialiser l’installation et la configuration initiale des serveurs
OS: kickstart ConfigRéseau
PartitionsConfig UsersRepos YUM
Drivers Linux
Gestion centralisée des configurations systèmes et modification par exécution de classes Puppet
UsersDNS
RéseauSNMP
Repos SSH
11DEVELOPPER / PACKAGER
CLONER
CONFIGUR
ER
DEVELOPP
ER
PACKAGER
CONFIGUR
ER
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 composantUtilisation des dépendances RPMs OS
12Zoom 2: Plugin Maven RPM
POM.XMLBinaires
RépertoiresScripts
Librairies
TemplatesValeurs par défaut
Manifest Puppet
RPM COMPOSANT
RPM DEPLOIEMENT
13CONFIGURER
CLONER
CONFIGURER
DEVELOPP
ER
PACKAGE
R
CONFIGURER
DEPLOYER
CONFIGURATION DES COMPOSANTS PAR SERVEUR
+
Un rôle regroupe et abstrait un déploiement de composants et la configuration associée
CONFIGURATION PAR ROLE
Serv1.comp1.clef1=AServ1.comp2.clef1=CServ2.comp1.clef1=AEtc…
Serv1.comp1.clef1=AServ1.comp2.clef1=CServ2.comp1.clef1=AEtc…
Role1.clef1=AServ1=Role1Serv2=Role1Etc…
Role1.clef1=AServ1=Role1Serv2=Role1Etc…
14Zoom 3: Geppetto*
Serveur 1Serveur 1 Serveur 3Serveur 3Serveur 2Serveur 2
BaseMonitoring
BaseMonitoring
WS platformTomcat
WS platformTomcat
Monitoringwebapp
Monitoringwebapp
nagiosTomcatIsAlive-2.1.0cle1=val1
tomcat-6.2cle2=val2
CategoriesCategories ReviewsReviewsreviews-1.2.0cle4=val4
categories-3.0.0cle3=val3
cpu-1.2.0cle5=val5
cle1=valAcle4=valBcle6=valC
*home made <Puppet Gepetto>
15DEPLOYER
Outil en ligne de commande PUNCHréalisant l’assemblage des
CLONER
CONFIGURER
DEVELOPP
ER
PACKAGE
R
CONFIGURER
DEPLOYER
APPLYAPPLY
RESTORERESTORE
LISTLIST
GETGET
RPM DEPLOIEMENT RPM COMPOSANT VALEURS DE CONFIG
Déployer et configureravec les données du BO
Récupérer les valeurs de config
Lister les composants déployésAppliquer une configuration
16Zoom 4: Punch
Récupération configuration du serveur
Installation RPM déploiement
Calcul des changements
Puppet : désinstaller RPM composants
Puppet : installerRPM composants
searchFeeder-2.1.0searchFeederInterval=100searchCleaner-1.5.2 searchCleanerMode=3
searchFeeder-2.1.0searchFeederInterval=100searchCleaner-1.5.2 searchCleanerMode=3
17Etapes
GEPPETTOPUNCHPUNCH
SERVER
11
11
22
33
4455
OPS
MVNMVN
JENKINS
24
3
5
SVNDEV
1
Processus: Déploiement chez Kelkoo
SCRUM
INFRA TEAM
DEVTEAM
DEVTEAM
OPS TEAM
DEVTEAM
DEVTEAM
DEVTEAM
Service Architect Service Architect
Développe, déploie, teste dans les
environnements QA,DEV parfois
PROD
Développe, déploie, teste dans les
environnements QA,DEV parfois
PROD
Développe plugins de monitoring,
déploie dans tous les environnements
Développe plugins de monitoring,
déploie dans tous les environnements
Déploient dans tous les environnementsDéploient dans tous les environnements
Clone et configure tous les serveurs
Clone et configure tous les serveurs
Comm
unauté PACK/CON
F(gestion collective de l’outillage)
19Résultat
Nombre de releases en production par semaine
Change management dashboard
20DevOps@Kelkoo
Faciliter la communication entre les équipes
Industrialisation du processus de développement
Industrialisation de l’infrastructure
Reproductible, scalable, maitriséMême processus quel que soit la
plateforme
Backlog et support communsPas de connaissance « tribale »
Inventaire, Visibilité
Bonne gestion des configurations et du déploiementAméliorations sur gestion de l’infrastructure et
l’orchestration
21Aller plus loin….
ServerProvisionning
ComponentDeployment & Configuration
OS Configuration
Cloud & VMProvisionning
Private Cloud
Infrastructure
Deployment & Configuration
Infrastructure
Deployment & Configuration
LoadBalancerFiler
NagiosChange Tool
OrchestrationOrchestration
Blue/greenContinous
deployment
22Vos Options
Gérer des images de déploiementImage OS (Usharesoft)
Prendre une solution du marchéDeployIT (Xebia labs)Nolio (Nolio)
Construire sa solutionUtilisation de paquets systèmesNombreux outils à disposition
S’adapter à une solution PAASGoogle App Engine, Cloudbees, Heroku
23
Zoom 5: Les outils pour construire sa solution
Configuration Management Orchestration
Command FW
CFEnginePuppet
Chef
FabricAnsible Capistrano
Control Tier
Salt
Glu
RunDeck
Func mCollective
24
MERCI……
@DEVOPS_BORAT
To make error is human. To propagate error to all
server in automatic way is #devops.
25Bonus
CHOIX• Utilisation des rôles sur une plateforme complexe• Approfondir évolution DevOps versus SCRUM chez Kelkoo
26Configuration puppet
class synonym_ws::synonym_ws_1_0_6 { $application_name = "synonymWS"
synonym_ws_1_0_6_type { "synonymWS" : template1 =>
template("synonym_ws/1.0.6/docBase/WEB-INF/classes/applicationContext.xml.erb") }
class instances { if $synonym_ws_instance_webapps {
synonym_ws::synonym_ws_1_0_6::instance_webapps{ $synonym_ws_instance_webapps: }}
if $synonym_ws_deinstall_instance_webapps {
synonym_ws::synonym_ws_1_0_6:disabled::instance_webapps{ $synonym_ws_deinstall_instance_webapps: }}
} include "instances"}
27Hosting models
28Synthèse
ETAPES-> CLONAGE OS CONFIG. DEV. PACKAGING APP CONFIG. DEPLOIEMENT
ARTEFACTS
OS KickstartsClasses puppet DNS, LDAP, etc
Classes Puppets DNS, LDAP, etc
Artefacts Maven
RPMsREPOS YUM
RPM de Déploiement RPMs
OUTILS CobblerPuppet
Puppet Kermit
MavenPlugin Maven maisonYUMJenkins
PuppetGepetto
PuppetPunch
ACTEURSINFRASADEVOPS
INFRASADEVOPS
DEVSA DEV
SADEVSAOPS
DEVSAOPS
SUPPORT COMMUNAUTE PACK/CONF
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 OPSL2/L3 SA
L1/L2 OPSL3 SCRUM
L1/L2 OPS+SAL3 SA+SCRUM
L1 OPSL2/L3 SA/SCRUM
L1/L2 OPSL3 SCRUM
L1 OPS/SCRUML2/L3 SCRUM
Changes SA OPS OPS / SA SA / OPS OPS OPS
Monitoring SA Producing plugins
SA/SCRUMProducing
plugins
OPS/SA/SCRUMProducing
plugins
SA/SCRUMProducing plugins
OPS/SCRUM
Problem mgt
Capacity mgt