devops@kelkoo - agile grenoble 2012

Post on 12-Jan-2015

1.202 Views

Category:

Technology

2 Downloads

Preview:

Click to see full reader

DESCRIPTION

Presentation de la solution de déploiement logiciel Kelkoo intégrant Puppet pour favoriser une approche devops. Version actualisée pour Agile Grenoble 2012

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

top related