Microbox : Ma toolbox microservices - Julien Roy

79
Julien Roy Architecte Java @ @vanr0y ekino. 1

Transcript of Microbox : Ma toolbox microservices - Julien Roy

Page 1: Microbox : Ma toolbox microservices - Julien Roy

Microbox

Ma toolbox microservices

Julien Roy

Architecte Java @

@vanr0y

ekino.

1

Page 2: Microbox : Ma toolbox microservices - Julien Roy

AgendaSourcesBuildDéploiementExploitation

2

Page 3: Microbox : Ma toolbox microservices - Julien Roy

Bootstrap

3

Page 4: Microbox : Ma toolbox microservices - Julien Roy

BesoinsPréparation espace de travailManipulation dépôts multiple GITScripting tâches récurrentes

Bootstrap

4

Page 5: Microbox : Ma toolbox microservices - Julien Roy

Notre outilScripts bash

Bootstrap

5 . 1

Page 6: Microbox : Ma toolbox microservices - Julien Roy

Bootstrap

5 . 2

Page 7: Microbox : Ma toolbox microservices - Julien Roy

AlternativesGWS : Gestion dépôts GITNetflix HubCommander ( bot Slack )Home made script ( Groovy, GO, ... )

Bootstrap

6

Page 8: Microbox : Ma toolbox microservices - Julien Roy

Scaffolding

7

Page 9: Microbox : Ma toolbox microservices - Julien Roy

BesoinsRapiditéUniformisationRespect des bonnes pratiques

Scaffolding

8

Page 10: Microbox : Ma toolbox microservices - Julien Roy

Notre outilSpring Initializr

Scaffolding

9 . 1

Page 11: Microbox : Ma toolbox microservices - Julien Roy

Scaffolding

9 . 2

Page 12: Microbox : Ma toolbox microservices - Julien Roy

AlternativesMaven archetypeJHipsterLazybones, Yeoman

Scaffolding

10

Page 13: Microbox : Ma toolbox microservices - Julien Roy

Build

11

Page 14: Microbox : Ma toolbox microservices - Julien Roy

BesoinsSimplificationUniformisationMaintenance

Build

12

Page 15: Microbox : Ma toolbox microservices - Julien Roy

Notre outilPlugins gradle

Build

13 . 1

Page 16: Microbox : Ma toolbox microservices - Julien Roy

build.gradle

Build

plugins { id 'com.ekino.common.base' version '1.0.0' id 'com.ekino.common.java' version '1.0.0' id 'com.ekino.common.repository' version '1.0.0' id 'com.ekino.common.quality' version '1.0.0' id 'com.ekino.common.docker' version '1.0.0' id 'com.ekino.common.deploy' version '1.0.0' id 'org.springframework.boot' version '1.5.7.RELEASE' }

dependencies {

compile group: 'org.springframework.boot', name: 'spring-boot-start compile group: 'org.springframework.boot', name: 'spring-boot-start compile group: 'org.springframework.boot', name: 'spring-boot-start

}

13 . 2

Page 17: Microbox : Ma toolbox microservices - Julien Roy

AlternativesNetflix NebulaDropwizardLagom

Build

14

Page 18: Microbox : Ma toolbox microservices - Julien Roy

Source code browser

15

Page 19: Microbox : Ma toolbox microservices - Julien Roy

BesoinsRecherche globaleExploration ( sans cloner )

Source code browser

16

Page 20: Microbox : Ma toolbox microservices - Julien Roy

Notre outilHound ( Etsy )

Source code browser

17 . 1

Page 21: Microbox : Ma toolbox microservices - Julien Roy

Source code browser

17 . 2

Page 22: Microbox : Ma toolbox microservices - Julien Roy

AlternativesOpengrokUpsource ( Jetbrains )insight.io

Source code browser

18

Page 23: Microbox : Ma toolbox microservices - Julien Roy

Version

19

Page 24: Microbox : Ma toolbox microservices - Julien Roy

BesoinsVue projetVersions disponible ( maven central )

Version

20

Page 25: Microbox : Ma toolbox microservices - Julien Roy

Notre outilApplication Scala ( Play )

Version

21 . 1

Page 26: Microbox : Ma toolbox microservices - Julien Roy

Dashboard

Version

21 . 2

Page 27: Microbox : Ma toolbox microservices - Julien Roy

Vue détailléeVersion

21 . 3

Page 28: Microbox : Ma toolbox microservices - Julien Roy

Vue dépendance

Version

21 . 4

Page 29: Microbox : Ma toolbox microservices - Julien Roy

AlternativesMaven versions pluginGradle versions plugin

Version

22

Page 30: Microbox : Ma toolbox microservices - Julien Roy

Intégration continue

23

Page 31: Microbox : Ma toolbox microservices - Julien Roy

BesoinsIntégration GitLabConfiguration automatiqueVue pipelineSupport Docker

Intégration continue

24

Page 32: Microbox : Ma toolbox microservices - Julien Roy

Notre outilGitLab CI

Intégration continue

25 . 1

Page 33: Microbox : Ma toolbox microservices - Julien Roy

Build

Intégration continue

25 . 2

Page 34: Microbox : Ma toolbox microservices - Julien Roy

Pipelines

Intégration continue

25 . 3

Page 35: Microbox : Ma toolbox microservices - Julien Roy

Pipeline

Intégration continue

25 . 4

Page 36: Microbox : Ma toolbox microservices - Julien Roy

AlternativesJenkins PipelineTeamCityBambooTravis CI, Codeship, CircleCI, Concourse, ...

Intégration continue

26

Page 37: Microbox : Ma toolbox microservices - Julien Roy

Déploiement

27

Page 38: Microbox : Ma toolbox microservices - Julien Roy

BesoinsMulti stack ( ECS, Lambda, Batch )Multi environnementsProfiles non techniquePeu de dépendances (GitLab, Jenkins, ...)

Déploiement

28 . 1

Page 39: Microbox : Ma toolbox microservices - Julien Roy

Notre outilApplication Java ( Spring Boot )

Déploiement

29 . 1

Page 40: Microbox : Ma toolbox microservices - Julien Roy

Dashboard

Déploiement

29 . 2

Page 41: Microbox : Ma toolbox microservices - Julien Roy

Déploiement unitaire

Déploiement

29 . 3

Page 42: Microbox : Ma toolbox microservices - Julien Roy

Déploiement complet

Déploiement

29 . 4

Page 43: Microbox : Ma toolbox microservices - Julien Roy

AlternativesSpinnakerGOCDJenkins PipelineGitLab CI

Déploiement

30

Page 44: Microbox : Ma toolbox microservices - Julien Roy

Java Dashboard

31

Page 45: Microbox : Ma toolbox microservices - Julien Roy

BesoinsInfos JVM ( stacktrace, thread dump, ... )Manipulation configurationsManipulation niveaux de logsMonitoring coupes-circuits

Java Dashboard

32 . 1

Page 46: Microbox : Ma toolbox microservices - Julien Roy

Notre outilSpring Boot Admin

Java Dashboard

33 . 1

Page 47: Microbox : Ma toolbox microservices - Julien Roy

Dashboard

Java Dashboard

33 . 2

Page 48: Microbox : Ma toolbox microservices - Julien Roy

DétailsJava Dashboard

33 . 3

Page 49: Microbox : Ma toolbox microservices - Julien Roy

Logs

Java Dashboard

33 . 4

Page 50: Microbox : Ma toolbox microservices - Julien Roy

HystrixJava Dashboard

33 . 5

Page 51: Microbox : Ma toolbox microservices - Julien Roy

Alternativeshawtio (http://hawt.io/)Java Mission ControlCRaSH ( remote shell )

Java Dashboard

34

Page 52: Microbox : Ma toolbox microservices - Julien Roy

Datastore management

35

Page 53: Microbox : Ma toolbox microservices - Julien Roy

BesoinsVisualisation des donnéesManipulation d'urgence / debug

Datastore management

36 . 1

Page 54: Microbox : Ma toolbox microservices - Julien Roy

Nos outilsPostgresql : PgAdmin serverElasticsearch : Kibana

Datastore management

37 . 1

Page 55: Microbox : Ma toolbox microservices - Julien Roy

PgAdmin 4 serverDatastore management

37 . 2

Page 56: Microbox : Ma toolbox microservices - Julien Roy

Kibana

Datastore management

37 . 3

Page 57: Microbox : Ma toolbox microservices - Julien Roy

AlternativesDB : PostgreSQLStudio, Teampostgresql, Adminer,PhpMyAdminElasticsearch : ElasticHQRedis : Readis, Redmon, Redsmin

Datastore management

38

Page 58: Microbox : Ma toolbox microservices - Julien Roy

Gestion des logs

39

Page 59: Microbox : Ma toolbox microservices - Julien Roy

BesoinsCentralisationRecherche avancéeDashboardIntégration Docker

Gestion des logs

40 . 1

Page 60: Microbox : Ma toolbox microservices - Julien Roy

Nos outilsElasticsearchKibanaAWS CloudWatch Docker logging driverAWS Lambda ( Stream logs CloudWatch ->Elasticsearch )

Gestion des logs

41 . 1

Page 61: Microbox : Ma toolbox microservices - Julien Roy

Kibana

Gestion des logs

41 . 2

Page 62: Microbox : Ma toolbox microservices - Julien Roy

AlternativesELK ( logstash )GraylogSaaS : Loggly, Logz, Sumo Logic, Splunk, PaperTrails

Gestion des logs

42

Page 63: Microbox : Ma toolbox microservices - Julien Roy

Metrics / APM

43

Page 64: Microbox : Ma toolbox microservices - Julien Roy

BesoinsCentralisationDiagnostiquesTendancesAlerting

Metrics / APM

44 . 1

Page 65: Microbox : Ma toolbox microservices - Julien Roy

Nos outilsCloudwatch + Spring Cloud AWSNewrelic

Metrics / APM

45 . 1

Page 66: Microbox : Ma toolbox microservices - Julien Roy

Cloudwatch JVM

Metrics / APM

45 . 2

Page 67: Microbox : Ma toolbox microservices - Julien Roy

Newrelic Applications

Metrics / APM

45 . 3

Page 68: Microbox : Ma toolbox microservices - Julien Roy

Newrelic application dashboard

Metrics / APM

45 . 4

Page 69: Microbox : Ma toolbox microservices - Julien Roy

Newrelic JVM dashboard

Metrics / APM

45 . 5

Page 70: Microbox : Ma toolbox microservices - Julien Roy

AlternativesHawkularPinpointPrometheusSaaS : Appdynamics, Dynatrace, Datadog

Metrics

46

Page 71: Microbox : Ma toolbox microservices - Julien Roy

Tracing

47

Page 72: Microbox : Ma toolbox microservices - Julien Roy

BesoinsInvestiguer sur les problèmes de latenceCartographier les dépendances

Tracing

48 . 1

Page 73: Microbox : Ma toolbox microservices - Julien Roy

Nos outilsJaeger ( UBER )Spring Cloud Sleuth

Tracing

49 . 1

Page 74: Microbox : Ma toolbox microservices - Julien Roy

Jaeger traces

Tracing

49 . 2

Page 75: Microbox : Ma toolbox microservices - Julien Roy

Jaeger détail d'une trace

Tracing

49 . 3

Page 76: Microbox : Ma toolbox microservices - Julien Roy

Jaeger dépendances

Tracing

49 . 4

Page 77: Microbox : Ma toolbox microservices - Julien Roy

AlternativesZipkin ( Twitter )AWS X-RayLes APM ...

Tracing

50

Page 78: Microbox : Ma toolbox microservices - Julien Roy

ConclusionOutillage indispensableCoût non négligeable ( temps, budget )Prise en compte au démarrage projet

51

Page 79: Microbox : Ma toolbox microservices - Julien Roy

Questions ?

52