dev ops@kelkoo

26
DevOps@Kelkoo Alain Delafosse / Nicolas Capponi / Avril 2012

Post on 22-Oct-2014

3.246 views

Category:

Technology


3 download

DESCRIPTION

Presentation de la solution de déploiement logiciel Kelkoo intégrant Puppet pour autoriser le travail en mode devops.

TRANSCRIPT

Page 1: Dev ops@kelkoo

DevOps@Kelkoo

Alain Delafosse / Nicolas Capponi / Avril 2012

Page 2: Dev ops@kelkoo

Introduction 2

Présentation d’une intégration d’outils dans le contexte Kelkoo

Zooms techniques

= +

Contrat de session @AlainDelafosse @ncapponi Vous ?

Page 3: Dev ops@kelkoo

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

Page 4: Dev ops@kelkoo

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

Page 5: Dev ops@kelkoo

Contexte Kelkoo 5

10 serveurs 10+ DB 1 composant

400 serveurs 70+ DB 200 composants

TGZ + fichiers clefs valeurs

Solution YAHOO

Solution maison

Page 6: Dev ops@kelkoo

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

Page 7: Dev ops@kelkoo

Notre solution: étapes

CLONER CONFIGURER DEVELOPPER PACKAGER CONFIGURER DEPLOYER

7

Infrastructure / OS Applications

Page 8: Dev ops@kelkoo

Zoom 1: Puppet

COMMUNAUTE +++ + ++

OUTILLAGE EXTENSIONS ++ - ++

SIMPLICITE + - ++

8

Page 9: Dev ops@kelkoo

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

Page 10: Dev ops@kelkoo

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

Page 11: Dev ops@kelkoo

Zoom 2: Plugin Maven RPM 11

POM.XML

Binaires

Répertoires Scripts

Librairies

Templates

Valeurs par défaut

Manifest Puppet

RPM COMPOSANT

RPM DEPLOIEMENT

Page 12: Dev ops@kelkoo

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

Page 13: Dev ops@kelkoo

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

Page 14: Dev ops@kelkoo

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

Page 15: Dev ops@kelkoo

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

Page 16: Dev ops@kelkoo

Etapes 16

GEPPETTO PUNCH

SERVER

1

1

2

3

4

5

OPS

MVN

JENKINS

2 4

3

5

SVN DEV

1

Page 17: Dev ops@kelkoo

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)

Page 18: Dev ops@kelkoo

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

Page 19: Dev ops@kelkoo

DevOps@Kelkoo 19

Faciliter la communication entre les équipes Industrialisation du

processus de développement

Industrialisation de l’infrastructure

Page 20: Dev ops@kelkoo

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

Page 21: Dev ops@kelkoo

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

Page 22: Dev ops@kelkoo

MERCI……

22

Page 23: Dev ops@kelkoo

Bonus

CHOIX

• Utilisation des rôles sur une plateforme complexe

• Approfondir évolution DevOps versus SCRUM chez Kelkoo

23

Page 24: Dev ops@kelkoo

Différents modèles

Page 25: Dev ops@kelkoo

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

Page 26: Dev ops@kelkoo

Datanav 26