SAMUEL ROZE
MICRO-SERVICES

(MAYBE NOT)

A GREAT IDEA
2
WHY THIS TALK?I SPENT A FEW YEARS BUILDING MICRO-SERVICES BASED APPLICATIONS
Samuel Roze
PHP Software Engineering background
and consultancy. Worked with micro-
services architectures and containers to
help development teams' velocity.
ContinuousPipe.io
Continuous deployment pipeline for
containerised applications. Kubernetes-
powered PaaS. Increase your
development team velocity and the
collaboration between the technical and
business project members.
3
A GROWING ARCHITECTURENUMBER OF MICRO-SERVICES
0
3
6
9
12
2015 Aug Oct Dec Feb Apr June Aug Oct Dec Jan Mar May Jul
3
A GROWING ARCHITECTURENUMBER OF MICRO-SERVICES
0
3
6
9
12
2015 Aug Oct Dec Feb Apr June Aug Oct Dec Jan Mar May Jul
4
ARCHITECTURE OVERVIEWA LONG JOURNEY TO GET TO THESE SERVICES
accountuser-interface
river
pipe
k8s-watcher
cluster-health-checker
gcb-builder
builder
logstream
kube-proxy
kube-status
dashboard
4
ARCHITECTURE OVERVIEWA LONG JOURNEY TO GET TO THESE SERVICES
accountuser-interface
river
pipe
k8s-watcher
cluster-health-checker
gcb-builder
builder
logstream
kube-proxy
kube-status
dashboard
4
ARCHITECTURE OVERVIEWA LONG JOURNEY TO GET TO THESE SERVICES
accountuser-interface
river
pipe
k8s-watcher
cluster-health-checker
gcb-builder
builder
logstream
kube-proxy
kube-status
dashboard
4
accountuser-interface
river
pipe
k8s-watcher
cluster-health-checker
gcb-builder
builder
logstream
kube-proxy
kube-status
dashboard
4
accountuser-interface
river
pipe
k8s-watcher
cluster-health-checker
gcb-builder
builder
logstream
kube-proxy
kube-status
dashboard
github docker-hub bitbucket firebase
...
4
accountuser-interface
river
pipe
k8s-watcher
cluster-health-checker
gcb-builder
builder
logstream
kube-proxy
kube-status
dashboard
github docker-hub bitbucket firebase
...
5
WHEN WE SAID "TOO MUCH"CHANGING THE BILLING MODEL
accountriver
5
WHEN WE SAID "TOO MUCH"CHANGING THE BILLING MODEL
accountriver
5
WHEN WE SAID "TOO MUCH"CHANGING THE BILLING MODEL
accountriver
How much is 

used ?
5
WHEN WE SAID "TOO MUCH"CHANGING THE BILLING MODEL
6
CONSEQUENCESOF SUCH A COMPLEX INFRASTRUCTURE
OPS
COSTS
had to manage multiples
instances of databases,
queues and cache
6
CONSEQUENCESOF SUCH A COMPLEX INFRASTRUCTURE
OPS
COSTS ON-BOARDING
SPEED
had to manage multiples
instances of databases,
queues and cache
"How can I run the platform
on my laptop?"
6
CONSEQUENCESOF SUCH A COMPLEX INFRASTRUCTURE
OPS
COSTS
CHANGE

COMPLEXITYON-BOARDING
SPEED
had to manage multiples
instances of databases,
queues and cache
Changes across code
repositories and different
programming languages
"How can I run the platform
on my laptop?"
6
CONSEQUENCESOF SUCH A COMPLEX INFRASTRUCTURE
OPS
COSTS
CHANGE

COMPLEXITYON-BOARDING
SPEED
FAULT
TOLERANCE
had to manage multiples
instances of databases,
queues and cache
Changes across code
repositories and different
programming languages
"How can I run the platform
on my laptop?"
Fault-tolerance is key, but
now applies on much more
dependencies
6
CONSEQUENCESOF SUCH A COMPLEX INFRASTRUCTURE
OPS
COSTS
CHANGE

COMPLEXITY
TESTS
ON-BOARDING
SPEED
FAULT
TOLERANCE
had to manage multiples
instances of databases,
queues and cache
Changes across code
repositories and different
programming languages
Good note. No other choice
than doing TDD !
"How can I run the platform
on my laptop?"
Fault-tolerance is key, but
now applies on much more
dependencies
1
STEP
Start with a monolith.

Until you are really blocked.
WHAT SHOULD WE DO?
1
STEP
2
STEP
Start with a monolith.

Until you are really blocked.
Use managed services, as
much as possible. We replaced
all the stateful services by
managed alternatives in Google
Cloud or compose.
WHAT SHOULD WE DO?
3
STEP
1
STEP
2
STEP
Start with a monolith.

Until you are really blocked.
Use managed services, as
much as possible. We replaced
all the stateful services by
managed alternatives in Google
Cloud or compose.
If you really require another
technology, create another
service.
WHAT SHOULD WE DO?
3
STEP
4
STEP
1
STEP
2
STEP
Start with a monolith.

Until you are really blocked.
Use managed services, as
much as possible. We replaced
all the stateful services by
managed alternatives in Google
Cloud or compose.
If you really require another
technology, create another
service.
Split applications when you are
already doing hundreds of
deployments a day, and can't
deal with more developers
WHAT SHOULD WE DO?
8
• Tolerance

PHP fault-tolerance library, including tracing

https://tolerance.io

• gRPC

Remote procedure call framework, for multiple
languages.

https://grpc.io 

• Istio

Open platform to connect, manage, and secure
microservices.

https://istio.io

• Kubernetes Service Catalog

Provision, bind and use services, regardless of their
location on the cluster(s).

https://github.com/kubernetes-incubator/service-catalog
9

Micro services may not be the best idea

  • 1.
  • 2.
    2 WHY THIS TALK?ISPENT A FEW YEARS BUILDING MICRO-SERVICES BASED APPLICATIONS Samuel Roze PHP Software Engineering background and consultancy. Worked with micro- services architectures and containers to help development teams' velocity. ContinuousPipe.io Continuous deployment pipeline for containerised applications. Kubernetes- powered PaaS. Increase your development team velocity and the collaboration between the technical and business project members.
  • 3.
    3 A GROWING ARCHITECTURENUMBEROF MICRO-SERVICES 0 3 6 9 12 2015 Aug Oct Dec Feb Apr June Aug Oct Dec Jan Mar May Jul
  • 4.
    3 A GROWING ARCHITECTURENUMBEROF MICRO-SERVICES 0 3 6 9 12 2015 Aug Oct Dec Feb Apr June Aug Oct Dec Jan Mar May Jul
  • 5.
    4 ARCHITECTURE OVERVIEWA LONGJOURNEY TO GET TO THESE SERVICES accountuser-interface river pipe k8s-watcher cluster-health-checker gcb-builder builder logstream kube-proxy kube-status dashboard
  • 6.
    4 ARCHITECTURE OVERVIEWA LONGJOURNEY TO GET TO THESE SERVICES accountuser-interface river pipe k8s-watcher cluster-health-checker gcb-builder builder logstream kube-proxy kube-status dashboard
  • 7.
    4 ARCHITECTURE OVERVIEWA LONGJOURNEY TO GET TO THESE SERVICES accountuser-interface river pipe k8s-watcher cluster-health-checker gcb-builder builder logstream kube-proxy kube-status dashboard
  • 8.
  • 9.
  • 10.
  • 11.
    5 WHEN WE SAID"TOO MUCH"CHANGING THE BILLING MODEL accountriver
  • 12.
    5 WHEN WE SAID"TOO MUCH"CHANGING THE BILLING MODEL accountriver
  • 13.
    5 WHEN WE SAID"TOO MUCH"CHANGING THE BILLING MODEL accountriver How much is 
 used ?
  • 14.
    5 WHEN WE SAID"TOO MUCH"CHANGING THE BILLING MODEL
  • 15.
    6 CONSEQUENCESOF SUCH ACOMPLEX INFRASTRUCTURE OPS COSTS had to manage multiples instances of databases, queues and cache
  • 16.
    6 CONSEQUENCESOF SUCH ACOMPLEX INFRASTRUCTURE OPS COSTS ON-BOARDING SPEED had to manage multiples instances of databases, queues and cache "How can I run the platform on my laptop?"
  • 17.
    6 CONSEQUENCESOF SUCH ACOMPLEX INFRASTRUCTURE OPS COSTS CHANGE
 COMPLEXITYON-BOARDING SPEED had to manage multiples instances of databases, queues and cache Changes across code repositories and different programming languages "How can I run the platform on my laptop?"
  • 18.
    6 CONSEQUENCESOF SUCH ACOMPLEX INFRASTRUCTURE OPS COSTS CHANGE
 COMPLEXITYON-BOARDING SPEED FAULT TOLERANCE had to manage multiples instances of databases, queues and cache Changes across code repositories and different programming languages "How can I run the platform on my laptop?" Fault-tolerance is key, but now applies on much more dependencies
  • 19.
    6 CONSEQUENCESOF SUCH ACOMPLEX INFRASTRUCTURE OPS COSTS CHANGE
 COMPLEXITY TESTS ON-BOARDING SPEED FAULT TOLERANCE had to manage multiples instances of databases, queues and cache Changes across code repositories and different programming languages Good note. No other choice than doing TDD ! "How can I run the platform on my laptop?" Fault-tolerance is key, but now applies on much more dependencies
  • 20.
    1 STEP Start with amonolith.
 Until you are really blocked. WHAT SHOULD WE DO?
  • 21.
    1 STEP 2 STEP Start with amonolith.
 Until you are really blocked. Use managed services, as much as possible. We replaced all the stateful services by managed alternatives in Google Cloud or compose. WHAT SHOULD WE DO?
  • 22.
    3 STEP 1 STEP 2 STEP Start with amonolith.
 Until you are really blocked. Use managed services, as much as possible. We replaced all the stateful services by managed alternatives in Google Cloud or compose. If you really require another technology, create another service. WHAT SHOULD WE DO?
  • 23.
    3 STEP 4 STEP 1 STEP 2 STEP Start with amonolith.
 Until you are really blocked. Use managed services, as much as possible. We replaced all the stateful services by managed alternatives in Google Cloud or compose. If you really require another technology, create another service. Split applications when you are already doing hundreds of deployments a day, and can't deal with more developers WHAT SHOULD WE DO?
  • 24.
    8 • Tolerance
 PHP fault-tolerancelibrary, including tracing
 https://tolerance.io
 • gRPC
 Remote procedure call framework, for multiple languages.
 https://grpc.io 
 • Istio
 Open platform to connect, manage, and secure microservices.
 https://istio.io
 • Kubernetes Service Catalog
 Provision, bind and use services, regardless of their location on the cluster(s).
 https://github.com/kubernetes-incubator/service-catalog
  • 25.