Microbox : Ma toolbox microservices - Julien Roy

Post on 21-Jan-2018

306 views 5 download

Transcript of Microbox : Ma toolbox microservices - Julien Roy

Microbox

Ma toolbox microservices

Julien Roy

Architecte Java @

@vanr0y

ekino.

1

AgendaSourcesBuildDéploiementExploitation

2

Bootstrap

3

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

Bootstrap

4

Notre outilScripts bash

Bootstrap

5 . 1

Bootstrap

5 . 2

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

Bootstrap

6

Scaffolding

7

BesoinsRapiditéUniformisationRespect des bonnes pratiques

Scaffolding

8

Notre outilSpring Initializr

Scaffolding

9 . 1

Scaffolding

9 . 2

AlternativesMaven archetypeJHipsterLazybones, Yeoman

Scaffolding

10

Build

11

BesoinsSimplificationUniformisationMaintenance

Build

12

Notre outilPlugins gradle

Build

13 . 1

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

AlternativesNetflix NebulaDropwizardLagom

Build

14

Source code browser

15

BesoinsRecherche globaleExploration ( sans cloner )

Source code browser

16

Notre outilHound ( Etsy )

Source code browser

17 . 1

Source code browser

17 . 2

AlternativesOpengrokUpsource ( Jetbrains )insight.io

Source code browser

18

Version

19

BesoinsVue projetVersions disponible ( maven central )

Version

20

Notre outilApplication Scala ( Play )

Version

21 . 1

Dashboard

Version

21 . 2

Vue détailléeVersion

21 . 3

Vue dépendance

Version

21 . 4

AlternativesMaven versions pluginGradle versions plugin

Version

22

Intégration continue

23

BesoinsIntégration GitLabConfiguration automatiqueVue pipelineSupport Docker

Intégration continue

24

Notre outilGitLab CI

Intégration continue

25 . 1

Build

Intégration continue

25 . 2

Pipelines

Intégration continue

25 . 3

Pipeline

Intégration continue

25 . 4

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

Intégration continue

26

Déploiement

27

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

Déploiement

28 . 1

Notre outilApplication Java ( Spring Boot )

Déploiement

29 . 1

Dashboard

Déploiement

29 . 2

Déploiement unitaire

Déploiement

29 . 3

Déploiement complet

Déploiement

29 . 4

AlternativesSpinnakerGOCDJenkins PipelineGitLab CI

Déploiement

30

Java Dashboard

31

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

Java Dashboard

32 . 1

Notre outilSpring Boot Admin

Java Dashboard

33 . 1

Dashboard

Java Dashboard

33 . 2

DétailsJava Dashboard

33 . 3

Logs

Java Dashboard

33 . 4

HystrixJava Dashboard

33 . 5

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

Java Dashboard

34

Datastore management

35

BesoinsVisualisation des donnéesManipulation d'urgence / debug

Datastore management

36 . 1

Nos outilsPostgresql : PgAdmin serverElasticsearch : Kibana

Datastore management

37 . 1

PgAdmin 4 serverDatastore management

37 . 2

Kibana

Datastore management

37 . 3

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

Datastore management

38

Gestion des logs

39

BesoinsCentralisationRecherche avancéeDashboardIntégration Docker

Gestion des logs

40 . 1

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

Gestion des logs

41 . 1

Kibana

Gestion des logs

41 . 2

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

Gestion des logs

42

Metrics / APM

43

BesoinsCentralisationDiagnostiquesTendancesAlerting

Metrics / APM

44 . 1

Nos outilsCloudwatch + Spring Cloud AWSNewrelic

Metrics / APM

45 . 1

Cloudwatch JVM

Metrics / APM

45 . 2

Newrelic Applications

Metrics / APM

45 . 3

Newrelic application dashboard

Metrics / APM

45 . 4

Newrelic JVM dashboard

Metrics / APM

45 . 5

AlternativesHawkularPinpointPrometheusSaaS : Appdynamics, Dynatrace, Datadog

Metrics

46

Tracing

47

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

Tracing

48 . 1

Nos outilsJaeger ( UBER )Spring Cloud Sleuth

Tracing

49 . 1

Jaeger traces

Tracing

49 . 2

Jaeger détail d'une trace

Tracing

49 . 3

Jaeger dépendances

Tracing

49 . 4

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

Tracing

50

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

51

Questions ?

52