C'est quoi un DevOps ?

@DambrineF

Florian Dambrine

Senior DevOps Engineer - @GumGum

La Tech Amiénoise

06 Novembre 2018

V2

$ WHOAMI

  • Florian Dambrine
  • Diplômé de l'Institut Universitaire de Technologie d'Amiens en 2011.
     
  • Diplômé de l'Université de Technologie de Compiègne en 2014.
     
  • Senior Ingénieur DevOps depuis 5 ans chez  GumGum (Startup Californienne).
     
  • Enseignant Master II - Cloud Computing & Mobility - INSSET

AGenda

  • GumGum

  • Nouveaux besoins​ - Nouveaux outils

    • L' automatisation des tâches
    • L'utilisation du Cloud
    • CI / CD Intégration continue et Déploiement continu
  • C'est quoi un DevOps ?​​

  • Ça fait quoi un DevOps ?

    • Rôle
    • Missions et compétences
  • DevOps, mais comment ?

  • Q/A

 > gumgum - Computer vision company

Invente le In-Image Advertising en 2007

Publicité  innovante et  solution de "visual intelligence" pour les agences et les sites marchands  

bash
pour
automatiser

  • Complexe
  • Difficile à maintenir
  • Manque de robustesse

infrastructure as code

Enable the reconstruction of the business from nothing but a source code repository, an application data backup, and bare metal resources

-- Jesse Robins

Racks de Serveurs 

  • Infrastructure plutôt statique.
     
  • S'assurer de la capacité nécessaire au bon fonctionnement des services.

Cloud computing

  • Flexibilité d'utilisation des ressources
     
  • Utilisation à la demande
     
  • Utilisation de services spécifiques au Cloud (AWS RDS)

PETs Vs Cattle

https://searchitoperations.techtarget.com

REleases plannifiÉes

  • Temps d'attente entre l'implémentation des fonctionnalités et sa mise en production
     
  • Difficultés à identifier la  cause d'un bug

Continuous Delivery

  • Production de logiciels par itérations courtes
     
  • Le code peut être mis en production à tout moment (en toute sécurité)
     
  • Feedback instantané

C'est quoi un DevOps ?

WARNING

Les explications que vous pouvez lire dans le suite de cette présentation où les définitions sur ce qu'est un DevOps sont purement basées sur des impressions personnelles et ne font en aucun cas d'eux des postulats.

> RÉponse 1

C'est un état d'esprit qui permet aux développeurs [DEV] et aux administrateurs systèmes [OPS] de travailler efficacement ensemble, dans l'optique de rendre leurs clients satisfaits et heureux.

> RÉponse 2

C'est l'utilisation d'outils permettant de:

 

  • Reduire le "Time to Market"
    • Déploiements fréquents (CI / CD / CDD)
       
  • Focus sur comment améliorer le business
    • Implémentation de nouvelles fonctionalités
       
  • Tout automatiser ! (Ansible, Terraform)
     
  • Supervision continue et mesure de performance des  applications (ELK / Prometheus)

Infrastructure
vue par les Devs

Équipe DevOps

> RÉsumÉ

Un nouvel état d'esprit



De nouveaux outils



Prêt à relever les challenges dans un monde qui bouge vite!

+

=

Ça fait quoi un DevOps ?

 > l'équipe devops - Par rapport aux autres équipes

Image Science

Web Team

Data Science

Big Data

8 Ingénieurs

5 Ingénieurs

19 Ingénieurs

4 Ingénieurs

11 Ingénieurs

DevOps

10.5 Ingénieurs pour 1 DevOps

 > l'équipe devops - par rapport à l'infrastucture

250 serveurs pour 1 DevOps

> missions Du devops (1/5)

  • Plateforme de centralisation de logs:
    • ~300 clients
    • ~40G de logs / jours
  • ches:
    • Calcul du budget et taille de l'infrastructure
    • Automatisation des technologies
    • Alertes par mail (script, elastalert)
  • Technologies: E.L.K, Redis, Ansible, AWS

> missions Du devops (2/5)

  • Ingestion de données en temps réel:
    • Extraire les données de 200 clients au plus vite (Fiabilité)
    • Limiter le nombre de fichiers produits (Aggrégation de données)
    • Comparaison de solutions pour la gestion de logs en temps réel
       
  • Technologie: Fluentd
Tue Apr 12 23:47:14 -0700 2016, {"id":"c3abd0fe-1f4f-41ce-99bc-2f1a00da4a56","t":1460530034053,"cl":"js","ua":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.110 Safari/537.36","ip":"72.0.177.26","cc":"US","rg":"OR","ct":"Redmond","pc":"97756","mc":821,"isp":"TDS Telecom","bf":"a7c33d2da9571a12da8c2f6b7fc9547a714166ab","vst":"cdbc2841-7592-4653-ae8f-5f5cd44ea8ca","lt":"Fri Apr 08 07:52:39 -0700 2016","sip":"10.11.153.143","awsr":"us-west-1"}, {"e":"other","et":"3","v":"1.1","t":"dbc517e1","ab":40621,"u":"http://cdn-s3.si.com/s3fs-public/styles/si_article_main/public/2015/11/29/2016-us-olympic-trials-schedule-track-and-field.jpg?itok=kZsubl3W","seq":"1","tr":"0.6","af":"false","pv":"c5cacfc9-5b94-4ff1-8e83-55984fc4794f","pu":"http://www.si.com/olympics/2016-us-olympic-trials-schedule-track-and-field-events","do":"*.si.com","zti":1,"vi":2,"pi":12366,"bu":1,"pcki":5945,"argi":1020,"pri":1,"uti":21,"adi":491,"ei":119,"agi":39,"spi":185,"di":122,"atmi":347,"ii":141,"cli":1,"aolid":290,"cid":2427,"cre":"true","pcc":["IAB17","IAB17-23","IAB17-38","IAB17"],"pevt":["GGE8-3","GGE3-5","GGE8-12","GGE18-1","GGE10-4","GGE8","GGE18","GGE10","GGE3"]}
  • Mise en place de 4  clusters Cassandra en multi-régions:
    • Benchmark & Stress tests (~300 serveurs démarrés et détruits sur 1 mois)
    • Automatisation (configuration des serveurs, firewall et maintenance automatisée)
    • Mise en place d'un cluster d'analyse pour le reporting
       
  • Technologies: Cassandra, Java, Ansible, Python, Spark

> missions Du devops (3/5)

ECS Cluster

 <feature-1>

 <feature-2>

 <dev>

 <stage>

 <master>

app.gumgum.com

stage.va.ggops.com

dev.va.ggops.com

feature-2.dev.va.ggops.com

feature-1.dev.va.ggops.com

commit > build > test > release > deploy







app/
├── ...
├── Dockerfile
└── .drone.yml
  • Mise en place de pipeline de release avec environements de dev éphémères:
    • Pipeline Drone avec exécution en conteneur
    • Déploiement de stacks dev en < 5min
  • Technologies: DroneDocker, Traefik

> missions Du devops (4/5)

  • Plateforme de centralisation de métriques systèmes (Datadog interne):
    • Mise d'un système de service discovery avec Hashicorp Consul (HA / Spotinst)
    • Mise en place de la stack Prometheus / Grafana sur Docker avec (HA / Spotinst)
    • Monitoring de VMs
      & Conteneurs

> missions Du devops (5/5)

 

Technologies:

Spotinst,  Docker, Traefik,  
Grafana, Prometheus,  Consul

 DevOps

Mais COMMENT ?

> The twelve-Factor app

L’application 12 facteurs est une méthodologie pour concevoir des logiciels en tant que service qui :

  • Utilisent des formats déclaratifs pour mettre en oeuvre l’automatisation
  • Offrent une portabilité maximum entre les environnements d’exécution
  • Sont adaptés à des déploiements sur des plateformes cloud modernes
  • Minimisent la divergence entre le développement et la production,
  • Peuvent grossir verticalement (nombre vs. taille)

> Simple pipeline Ci / CD

# .drone.yml
---
pipeline:

  build:
    image: node:alpine
    commands:
      - yarn

  test:
    image: node:alpine
    commands:
      - yarn test

  pre-release:
    image: node:alpine
    commands:
      - yarn build
      - tar -zcvf build.tar.gz -C build .
    when:
      event: tag

  release:
    image: plugins/github-release
    secrets: [ github_token ]
    files:
      - build.tar.gz
    when:
      event: tag

  notify:
    image: plugins/slack
    channel: drone
    secrets: [ slack_webhook ]
    when:
      status: [ success, failure ]
  • Feedback en continu sur l'état du code
     
  • Permet d'éviter les actions manuelles
     
  • Gain de temps sur la validation du code

> Unification dE l'environement de dev

Mario

Karim

Nicolas

---
# docker-compose.yml

version: '3'
services:
  web:
    depends_on:
     - db
    build: './Dockerfile'
    ports:
     - "5000:8001"

  db:
    image: postgres
    volumes:
      - ./mounts/db_data:/var/lib/postgresql/data
    environment:
      POSTGRES_USER: <PG_USER>
      POSTGRES_PASSWORD: <PG_PASSWORD>
      POSTGRES_DB: stockerize_prod

VMs

Docker

> Conclusion

Made with Slides.com