Contenu connexe Similaire à GUSS - CRITEO Meetup Scale SQL for the Web (20) GUSS - CRITEO Meetup Scale SQL for the Web2. La communauté Data & BI Microsoft
Webcasts, Conférences, Afterworks
http://GUSS.pro
Meet-A-DBA
@GUSS_FRANCE
/GUSS
/GUSS.FR
#MeetADBA
3. Copyright © 2016 Criteo
Agenda
1. L’organisation de l’équipe DBA
2. La gestion de l’infrastructure
3. Notre implémentation de la réplication SQL
4. Le déploiement du code SQL en production (Intégration continue)
4. Copyright © 2016 Criteo
Organisation
Sébastien ROBLIN
Senior DBA
Klébert HODIN
Senior DBA/scrum
master
Gregory BOGE
DBA
Paulo ANTUNES
DBA
Nadir DJADI
DBA
L’équipe – PRM – Réplication – Déploiement
5. Copyright © 2016 Criteo
Organisation
Missions
• MCO
• Intégration continue
• Etudes et architecture
• Industrialisation
• Plateformes de développement et de pré-production
Environnement
• SQL Server 2014
• Always-On, Réplication transactionnelle
L’équipe – PRM – Réplication – Déploiement
6. Copyright © 2016 Criteo
Organisation
Kanban
MCO
Demandes
ponctuelles
Scrum
OKR
Projets
L’équipe – PRM – Réplication – Déploiement
7. Copyright © 2016 Criteo
En chiffres
800 bases de données
100 serveurs
6000 clients applicatifs
135K transactions utilisateurs moyennes
160-260K connexions permanentes
26 milliards batch requests / jour
1 mois de traffic du site StackOverFlow
https://twitter.com/Nick_Craver/status/585035281776177152
L’équipe – PRM – Réplication – Déploiement
8. Copyright © 2016 Criteo
Réplication
Publisher
Subscribers
Subscribers
Subscribers
Subscribers
Subscribers
• 750 abonnements
• 7 secondes de latence max.
L’équipe – PRM – Réplication – Déploiement
9. Copyright © 2016 Criteo
Platform Resource Manager
Etablit la liaison entre les ressources applicatives et les matériels
Principes
Stockage des caractéristiques serveurs/applications
Gère les métadonnées des applications
Facilite l’administration par lots
Ouvre la gestion de l’architecture au code
L’équipe – PRM – Réplication – Déploiement
10. Copyright © 2016 Criteo
Platform Resource Manager
L’équipe – PRM – Réplication – Déploiement
Serveurs
Ressources
(Applications…)
Metadata
(clefs/valeurs)
Plateforme
Site
B
Serveurs
Ressources
(Applications…)
Metadata
(clefs/valeurs)
Site
A
Intra site
Liens inter sites
Liens inter plateforme
Intra site
11. Copyright © 2016 Criteo
Platform Resource Manager
• Implémentation pour SQL server:
Liens serveurs/ressource (Database [XXX]):
• Définit un dictionnaire de connexions (15 min) pour les lectures/écritures
• Géo-localise une ressource de base de données (règles: plateformes, sites, serveurs)
Utilisation des métadonnées:
• Définit un mode de répartition de la charge
• Indique l’ensemble des paramètres de backup des dbs (fréquence, serveur de fichier, transfert
distant, durée de rétention...) par plateforme/site
• Stocke tous les paramètres environnementaux (smtp, ..)
L’équipe – PRM – Réplication – Déploiement
12. Copyright © 2016 Criteo
Platform Resource Manager
L’équipe – PRM – Réplication – Déploiement
13. Copyright © 2016 Criteo
Platform Resource Manager
L’équipe – PRM – Réplication – Déploiement
Exemple: Définition de la rétention des backups
14. Copyright © 2016 Criteo
Platform Resource Manager
L’équipe – PRM – Réplication – Déploiement
Implémentation: Code Sql
• Affectation d’un nouveau pool de serveurs (Chef) à un service de base de données pour supporter
une charge temporaire, ou continue.
• Maintenance d’une base de données ou d’un serveur (entrée/sortie commandée par script)
15. Copyright © 2016 Criteo
Platform Resource Manager
L’équipe – PRM – Réplication – Déploiement
Implémentation: API Http
• API: prod_getdatabaselastbackup : obtenir l’emplacement d’un backup pour un autre service (Finance)
distant
16. Copyright © 2016 Criteo
Platform Resource Manager
L’équipe – PRM – Réplication – Déploiement
Implémentation: PowerShell
• Module powershell pour tester le cycle de vie d’un serveur
17. Copyright © 2016 Criteo
Platform Resource Manager
L’équipe – PRM – Réplication – Déploiement
Implémentation: divers
• Environnement de pré-production et développement
18. Copyright © 2016 Criteo
• Disposer de bases de données en local sur chaque datacenter
• Scale-out des lectures
• Solution haute disponibilité au sein des datacenters
Pourquoi la réplication ?
L’équipe – PRM – Réplication – Déploiement
SubscribersPublisher
Datacenter
19. Copyright © 2016 Criteo
Notre implémentation de la réplication SQL
• Réplication transactionnelle unidirectionnelle
• Même schéma de base de données entre éditeur et abonnés
• Distributeurs dédiés
• Utilisation du mode « Pull »
• Utilisation conjointe à AlwaysOn (publisher, distributeur *, abonné)
L’équipe – PRM – Réplication – Déploiement
20. Copyright © 2016 Criteo
• 25 publications
• 2600 articles publiés (tables, vues, procédures stockées, fonctions)
• 1 To de données publiées
• 9 bases de distribution
• 750 souscriptions
En quelques chiffres …
L’équipe – PRM – Réplication – Déploiement
21. Copyright © 2016 Criteo
Opérations d’exploitation :
• Initialisation de la réplication par backup
• Développement d’un framework pour la gestion de la réplication.
• Utilisation du versionning pour sauvegarder la réplication
• Gestions des opérations via le PRM
Contraintes :
• Latence réseau
• Contention sur les bases de distributions
Plus dans le détail
L’équipe – PRM – Réplication – Déploiement
22. Copyright © 2016 Criteo
• Alertes par mail en cas d’erreur sur les agents de réplication
• Utilisation de Graphite pour la métrologie
• Utilisation de Centreon pour le monitoring
• Retard de la distribution
• Taille des base de données de distribution
• Documentation et outils de diagnostic
Monitoring de la réplication
L’équipe – PRM – Réplication – Déploiement
23. Copyright © 2016 Criteo
Intégration continue
Notre environnement
• 350 développeurs
• 5 DBA
• Tout le code SQL est validé par les DBA
• 16 073 modifications en 2015
• 2 releases SQL par semaine
L’équipe – PRM – Réplication – Déploiement
24. Copyright © 2016 Criteo
Intégration continue
L'intégration continue est un ensemble de pratiques utilisées en génie logiciel consistant à
vérifier à chaque modification de code source que le résultat des modifications ne produit
pas de régression dans l'application développée.
L’équipe – PRM – Réplication – Déploiement
25. Copyright © 2016 Criteo
Intégration continue – Comment ?
L’équipe – PRM – Réplication – Déploiement
GitVisual Studio Gerrit Jenkins Powershell
26. Copyright © 2016 Criteo
Intégration continue – Comment ?
L’équipe – PRM – Réplication – Déploiement
27. Copyright © 2016 Criteo
QA bot
• Build
• Déploiement
Steven SQL bot
Intégration continue – Comment ?
L’équipe – PRM – Réplication – Déploiement
28. Copyright © 2016 Criteo
Intégration continue – Comment ?
L’équipe – PRM – Réplication – Déploiement
29. Copyright © 2016 Criteo
Intégration continue – Comment ?
L’équipe – PRM – Réplication – Déploiement
Validation
MOAB
30. Copyright © 2016 Criteo
Intégration continue – Comment ?
L’équipe – PRM – Réplication – Déploiement
Sandbox
• Déploiements
• Tests
Pré-production
• Déploiement
Release
31. Copyright © 2016 Criteo
Intégration continue – Challenges
Connaissance des données
• NULL à NOT NULL
Gestion de la réplication
• Objets répliqués
• Les indexes
Gestion du changement
• Clean_db
L’équipe – PRM – Réplication – Déploiement
32. Copyright © 2016 Criteo
Intégration continue – Challenges
Attention au code existant
• Gérer les références de projets
• Déploiement sélectif
Build
• Warning ?
L’équipe – PRM – Réplication – Déploiement