It might be that micro-services are not the best idea for your project. In this presentation I explore the pains we had creating ContinuousPipe.io with a micro-services architecture.
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.
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
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
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