au secours, mon chef m'a demandé de passer au devops
TRANSCRIPT
![Page 1: Au secours, mon chef m'a demandé de passer au DevOps](https://reader036.vdocuments.site/reader036/viewer/2022062310/58f2c84b1a28ab67258b4569/html5/thumbnails/1.jpg)
Au secours, mon chef m'a demandé de passer au
DevOps !
![Page 2: Au secours, mon chef m'a demandé de passer au DevOps](https://reader036.vdocuments.site/reader036/viewer/2022062310/58f2c84b1a28ab67258b4569/html5/thumbnails/2.jpg)
![Page 3: Au secours, mon chef m'a demandé de passer au DevOps](https://reader036.vdocuments.site/reader036/viewer/2022062310/58f2c84b1a28ab67258b4569/html5/thumbnails/3.jpg)
![Page 4: Au secours, mon chef m'a demandé de passer au DevOps](https://reader036.vdocuments.site/reader036/viewer/2022062310/58f2c84b1a28ab67258b4569/html5/thumbnails/4.jpg)
32% des projets sont réussis 84% des projets dépassent le délai 64% des fonctionnalités développées ne sont pas utilisées
Source : Chaos report 2009
Les projets cycles en V
![Page 5: Au secours, mon chef m'a demandé de passer au DevOps](https://reader036.vdocuments.site/reader036/viewer/2022062310/58f2c84b1a28ab67258b4569/html5/thumbnails/5.jpg)
Antony GUILLOTEAU@aguilloteau
![Page 6: Au secours, mon chef m'a demandé de passer au DevOps](https://reader036.vdocuments.site/reader036/viewer/2022062310/58f2c84b1a28ab67258b4569/html5/thumbnails/6.jpg)
![Page 7: Au secours, mon chef m'a demandé de passer au DevOps](https://reader036.vdocuments.site/reader036/viewer/2022062310/58f2c84b1a28ab67258b4569/html5/thumbnails/7.jpg)
![Page 8: Au secours, mon chef m'a demandé de passer au DevOps](https://reader036.vdocuments.site/reader036/viewer/2022062310/58f2c84b1a28ab67258b4569/html5/thumbnails/8.jpg)
Takeuchi et Nonaka(1982)
![Page 9: Au secours, mon chef m'a demandé de passer au DevOps](https://reader036.vdocuments.site/reader036/viewer/2022062310/58f2c84b1a28ab67258b4569/html5/thumbnails/9.jpg)
TODO
![Page 10: Au secours, mon chef m'a demandé de passer au DevOps](https://reader036.vdocuments.site/reader036/viewer/2022062310/58f2c84b1a28ab67258b4569/html5/thumbnails/10.jpg)
Design Code Test Deploy
Design Code Test DeployCode Test Code Test Code Test
Waterfall
Agile
![Page 11: Au secours, mon chef m'a demandé de passer au DevOps](https://reader036.vdocuments.site/reader036/viewer/2022062310/58f2c84b1a28ab67258b4569/html5/thumbnails/11.jpg)
![Page 12: Au secours, mon chef m'a demandé de passer au DevOps](https://reader036.vdocuments.site/reader036/viewer/2022062310/58f2c84b1a28ab67258b4569/html5/thumbnails/12.jpg)
DevOpsDesign
Design Code Test Deploy
Waterfall
Design Code Test DeployCode Test Code Test Code Test
Agile
![Page 13: Au secours, mon chef m'a demandé de passer au DevOps](https://reader036.vdocuments.site/reader036/viewer/2022062310/58f2c84b1a28ab67258b4569/html5/thumbnails/13.jpg)
Les 4 valeurs du Manifeste Agile(2001)
![Page 14: Au secours, mon chef m'a demandé de passer au DevOps](https://reader036.vdocuments.site/reader036/viewer/2022062310/58f2c84b1a28ab67258b4569/html5/thumbnails/14.jpg)
#1 Les individus et leurs interactions plus que les processus et les outils
![Page 15: Au secours, mon chef m'a demandé de passer au DevOps](https://reader036.vdocuments.site/reader036/viewer/2022062310/58f2c84b1a28ab67258b4569/html5/thumbnails/15.jpg)
#2 Des logiciels opérationnels plus qu’une documentation exhaustive
![Page 16: Au secours, mon chef m'a demandé de passer au DevOps](https://reader036.vdocuments.site/reader036/viewer/2022062310/58f2c84b1a28ab67258b4569/html5/thumbnails/16.jpg)
#3 La collaboration avec les clients plus que la négociation contractuelle
![Page 17: Au secours, mon chef m'a demandé de passer au DevOps](https://reader036.vdocuments.site/reader036/viewer/2022062310/58f2c84b1a28ab67258b4569/html5/thumbnails/17.jpg)
#4 L’adaptation au changement plus que le suivi d’un plan
![Page 18: Au secours, mon chef m'a demandé de passer au DevOps](https://reader036.vdocuments.site/reader036/viewer/2022062310/58f2c84b1a28ab67258b4569/html5/thumbnails/18.jpg)
Les objectifs du DevOps
#1 Améliorer la coopération entre Dev et Ops#2 Améliorer la livraison du produit#3 Fluidifier l’élaboration du produit
![Page 19: Au secours, mon chef m'a demandé de passer au DevOps](https://reader036.vdocuments.site/reader036/viewer/2022062310/58f2c84b1a28ab67258b4569/html5/thumbnails/19.jpg)
Livrer rapidement
![Page 20: Au secours, mon chef m'a demandé de passer au DevOps](https://reader036.vdocuments.site/reader036/viewer/2022062310/58f2c84b1a28ab67258b4569/html5/thumbnails/20.jpg)
![Page 21: Au secours, mon chef m'a demandé de passer au DevOps](https://reader036.vdocuments.site/reader036/viewer/2022062310/58f2c84b1a28ab67258b4569/html5/thumbnails/21.jpg)
Développer avec la cible
![Page 22: Au secours, mon chef m'a demandé de passer au DevOps](https://reader036.vdocuments.site/reader036/viewer/2022062310/58f2c84b1a28ab67258b4569/html5/thumbnails/22.jpg)
TODO
Monitorer pour prévenir
![Page 23: Au secours, mon chef m'a demandé de passer au DevOps](https://reader036.vdocuments.site/reader036/viewer/2022062310/58f2c84b1a28ab67258b4569/html5/thumbnails/23.jpg)
Un produit stable
![Page 24: Au secours, mon chef m'a demandé de passer au DevOps](https://reader036.vdocuments.site/reader036/viewer/2022062310/58f2c84b1a28ab67258b4569/html5/thumbnails/24.jpg)
Être résilient
![Page 25: Au secours, mon chef m'a demandé de passer au DevOps](https://reader036.vdocuments.site/reader036/viewer/2022062310/58f2c84b1a28ab67258b4569/html5/thumbnails/25.jpg)
29% des entreprises ont adopté une démarche DevOps17% sont en phase de réflexion ou d’expérimentation19% utilisent la démarche DevOps pour toutes leurs applications
Le DevOps en France
Etude IDC – Octobre 2016
![Page 26: Au secours, mon chef m'a demandé de passer au DevOps](https://reader036.vdocuments.site/reader036/viewer/2022062310/58f2c84b1a28ab67258b4569/html5/thumbnails/26.jpg)
https://www.linkedin.com/pulse/dynamics-devops-adoption-dr-pallab-saha
Plan Code Build Test Release Deploy Operate
Agile Development
Continuous Integration
Continuous Delivery
Continuous Operations
Continous Deployment
![Page 27: Au secours, mon chef m'a demandé de passer au DevOps](https://reader036.vdocuments.site/reader036/viewer/2022062310/58f2c84b1a28ab67258b4569/html5/thumbnails/27.jpg)
Agile Development
Continuous Integration
Continuous Delivery
Continuous Deployment
Continuous Operations
DevOps
![Page 28: Au secours, mon chef m'a demandé de passer au DevOps](https://reader036.vdocuments.site/reader036/viewer/2022062310/58f2c84b1a28ab67258b4569/html5/thumbnails/28.jpg)
PORTAIL
VENTE
Partenaire
Partenaire
Partenaire
ClientClient
Client
![Page 29: Au secours, mon chef m'a demandé de passer au DevOps](https://reader036.vdocuments.site/reader036/viewer/2022062310/58f2c84b1a28ab67258b4569/html5/thumbnails/29.jpg)
3 équipes SCRUM
Usine logicielle d’entreprise
Livraison tous les 2 sprints
![Page 30: Au secours, mon chef m'a demandé de passer au DevOps](https://reader036.vdocuments.site/reader036/viewer/2022062310/58f2c84b1a28ab67258b4569/html5/thumbnails/30.jpg)
50 Millions de commandes en base
15 Millions de requêtes / jour
![Page 31: Au secours, mon chef m'a demandé de passer au DevOps](https://reader036.vdocuments.site/reader036/viewer/2022062310/58f2c84b1a28ab67258b4569/html5/thumbnails/31.jpg)
Des croyances• Les équipes sont pluridisciplinaires• D’entreprise : Tendre vers le DevOps, les
équipes sont autonomes dans la mise en œuvre
• Personnelles : team member multi-compétents
![Page 32: Au secours, mon chef m'a demandé de passer au DevOps](https://reader036.vdocuments.site/reader036/viewer/2022062310/58f2c84b1a28ab67258b4569/html5/thumbnails/32.jpg)
Agile Development
Continuous Integration
Continuous Delivery
Continuous Deployment
Continuous Operations
DevOps
![Page 33: Au secours, mon chef m'a demandé de passer au DevOps](https://reader036.vdocuments.site/reader036/viewer/2022062310/58f2c84b1a28ab67258b4569/html5/thumbnails/33.jpg)
Automatisation des tests fonctionnels
Plan Code Build Test Release Deploy Operate
![Page 34: Au secours, mon chef m'a demandé de passer au DevOps](https://reader036.vdocuments.site/reader036/viewer/2022062310/58f2c84b1a28ab67258b4569/html5/thumbnails/34.jpg)
Exemple de code cucumber
Scénario: LT103-03-01-Recherche de solution multi-GO avec la date de départ sans tarif à condition d'aller-retour Soit une recherche de solutions train aller-retour sur un trajet multi GO Quand j'appelle le service de recherche de solutions tarifaires pour l'aller Alors des solutions sont remontées Et des solutions régionales "Pays de Loire" sont présentes
Alors(~'^des solutions (nationales|régionales) (?:"([^"]*)" ?|) sont présentes$'){ String go, String region ->
if (region == null) { assert false, "Il faut indiquer une région" }
// Récupération de l'OD à partir de son nom fonctionnel GOsData gOsData = GOsData.getGOsData(go) searchSolutionsAssertor.assertProposalsContainGo(gOsData.connector)}
![Page 35: Au secours, mon chef m'a demandé de passer au DevOps](https://reader036.vdocuments.site/reader036/viewer/2022062310/58f2c84b1a28ab67258b4569/html5/thumbnails/35.jpg)
Zucchini pour suivre les exécutions des scénarios Cucumber
![Page 36: Au secours, mon chef m'a demandé de passer au DevOps](https://reader036.vdocuments.site/reader036/viewer/2022062310/58f2c84b1a28ab67258b4569/html5/thumbnails/36.jpg)
Automatisation des tests de performance
Plan Code Build Test Release Deploy Operate
![Page 37: Au secours, mon chef m'a demandé de passer au DevOps](https://reader036.vdocuments.site/reader036/viewer/2022062310/58f2c84b1a28ab67258b4569/html5/thumbnails/37.jpg)
Exemple de scénario Gatling
Object SearchScenario {
private val category = csv("category.csv").random private val keyword = csv("keyword.csv").random
val scn : ScenarioBuilder = scenario("Search") .exec().feed(keyword).randomSwitch( 80d -> exec(http("Search by keyword").get("/search?q=${keyword}").check(status.is(200))), 20d -> exec(http("Search by category").get("/search?q=${category}").check(status.is(200))) )}
class GatlingSimulation extends Simulation { val httpConf = http.baseURL("http://localhost:8080/").userAgentHeader("Gatling").disableCaching setUp( SearchScenario.scn.inject(rampUsersPerSec(1) to(20) during(5 minutes)) ).protocols(httpConf)}
![Page 38: Au secours, mon chef m'a demandé de passer au DevOps](https://reader036.vdocuments.site/reader036/viewer/2022062310/58f2c84b1a28ab67258b4569/html5/thumbnails/38.jpg)
Agile Development
Continuous Integration
Continuous Delivery
Continuous Deployment
Continuous Operations
DevOps
![Page 39: Au secours, mon chef m'a demandé de passer au DevOps](https://reader036.vdocuments.site/reader036/viewer/2022062310/58f2c84b1a28ab67258b4569/html5/thumbnails/39.jpg)
Architecture multi-composant
ComposantComposant Composant
Plan Code Build Test Release Deploy Operate
![Page 40: Au secours, mon chef m'a demandé de passer au DevOps](https://reader036.vdocuments.site/reader036/viewer/2022062310/58f2c84b1a28ab67258b4569/html5/thumbnails/40.jpg)
![Page 41: Au secours, mon chef m'a demandé de passer au DevOps](https://reader036.vdocuments.site/reader036/viewer/2022062310/58f2c84b1a28ab67258b4569/html5/thumbnails/41.jpg)
Extrait code orchestrateur de releasepublic void createReleaseBranch(Delivery delivery, Execution execution) throws Exception { for (DeliveredComponent component : delivery.getComponents()) { FullGitRepo gitRepo = new FullGitRepo(configuration.getWorkspace(), component.getComponent());
execution.executeOnce(component.getComponent().getName(), "create release branch", () -> { gitRepo.createBranch(computeReleaseBranchName(delivery.getReleaseVersion()), delivery.getBranch()); if (!delivery.isDryRun()) { gitRepo.push(); } });
execution.executeOnce(component.getComponent().getName(), "update pom for next snapshot", () -> { gitRepo.switchToBranch(delivery.getBranch()); gitRepo.hardReset(); File pomFile = gitRepo.findFile("pom.xml"); Properties mavenProps = new Properties(); mavenProps.setProperty("developmentVersion", delivery.getNextSnapshotVersion().toString()); dependenciesService.updateDependenciesInPom(delivery, component, pomFile, delivery.getNextSnapshotVersion()); gitRepo.add("."); gitRepo.commit("[ReleaseTool] update module and dependencies versions in pom.xml to " + delivery.getNextSnapshotVersion()); if (!delivery.isDryRun()) { gitRepo.push(); } }); }}
![Page 42: Au secours, mon chef m'a demandé de passer au DevOps](https://reader036.vdocuments.site/reader036/viewer/2022062310/58f2c84b1a28ab67258b4569/html5/thumbnails/42.jpg)
Agile Development
Continuous Integration
Continuous Delivery
Continuous Deployment
Continuous Operations
DevOps
![Page 43: Au secours, mon chef m'a demandé de passer au DevOps](https://reader036.vdocuments.site/reader036/viewer/2022062310/58f2c84b1a28ab67258b4569/html5/thumbnails/43.jpg)
Suivi des mises en production
Plan Code Build Test Release Deploy Operate
![Page 44: Au secours, mon chef m'a demandé de passer au DevOps](https://reader036.vdocuments.site/reader036/viewer/2022062310/58f2c84b1a28ab67258b4569/html5/thumbnails/44.jpg)
![Page 45: Au secours, mon chef m'a demandé de passer au DevOps](https://reader036.vdocuments.site/reader036/viewer/2022062310/58f2c84b1a28ab67258b4569/html5/thumbnails/45.jpg)
Agile Development
Continuous Integration
Continuous Delivery
Continuous Deployment
Continuous Operations
DevOps
![Page 46: Au secours, mon chef m'a demandé de passer au DevOps](https://reader036.vdocuments.site/reader036/viewer/2022062310/58f2c84b1a28ab67258b4569/html5/thumbnails/46.jpg)
![Page 47: Au secours, mon chef m'a demandé de passer au DevOps](https://reader036.vdocuments.site/reader036/viewer/2022062310/58f2c84b1a28ab67258b4569/html5/thumbnails/47.jpg)
Supervision et centralisation des logs
Plan Code Build Test Release Deploy Operate
![Page 48: Au secours, mon chef m'a demandé de passer au DevOps](https://reader036.vdocuments.site/reader036/viewer/2022062310/58f2c84b1a28ab67258b4569/html5/thumbnails/48.jpg)
![Page 49: Au secours, mon chef m'a demandé de passer au DevOps](https://reader036.vdocuments.site/reader036/viewer/2022062310/58f2c84b1a28ab67258b4569/html5/thumbnails/49.jpg)
Exemple de requête Sparkval ref_rdd = sc.textFile("/user/logflmp1/2017-02-01/*/log_haproxy*.log")
case class HaProxyLine(frontend: String, backend: String, instance : String, timestamp8601: String, errorCode: String, elapsedTimeMs: String)
val haProxyLines = ref_rdd.map(s => s.split(" ")).map( s => HaProxyLine( s(3).substring(3).replace("~", ""), s(4).substring(0, s(4).lastIndexOf("/")), s(4).substring(s(4).lastIndexOf("/") + 1), s(2), s(6), s(7)) ).toDF().registerTempTable("haproxylines")
val columnsGlobalStats = s"frontEnd, backEnd, instance, splitToGroup(timestamp8601), splitToTZ(timestamp8601)"
val columnsErrors = s"$columnsGlobalStats, errorCode"
val dataFrame = sqlContext.sql( "select frontEnd, backEnd, instance, splitToGroup(timestamp8601), splitToTZ(timestamp8601),
count(*), avg(elapsedTimeMs) " + "from haproxylines group by $columnsGlobalStats") val dataFrameError = sqlContext.sql( "select $columnsErrors, count(*), avg(elapsedTimeMs) " + "from haproxylines where errorCode >= 400 group by $columnsErrors")
val rdd = dataFrame.rdd
![Page 50: Au secours, mon chef m'a demandé de passer au DevOps](https://reader036.vdocuments.site/reader036/viewer/2022062310/58f2c84b1a28ab67258b4569/html5/thumbnails/50.jpg)
Plan Code Build Test Release Deploy Operate
![Page 51: Au secours, mon chef m'a demandé de passer au DevOps](https://reader036.vdocuments.site/reader036/viewer/2022062310/58f2c84b1a28ab67258b4569/html5/thumbnails/51.jpg)
![Page 52: Au secours, mon chef m'a demandé de passer au DevOps](https://reader036.vdocuments.site/reader036/viewer/2022062310/58f2c84b1a28ab67258b4569/html5/thumbnails/52.jpg)
Aujourd’huiUne prise de recul
![Page 53: Au secours, mon chef m'a demandé de passer au DevOps](https://reader036.vdocuments.site/reader036/viewer/2022062310/58f2c84b1a28ab67258b4569/html5/thumbnails/53.jpg)
Taux de dispo de 99,5 %
5 bugs bloquants découverts en production
Livraison tous les 2 sprints
![Page 54: Au secours, mon chef m'a demandé de passer au DevOps](https://reader036.vdocuments.site/reader036/viewer/2022062310/58f2c84b1a28ab67258b4569/html5/thumbnails/54.jpg)
Les activités d’un développeur c’est
![Page 55: Au secours, mon chef m'a demandé de passer au DevOps](https://reader036.vdocuments.site/reader036/viewer/2022062310/58f2c84b1a28ab67258b4569/html5/thumbnails/55.jpg)
Agile Development
Continuous Integration
Continuous Delivery
Continuous Deployment
Continuous Operations
DevOps
![Page 56: Au secours, mon chef m'a demandé de passer au DevOps](https://reader036.vdocuments.site/reader036/viewer/2022062310/58f2c84b1a28ab67258b4569/html5/thumbnails/56.jpg)
DevOps
Agile Development
Continuous Integration
Continuous Delivery
Continuous Deployment
Continuous Operations
![Page 57: Au secours, mon chef m'a demandé de passer au DevOps](https://reader036.vdocuments.site/reader036/viewer/2022062310/58f2c84b1a28ab67258b4569/html5/thumbnails/57.jpg)
![Page 58: Au secours, mon chef m'a demandé de passer au DevOps](https://reader036.vdocuments.site/reader036/viewer/2022062310/58f2c84b1a28ab67258b4569/html5/thumbnails/58.jpg)
Le DevOps c’est du dév …Et avant tout une philosophie
![Page 59: Au secours, mon chef m'a demandé de passer au DevOps](https://reader036.vdocuments.site/reader036/viewer/2022062310/58f2c84b1a28ab67258b4569/html5/thumbnails/59.jpg)
https://goo.gl/forms/YCZbdwMNStBqGgZq2
Merci pour votre feedback