SlideShare a Scribd company logo
1 of 196
Download to read offline
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Trois heures à l’assaut
d’une application réactive
Xavier Bucchiotty
Nicolas Jozwiak

Vincent Spiewak

@njozwiak @xbucchiotty @vspiewak#3ReactApp
@vspiewak
Speakers
@xbucchiotty
http://blog.xebia.fr
@njozwiak
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Disclaimer
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Agenda
Contexte
Comment concevoir ?
Comment développer ?
Comment déployer ?
Comment monitorer ?
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Agenda
Contexte
Comment concevoir ?
Comment développer ?
Comment déployer ?
Comment monitorer ?
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Contexte
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Provider B
Architecture monolithique
Device Gateway Reporting Alerting Front WEB
Provider A
1
2
3 4
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Provider B
Architecture monolithique
Device Gateway Reporting Alerting Front WEB
Provider A
1
2
3 4
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Architecture monolithique
1
2
3 4
1
2
3 4
Load
balancer
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Solution: Cloud
@njozwiak @xbucchiotty @vspiewak#3ReactApp
En résumé
Elastic Resilient
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Agenda
Contexte
Comment concevoir ?
Comment développer ?
Comment déployer ?
Comment monitorer ?
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Provider B
Architecture monolithique
Device Gateway Reporting Alerting Front WEB
Provider A
1
2
3 4
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Message Driven
Couplage faible
Asynchrone
Non bloquant
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Queues
ServiceClient
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Bounded Queues
ServiceClient
fail fast
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Circuit Breaker
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Circuit Breaker
Client ServiceCircuit Breaker
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Circuit Breaker
Fail fast
OK
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Circuit Breaker
Fail fast
OK
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Circuit Breaker
Fail fast
OK
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Provider B
Architecture
Device Gateway Reporting Alerting Front WEB
Provider A
1
2
3 4
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Provider B
Architecture
Device Gateway Front WEB
Provider A
1
2
Reporting
Alerting
3
configuration
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Provider B
Architecture
Device Gateway Front WEB
Provider A
1
2
Reporting
Alerting
3
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Provider B
Architecture
Device Gateway Front WEB
Provider A
1
2
Reporting
Alerting
3
Circuit
breaker
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Architecture
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Microservices
Microservice
Business Domain
Isoler les
problèmes
Déploiements
indépendants
Loi de Conway
Cacher les détails
d’implémentation
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Provider B
Architecture
Device Gateway Front WEB
Provider A
2
Reporting
AlertingCircuit
breaker
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Provider B
Architecture
Device Gateway Front WEB
Provider A
2
Reporting
AlertingCircuit
breaker
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Provider B
Architecture
Device Gateway
Front
WEB
Provider A
2
Reporting
AlertingCircuit
breaker
API
API
API
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Provider B
Architecture
Device Gateway
Front
WEB
Provider A
2
Reporting
AlertingCircuit
breaker
API
API
API
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Contexte transactionnel
Provider B
Device
Provider A
Gateway
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Contexte transactionnelContexte transactionnel
Reporting
Alerting
API
API
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Contexte transactionnel
Front
WEB
API
@njozwiak @xbucchiotty @vspiewak#3ReactApp
CQRS
Provider B
Device
Provider A
Gateway
query
Front
WEB
API command
API
API
Reporting
Alerting
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Dynamique du système
Provider B
Device
Front
WEB
Provider A
API
API
API
Gateway
Reporting
Alerting
DATAFLOW
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Reactive Manifesto
Message driven
Elastic Resilient
Responsive
www.reactivemanifesto.org
@njozwiak @xbucchiotty @vspiewak#3ReactApp
//asynchrone
def handle(event): Result = {
val f1 = Future(report(event))
val f2 = Future(alert(event)))
Await.result(sequence(f1,f2))
Success
}
// asynchrone et non bloquant :)
def handle(event): Future[Result] = {
val f1 = Future(report(event))
val f2 = Future(alert(event)))
sequence(f1, f2).map(_ => Success)
}
Asynchronisme
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Loi d’Amdahl
@njozwiak @xbucchiotty @vspiewak#3ReactApp
De Parallèle vers …
Reporting
Alerting
Gateway
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Distribué
Reporting
Alerting
Gateway
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Elasticité
Reporting
Alerting
Gateway
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Fonctionnement partiel
serviceA
Gateway
serviceB
Device
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Bounded Latency
serviceA
Gateway
serviceB
Device
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Système de systèmes…
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Provider B
Architecture
Device Gateway
Front
WEB
Provider A
2
Reporting
AlertingCircuit
breaker
API
API
API
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Agenda
Contexte
Comment concevoir ?
Comment développer ?
Comment déployer ?
Comment monitorer ?
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Framework asynchrone JVM
La programmation concurrente est
difficile.
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Framework asynchrone JVM
La programmation concurrente est
difficile.
Callbacks?
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Framework asynchrone JVM
La programmation concurrente est
difficile.
ExecutorService?
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Framework asynchrone JVM
La programmation concurrente est
difficile.
Modèle acteur
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Framework asynchrone JVM
Modèle acteur
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Modèle acteur
acteur
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Modèle acteur
acteur
la boîte aux lettres
seul élément public d’un acteur
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Modèle acteur
requête
réponse
acteur acteur
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Modèle acteur
réponse
acteur acteur acteur
requête transfert
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Modèle acteur
acteur acteur acteur
requête transfert
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Modèle acteur
acteur acteur
requête transfert
timeout
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Modèle acteur
A B
D
I
S
P
A
T
C
H
E
R
THREADS
B
A
C D
D
C
A
t
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Développer en local avec les
contraintes du distribué
Framework asynchrone JVM
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Modèle acteur
acteuracteur
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Modèle acteur
acteuracteur
@njozwiak @xbucchiotty @vspiewak#3ReactApp
akka-cluster
acteur
acteur
akka-cluster
acteur
@njozwiak @xbucchiotty @vspiewak#3ReactApp
akka-cluster
acteur
acteur
réseau
point-à-point
acteur
@njozwiak @xbucchiotty @vspiewak#3ReactApp
akka-cluster
acteur
acteur
acteur
Gossiping
acteur
@njozwiak @xbucchiotty @vspiewak#3ReactApp
akka-cluster
akka.actor.deployment {

/orchestration {

router = round-robin-group

nr-of-instances = 100

routees.paths = ["/user/orchestration"]

cluster {

enabled = on

allow-local-routees = off

use-role = orchestration

}

}

}
@njozwiak @xbucchiotty @vspiewak#3ReactApp
akka-cluster est la clé de l’élasticité
et de la résilience du système.
akka-cluster
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Reactive Manifesto et Akka
Message driven
Elastic Resilient
Responsive
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Provider B
Technos
Device
Front
WEB
Provider A
API
API
API
Gateway
Circuit
breaker
Reporting
Alerting
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Journal distribué
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Journal distribué
Développé à l’origine chez LinkedIn
Rapide, robuste, scalable
File d’attentes, agrégation logs, streaming
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Journal distribué
TOPIC
0
1
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Journal distribué
TOPIC
BROKER
1
ZK
0
1
leader
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Journal distribué
TOPIC
BROKER
1
ZK
0
1
leader
BROKER
2
synchro
@njozwiak @xbucchiotty @vspiewak#3ReactApp
TOPIC
Journal distribué
BROKER
1
ZK
0
1
leader
BROKER
2
leader
replica
synchro
@njozwiak @xbucchiotty @vspiewak#3ReactApp
TOPIC
Journal distribué
ZK
0
1
leader
BROKER
2
leader
replica
synchro
@njozwiak @xbucchiotty @vspiewak#3ReactApp
TOPIC
Journal distribué
ZK
0
1
BROKER
2
leader
synchro
@njozwiak @xbucchiotty @vspiewak#3ReactApp
TOPIC
Journal distribué
ZK
0
1
BROKER
2
leader
synchro
Élasticité
Résilience
@njozwiak @xbucchiotty @vspiewak#3ReactApp
TOPIC
Journal distribué
BROKER
1
ZK
0
1
leader
BROKER
2
leader
replica
producer
message pour partition 0
@njozwiak @xbucchiotty @vspiewak#3ReactApp
TOPIC
Journal distribué
BROKER
1
ZK
0
1
leader
BROKER
2
leader
replica
producer
message pour partition 1
@njozwiak @xbucchiotty @vspiewak#3ReactApp
TOPIC
Journal distribué
BROKER
1
ZK
0
1
leader
BROKER
2
leader
replica
producer
message pour partition 1
ordre garanti au sein
d’une partition
@njozwiak @xbucchiotty @vspiewak#3ReactApp
TOPIC
Journal distribué
BROKER
1
ZK
0
1
leader
BROKER
2
leader
consumer 1topic T
partition 0
group A
ordre garanti au sein
d’une partition
consumer 2
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Kafka topic
0 1 2 3 4 5 6 7 8 9
Nouveaux messages
Anciens messages
offset
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Kafka topic
0 1 2 3 4 5 6 7 8 9
Nouveaux messages
Anciens messages
Consommateur
groupe G1
Consommateur
groupe G2
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Reactive Manifesto et Kafka
Message driven
Elastic Resilient
Responsive
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Provider B
Technos
Device
Front
WEB
Provider A
API
API
API
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Elasticsearch
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Reporting
Recherche full-text
Aggregations
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Alerting
quantité
seuil
période de temps
filtres
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Document
{
"device" : "device1234"
"msg" : "some message"
"timestamp" : "2015-04-08T13:30:00.000Z"
}
Event
ES
events-2015
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Elastique - Shards
Node 1
INDEX
0
1
2
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Elastique - Shards
Node 1
INDEX
0
1'
2
Node 2
INDEX
0'
1
2'
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Elastique - Shards
Node 1
INDEX
0
1'
2''
Node 2
INDEX
0'
1''
2
Node 3
INDEX
0''
1
2'
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Node 3
Node 2
Elastique - Noeuds
Node 1
master
Node 3
Node 2
Node 1
data
Node 3
Node 2
Node 1
search
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Résilient - Shards
Node 1
INDEX
0
1'
2''
Node 2
INDEX
0'
1''
2
Node 3
INDEX
0''
1
2'
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Résilient - Shards
Node 1
INDEX
0
1'
2
Node 2
INDEX
0'
1
2'
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Résilient - Noeuds
Node 3Node 1
master
Node 2Node 2
master
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Bounded Queues
Node
Queue (index)
Queue (bulk)
Queue (get)
Queue (refresh)
Queue (search)
…
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Responsive - Timeout
Node 1
http://node1:9200/_search?timeout=10000
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Recherche
Node 1
TWITTER
0 1'
Node 2
EVENT
0' 1
Node 3
EVENT
0'' 1''
1
2
3’
3’’
4
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Reactive Manifesto et ES
Message driven
Elastic Resilient
Responsive
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Provider B
Technos
Device
Front
WEB
Provider A
API
API
API
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Couchbase
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Couchbase
Gestion documents
Schemaless
Clé / valeur
Cache distribué
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Couchbase
Fail over node
Cross data center replication
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Reactive Manifesto et CB
Message driven
Elastic Resilient
Responsive
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Provider B
Technos
Device
Front
WEB
Provider A
API
API
API
@njozwiak @xbucchiotty @vspiewak#3ReactApp
PLAY / REACT JS
@njozwiak @xbucchiotty @vspiewak#3ReactApp
PLAY
Formulaires, Json, validation
Intégration Scala et Akka
IO non bloquant
Sans état
@njozwiak @xbucchiotty @vspiewak#3ReactApp
REACT JS
Créé par Facebook et Instagram
Composants
Data flow unique
Performant
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Reactive Manifesto et Play
Message driven
Elastic Resilient
Responsive
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Provider B
Technos
Device
Front
WEB
Provider A
API
API
API
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Testing
Gateway
Endpoint Supervision
WorkersRouter
Provider B
Device
Provider A
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Gateway
Test unitaire
Endpoint Supervision
WorkersRouter
Provider B
Device
Provider A
testkit
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Gateway
Test unitaire
Endpoint Probe
WorkersProbe
Probe testkit
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Gateway
Test unitaire
Workers
testkit
Validation
Endpoint
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Gateway
Test unitaire
Workers
testkit
Probe
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Test unitaire
describe("A kafka source actor") {



it("should be able to pump a given number of message from kafka") {

val probe = TestProbe()



val reader = system.actorOf(Props(classOf[KafkaSource], probe))



//send 11 messages on a topic


probe.send(reader, 10)

probe.receiveN(10, max = 3.seconds) shouldBe messages.take(10)



probe.expectNoMsg(1.second)
}
}
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Test unitaire
describe("A terminal session") {

it("should have an idle timeout") {

implicit val system = ActorSystem("test",
ConfigFactory.parseString("session.timeout="500 milliseconds""))



val probe = TestProbe()



val session = system.actorOf(DeviceSession.props)

probe.watch(session)



probe.expectTerminated(session, 1.second)

}

}
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Gateway
Workers Probe
Test multi-jvm
multi-jvm
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Gateway Validation
Workers Probe
multi-jvm
Test multi-jvm
@njozwiak @xbucchiotty @vspiewak#3ReactApp
"form a cluster" in {
runOn(clusterNodes: _*) {

SeedDiscovery.joinCluster(system)

enterBarrier("deployed")
}
"support network partition" in {

runOn(node1) {

for {

from <- group_1

to <- group_2

} {

testConductor.blackhole(from, to, Direction.Both).await

}

}
Test multi-jvm
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Test
Test intégration
docker	
  run
Execute	
  Test
docker	
  rm
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Versioning
NOT SUPPORTED YET
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Versioning
JSON
Scala
Apache Avro
@YourTwitterHandle@YourTwitterHandle@njozwiak @xbucchiotty @vspiewak#3ReactApp
QUESTIONS ?
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Provider B
Résumé
Device
Front
WEB
Provider A
Reporting
Alerting
API
API
API
Gateway
Circuit
breaker
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Agenda
Contexte
Comment concevoir ?
Comment développer ?
Comment déployer ?
Comment monitorer ?
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Thanks
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Docker
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Docker
FROM ubuntu



RUN apt-get install -y wget software-properties-common

RUN apt-add-repository ppa:ansible/ansible

RUN apt-get update && apt-get install -y ansible



RUN wget https://bootstrap.pypa.io/ez_setup.py -O - | python

RUN easy_install pip

RUN pip install boto



ENV ANSIBLE_HOST_KEY_CHECKING=False

@njozwiak @xbucchiotty @vspiewak#3ReactApp
Provider B
Technos
Device
Front
WEB
Provider A
API
API
API
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Mesos / Marathon
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Mesos
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Mesos
Distribution des
ressources
Détection des
erreurs
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Marathon
Execution d’applications
API Rest
Beaucoup d’options
@njozwiak @xbucchiotty @vspiewak#3ReactApp
{
"id": "provisioning",
"instances": 1,
"cpus": 2.0,
"mem": 512,
"ports":[9000],
"container": {
"type": "DOCKER",
"docker": {
"image": "project/web:0crec10a90724f791caaf95cbc62ea61abbd6376",
"network": "BRIDGE",
"portMappings": [
{ "containerPort": 9000, "servicePort": 9000,
"hostPort": 0, "protocol": "tcp" }
]
}
}
}
Marathon Config
@njozwiak @xbucchiotty @vspiewak#3ReactApp
…
"healthChecks": [
{
"path":"/health",
"portIndex":0,
"protocol":"HTTP",
"gracePeriodSeconds":3,
"intervalSeconds":10,
"timeoutSeconds":10,
"maxConsecutiveFailures":3
}
],
…
"upgradeStrategy": {
"minimumHealthCapacity": 0
},
…
Marathon Config
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Marathon
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Architecture
Mesos master
Gateway Reporting
Alerting
Mesos slave / Marathon
Gateway
Alerting Reporting
Web
Http Post
Mesos slave / Marathon
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Découverte de services
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Découverte de services
seed-nodes 1seed-nodes 1
seed-nodes 2
Nodes 1
Nodes 2
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Découverte de services
• Akka 2.4 snapshot
• Intégration avec Docker
remote {



enabled-transports = ["akka.remote.netty.tcp"]



netty.tcp {



hostname = "127.0.0.1"

port = 2551

}

}
remote {



enabled-transports = ["akka.remote.netty.tcp"]



netty.tcp {



hostname = "127.0.0.1"

port = 2551



bind-hostname = "192.132.122.12"

bind-port = 32001

}

}

@njozwiak @xbucchiotty @vspiewak#3ReactApp
Découverte de services
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Node 1
Node 2
Découverte de services
joinCluster
joinCluster
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Bamboo
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Problème
IP dynamique
Port dynamique
Nombre d’instances
Sous domaines (web, monitoring, …)
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Bamboo
Cluster Mesos
Cluster Marathon
Bamboo Zookeeper HAProxy
API /v2/eventSubscriptions
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Bamboo: UI
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Bamboo: UI
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Bamboo
Cluster Mesos
Cluster Marathon
Bamboo
Bamboo HAProxy
WEB 1
Zookeeper
WEBChronos Inbound
WEB 2 WEB N
Docker Registry
web.app.io
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Ansible
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Problème
Kafka
Couchbase
Marathon
Mesos master / slave
Elasticsearch master / search / data
GoCD server / agent
…
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Introduction
Infrastructure as code
Agent-less
Python / Boto
@njozwiak @xbucchiotty @vspiewak#3ReactApp
$ cat inventory



[webservers]
foo.example.com
bar.example.com
[dbservers]
one.example.com
two.example.com
Inventaire
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Modules
Commands (command, shell, script)
Files (file, copy, unarchive, …)
System (service, hostname, cron, …)
Packaging (apt, yum, …)
Source Control (git, svn, …)
Notifications (mail, irc, slack, …)
@njozwiak @xbucchiotty @vspiewak#3ReactApp
$ cat tasks/main.yml
- name: Create /mnt/data directory
file:
path=/mnt/data/elasticsearch
state=directory
- name: Install Elasticsearch

apt: 

name=elasticsearch

state=latest 

force=yes

notify: Restart Elasticsearch

Tasks
@njozwiak @xbucchiotty @vspiewak#3ReactApp
$ tree -a .
├── files
│ └── template.json
├── handlers
│ └── main.yml
├── tasks
│ └── main.yml
├── templates
│ └── elasticsearch.conf.j2
└── vars
└── .gitkeep
Rôles
@njozwiak @xbucchiotty @vspiewak#3ReactApp
$ cat group_vars/elasticsearch
elasticsearch:

version: 1.4

clustername: elasticsearch-cluster

nodename: {{ hostvars[inventory_hostname]['ec2_id'] }}

quorom: 1

replicas: 2

plugins:

- head

- paramedic
Variables
@njozwiak @xbucchiotty @vspiewak#3ReactApp
discovery.zen.ping.multicast.enabled: false


discovery.zen.ping.unicast.hosts:
[
{% for host in groups[group_name] %}
"{{ hostvars[host]['ansible_eth0'].ipv4.address }}"
{% if not loop.last %},{% endif %}
{% endfor %}
]
Templates
@njozwiak @xbucchiotty @vspiewak#3ReactApp
$ cat elasticsearch.yml
- hosts: es_nodes
user: ubuntu
sudo: yes
roles:
- all
- java
- elasticsearch
Playbooks
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Résultats
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Résultats
Création instances EC2
Configuration DNS (Route 53)
Configuration instances
Ré-utilisation des rôles (all, java, zk, …)
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Provider B
Technos
Device
Front
WEB
Provider A
API
API
API
@njozwiak @xbucchiotty @vspiewak#3ReactApp
VPC + CROSS AZ
VPC
AZ1 AZ2
PUBLIC
PRIV
PUBLIC
PRIV
WEBWEB GWGW
@njozwiak @xbucchiotty @vspiewak#3ReactApp
GO Continuous Delivery
@njozwiak @xbucchiotty @vspiewak#3ReactApp
GO CD: Principes
GO Server
GO Agent GO Agent GO Agent
DEV PROD
@njozwiak @xbucchiotty @vspiewak#3ReactApp
GO CD: Principes
Update ES
Update
Kafka
Create Infra
pipeline
stage
jobs
jobs
…
@njozwiak @xbucchiotty @vspiewak#3ReactApp
GO CD: Principes
npm install Karma
Job
task task
@njozwiak @xbucchiotty @vspiewak#3ReactApp
GO CD: Principes
Create Infra Update Infra
Pipeline Group
Pipeline
Docker Images
Deploy
Containers
Pipeline Pipeline Pipeline
@njozwiak @xbucchiotty @vspiewak#3ReactApp
GO CD: UI
@njozwiak @xbucchiotty @vspiewak#3ReactApp
GO CD: UI
@njozwiak @xbucchiotty @vspiewak#3ReactApp
TEMPLATES
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Déploiement continu
Build	
  source	
  +	
  run	
  tests
docker	
  build	
  img
docker	
  push	
  img
install	
  img	
  instance
Http Post to Marathon
docker	
  run	
  img
slave masterHub
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Http post to Marathon
publish
Build	
  Marathon	
  request	
  	
  
with	
  dynamic	
  parameters
@njozwiak @xbucchiotty @vspiewak#3ReactApp
SBT
cpu in Marathon := 2



memory in Marathon := 512



instances in Marathon := 1



portsMapping in Marathon :=
Seq(dynamicPort(9000, Protocol.TCP))

healthchecks in Marathon :=
Seq(httpHealthCheck("/health", 3, 10, 10, 3))
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Kafka
TOPIC
0
1 Reporting
Reporting
2 partitions deploy 2 instances
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Agenda
Contexte
Comment concevoir ?
Comment développer ?
Comment déployer ?
Comment monitorer ?
@njozwiak @xbucchiotty @vspiewak#3ReactApp
KPI
Provider B
Device
Provider A
Gateway
Circuit
breaker
UP TIME
LATENCE
@njozwiak @xbucchiotty @vspiewak#3ReactApp
KPI
Reporting
Alerting
DÉBIT
@njozwiak @xbucchiotty @vspiewak#3ReactApp
KPI
Front
WEB
API
API
Reporting
Alerting
LATENCE
VOLUME
@njozwiak @xbucchiotty @vspiewak#3ReactApp
KPI
Front
WEB
API
COHERENCE
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Cloud
PET vs CATTLE
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Rsyslog + ES + Kibana
rsyslog
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Riemann ?
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Sensu ?
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Monitoring Zookeeper
Akka Cluster
Kafka
Mesos
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Bilan
Charge variable
Haute dispo
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Bilan
Tolérance aux pannes
Déploiement service à chaud
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Bilan
A/B testing
Schemaless
Facile à exploiter
En	
  cours	
  de	
  réflexion,	
  développement
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Améliorations
Minimum Vertical Slice
Event Sourcing
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Provider B
Améliorations
Device
Provider A
API
API
Gateway
Front
WEB
Reporting
Alerting
API
stream
stream
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Améliorations
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Prise de recul
Déploiements
Mise en place de tests
Granularité des services
Culture du client
@njozwiak @xbucchiotty @vspiewak#3ReactApp
Bibliographie
http://www.se-radio.net/2014/10/episode-213-james-lewis-on-microservices/
Standing on the shoulders of giants
@YourTwitterHandle@YourTwitterHandle@njozwiak @xbucchiotty @vspiewak#3ReactApp
QUESTIONS ?

More Related Content

Viewers also liked

Where them girls at
Where them girls atWhere them girls at
Where them girls atlizaurcalvo
 
2010-02-22 Wikipedia MTurk Research talk given in Taiwan's Academica Sinica
2010-02-22 Wikipedia MTurk Research talk given in Taiwan's Academica Sinica2010-02-22 Wikipedia MTurk Research talk given in Taiwan's Academica Sinica
2010-02-22 Wikipedia MTurk Research talk given in Taiwan's Academica SinicaEd Chi
 
Style Guide for Short-Film 'The Ordinary'
Style Guide for Short-Film 'The Ordinary'Style Guide for Short-Film 'The Ordinary'
Style Guide for Short-Film 'The Ordinary'John Smith
 
Nemanja Nenadic, Korupcija i dobro upravljanje
Nemanja Nenadic, Korupcija i dobro upravljanjeNemanja Nenadic, Korupcija i dobro upravljanje
Nemanja Nenadic, Korupcija i dobro upravljanjePartneri Srbija
 
Oracle12c threaded execution - Ressourcen sparen zum Nulltarif?!?
Oracle12c threaded execution - Ressourcen sparen zum Nulltarif?!?Oracle12c threaded execution - Ressourcen sparen zum Nulltarif?!?
Oracle12c threaded execution - Ressourcen sparen zum Nulltarif?!?Trivadis
 
Agenda de eventos enero febrero 2014 cdcm
Agenda de eventos  enero febrero 2014 cdcmAgenda de eventos  enero febrero 2014 cdcm
Agenda de eventos enero febrero 2014 cdcmCentro De Moravia
 
Proefpresentatie socialmedia project 2014
Proefpresentatie socialmedia project 2014Proefpresentatie socialmedia project 2014
Proefpresentatie socialmedia project 2014AnNiBe
 
Open Innovation and Crowdsourcing
Open Innovation and CrowdsourcingOpen Innovation and Crowdsourcing
Open Innovation and CrowdsourcingAnn Key
 
Kommunale Jugendpolitik in Österreich am Beispiel Jugendzentrum Hornstein
Kommunale Jugendpolitik in Österreich am Beispiel Jugendzentrum HornsteinKommunale Jugendpolitik in Österreich am Beispiel Jugendzentrum Hornstein
Kommunale Jugendpolitik in Österreich am Beispiel Jugendzentrum HornsteinFESD GKr
 
Bonne Impression
Bonne ImpressionBonne Impression
Bonne Impressionguestfbf1a5
 
South Orange Police Operational Report
South Orange Police Operational ReportSouth Orange Police Operational Report
South Orange Police Operational ReportSouthOrangeNJ
 
Entrevista a D. Miguel, profesor de alemán en la E.O.I
Entrevista a D. Miguel,  profesor de alemán en la E.O.IEntrevista a D. Miguel,  profesor de alemán en la E.O.I
Entrevista a D. Miguel, profesor de alemán en la E.O.Ieuropadejahuella
 
Concurso la papa - Mentoring equipo y elevator pitch
Concurso la papa - Mentoring equipo y elevator pitchConcurso la papa - Mentoring equipo y elevator pitch
Concurso la papa - Mentoring equipo y elevator pitchconcursolapapa
 
Litebi Truebi - Cloud Business Intelligence for your Department
Litebi   Truebi - Cloud Business Intelligence for your DepartmentLitebi   Truebi - Cloud Business Intelligence for your Department
Litebi Truebi - Cloud Business Intelligence for your Departmentmarketinglitebi
 
Thermoelectric and magnetic properties of Ca3Co4-xCuxO9+ δ with x = 0.00, 0.0...
Thermoelectric and magnetic properties of Ca3Co4-xCuxO9+ δ with x = 0.00, 0.0...Thermoelectric and magnetic properties of Ca3Co4-xCuxO9+ δ with x = 0.00, 0.0...
Thermoelectric and magnetic properties of Ca3Co4-xCuxO9+ δ with x = 0.00, 0.0...Chih-Ju Lin
 

Viewers also liked (20)

Where them girls at
Where them girls atWhere them girls at
Where them girls at
 
2010-02-22 Wikipedia MTurk Research talk given in Taiwan's Academica Sinica
2010-02-22 Wikipedia MTurk Research talk given in Taiwan's Academica Sinica2010-02-22 Wikipedia MTurk Research talk given in Taiwan's Academica Sinica
2010-02-22 Wikipedia MTurk Research talk given in Taiwan's Academica Sinica
 
Style Guide for Short-Film 'The Ordinary'
Style Guide for Short-Film 'The Ordinary'Style Guide for Short-Film 'The Ordinary'
Style Guide for Short-Film 'The Ordinary'
 
Nemanja Nenadic, Korupcija i dobro upravljanje
Nemanja Nenadic, Korupcija i dobro upravljanjeNemanja Nenadic, Korupcija i dobro upravljanje
Nemanja Nenadic, Korupcija i dobro upravljanje
 
Oracle12c threaded execution - Ressourcen sparen zum Nulltarif?!?
Oracle12c threaded execution - Ressourcen sparen zum Nulltarif?!?Oracle12c threaded execution - Ressourcen sparen zum Nulltarif?!?
Oracle12c threaded execution - Ressourcen sparen zum Nulltarif?!?
 
Agenda de eventos enero febrero 2014 cdcm
Agenda de eventos  enero febrero 2014 cdcmAgenda de eventos  enero febrero 2014 cdcm
Agenda de eventos enero febrero 2014 cdcm
 
Proefpresentatie socialmedia project 2014
Proefpresentatie socialmedia project 2014Proefpresentatie socialmedia project 2014
Proefpresentatie socialmedia project 2014
 
Nds3 d
Nds3 dNds3 d
Nds3 d
 
Open Innovation and Crowdsourcing
Open Innovation and CrowdsourcingOpen Innovation and Crowdsourcing
Open Innovation and Crowdsourcing
 
Kommunale Jugendpolitik in Österreich am Beispiel Jugendzentrum Hornstein
Kommunale Jugendpolitik in Österreich am Beispiel Jugendzentrum HornsteinKommunale Jugendpolitik in Österreich am Beispiel Jugendzentrum Hornstein
Kommunale Jugendpolitik in Österreich am Beispiel Jugendzentrum Hornstein
 
Informe ejecutivo rendicion
Informe ejecutivo rendicionInforme ejecutivo rendicion
Informe ejecutivo rendicion
 
DataManagement at Cummins_Mod
DataManagement at Cummins_ModDataManagement at Cummins_Mod
DataManagement at Cummins_Mod
 
Alerta y valora
Alerta y valoraAlerta y valora
Alerta y valora
 
Bonne Impression
Bonne ImpressionBonne Impression
Bonne Impression
 
South Orange Police Operational Report
South Orange Police Operational ReportSouth Orange Police Operational Report
South Orange Police Operational Report
 
Inicio rapido
Inicio rapidoInicio rapido
Inicio rapido
 
Entrevista a D. Miguel, profesor de alemán en la E.O.I
Entrevista a D. Miguel,  profesor de alemán en la E.O.IEntrevista a D. Miguel,  profesor de alemán en la E.O.I
Entrevista a D. Miguel, profesor de alemán en la E.O.I
 
Concurso la papa - Mentoring equipo y elevator pitch
Concurso la papa - Mentoring equipo y elevator pitchConcurso la papa - Mentoring equipo y elevator pitch
Concurso la papa - Mentoring equipo y elevator pitch
 
Litebi Truebi - Cloud Business Intelligence for your Department
Litebi   Truebi - Cloud Business Intelligence for your DepartmentLitebi   Truebi - Cloud Business Intelligence for your Department
Litebi Truebi - Cloud Business Intelligence for your Department
 
Thermoelectric and magnetic properties of Ca3Co4-xCuxO9+ δ with x = 0.00, 0.0...
Thermoelectric and magnetic properties of Ca3Co4-xCuxO9+ δ with x = 0.00, 0.0...Thermoelectric and magnetic properties of Ca3Co4-xCuxO9+ δ with x = 0.00, 0.0...
Thermoelectric and magnetic properties of Ca3Co4-xCuxO9+ δ with x = 0.00, 0.0...
 

Similar to 3h à l'assaut d'une application réactive - Devoxx 2015

DEF CON 23 - Xntrik - hooked browser meshed networks with webRTC and BeEF
DEF CON 23 - Xntrik - hooked browser meshed networks with webRTC and BeEFDEF CON 23 - Xntrik - hooked browser meshed networks with webRTC and BeEF
DEF CON 23 - Xntrik - hooked browser meshed networks with webRTC and BeEFFelipe Prado
 
Managing microservices with istio on OpenShift - Meetup
Managing microservices with istio on OpenShift - MeetupManaging microservices with istio on OpenShift - Meetup
Managing microservices with istio on OpenShift - MeetupJosé Román Martín Gil
 
Choose Your Own Adventure with JHipster & Kubernetes - Denver JUG 2020
Choose Your Own Adventure with JHipster & Kubernetes - Denver JUG 2020Choose Your Own Adventure with JHipster & Kubernetes - Denver JUG 2020
Choose Your Own Adventure with JHipster & Kubernetes - Denver JUG 2020Matt Raible
 
Continuous (Non)-Functional Testing of Microservices on k8s
Continuous (Non)-Functional Testing of Microservices on k8s Continuous (Non)-Functional Testing of Microservices on k8s
Continuous (Non)-Functional Testing of Microservices on k8s QAware GmbH
 
Deploying Next Gen Systems with Zero Downtime
Deploying Next Gen Systems with Zero DowntimeDeploying Next Gen Systems with Zero Downtime
Deploying Next Gen Systems with Zero DowntimeTwilio Inc
 
Kubernetes sidecar pattern as a swiss-army knife for microservices.pptx
Kubernetes sidecar pattern as a swiss-army knife for microservices.pptxKubernetes sidecar pattern as a swiss-army knife for microservices.pptx
Kubernetes sidecar pattern as a swiss-army knife for microservices.pptxAbhishek Tiwari
 
APIsecure 2023 - Breaking Vulnerable APIs, Tushar Kulkarni
APIsecure 2023 - Breaking Vulnerable APIs, Tushar KulkarniAPIsecure 2023 - Breaking Vulnerable APIs, Tushar Kulkarni
APIsecure 2023 - Breaking Vulnerable APIs, Tushar Kulkarniapidays
 
Choose Your Own Adventure with JHipster & Kubernetes - Utah JUG 2020
Choose Your Own Adventure with JHipster & Kubernetes - Utah JUG 2020Choose Your Own Adventure with JHipster & Kubernetes - Utah JUG 2020
Choose Your Own Adventure with JHipster & Kubernetes - Utah JUG 2020Matt Raible
 
A mysterious journey to MVP world - Viber Android Meetup 2018
A mysterious journey to MVP world - Viber Android Meetup 2018A mysterious journey to MVP world - Viber Android Meetup 2018
A mysterious journey to MVP world - Viber Android Meetup 2018Yegor Malyshev
 
DevOps.2D: two dimensions
of engineering
DevOps.2D: two dimensions
of  engineeringDevOps.2D: two dimensions
of  engineering
DevOps.2D: two dimensions
of engineeringAntons Kranga
 
Speed-Up Kafka Delivery with AsyncAPI & Microcks | Hugo Guerrero, Red Hat
Speed-Up Kafka Delivery with AsyncAPI & Microcks | Hugo Guerrero, Red HatSpeed-Up Kafka Delivery with AsyncAPI & Microcks | Hugo Guerrero, Red Hat
Speed-Up Kafka Delivery with AsyncAPI & Microcks | Hugo Guerrero, Red HatHostedbyConfluent
 
CNCF App-Delivery SIG Presentation - Litmus Chaos Engineering
CNCF App-Delivery SIG Presentation - Litmus Chaos EngineeringCNCF App-Delivery SIG Presentation - Litmus Chaos Engineering
CNCF App-Delivery SIG Presentation - Litmus Chaos EngineeringUmasankar Mukkara
 
KubeMonkey를 통한 Chaos Engineering 실전 운영하기 - 윤석찬 (AWS 테크에반젤리스트)
KubeMonkey를 통한 Chaos Engineering 실전 운영하기 - 윤석찬 (AWS 테크에반젤리스트)KubeMonkey를 통한 Chaos Engineering 실전 운영하기 - 윤석찬 (AWS 테크에반젤리스트)
KubeMonkey를 통한 Chaos Engineering 실전 운영하기 - 윤석찬 (AWS 테크에반젤리스트)Channy Yun
 
(ARC402) Deployment Automation: From Developers' Keyboards to End Users' Scre...
(ARC402) Deployment Automation: From Developers' Keyboards to End Users' Scre...(ARC402) Deployment Automation: From Developers' Keyboards to End Users' Scre...
(ARC402) Deployment Automation: From Developers' Keyboards to End Users' Scre...Amazon Web Services
 
Android mobile app security offensive security workshop
Android mobile app security   offensive security workshopAndroid mobile app security   offensive security workshop
Android mobile app security offensive security workshopAbhinav Sejpal
 
Serverless Security: Doing Security in 100 milliseconds
Serverless Security: Doing Security in 100 millisecondsServerless Security: Doing Security in 100 milliseconds
Serverless Security: Doing Security in 100 millisecondsJames Wickett
 
Reactive Microservices with Quarkus
Reactive Microservices with QuarkusReactive Microservices with Quarkus
Reactive Microservices with QuarkusNiklas Heidloff
 
OSDC 2017 | Modern Secrets Management with Vault by Seth Vargo
OSDC 2017 | Modern Secrets Management with Vault by Seth VargoOSDC 2017 | Modern Secrets Management with Vault by Seth Vargo
OSDC 2017 | Modern Secrets Management with Vault by Seth VargoNETWAYS
 
OSDC 2017 - Seth Vargo - Taming the modern data center
OSDC 2017 - Seth Vargo - Taming the modern data centerOSDC 2017 - Seth Vargo - Taming the modern data center
OSDC 2017 - Seth Vargo - Taming the modern data centerNETWAYS
 

Similar to 3h à l'assaut d'une application réactive - Devoxx 2015 (20)

DEF CON 23 - Xntrik - hooked browser meshed networks with webRTC and BeEF
DEF CON 23 - Xntrik - hooked browser meshed networks with webRTC and BeEFDEF CON 23 - Xntrik - hooked browser meshed networks with webRTC and BeEF
DEF CON 23 - Xntrik - hooked browser meshed networks with webRTC and BeEF
 
Managing microservices with istio on OpenShift - Meetup
Managing microservices with istio on OpenShift - MeetupManaging microservices with istio on OpenShift - Meetup
Managing microservices with istio on OpenShift - Meetup
 
Choose Your Own Adventure with JHipster & Kubernetes - Denver JUG 2020
Choose Your Own Adventure with JHipster & Kubernetes - Denver JUG 2020Choose Your Own Adventure with JHipster & Kubernetes - Denver JUG 2020
Choose Your Own Adventure with JHipster & Kubernetes - Denver JUG 2020
 
Continuous (Non)-Functional Testing of Microservices on k8s
Continuous (Non)-Functional Testing of Microservices on k8s Continuous (Non)-Functional Testing of Microservices on k8s
Continuous (Non)-Functional Testing of Microservices on k8s
 
Deploying Next Gen Systems with Zero Downtime
Deploying Next Gen Systems with Zero DowntimeDeploying Next Gen Systems with Zero Downtime
Deploying Next Gen Systems with Zero Downtime
 
Kubernetes sidecar pattern as a swiss-army knife for microservices.pptx
Kubernetes sidecar pattern as a swiss-army knife for microservices.pptxKubernetes sidecar pattern as a swiss-army knife for microservices.pptx
Kubernetes sidecar pattern as a swiss-army knife for microservices.pptx
 
APIsecure 2023 - Breaking Vulnerable APIs, Tushar Kulkarni
APIsecure 2023 - Breaking Vulnerable APIs, Tushar KulkarniAPIsecure 2023 - Breaking Vulnerable APIs, Tushar Kulkarni
APIsecure 2023 - Breaking Vulnerable APIs, Tushar Kulkarni
 
Choose Your Own Adventure with JHipster & Kubernetes - Utah JUG 2020
Choose Your Own Adventure with JHipster & Kubernetes - Utah JUG 2020Choose Your Own Adventure with JHipster & Kubernetes - Utah JUG 2020
Choose Your Own Adventure with JHipster & Kubernetes - Utah JUG 2020
 
A mysterious journey to MVP world - Viber Android Meetup 2018
A mysterious journey to MVP world - Viber Android Meetup 2018A mysterious journey to MVP world - Viber Android Meetup 2018
A mysterious journey to MVP world - Viber Android Meetup 2018
 
DevOps.2D: two dimensions
of engineering
DevOps.2D: two dimensions
of  engineeringDevOps.2D: two dimensions
of  engineering
DevOps.2D: two dimensions
of engineering
 
Speed-Up Kafka Delivery with AsyncAPI & Microcks | Hugo Guerrero, Red Hat
Speed-Up Kafka Delivery with AsyncAPI & Microcks | Hugo Guerrero, Red HatSpeed-Up Kafka Delivery with AsyncAPI & Microcks | Hugo Guerrero, Red Hat
Speed-Up Kafka Delivery with AsyncAPI & Microcks | Hugo Guerrero, Red Hat
 
CNCF App-Delivery SIG Presentation - Litmus Chaos Engineering
CNCF App-Delivery SIG Presentation - Litmus Chaos EngineeringCNCF App-Delivery SIG Presentation - Litmus Chaos Engineering
CNCF App-Delivery SIG Presentation - Litmus Chaos Engineering
 
KubeMonkey를 통한 Chaos Engineering 실전 운영하기 - 윤석찬 (AWS 테크에반젤리스트)
KubeMonkey를 통한 Chaos Engineering 실전 운영하기 - 윤석찬 (AWS 테크에반젤리스트)KubeMonkey를 통한 Chaos Engineering 실전 운영하기 - 윤석찬 (AWS 테크에반젤리스트)
KubeMonkey를 통한 Chaos Engineering 실전 운영하기 - 윤석찬 (AWS 테크에반젤리스트)
 
Kubernetes 1001
Kubernetes 1001Kubernetes 1001
Kubernetes 1001
 
(ARC402) Deployment Automation: From Developers' Keyboards to End Users' Scre...
(ARC402) Deployment Automation: From Developers' Keyboards to End Users' Scre...(ARC402) Deployment Automation: From Developers' Keyboards to End Users' Scre...
(ARC402) Deployment Automation: From Developers' Keyboards to End Users' Scre...
 
Android mobile app security offensive security workshop
Android mobile app security   offensive security workshopAndroid mobile app security   offensive security workshop
Android mobile app security offensive security workshop
 
Serverless Security: Doing Security in 100 milliseconds
Serverless Security: Doing Security in 100 millisecondsServerless Security: Doing Security in 100 milliseconds
Serverless Security: Doing Security in 100 milliseconds
 
Reactive Microservices with Quarkus
Reactive Microservices with QuarkusReactive Microservices with Quarkus
Reactive Microservices with Quarkus
 
OSDC 2017 | Modern Secrets Management with Vault by Seth Vargo
OSDC 2017 | Modern Secrets Management with Vault by Seth VargoOSDC 2017 | Modern Secrets Management with Vault by Seth Vargo
OSDC 2017 | Modern Secrets Management with Vault by Seth Vargo
 
OSDC 2017 - Seth Vargo - Taming the modern data center
OSDC 2017 - Seth Vargo - Taming the modern data centerOSDC 2017 - Seth Vargo - Taming the modern data center
OSDC 2017 - Seth Vargo - Taming the modern data center
 

More from Publicis Sapient Engineering

XebiCon'18 - L'algorithme de reconnaissance de formes par le cerveau humain
XebiCon'18 - L'algorithme de reconnaissance de formes par le cerveau humainXebiCon'18 - L'algorithme de reconnaissance de formes par le cerveau humain
XebiCon'18 - L'algorithme de reconnaissance de formes par le cerveau humainPublicis Sapient Engineering
 
Xebicon'18 - Spark in jail : conteneurisez vos traitements data sans serveur
Xebicon'18 - Spark in jail : conteneurisez vos traitements data sans serveurXebicon'18 - Spark in jail : conteneurisez vos traitements data sans serveur
Xebicon'18 - Spark in jail : conteneurisez vos traitements data sans serveurPublicis Sapient Engineering
 
XebiCon'18 - La Web App d'aujourd'hui et de demain : état de l'art et bleedin...
XebiCon'18 - La Web App d'aujourd'hui et de demain : état de l'art et bleedin...XebiCon'18 - La Web App d'aujourd'hui et de demain : état de l'art et bleedin...
XebiCon'18 - La Web App d'aujourd'hui et de demain : état de l'art et bleedin...Publicis Sapient Engineering
 
XebiCon'18 - Des notebook pour le monitoring avec Zeppelin
XebiCon'18 - Des notebook pour le monitoring avec Zeppelin XebiCon'18 - Des notebook pour le monitoring avec Zeppelin
XebiCon'18 - Des notebook pour le monitoring avec Zeppelin Publicis Sapient Engineering
 
XebiCon'18 - Event Sourcing et RGPD, incompatibles ?
XebiCon'18 - Event Sourcing et RGPD, incompatibles ?XebiCon'18 - Event Sourcing et RGPD, incompatibles ?
XebiCon'18 - Event Sourcing et RGPD, incompatibles ?Publicis Sapient Engineering
 
XebiCon'18 - Deno, le nouveau NodeJS qui inverse la tendance ?
XebiCon'18 - Deno, le nouveau NodeJS qui inverse la tendance ?XebiCon'18 - Deno, le nouveau NodeJS qui inverse la tendance ?
XebiCon'18 - Deno, le nouveau NodeJS qui inverse la tendance ?Publicis Sapient Engineering
 
XebiCon'18 - Boostez vos modèles avec du Deep Learning distribué
XebiCon'18 - Boostez vos modèles avec du Deep Learning distribuéXebiCon'18 - Boostez vos modèles avec du Deep Learning distribué
XebiCon'18 - Boostez vos modèles avec du Deep Learning distribuéPublicis Sapient Engineering
 
XebiCon'18 - Comment j'ai développé un jeu vidéo avec des outils de développe...
XebiCon'18 - Comment j'ai développé un jeu vidéo avec des outils de développe...XebiCon'18 - Comment j'ai développé un jeu vidéo avec des outils de développe...
XebiCon'18 - Comment j'ai développé un jeu vidéo avec des outils de développe...Publicis Sapient Engineering
 
XebiCon'18 - Les utilisateurs finaux, les oubliés de nos produits !
XebiCon'18 - Les utilisateurs finaux, les oubliés de nos produits !XebiCon'18 - Les utilisateurs finaux, les oubliés de nos produits !
XebiCon'18 - Les utilisateurs finaux, les oubliés de nos produits !Publicis Sapient Engineering
 
XebiCon'18 - Comment fausser l'interprétation de vos résultats avec des dataviz
XebiCon'18 - Comment fausser l'interprétation de vos résultats avec des datavizXebiCon'18 - Comment fausser l'interprétation de vos résultats avec des dataviz
XebiCon'18 - Comment fausser l'interprétation de vos résultats avec des datavizPublicis Sapient Engineering
 
XebiCon'18 - Architecturer son application mobile pour la durabilité
XebiCon'18 - Architecturer son application mobile pour la durabilitéXebiCon'18 - Architecturer son application mobile pour la durabilité
XebiCon'18 - Architecturer son application mobile pour la durabilitéPublicis Sapient Engineering
 
XebiCon'18 - Sécuriser son API avec OpenID Connect
XebiCon'18 - Sécuriser son API avec OpenID ConnectXebiCon'18 - Sécuriser son API avec OpenID Connect
XebiCon'18 - Sécuriser son API avec OpenID ConnectPublicis Sapient Engineering
 
XebiCon'18 - Structuration du Temps et Dynamique de Groupes, Théorie organisa...
XebiCon'18 - Structuration du Temps et Dynamique de Groupes, Théorie organisa...XebiCon'18 - Structuration du Temps et Dynamique de Groupes, Théorie organisa...
XebiCon'18 - Structuration du Temps et Dynamique de Groupes, Théorie organisa...Publicis Sapient Engineering
 
XebiCon'18 - La sécurité, douce illusion même en 2018
XebiCon'18 - La sécurité, douce illusion même en 2018XebiCon'18 - La sécurité, douce illusion même en 2018
XebiCon'18 - La sécurité, douce illusion même en 2018Publicis Sapient Engineering
 
XebiCon'18 - Utiliser Hyperledger Fabric pour la création d'une blockchain pr...
XebiCon'18 - Utiliser Hyperledger Fabric pour la création d'une blockchain pr...XebiCon'18 - Utiliser Hyperledger Fabric pour la création d'une blockchain pr...
XebiCon'18 - Utiliser Hyperledger Fabric pour la création d'une blockchain pr...Publicis Sapient Engineering
 
XebiCon'18 - Ce que l'histoire du métro Parisien m'a enseigné sur la création...
XebiCon'18 - Ce que l'histoire du métro Parisien m'a enseigné sur la création...XebiCon'18 - Ce que l'histoire du métro Parisien m'a enseigné sur la création...
XebiCon'18 - Ce que l'histoire du métro Parisien m'a enseigné sur la création...Publicis Sapient Engineering
 

More from Publicis Sapient Engineering (20)

XebiCon'18 - L'algorithme de reconnaissance de formes par le cerveau humain
XebiCon'18 - L'algorithme de reconnaissance de formes par le cerveau humainXebiCon'18 - L'algorithme de reconnaissance de formes par le cerveau humain
XebiCon'18 - L'algorithme de reconnaissance de formes par le cerveau humain
 
Xebicon'18 - IoT: From Edge to Cloud
Xebicon'18 - IoT: From Edge to CloudXebicon'18 - IoT: From Edge to Cloud
Xebicon'18 - IoT: From Edge to Cloud
 
Xebicon'18 - Spark in jail : conteneurisez vos traitements data sans serveur
Xebicon'18 - Spark in jail : conteneurisez vos traitements data sans serveurXebicon'18 - Spark in jail : conteneurisez vos traitements data sans serveur
Xebicon'18 - Spark in jail : conteneurisez vos traitements data sans serveur
 
XebiCon'18 - Modern Infrastructure
XebiCon'18 - Modern InfrastructureXebiCon'18 - Modern Infrastructure
XebiCon'18 - Modern Infrastructure
 
XebiCon'18 - La Web App d'aujourd'hui et de demain : état de l'art et bleedin...
XebiCon'18 - La Web App d'aujourd'hui et de demain : état de l'art et bleedin...XebiCon'18 - La Web App d'aujourd'hui et de demain : état de l'art et bleedin...
XebiCon'18 - La Web App d'aujourd'hui et de demain : état de l'art et bleedin...
 
XebiCon'18 - Des notebook pour le monitoring avec Zeppelin
XebiCon'18 - Des notebook pour le monitoring avec Zeppelin XebiCon'18 - Des notebook pour le monitoring avec Zeppelin
XebiCon'18 - Des notebook pour le monitoring avec Zeppelin
 
XebiCon'18 - Event Sourcing et RGPD, incompatibles ?
XebiCon'18 - Event Sourcing et RGPD, incompatibles ?XebiCon'18 - Event Sourcing et RGPD, incompatibles ?
XebiCon'18 - Event Sourcing et RGPD, incompatibles ?
 
XebiCon'18 - Deno, le nouveau NodeJS qui inverse la tendance ?
XebiCon'18 - Deno, le nouveau NodeJS qui inverse la tendance ?XebiCon'18 - Deno, le nouveau NodeJS qui inverse la tendance ?
XebiCon'18 - Deno, le nouveau NodeJS qui inverse la tendance ?
 
XebiCon'18 - Boostez vos modèles avec du Deep Learning distribué
XebiCon'18 - Boostez vos modèles avec du Deep Learning distribuéXebiCon'18 - Boostez vos modèles avec du Deep Learning distribué
XebiCon'18 - Boostez vos modèles avec du Deep Learning distribué
 
XebiCon'18 - Comment j'ai développé un jeu vidéo avec des outils de développe...
XebiCon'18 - Comment j'ai développé un jeu vidéo avec des outils de développe...XebiCon'18 - Comment j'ai développé un jeu vidéo avec des outils de développe...
XebiCon'18 - Comment j'ai développé un jeu vidéo avec des outils de développe...
 
XebiCon'18 - Les utilisateurs finaux, les oubliés de nos produits !
XebiCon'18 - Les utilisateurs finaux, les oubliés de nos produits !XebiCon'18 - Les utilisateurs finaux, les oubliés de nos produits !
XebiCon'18 - Les utilisateurs finaux, les oubliés de nos produits !
 
XebiCon'18 - Comment fausser l'interprétation de vos résultats avec des dataviz
XebiCon'18 - Comment fausser l'interprétation de vos résultats avec des datavizXebiCon'18 - Comment fausser l'interprétation de vos résultats avec des dataviz
XebiCon'18 - Comment fausser l'interprétation de vos résultats avec des dataviz
 
XebiCon'18 - Le développeur dans la Pop Culture
XebiCon'18 - Le développeur dans la Pop Culture XebiCon'18 - Le développeur dans la Pop Culture
XebiCon'18 - Le développeur dans la Pop Culture
 
XebiCon'18 - Architecturer son application mobile pour la durabilité
XebiCon'18 - Architecturer son application mobile pour la durabilitéXebiCon'18 - Architecturer son application mobile pour la durabilité
XebiCon'18 - Architecturer son application mobile pour la durabilité
 
XebiCon'18 - Sécuriser son API avec OpenID Connect
XebiCon'18 - Sécuriser son API avec OpenID ConnectXebiCon'18 - Sécuriser son API avec OpenID Connect
XebiCon'18 - Sécuriser son API avec OpenID Connect
 
XebiCon'18 - Structuration du Temps et Dynamique de Groupes, Théorie organisa...
XebiCon'18 - Structuration du Temps et Dynamique de Groupes, Théorie organisa...XebiCon'18 - Structuration du Temps et Dynamique de Groupes, Théorie organisa...
XebiCon'18 - Structuration du Temps et Dynamique de Groupes, Théorie organisa...
 
XebiCon'18 - Spark NLP, un an après
XebiCon'18 - Spark NLP, un an aprèsXebiCon'18 - Spark NLP, un an après
XebiCon'18 - Spark NLP, un an après
 
XebiCon'18 - La sécurité, douce illusion même en 2018
XebiCon'18 - La sécurité, douce illusion même en 2018XebiCon'18 - La sécurité, douce illusion même en 2018
XebiCon'18 - La sécurité, douce illusion même en 2018
 
XebiCon'18 - Utiliser Hyperledger Fabric pour la création d'une blockchain pr...
XebiCon'18 - Utiliser Hyperledger Fabric pour la création d'une blockchain pr...XebiCon'18 - Utiliser Hyperledger Fabric pour la création d'une blockchain pr...
XebiCon'18 - Utiliser Hyperledger Fabric pour la création d'une blockchain pr...
 
XebiCon'18 - Ce que l'histoire du métro Parisien m'a enseigné sur la création...
XebiCon'18 - Ce que l'histoire du métro Parisien m'a enseigné sur la création...XebiCon'18 - Ce que l'histoire du métro Parisien m'a enseigné sur la création...
XebiCon'18 - Ce que l'histoire du métro Parisien m'a enseigné sur la création...
 

Recently uploaded

VK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web DevelopmentVK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web Developmentvyaparkranti
 
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdf
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdfInnovate and Collaborate- Harnessing the Power of Open Source Software.pdf
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdfYashikaSharma391629
 
Machine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringMachine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringHironori Washizaki
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfMarharyta Nedzelska
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Velvetech LLC
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作qr0udbr0
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtimeandrehoraa
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based projectAnoyGreter
 
UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxUI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxAndreas Kunz
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...OnePlan Solutions
 
Sending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdfSending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdf31events.com
 
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)jennyeacort
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesŁukasz Chruściel
 
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...OnePlan Solutions
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...Technogeeks
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanyChristoph Pohl
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesPhilip Schwarz
 
Understanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM ArchitectureUnderstanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM Architecturerahul_net
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfAlina Yurenko
 

Recently uploaded (20)

VK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web DevelopmentVK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web Development
 
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdf
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdfInnovate and Collaborate- Harnessing the Power of Open Source Software.pdf
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdf
 
Machine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringMachine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their Engineering
 
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort ServiceHot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdf
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtime
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based project
 
UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxUI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
 
Sending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdfSending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdf
 
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New Features
 
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a series
 
Understanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM ArchitectureUnderstanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM Architecture
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
 

3h à l'assaut d'une application réactive - Devoxx 2015