Microbox
Ma toolbox microservices
Julien Roy
Architecte Java @
@vanr0y
ekino.
1
Agenda
Sources
Build
Déploiement
Exploitation
2
Bootstrap
3
Besoins
Préparation espace de travail
Manipulation dépôts multiple GIT
Scripting tâches récurrentes
Bootstrap
4
Notre outil
Scripts bash
Bootstrap
5 . 1
Bootstrap
5 . 2
Alternatives
GWS : Gestion dépôts GIT
Netflix HubCommander ( bot Slack )
Home made script ( Groovy, GO, ... )
Bootstrap
6
Scaffolding
7
Besoins
Rapidité
Uniformisation
Respect des bonnes pratiques
Scaffolding
8
Notre outil
Spring Initializr
Scaffolding
9 . 1
Scaffolding
9 . 2
Alternatives
Maven archetype
JHipster
Lazybones, Yeoman
Scaffolding
10
Build
11
Besoins
Simplification
Uniformisation
Maintenance
Build
12
Notre outil
Plugins 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
Alternatives
Netflix Nebula
Dropwizard
Lagom
Build
14
Source code browser
15
Besoins
Recherche globale
Exploration ( sans cloner )
Source code browser
16
Notre outil
Hound ( Etsy )
Source code browser
17 . 1
Source code browser
17 . 2
Alternatives
Opengrok
Upsource ( Jetbrains )
insight.io
Source code browser
18
Version
19
Besoins
Vue projet
Versions disponible ( maven central )
Version
20
Notre outil
Application Scala ( Play )
Version
21 . 1
Dashboard
Version
21 . 2
Vue détaillée
Version
21 . 3
Vue dépendance
Version
21 . 4
Alternatives
Maven versions plugin
Gradle versions plugin
Version
22
Intégration continue
23
Besoins
Intégration GitLab
Configuration automatique
Vue pipeline
Support Docker
Intégration continue
24
Notre outil
GitLab CI
Intégration continue
25 . 1
Build
Intégration continue
25 . 2
Pipelines
Intégration continue
25 . 3
Pipeline
Intégration continue
25 . 4
Alternatives
Jenkins Pipeline
TeamCity
Bamboo
Travis CI, Codeship, CircleCI, Concourse, ...
Intégration continue
26
Déploiement
27
Besoins
Multi stack ( ECS, Lambda, Batch )
Multi environnements
Profiles non technique
Peu de dépendances (GitLab, Jenkins, ...)
Déploiement
28 . 1
Notre outil
Application 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
Alternatives
Spinnaker
GOCD
Jenkins Pipeline
GitLab CI
Déploiement
30
Java Dashboard
31
Besoins
Infos JVM ( stacktrace, thread dump, ... )
Manipulation configurations
Manipulation niveaux de logs
Monitoring coupes-circuits
Java Dashboard
32 . 1
Notre outil
Spring Boot Admin
Java Dashboard
33 . 1
Dashboard
Java Dashboard
33 . 2
Détails
Java Dashboard
33 . 3
Logs
Java Dashboard
33 . 4
Hystrix
Java Dashboard
33 . 5
Alternatives
hawtio (http://hawt.io/)
Java Mission Control
CRaSH ( remote shell )
Java Dashboard
34
Datastore management
35
Besoins
Visualisation des données
Manipulation d'urgence / debug
Datastore management
36 . 1
Nos outils
Postgresql : PgAdmin server
Elasticsearch : Kibana
Datastore management
37 . 1
PgAdmin 4 server
Datastore management
37 . 2
Kibana
Datastore management
37 . 3
Alternatives
DB : PostgreSQLStudio, Teampostgresql, Adminer,
PhpMyAdmin
Elasticsearch : ElasticHQ
Redis : Readis, Redmon, Redsmin
Datastore management
38
Gestion des logs
39
Besoins
Centralisation
Recherche avancée
Dashboard
Intégration Docker
Gestion des logs
40 . 1
Nos outils
Elasticsearch
Kibana
AWS CloudWatch Docker logging driver
AWS Lambda ( Stream logs CloudWatch ->
Elasticsearch )
Gestion des logs
41 . 1
Kibana
Gestion des logs
41 . 2
Alternatives
ELK ( logstash )
Graylog
SaaS : Loggly, Logz, Sumo Logic, Splunk, PaperTrails
Gestion des logs
42
Metrics / APM
43
Besoins
Centralisation
Diagnostiques
Tendances
Alerting
Metrics / APM
44 . 1
Nos outils
Cloudwatch + Spring Cloud AWS
Newrelic
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
Alternatives
Hawkular
Pinpoint
Prometheus
SaaS : Appdynamics, Dynatrace, Datadog
Metrics
46
Tracing
47
Besoins
Investiguer sur les problèmes de latence
Cartographier les dépendances
Tracing
48 . 1
Nos outils
Jaeger ( 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
Alternatives
Zipkin ( Twitter )
AWS X-Ray
Les APM ...
Tracing
50
Conclusion
Outillage indispensable
Coût non négligeable ( temps, budget )
Prise en compte au démarrage projet
51
Questions ?
52

Microbox : Ma toolbox microservices - Julien Roy