SlideShare une entreprise Scribd logo
1  sur  107
Télécharger pour lire hors ligne
MILAN 18/19.11.2015
Microservices Architectures: Become a
Unicorn and create a project like Netflix,
Twitter or Hailo
Giulio Santoli - @gjuljo
MILAN 18/19.11.2015 - GIULIO SANTOLI
1. Here comes the Unicorns
2. Monolith v.s. Microservices
3. Services for the Microservices:
a. Service Discovery
b. Load Balancing
c. Fault Tolerance
d. Edge Server and Data Aggregation
4. The Death Star strikes back
5. Dockerize it
6. Centralized Logging and Monitoring
7. Running on Cloud Foundry
8. Continous Delivery, DevOps and NoOps
9. What’s next?
Agenda
MILAN 18/19.11.2015 - GIULIO SANTOLI
1. Here comes the Unicorns
2. Monolith v.s. Microservices
3. Services for the Microservices:
a. Service Discovery
b. Load Balancing
c. Fault Tolerance
d. Edge Server and Data Aggregation
4. The Death Star strikes back
5. Dockerize it
6. Centralized Logging and Monitoring
7. Running on Cloud Foundry
8. Continous Delivery, DevOps and NoOps
9. What’s next?
Agenda
MILAN 18/19.11.2015 - GIULIO SANTOLI
Aileen Lee, the founder of Cowboy Ventures, in 2013 chose the word
unicorn to describe the winner of all winners among software start-ups,
and typically valued at $1 billion or more by investors.
Are Unicorns Real?
http://www.nytimes.com/2015/08/24/technology/the-unicorn-club-now-admitting-new-members.html
http://bits.blogs.nytimes.com/2015/07/05/unicorns-a-fitting-word-for-its-time-and-place
MILAN 18/19.11.2015 - GIULIO SANTOLI
The Increasingly Crowded
Unicorn Club (since 2011)
MILAN 18/19.11.2015 - GIULIO SANTOLI
The Periodic Table of Unicors
A breakdown of companies valued at $1B+ by sector (6/11/2015)
MILAN 18/19.11.2015 - GIULIO SANTOLI
What do these Unicorns
have in common?
(among others) An aggresive
adoption of the microservices
architecture approach.
MILAN 18/19.11.2015 - GIULIO SANTOLI
1. Here comes the Unicorns
2. Monolith v.s. Microservices
3. Services for the Microservices:
a. Service Discovery
b. Load Balancing
c. Fault Tolerance
d. Edge Server and Data Aggregation
4. The Death Star strikes back
5. Dockerize it
6. Centralized Logging and Monitoring
7. Running on Cloud Foundry
8. Continous Delivery, DevOps and NoOps
9. What’s next?
Agenda
MILAN 18/19.11.2015 - GIULIO SANTOLI
Monolith or Microservices?
MILAN 18/19.11.2015 - GIULIO SANTOLI
“Microservices are tiny apps talking
with uniform interface installed as well-
behaved OS services.”
lightweight, small footprint,
follow Single Responsibility
Pattern
RESTful. decoupled,
scalable, discoverable. self-contained, run with a
single one-liner command
by Eduard Sizovs (www.slideshare.net/eduardsi)
MILAN 18/19.11.2015 - GIULIO SANTOLI
“Loosely coupled service oriented architecture
with bounded contexts”
Adrian Cockcroft
@adrianco
(Battery Ventures)
What is a Microservice Architecture?
MILAN 18/19.11.2015 - GIULIO SANTOLI
http://ir.netflix.com/
Netflix is the world’s leading
Internet television network with
over 69 million members in over 60
countries enjoying more than 100
million hours of TV shows and
movies per day, including original
series, documentaries and feature
films.
Members can watch as much as
they want, anytime, anywhere, on
nearly any Internet-connected
screen.
MILAN 18/19.11.2015 - GIULIO SANTOLI
Netflix moved from a Monolithic Architecture to Microservices,
building a set of infrastructure services, then open-sourced as
Netflix OSS.
https://netflix.github.io
http://cloud.spring.io/spring-cloud-netflix/spring-cloud-netflix.html
MILAN 18/19.11.2015 - GIULIO SANTOLI
Be aware!
It’s not just a matter of
MILAN 18/19.11.2015 - GIULIO SANTOLI
Practices
Architectures Organizations
MILAN 18/19.11.2015 - GIULIO SANTOLI
“Organizations which design
systems ... are constrained
to produce designs which
are copies of the
communication structures
of these organizations”
Conway, Melvin E. (1968)
Conway’s Law
MILAN 18/19.11.2015 - GIULIO SANTOLI
Siloed functional teams lead to
Siloed application architectures
http://martinfowler.com/articles/microservices.html
MILAN 18/19.11.2015 - GIULIO SANTOLI
Cross-functional teams lead to
capability-oriented architectures
http://martinfowler.com/articles/microservices.html
MILAN 18/19.11.2015 - GIULIO SANTOLI
Microservices v.s. Monolithic
Scalability
http://martinfowler.com/articles/microservices.html
MILAN 18/19.11.2015 - GIULIO SANTOLI
Microservices v.s. Monolithic
Database Polyglotism
http://martinfowler.com/articles/microservices.html
MILAN 18/19.11.2015 - GIULIO SANTOLI
Microservices v.s. Monolithic
Orchestration v.s. Choreography
MILAN 18/19.11.2015 - GIULIO SANTOLI
in summary...
microservices should be:
- cheap to replace
- quick to scale
- withstand failure
and should allow you to go as “fast as possible”
James Lewis
(ThoughWorks)
MILAN 18/19.11.2015 - GIULIO SANTOLI
How Big is Micro?
MILAN 18/19.11.2015 - GIULIO SANTOLI
Rules of Thumb
2-Pizza Team
Rule
(Jeff Bezos,
Amazon)
No more than
300 lines of
code
Focus on
what Matters
Adopt DDD
Bounded
Contexts
MILAN 18/19.11.2015 - GIULIO SANTOLI
“The heart of software is its ability to solve
domain-related problems for its user.”
Eric Evans
MILAN 18/19.11.2015 - GIULIO SANTOLI
Is this just another hype?
MILAN 18/19.11.2015 - GIULIO SANTOLI
12-factor app
cloud
microservices
devops
agile
MILAN 18/19.11.2015 - GIULIO SANTOLI
I. Codebase One codebase tracked in revision control, many deploys
II. Dependencies Explicitly declare and isolate dependencies
III. Configuration Store configuration in the environment
IV. Backing Services Treat backing services as attached resources
V. Build, release, run Strictly separate build and run stages
VI. Processes Execute the app as one or more stateless processes
VII. Port binding Export services via port binding
VIII. Concurrency Scale out via the process model
IX. Disposability Maximize robustness with fast startup and graceful shutdown
X. Dev/prod parity Keep development, staging, &production as similar as possible
XI. Logs Treat logs as event streams
XII. Admin processes Run admin/management tasks as one-off processes
12-Factor Applications (http://12factor.net)
The twelve-factor app is a methodology for building cloud native applications.
MILAN 18/19.11.2015 - GIULIO SANTOLI
Spring Boot makes it easy to create stand-alone,
production-grade Spring based Applications that
you can "just run".
Spring Boot & Spring Cloud Netflix
@Controller class ThisWillActuallyRun {
@RequestMapping("/")
@ResponseBody
String home() {
return "Hello World!"
}
}
app.groovy
$> spring run app.groovy
MILAN 18/19.11.2015 - GIULIO SANTOLI
LAB: Scenario 1
MILAN 18/19.11.2015 - GIULIO SANTOLI
1. Here comes the Unicorns
2. Monolith v.s. Microservices
3. Services for the Microservices:
a. Service Discovery
b. Load Balancing
c. Fault Tolerance
d. Edge Server and Data Aggregation
4. The Death Star strikes back
5. Dockerize it
6. Centralized Logging and Monitoring
7. Running on Cloud Foundry
8. Continous Delivery, DevOps and NoOps
9. What’s next?
Agenda
MILAN 18/19.11.2015 - GIULIO SANTOLI
Service A
Service B
(instance1)
Service B
(instance2)
Service C
??
Service Discovery
MILAN 18/19.11.2015 - GIULIO SANTOLI
Service A
Service B
(instance1)
Service B
(instance2)
Service C
E
U
R
E
K
A
E
U
R
E
K
A
E
U
R
E
K
A
DISCOVERY
SERVER
(EUREKA)
Client-Side Service Discovery (Netflix)
E
U
R
E
K
A
MILAN 18/19.11.2015 - GIULIO SANTOLI
Service A
Service B
(instance1)
Service B
(instance2)
Service C
N
G
I
N
X
N
G
I
N
X
Server-Side Service Discovery
DISCOVERY
SERVER
(CONSUL)
MILAN 18/19.11.2015 - GIULIO SANTOLI
LAB: Scenario 2
MILAN 18/19.11.2015 - GIULIO SANTOLI
1. Here comes the Unicorns
2. Monolith v.s. Microservices
3. Services for the Microservices:
a. Service Discovery
b. Load Balancing
c. Fault Tolerance
d. Edge Server and Data Aggregation
4. The Death Star strikes back
5. Dockerize it
6. Centralized Logging and Monitoring
7. Running on Cloud Foundry
8. Continous Delivery, DevOps and NoOps
9. What’s next?
Agenda
MILAN 18/19.11.2015 - GIULIO SANTOLI
Service A
Service B
(instance1)
Service B
(instance2)
Service C
N
G
I
N
X
N
G
I
N
X
Load Balancing: DNS + Proxy
DISCOVERY
SERVER
(CONSUL)
MILAN 18/19.11.2015 - GIULIO SANTOLI
Service A
Service B
(instance1)
Service B
(instance2)
Service C
R
I
B
B
O
N
E
U
R
E
K
A
E
U
R
E
K
A
E
U
R
E
K
A
DISCOVERY
SERVER
(EUREKA)
Client-Side Load Balancing (Neflix)
E
U
R
E
K
A
MILAN 18/19.11.2015 - GIULIO SANTOLI
Discovery and Configuration Technolgies
Consul is strongly consistent
datastore that uses gossip to form
dynamic clusters.
etcd is a distributed, consistent
key-value store for shared
configuration and service
discovery.
ZooKeeper is a centralized
service for maintaining
configuration information and
naming.
https://www.nginx.com/blog/service-discovery-in-a-microservices-architecture
http://technologyconversations.com/2015/09/08/service-discovery-zookeeper-vs-etcd-vs-consul/
MILAN 18/19.11.2015 - GIULIO SANTOLI
LAB: Scenario 3
MILAN 18/19.11.2015 - GIULIO SANTOLI
1. Here comes the Unicorns
2. Monolith v.s. Microservices
3. Services for the Microservices:
a. Service Discovery
b. Load Balacing
c. Fault Tolerance
d. Edge Server and Data Aggregation
4. The Death Star strikes back
5. Dockerize it
6. Centralized Logging and Monitoring
7. Running on Cloud Foundry
8. Continous Delivery, DevOps and NoOps
9. What’s next?
Agenda
MILAN 18/19.11.2015 - GIULIO SANTOLI
The Exception that Grounded an Aireline
Chapter 2
MILAN 18/19.11.2015 - GIULIO SANTOLI
“Hope is not a design method.”
Michael T. Nygard
MILAN 18/19.11.2015 - GIULIO SANTOLI
Especially in a microservices
architecture, an application
needs to access one or more
services over the network.
MILAN 18/19.11.2015 - GIULIO SANTOLI
“Every integration point will eventually fail in
some way”
Michael T. Nygard
MILAN 18/19.11.2015 - GIULIO SANTOLI
Each dependency is
isolated from one other,
restricted in the
resources it can saturate
when latency occurs, and
covered in fallback logic
that decides what
response to make when
any type of failure occurs
in the dependency
MILAN 18/19.11.2015 - GIULIO SANTOLI
“Generating a slow response is worse than
refusing a connection or returning an error”
Michael T. Nygard
MILAN 18/19.11.2015 - GIULIO SANTOLI
Each dependency is
isolated from one other,
restricted in the
resources it can saturate
when latency occurs, and
covered in fallback logic
that decides what
response to make when
any type of failure occurs
in the dependency
MILAN 18/19.11.2015 - GIULIO SANTOLI
https://github.com/Netflix/Hystrix/wiki
Engineer the whole system for resilience
MILAN 18/19.11.2015 - GIULIO SANTOLI
Each dependency is
isolated from one other,
restricted in the
resources it can saturate
when latency occurs, and
covered in fallback logic
that decides what
response to make when
any type of failure occurs
in the dependency.
Hystrix Helps
MILAN 18/19.11.2015 - GIULIO SANTOLI
http://django-notes.blogspot.it/2012/02/release-it-design-and-deploy-production.html
Circuit Breaker Statechart
MILAN 18/19.11.2015 - GIULIO SANTOLI
https://github.com/Netflix/Hystrix/wiki/How-it-Works
Hystrix Circuit Breaker Flow Chart
MILAN 18/19.11.2015 - GIULIO SANTOLI
Hystrix Thread Pools and Semaphores
MILAN 18/19.11.2015 - GIULIO SANTOLI
LAB: Scenario 4
MILAN 18/19.11.2015 - GIULIO SANTOLI
1. Here comes the Unicorns
2. Monolith v.s. Microservices
3. Services for the Microservices:
a. Service Discovery
b. Load Balacing
c. Fault Tolerance
d. Edge Server and Data Aggregation
4. The Death Star strikes back
5. Dockerize it
6. Centralized Logging and Monitoring
7. Running on Cloud Foundry
8. Continous Delivery, DevOps and NoOps
9. What’s next?
Agenda
MILAN 18/19.11.2015 - GIULIO SANTOLI
Hystrix Dashboard
MILAN 18/19.11.2015 - GIULIO SANTOLI
MILAN 18/19.11.2015 - GIULIO SANTOLI
LAB: Scenario 5
MILAN 18/19.11.2015 - GIULIO SANTOLI
LAB: Scenario 6
MILAN 18/19.11.2015 - GIULIO SANTOLI
1. Here comes the Unicorns
2. Monolith v.s. Microservices
3. Services for the Microservices:
a. Service Discovery
b. Load Balacing
c. Fault Tolerance
d. Edge Server and Data Aggregation
4. The Death Star strikes back
5. Dockerize it
6. Centralized Logging and Monitoring
7. Running on Cloud Foundry
8. Continous Delivery, DevOps and NoOps
9. What’s next?
Agenda
MILAN 18/19.11.2015 - GIULIO SANTOLI
Monolith or
Moon-olith?
MILAN 18/19.11.2015 - GIULIO SANTOLI
MEMBERSHIP
SERVICE
RECOMMENDATIONS
SERVICE
ZUUL
(EDGE SERVER)
EUREKA
CLIENT
RIBBON +
HYSTRIX
EUREKA
CLIENT
RIBBON +
HYSTRIX
MEMBERSHIP
SERVICE
EUREKA
CLIENT
EUREKA
SERVER
(DISCOVERY) HYSTRIX
DASHBOARD
(MONITOR)
TURBINE
(AGGREGATION)
EUREKA
SERVER
(DISCOVERY)
ARCHAIUS
(CONFIG)
ATLAS
(METRICS)
Main Netflix Components
SPECTATOR
MILAN 18/19.11.2015 - GIULIO SANTOLI
Netflix Architecture
by Adrian Cockcroft
Simplified Architecture Actual Architecture
https://github.com/adrianco/spigo
MILAN 18/19.11.2015 - GIULIO SANTOLI
Configuraiton Discovery Routing Observability
Archaius Eureka Zuul, Ribbon Hystrix
Decider Finagle, Zookeper Finagle, Netty Zipkin
Decider Finagle, Zookeper Finagle, Akka Zipkin
Netflix
Twitter
Gilt
http://www.slideshare.net/adriancockcroft/monitorama-please-no-more
Technology Comparison
MILAN 18/19.11.2015 - GIULIO SANTOLI
Finagle @Twitter
Finagle is an extensible RPC system for the JVM, used to
construct high-concurrency servers.
Finagle implements uniform client and server APIs for several
protocols, and is designed for high performance and concurrency.
Finagle is written in Scala, but provides both Scala and Java
idiomatic APIs.
https://blog.twitter.com/2011/finagle-a-protocol-agnostic-rpc-system
MILAN 18/19.11.2015 - GIULIO SANTOLI
Zipkin @Twitter
https://twitter.github.io/zipkin/Architecture.html
https://github.com/openzipkin/zipkin
Zipkin is a distributed tracing system. It helps gather
timing data needed to troubleshoot latency problems in
microservice architectures.
MILAN 18/19.11.2015 - GIULIO SANTOLI
Distributed Tracing with Zipkin
MILAN 18/19.11.2015 - GIULIO SANTOLI
1. Here comes the Unicorns
2. Monolith v.s. Microservices
3. Services for the Microservices:
a. Service Discovery
b. Load Balacing
c. Fault Tolerance
d. Edge Server and Data Aggregation
4. The Death Star strikes back
5. Dockerize it
6. Centralized Logging and Monitoring
7. Running on Cloud Foundry
8. Continous Delivery, DevOps and NoOps
9. What’s next?
Agenda
MILAN 18/19.11.2015 - GIULIO SANTOLI
“Docker is an open platform for developers and
system admins to build, ship, and run distributed
applications.”
Introducing Docker
MILAN 18/19.11.2015 - GIULIO SANTOLI
“Docker runs as an isolated process in userspace on the host
operating system, sharing the kernel with other containers. Thus,
it enjoys the resource isolation and allocation benefits of VMs but
is much more portable and efficient. ”
container isolation content processes
user
network
id
cgroups
"make me a isolated context" "put this in it" "then run this"
= + +
How does it work?
MILAN 18/19.11.2015 - GIULIO SANTOLI
Filesystem
Base OS / Kernel
Fedora Ubuntu
tomcat tomcatliberty
CNTR1 CNTR2 CNTR3 CNTR4
app1 app2 app4app3
Layer
Layer
Layer
Layers allow for reuse, more containers
per host and faster start/re-start time.
Read-only layers allow portability and
efficiency.
New files and edits are visible to
current and above layers.
Docker uses a copy-on-write (union)
filesystem.
Docker is so
lightweight
because of the
reusable layers in
Docker images.
How is this different from Virtual Machines?
MILAN 18/19.11.2015 - GIULIO SANTOLI
Docker Machine enables
any host, whether a
laptop, server, VM or
remote cloud instance, to
run Docker apps.
Docker Compose is a tool
for defining and running
multi-container applications
with by using a single
declarative file
(i.e. docker-compose.yml).
At the core of the
Docker platform is
Docker Engine, a
lightweight runtime
that builds and runs
your containers.
MILAN 18/19.11.2015 - GIULIO SANTOLI
Managing Docker Clusters
A = Node Clusters
B = Nodes
C = Containers
D = Links
E = Volumes
F = Services
Tutum is designed to ease the management of using Docker.
Tutum offers a single platform to help with automating
deployment, scaling, linking containers that run on different
cloud providers, achieving redundancy and monitoring the
deployment.
MILAN 18/19.11.2015 - GIULIO SANTOLI
LAB: Scenario 7
MILAN 18/19.11.2015 - GIULIO SANTOLI
LAB: Scenario 8
MILAN 18/19.11.2015 - GIULIO SANTOLI
1. Here comes the Unicorns
2. Monolith v.s. Microservices
3. Services for the Microservices:
a. Service Discovery
b. Load Balacing
c. Fault Tolerance
d. Edge Server and Data Aggregation
4. The Death Star strikes back
5. Dockerize it
6. Centralized Logging and Monitoring
7. Running on Cloud Foundry
8. Continous Delivery, DevOps and NoOps
9. What’s next?
Agenda
MILAN 18/19.11.2015 - GIULIO SANTOLI
“If you can’t measure it, you can’t
improve it.”
Lord Kelvin
MILAN 18/19.11.2015 - GIULIO SANTOLI
Centralized logging with the ELK Stack
Elasticsearch is a distributed,
open source search and analytics
engine.
Logstash is a flexible, open source
data collection, enrichment, and
transportation pipeline.
Kibana is an open source data
visualization platform to
interact with your data.
MILAN 18/19.11.2015 - GIULIO SANTOLI
SOME
MORE
EXAMPLES
MILAN 18/19.11.2015 - GIULIO SANTOLI
A Picture is Worth a Thousand Words
Good visualization helps to
communicate and deliver
insights effectively.
http://techblog.netflix.com/2014/01/improving-netflixs-operational.html
MILAN 18/19.11.2015 - GIULIO SANTOLI
Predictive Auto-Scaling at Netflix
http://techblog.netflix.com/2013/11/scryer-netflixs-predictive-auto-scaling.html
MILAN 18/19.11.2015 - GIULIO SANTOLI
LAB: Scenario 9
MILAN 18/19.11.2015 - GIULIO SANTOLI
1. Here comes the Unicorns
2. Monolith v.s. Microservices
3. Services for the Microservices:
a. Service Discovery
b. Load Balacing
c. Fault Tolerance
d. Edge Server and Data Aggregation
4. The Death Star strikes back
5. Dockerize it
6. Centralized Logging and Monitoring
7. Running on Cloud Foundry
8. Continous Delivery, DevOps and NoOps
9. What’s next?
Agenda
MILAN 18/19.11.2015 - GIULIO SANTOLI
Cloud Foundry is an open source project platform-as-
a-service, making it faster and easier to build, test,
deploy, and scale applications
Introducing Cloud Foundry
MILAN 18/19.11.2015 - GIULIO SANTOLI
IaaS
Cloud Foundry BOSH
Cloud Foundry
Agent
Agent
Droplet Execution Agent (DEA)
Container
Runtime
Application
Container
Runtime
Application
Cloud
Foundry
Underlayng
Infrastructure
Apps
MILAN 18/19.11.2015 - GIULIO SANTOLI
Cloud Foundry distributes the
containers among the DEA
cells
cell1 cell2 cell3 cell4
When a container crashes, it’s
automatically restarted
When a cell crashes, it’s
workload is distributed among
the other cells
cell1 cell2 cell3 cell4
cell1 cell2 cell3 cell4
Container orchestration in Cloud Foundry
time
MILAN 18/19.11.2015 - GIULIO SANTOLI
Lattice: a minimal Cloud Foundry
MILAN 18/19.11.2015 - GIULIO SANTOLI
LAB: Scenario 10
MILAN 18/19.11.2015 - GIULIO SANTOLI
1. Here comes the Unicorns
2. Monolith v.s. Microservices
3. Services for the Microservices:
a. Service Discovery
b. Load Balacing
c. Fault Tolerance
d. Edge Server and Data Aggregation
4. The Death Star strikes back
5. Dockerize it
6. Centralized Logging and Monitoring
7. Running on Cloud Foundry
8. Continous Delivery, DevOps and NoOps
9. What’s next?
Agenda
MILAN 18/19.11.2015 - GIULIO SANTOLI
“In software, when something is painful, the
way to reduce the pain is to do it more
frequently, not less.”
David Farley
MILAN 18/19.11.2015 - GIULIO SANTOLI
Continuous Delivery vs Continuous Deployment
http://blog.crisp.se/2013/02/05/yassalsundman/continuous-delivery-vs-continuous-deployment
MILAN 18/19.11.2015 - GIULIO SANTOLI
Deployment Techniques
minimize downtime
minimize risks
increase feedback
http://techblog.netflix.com/2013/08/deploying-netflix-api.html
MILAN 18/19.11.2015 - GIULIO SANTOLI
APP v1
Blue-Green Deployment
APP v2
Router
http://martinfowler.com/bliki/BlueGreenDeployment.html
APP v1 APP v2
Router
MILAN 18/19.11.2015 - GIULIO SANTOLI
APP v1
Red-Black Deployment
& Canary Deployment
APP v2
Router
http://techblog.netflix.com/2013/08/deploying-netflix-api.html
http://martinfowler.com/bliki/CanaryRelease.html
APP v1 APP v2
Router
APP v1 APP v2
Router
MILAN 18/19.11.2015 - GIULIO SANTOLI
LAB: Scenario 11
MILAN 18/19.11.2015 - GIULIO SANTOLI
“Until code is in production, no value is
actually being generated”
Gene Kim
MILAN 18/19.11.2015 - GIULIO SANTOLI
Ops
from to NoOpsDevOps
Operations
DevOps
http://blogs.forrester.com/mike_gualtieri/11-02-07-i_dont_want_devops_i_want_noops
MILAN 18/19.11.2015 - GIULIO SANTOLI
“You Build It, You Run It”
Werner Vogels (Amazon)
MILAN 18/19.11.2015 - GIULIO SANTOLI
Continous Delivery at Neflix
http://techblog.netflix.com/2013/08/deploying-netflix-api.html
MILAN 18/19.11.2015 - GIULIO SANTOLI
“Run longevity tests. It’s the only way to
catch longevity bugs.”
Michael T. Nygard
MILAN 18/19.11.2015 - GIULIO SANTOLI
Failures happen, and they
inevitably happen when least
desired.
Simian Army consists of
services (Monkeys) in the
cloud for generating various
kinds of failures, detecting
abnormal conditions, and
testing our ability to survive
them. The goal is to keep our
cloud safe, secure, and highly
available
http://techblog.netflix.com/2011/07/netflix-simian-army.html
MILAN 18/19.11.2015 - GIULIO SANTOLI
1. Here comes the Unicorns
2. Monolith v.s. Microservices
3. Services for the Microservices:
a. Service Discovery
b. Load Balacing
c. Fault Tolerance
d. Edge Server and Data Aggregation
4. The Death Star strikes back
5. Dockerize it
6. Centralized Logging and Monitoring
7. Running on Cloud Foundry
8. Continous Delivery, DevOps and NoOps
9. What’s next?
Agenda
MILAN 18/19.11.2015 - GIULIO SANTOLI
What’s ?
MILAN 18/19.11.2015 - GIULIO SANTOLI
https://blog.codecentric.de/en/2014/10/log-management-spring-boot-applications-logstash-elastichsearch-kibana
Log Management for Spring Boot Applications with Logstash, Elasticsearch
and Kibana
http://callistaenterprise.se/blogg/teknik/2015/05/20/blog-series-building-microservices
Blog Series - Building Microservices
https://spring.io/blog/2015/01/20/microservice-registration-and-discovery-with-spring-cloud-and-netflix-s-eureka
Microservice Registration and Discovery with Spring Cloud and Netflix's
Eureka
http://ryanjbaxter.com/2015/07/15/using-microservices-to-build-cloud-native-applications-part-1
Using Microservices To Build Cloud Native Applications
Very good tutorials
MILAN 18/19.11.2015 - GIULIO SANTOLI
https://www.youtube.com/watch?v=6wvVANQ6EJ8
Videos
Spring Cloud at Netflix: Jon Schneider and Taylor Wicksell (Netflix)
https://www.youtube.com/watch?v=2YqiSPjIBqQ
Monitoring and Simulating Microservices: Adrian Cockcroft (Battery Ventures)
MILAN 18/19.11.2015 - GIULIO SANTOLI
More Books
MILAN 18/19.11.2015 - GIULIO SANTOLI
“Beware the distributed monolith.”
James Lewis
(ThoughWorks)

Contenu connexe

Tendances

Tendances (20)

Introduction to microservices
Introduction to microservicesIntroduction to microservices
Introduction to microservices
 
DevSecOps in the Cloud from the Lens of a Well-Architected Framework.pptx
DevSecOps in the Cloud from the Lens of a  Well-Architected Framework.pptxDevSecOps in the Cloud from the Lens of a  Well-Architected Framework.pptx
DevSecOps in the Cloud from the Lens of a Well-Architected Framework.pptx
 
Microservices architecture
Microservices architectureMicroservices architecture
Microservices architecture
 
Microservice architecture
Microservice architectureMicroservice architecture
Microservice architecture
 
Introducing OpenAPI Version 3.1
Introducing OpenAPI Version 3.1Introducing OpenAPI Version 3.1
Introducing OpenAPI Version 3.1
 
Introduction to Microservices
Introduction to MicroservicesIntroduction to Microservices
Introduction to Microservices
 
Introduction to Microservices
Introduction to MicroservicesIntroduction to Microservices
Introduction to Microservices
 
Big Data Redis Mongodb Dynamodb Sharding
Big Data Redis Mongodb Dynamodb ShardingBig Data Redis Mongodb Dynamodb Sharding
Big Data Redis Mongodb Dynamodb Sharding
 
Micro services Architecture
Micro services ArchitectureMicro services Architecture
Micro services Architecture
 
The Complete Guide to Service Mesh
The Complete Guide to Service MeshThe Complete Guide to Service Mesh
The Complete Guide to Service Mesh
 
Microservices
MicroservicesMicroservices
Microservices
 
Microservices Architecture - Bangkok 2018
Microservices Architecture - Bangkok 2018Microservices Architecture - Bangkok 2018
Microservices Architecture - Bangkok 2018
 
Microservices Architecture - Cloud Native Apps
Microservices Architecture - Cloud Native AppsMicroservices Architecture - Cloud Native Apps
Microservices Architecture - Cloud Native Apps
 
Service mesh
Service meshService mesh
Service mesh
 
Observability For Modern Applications
Observability For Modern ApplicationsObservability For Modern Applications
Observability For Modern Applications
 
A Pattern Language for Microservices
A Pattern Language for MicroservicesA Pattern Language for Microservices
A Pattern Language for Microservices
 
Openshift Container Platform
Openshift Container PlatformOpenshift Container Platform
Openshift Container Platform
 
Azure Application Modernization
Azure Application ModernizationAzure Application Modernization
Azure Application Modernization
 
Observability
ObservabilityObservability
Observability
 
DevOps-as-a-Service: Towards Automating the Automation
DevOps-as-a-Service: Towards Automating the AutomationDevOps-as-a-Service: Towards Automating the Automation
DevOps-as-a-Service: Towards Automating the Automation
 

Similaire à Microservices Architectures: Become a Unicorn like Netflix, Twitter and Hailo

Similaire à Microservices Architectures: Become a Unicorn like Netflix, Twitter and Hailo (20)

Building The Right Network
Building The Right NetworkBuilding The Right Network
Building The Right Network
 
3° Fiware Overview-Chile
3° Fiware Overview-Chile3° Fiware Overview-Chile
3° Fiware Overview-Chile
 
App Mashup GE: WireCloud - Startup Weekend
App Mashup GE: WireCloud - Startup WeekendApp Mashup GE: WireCloud - Startup Weekend
App Mashup GE: WireCloud - Startup Weekend
 
WSO2-Yenlo Integration Summit Stuttgart 15 may 2019
WSO2-Yenlo Integration Summit Stuttgart 15 may 2019WSO2-Yenlo Integration Summit Stuttgart 15 may 2019
WSO2-Yenlo Integration Summit Stuttgart 15 may 2019
 
Building the Future with Technology: The Next Five Years
Building the Future with Technology: The Next Five Years Building the Future with Technology: The Next Five Years
Building the Future with Technology: The Next Five Years
 
건설 스타트업과 오픈소스
건설 스타트업과 오픈소스건설 스타트업과 오픈소스
건설 스타트업과 오픈소스
 
What is Cloud Native and why should I care
What is Cloud Native and why should I careWhat is Cloud Native and why should I care
What is Cloud Native and why should I care
 
Cisco at v mworld 2015 shipped-vmworld
Cisco at v mworld 2015 shipped-vmworldCisco at v mworld 2015 shipped-vmworld
Cisco at v mworld 2015 shipped-vmworld
 
Gluecon 2015 Recap
Gluecon 2015 RecapGluecon 2015 Recap
Gluecon 2015 Recap
 
FastCLOUD ovirt meetup
FastCLOUD ovirt meetupFastCLOUD ovirt meetup
FastCLOUD ovirt meetup
 
Snap4City November 2019 Course: Smart City IOT platform installation, deploy,...
Snap4City November 2019 Course: Smart City IOT platform installation, deploy,...Snap4City November 2019 Course: Smart City IOT platform installation, deploy,...
Snap4City November 2019 Course: Smart City IOT platform installation, deploy,...
 
Micro Front-End & Microservices - Plansoft
Micro Front-End & Microservices - PlansoftMicro Front-End & Microservices - Plansoft
Micro Front-End & Microservices - Plansoft
 
Continuous Delivery to the Cloud: Automate Thru Production with CI + Spinnaker
Continuous Delivery to the Cloud: Automate Thru Production with CI + SpinnakerContinuous Delivery to the Cloud: Automate Thru Production with CI + Spinnaker
Continuous Delivery to the Cloud: Automate Thru Production with CI + Spinnaker
 
Telefonica i pv6_smartcity
Telefonica i pv6_smartcityTelefonica i pv6_smartcity
Telefonica i pv6_smartcity
 
Codemotion Milano 2014 - IBM Internet of Things - Giulio Santoli
Codemotion Milano 2014 - IBM Internet of Things - Giulio SantoliCodemotion Milano 2014 - IBM Internet of Things - Giulio Santoli
Codemotion Milano 2014 - IBM Internet of Things - Giulio Santoli
 
Presentation capturing the cloud opportunity
Presentation   capturing the cloud opportunityPresentation   capturing the cloud opportunity
Presentation capturing the cloud opportunity
 
Ramin elahi fog_computing_ecosystem_final_dec22_updated
Ramin elahi fog_computing_ecosystem_final_dec22_updatedRamin elahi fog_computing_ecosystem_final_dec22_updated
Ramin elahi fog_computing_ecosystem_final_dec22_updated
 
VIATRA 3: A reactive model transformation platform
VIATRA 3: A reactive model transformation platformVIATRA 3: A reactive model transformation platform
VIATRA 3: A reactive model transformation platform
 
Snap4City November 2019 Course: Smart City IOT development of IOT Applications
Snap4City November 2019 Course: Smart City IOT development of IOT ApplicationsSnap4City November 2019 Course: Smart City IOT development of IOT Applications
Snap4City November 2019 Course: Smart City IOT development of IOT Applications
 
Multi-Cloud Microservices - DevOps Summit Silicon Valley 2015
Multi-Cloud Microservices - DevOps Summit Silicon Valley 2015Multi-Cloud Microservices - DevOps Summit Silicon Valley 2015
Multi-Cloud Microservices - DevOps Summit Silicon Valley 2015
 

Plus de gjuljo

InterConnect2015 ICP3222 A MDD Approach to Agile Development of IoT Applications
InterConnect2015 ICP3222 A MDD Approach to Agile Development of IoT ApplicationsInterConnect2015 ICP3222 A MDD Approach to Agile Development of IoT Applications
InterConnect2015 ICP3222 A MDD Approach to Agile Development of IoT Applications
gjuljo
 

Plus de gjuljo (20)

Azure deployments and ARM templates
Azure deployments and ARM templatesAzure deployments and ARM templates
Azure deployments and ARM templates
 
Azure Monitoring Overview
Azure Monitoring OverviewAzure Monitoring Overview
Azure Monitoring Overview
 
Going serverless with azure functions
Going serverless with azure functionsGoing serverless with azure functions
Going serverless with azure functions
 
Microsoft Azure Technical Overview
Microsoft Azure Technical OverviewMicrosoft Azure Technical Overview
Microsoft Azure Technical Overview
 
Chatbot development workshop with the Microsoft Bot Framework
Chatbot development workshop with the Microsoft Bot FrameworkChatbot development workshop with the Microsoft Bot Framework
Chatbot development workshop with the Microsoft Bot Framework
 
Bot Revolution lab at Codemotion Milan 2016
Bot Revolution lab at Codemotion Milan 2016Bot Revolution lab at Codemotion Milan 2016
Bot Revolution lab at Codemotion Milan 2016
 
DevOps in the Cloud with Microsoft Azure
DevOps in the Cloud with Microsoft AzureDevOps in the Cloud with Microsoft Azure
DevOps in the Cloud with Microsoft Azure
 
Microservices Architecture: Labs
Microservices Architecture: LabsMicroservices Architecture: Labs
Microservices Architecture: Labs
 
IBM Business Connect 2015 - Bluemix Overview
IBM Business Connect 2015 - Bluemix OverviewIBM Business Connect 2015 - Bluemix Overview
IBM Business Connect 2015 - Bluemix Overview
 
FORUM PA 2015 - Microservices with IBM Bluemix
FORUM PA 2015 - Microservices with IBM BluemixFORUM PA 2015 - Microservices with IBM Bluemix
FORUM PA 2015 - Microservices with IBM Bluemix
 
IBM Bluemix Introdution for Hackathons
IBM Bluemix Introdution for HackathonsIBM Bluemix Introdution for Hackathons
IBM Bluemix Introdution for Hackathons
 
IBM Bluemix Hackathon Accelerator
IBM Bluemix Hackathon AcceleratorIBM Bluemix Hackathon Accelerator
IBM Bluemix Hackathon Accelerator
 
IBM Bluemix and the Internet of Things - Workshop
IBM Bluemix and the Internet of Things - WorkshopIBM Bluemix and the Internet of Things - Workshop
IBM Bluemix and the Internet of Things - Workshop
 
Codemotion Rome 2015 IBM Bluemix and Docker
Codemotion Rome 2015 IBM Bluemix and DockerCodemotion Rome 2015 IBM Bluemix and Docker
Codemotion Rome 2015 IBM Bluemix and Docker
 
Codemotion Rome 2015 Bluemix Lab Tutorial
Codemotion Rome 2015 Bluemix Lab TutorialCodemotion Rome 2015 Bluemix Lab Tutorial
Codemotion Rome 2015 Bluemix Lab Tutorial
 
Codemotion Rome 2015 - Microservices with IBM Bluemix and DevOps Services
Codemotion Rome 2015 - Microservices with IBM Bluemix and DevOps ServicesCodemotion Rome 2015 - Microservices with IBM Bluemix and DevOps Services
Codemotion Rome 2015 - Microservices with IBM Bluemix and DevOps Services
 
Hybrid Cloud with IBM Bluemix, Docker and Open Stack
Hybrid Cloud with IBM Bluemix, Docker and Open StackHybrid Cloud with IBM Bluemix, Docker and Open Stack
Hybrid Cloud with IBM Bluemix, Docker and Open Stack
 
InterConnect2015 ICP3222 A MDD Approach to Agile Development of IoT Applications
InterConnect2015 ICP3222 A MDD Approach to Agile Development of IoT ApplicationsInterConnect2015 ICP3222 A MDD Approach to Agile Development of IoT Applications
InterConnect2015 ICP3222 A MDD Approach to Agile Development of IoT Applications
 
IBM Bluemix Tech Meetup 18-02-2015
IBM Bluemix Tech Meetup 18-02-2015IBM Bluemix Tech Meetup 18-02-2015
IBM Bluemix Tech Meetup 18-02-2015
 
IBM Bluemix saves the game
IBM Bluemix saves the gameIBM Bluemix saves the game
IBM Bluemix saves the game
 

Dernier

%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
masabamasaba
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
masabamasaba
 
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
VictoriaMetrics
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
VictorSzoltysek
 

Dernier (20)

W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto
 
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students
 
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionIntroducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
 
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
 
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
 
Architecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastArchitecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the past
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
 
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfPayment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
 
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
 
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
 
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With SimplicityWSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
 

Microservices Architectures: Become a Unicorn like Netflix, Twitter and Hailo

  • 1. MILAN 18/19.11.2015 Microservices Architectures: Become a Unicorn and create a project like Netflix, Twitter or Hailo Giulio Santoli - @gjuljo
  • 2. MILAN 18/19.11.2015 - GIULIO SANTOLI 1. Here comes the Unicorns 2. Monolith v.s. Microservices 3. Services for the Microservices: a. Service Discovery b. Load Balancing c. Fault Tolerance d. Edge Server and Data Aggregation 4. The Death Star strikes back 5. Dockerize it 6. Centralized Logging and Monitoring 7. Running on Cloud Foundry 8. Continous Delivery, DevOps and NoOps 9. What’s next? Agenda
  • 3. MILAN 18/19.11.2015 - GIULIO SANTOLI 1. Here comes the Unicorns 2. Monolith v.s. Microservices 3. Services for the Microservices: a. Service Discovery b. Load Balancing c. Fault Tolerance d. Edge Server and Data Aggregation 4. The Death Star strikes back 5. Dockerize it 6. Centralized Logging and Monitoring 7. Running on Cloud Foundry 8. Continous Delivery, DevOps and NoOps 9. What’s next? Agenda
  • 4. MILAN 18/19.11.2015 - GIULIO SANTOLI Aileen Lee, the founder of Cowboy Ventures, in 2013 chose the word unicorn to describe the winner of all winners among software start-ups, and typically valued at $1 billion or more by investors. Are Unicorns Real? http://www.nytimes.com/2015/08/24/technology/the-unicorn-club-now-admitting-new-members.html http://bits.blogs.nytimes.com/2015/07/05/unicorns-a-fitting-word-for-its-time-and-place
  • 5. MILAN 18/19.11.2015 - GIULIO SANTOLI The Increasingly Crowded Unicorn Club (since 2011)
  • 6. MILAN 18/19.11.2015 - GIULIO SANTOLI The Periodic Table of Unicors A breakdown of companies valued at $1B+ by sector (6/11/2015)
  • 7. MILAN 18/19.11.2015 - GIULIO SANTOLI What do these Unicorns have in common? (among others) An aggresive adoption of the microservices architecture approach.
  • 8. MILAN 18/19.11.2015 - GIULIO SANTOLI 1. Here comes the Unicorns 2. Monolith v.s. Microservices 3. Services for the Microservices: a. Service Discovery b. Load Balancing c. Fault Tolerance d. Edge Server and Data Aggregation 4. The Death Star strikes back 5. Dockerize it 6. Centralized Logging and Monitoring 7. Running on Cloud Foundry 8. Continous Delivery, DevOps and NoOps 9. What’s next? Agenda
  • 9. MILAN 18/19.11.2015 - GIULIO SANTOLI Monolith or Microservices?
  • 10. MILAN 18/19.11.2015 - GIULIO SANTOLI “Microservices are tiny apps talking with uniform interface installed as well- behaved OS services.” lightweight, small footprint, follow Single Responsibility Pattern RESTful. decoupled, scalable, discoverable. self-contained, run with a single one-liner command by Eduard Sizovs (www.slideshare.net/eduardsi)
  • 11. MILAN 18/19.11.2015 - GIULIO SANTOLI “Loosely coupled service oriented architecture with bounded contexts” Adrian Cockcroft @adrianco (Battery Ventures) What is a Microservice Architecture?
  • 12. MILAN 18/19.11.2015 - GIULIO SANTOLI http://ir.netflix.com/ Netflix is the world’s leading Internet television network with over 69 million members in over 60 countries enjoying more than 100 million hours of TV shows and movies per day, including original series, documentaries and feature films. Members can watch as much as they want, anytime, anywhere, on nearly any Internet-connected screen.
  • 13. MILAN 18/19.11.2015 - GIULIO SANTOLI Netflix moved from a Monolithic Architecture to Microservices, building a set of infrastructure services, then open-sourced as Netflix OSS. https://netflix.github.io http://cloud.spring.io/spring-cloud-netflix/spring-cloud-netflix.html
  • 14. MILAN 18/19.11.2015 - GIULIO SANTOLI Be aware! It’s not just a matter of
  • 15. MILAN 18/19.11.2015 - GIULIO SANTOLI Practices Architectures Organizations
  • 16. MILAN 18/19.11.2015 - GIULIO SANTOLI “Organizations which design systems ... are constrained to produce designs which are copies of the communication structures of these organizations” Conway, Melvin E. (1968) Conway’s Law
  • 17. MILAN 18/19.11.2015 - GIULIO SANTOLI Siloed functional teams lead to Siloed application architectures http://martinfowler.com/articles/microservices.html
  • 18. MILAN 18/19.11.2015 - GIULIO SANTOLI Cross-functional teams lead to capability-oriented architectures http://martinfowler.com/articles/microservices.html
  • 19. MILAN 18/19.11.2015 - GIULIO SANTOLI Microservices v.s. Monolithic Scalability http://martinfowler.com/articles/microservices.html
  • 20. MILAN 18/19.11.2015 - GIULIO SANTOLI Microservices v.s. Monolithic Database Polyglotism http://martinfowler.com/articles/microservices.html
  • 21. MILAN 18/19.11.2015 - GIULIO SANTOLI Microservices v.s. Monolithic Orchestration v.s. Choreography
  • 22. MILAN 18/19.11.2015 - GIULIO SANTOLI in summary... microservices should be: - cheap to replace - quick to scale - withstand failure and should allow you to go as “fast as possible” James Lewis (ThoughWorks)
  • 23. MILAN 18/19.11.2015 - GIULIO SANTOLI How Big is Micro?
  • 24. MILAN 18/19.11.2015 - GIULIO SANTOLI Rules of Thumb 2-Pizza Team Rule (Jeff Bezos, Amazon) No more than 300 lines of code Focus on what Matters Adopt DDD Bounded Contexts
  • 25. MILAN 18/19.11.2015 - GIULIO SANTOLI “The heart of software is its ability to solve domain-related problems for its user.” Eric Evans
  • 26. MILAN 18/19.11.2015 - GIULIO SANTOLI Is this just another hype?
  • 27. MILAN 18/19.11.2015 - GIULIO SANTOLI 12-factor app cloud microservices devops agile
  • 28. MILAN 18/19.11.2015 - GIULIO SANTOLI I. Codebase One codebase tracked in revision control, many deploys II. Dependencies Explicitly declare and isolate dependencies III. Configuration Store configuration in the environment IV. Backing Services Treat backing services as attached resources V. Build, release, run Strictly separate build and run stages VI. Processes Execute the app as one or more stateless processes VII. Port binding Export services via port binding VIII. Concurrency Scale out via the process model IX. Disposability Maximize robustness with fast startup and graceful shutdown X. Dev/prod parity Keep development, staging, &production as similar as possible XI. Logs Treat logs as event streams XII. Admin processes Run admin/management tasks as one-off processes 12-Factor Applications (http://12factor.net) The twelve-factor app is a methodology for building cloud native applications.
  • 29. MILAN 18/19.11.2015 - GIULIO SANTOLI Spring Boot makes it easy to create stand-alone, production-grade Spring based Applications that you can "just run". Spring Boot & Spring Cloud Netflix @Controller class ThisWillActuallyRun { @RequestMapping("/") @ResponseBody String home() { return "Hello World!" } } app.groovy $> spring run app.groovy
  • 30. MILAN 18/19.11.2015 - GIULIO SANTOLI LAB: Scenario 1
  • 31. MILAN 18/19.11.2015 - GIULIO SANTOLI 1. Here comes the Unicorns 2. Monolith v.s. Microservices 3. Services for the Microservices: a. Service Discovery b. Load Balancing c. Fault Tolerance d. Edge Server and Data Aggregation 4. The Death Star strikes back 5. Dockerize it 6. Centralized Logging and Monitoring 7. Running on Cloud Foundry 8. Continous Delivery, DevOps and NoOps 9. What’s next? Agenda
  • 32. MILAN 18/19.11.2015 - GIULIO SANTOLI Service A Service B (instance1) Service B (instance2) Service C ?? Service Discovery
  • 33. MILAN 18/19.11.2015 - GIULIO SANTOLI Service A Service B (instance1) Service B (instance2) Service C E U R E K A E U R E K A E U R E K A DISCOVERY SERVER (EUREKA) Client-Side Service Discovery (Netflix) E U R E K A
  • 34. MILAN 18/19.11.2015 - GIULIO SANTOLI Service A Service B (instance1) Service B (instance2) Service C N G I N X N G I N X Server-Side Service Discovery DISCOVERY SERVER (CONSUL)
  • 35. MILAN 18/19.11.2015 - GIULIO SANTOLI LAB: Scenario 2
  • 36. MILAN 18/19.11.2015 - GIULIO SANTOLI 1. Here comes the Unicorns 2. Monolith v.s. Microservices 3. Services for the Microservices: a. Service Discovery b. Load Balancing c. Fault Tolerance d. Edge Server and Data Aggregation 4. The Death Star strikes back 5. Dockerize it 6. Centralized Logging and Monitoring 7. Running on Cloud Foundry 8. Continous Delivery, DevOps and NoOps 9. What’s next? Agenda
  • 37. MILAN 18/19.11.2015 - GIULIO SANTOLI Service A Service B (instance1) Service B (instance2) Service C N G I N X N G I N X Load Balancing: DNS + Proxy DISCOVERY SERVER (CONSUL)
  • 38. MILAN 18/19.11.2015 - GIULIO SANTOLI Service A Service B (instance1) Service B (instance2) Service C R I B B O N E U R E K A E U R E K A E U R E K A DISCOVERY SERVER (EUREKA) Client-Side Load Balancing (Neflix) E U R E K A
  • 39. MILAN 18/19.11.2015 - GIULIO SANTOLI Discovery and Configuration Technolgies Consul is strongly consistent datastore that uses gossip to form dynamic clusters. etcd is a distributed, consistent key-value store for shared configuration and service discovery. ZooKeeper is a centralized service for maintaining configuration information and naming. https://www.nginx.com/blog/service-discovery-in-a-microservices-architecture http://technologyconversations.com/2015/09/08/service-discovery-zookeeper-vs-etcd-vs-consul/
  • 40. MILAN 18/19.11.2015 - GIULIO SANTOLI LAB: Scenario 3
  • 41. MILAN 18/19.11.2015 - GIULIO SANTOLI 1. Here comes the Unicorns 2. Monolith v.s. Microservices 3. Services for the Microservices: a. Service Discovery b. Load Balacing c. Fault Tolerance d. Edge Server and Data Aggregation 4. The Death Star strikes back 5. Dockerize it 6. Centralized Logging and Monitoring 7. Running on Cloud Foundry 8. Continous Delivery, DevOps and NoOps 9. What’s next? Agenda
  • 42. MILAN 18/19.11.2015 - GIULIO SANTOLI The Exception that Grounded an Aireline Chapter 2
  • 43. MILAN 18/19.11.2015 - GIULIO SANTOLI “Hope is not a design method.” Michael T. Nygard
  • 44. MILAN 18/19.11.2015 - GIULIO SANTOLI Especially in a microservices architecture, an application needs to access one or more services over the network.
  • 45. MILAN 18/19.11.2015 - GIULIO SANTOLI “Every integration point will eventually fail in some way” Michael T. Nygard
  • 46. MILAN 18/19.11.2015 - GIULIO SANTOLI Each dependency is isolated from one other, restricted in the resources it can saturate when latency occurs, and covered in fallback logic that decides what response to make when any type of failure occurs in the dependency
  • 47. MILAN 18/19.11.2015 - GIULIO SANTOLI “Generating a slow response is worse than refusing a connection or returning an error” Michael T. Nygard
  • 48. MILAN 18/19.11.2015 - GIULIO SANTOLI Each dependency is isolated from one other, restricted in the resources it can saturate when latency occurs, and covered in fallback logic that decides what response to make when any type of failure occurs in the dependency
  • 49. MILAN 18/19.11.2015 - GIULIO SANTOLI https://github.com/Netflix/Hystrix/wiki Engineer the whole system for resilience
  • 50. MILAN 18/19.11.2015 - GIULIO SANTOLI Each dependency is isolated from one other, restricted in the resources it can saturate when latency occurs, and covered in fallback logic that decides what response to make when any type of failure occurs in the dependency. Hystrix Helps
  • 51. MILAN 18/19.11.2015 - GIULIO SANTOLI http://django-notes.blogspot.it/2012/02/release-it-design-and-deploy-production.html Circuit Breaker Statechart
  • 52. MILAN 18/19.11.2015 - GIULIO SANTOLI https://github.com/Netflix/Hystrix/wiki/How-it-Works Hystrix Circuit Breaker Flow Chart
  • 53. MILAN 18/19.11.2015 - GIULIO SANTOLI Hystrix Thread Pools and Semaphores
  • 54. MILAN 18/19.11.2015 - GIULIO SANTOLI LAB: Scenario 4
  • 55. MILAN 18/19.11.2015 - GIULIO SANTOLI 1. Here comes the Unicorns 2. Monolith v.s. Microservices 3. Services for the Microservices: a. Service Discovery b. Load Balacing c. Fault Tolerance d. Edge Server and Data Aggregation 4. The Death Star strikes back 5. Dockerize it 6. Centralized Logging and Monitoring 7. Running on Cloud Foundry 8. Continous Delivery, DevOps and NoOps 9. What’s next? Agenda
  • 56. MILAN 18/19.11.2015 - GIULIO SANTOLI Hystrix Dashboard
  • 57. MILAN 18/19.11.2015 - GIULIO SANTOLI
  • 58. MILAN 18/19.11.2015 - GIULIO SANTOLI LAB: Scenario 5
  • 59. MILAN 18/19.11.2015 - GIULIO SANTOLI LAB: Scenario 6
  • 60. MILAN 18/19.11.2015 - GIULIO SANTOLI 1. Here comes the Unicorns 2. Monolith v.s. Microservices 3. Services for the Microservices: a. Service Discovery b. Load Balacing c. Fault Tolerance d. Edge Server and Data Aggregation 4. The Death Star strikes back 5. Dockerize it 6. Centralized Logging and Monitoring 7. Running on Cloud Foundry 8. Continous Delivery, DevOps and NoOps 9. What’s next? Agenda
  • 61. MILAN 18/19.11.2015 - GIULIO SANTOLI Monolith or Moon-olith?
  • 62. MILAN 18/19.11.2015 - GIULIO SANTOLI MEMBERSHIP SERVICE RECOMMENDATIONS SERVICE ZUUL (EDGE SERVER) EUREKA CLIENT RIBBON + HYSTRIX EUREKA CLIENT RIBBON + HYSTRIX MEMBERSHIP SERVICE EUREKA CLIENT EUREKA SERVER (DISCOVERY) HYSTRIX DASHBOARD (MONITOR) TURBINE (AGGREGATION) EUREKA SERVER (DISCOVERY) ARCHAIUS (CONFIG) ATLAS (METRICS) Main Netflix Components SPECTATOR
  • 63. MILAN 18/19.11.2015 - GIULIO SANTOLI Netflix Architecture by Adrian Cockcroft Simplified Architecture Actual Architecture https://github.com/adrianco/spigo
  • 64. MILAN 18/19.11.2015 - GIULIO SANTOLI Configuraiton Discovery Routing Observability Archaius Eureka Zuul, Ribbon Hystrix Decider Finagle, Zookeper Finagle, Netty Zipkin Decider Finagle, Zookeper Finagle, Akka Zipkin Netflix Twitter Gilt http://www.slideshare.net/adriancockcroft/monitorama-please-no-more Technology Comparison
  • 65. MILAN 18/19.11.2015 - GIULIO SANTOLI Finagle @Twitter Finagle is an extensible RPC system for the JVM, used to construct high-concurrency servers. Finagle implements uniform client and server APIs for several protocols, and is designed for high performance and concurrency. Finagle is written in Scala, but provides both Scala and Java idiomatic APIs. https://blog.twitter.com/2011/finagle-a-protocol-agnostic-rpc-system
  • 66. MILAN 18/19.11.2015 - GIULIO SANTOLI Zipkin @Twitter https://twitter.github.io/zipkin/Architecture.html https://github.com/openzipkin/zipkin Zipkin is a distributed tracing system. It helps gather timing data needed to troubleshoot latency problems in microservice architectures.
  • 67. MILAN 18/19.11.2015 - GIULIO SANTOLI Distributed Tracing with Zipkin
  • 68. MILAN 18/19.11.2015 - GIULIO SANTOLI 1. Here comes the Unicorns 2. Monolith v.s. Microservices 3. Services for the Microservices: a. Service Discovery b. Load Balacing c. Fault Tolerance d. Edge Server and Data Aggregation 4. The Death Star strikes back 5. Dockerize it 6. Centralized Logging and Monitoring 7. Running on Cloud Foundry 8. Continous Delivery, DevOps and NoOps 9. What’s next? Agenda
  • 69. MILAN 18/19.11.2015 - GIULIO SANTOLI “Docker is an open platform for developers and system admins to build, ship, and run distributed applications.” Introducing Docker
  • 70. MILAN 18/19.11.2015 - GIULIO SANTOLI “Docker runs as an isolated process in userspace on the host operating system, sharing the kernel with other containers. Thus, it enjoys the resource isolation and allocation benefits of VMs but is much more portable and efficient. ” container isolation content processes user network id cgroups "make me a isolated context" "put this in it" "then run this" = + + How does it work?
  • 71. MILAN 18/19.11.2015 - GIULIO SANTOLI Filesystem Base OS / Kernel Fedora Ubuntu tomcat tomcatliberty CNTR1 CNTR2 CNTR3 CNTR4 app1 app2 app4app3 Layer Layer Layer Layers allow for reuse, more containers per host and faster start/re-start time. Read-only layers allow portability and efficiency. New files and edits are visible to current and above layers. Docker uses a copy-on-write (union) filesystem. Docker is so lightweight because of the reusable layers in Docker images. How is this different from Virtual Machines?
  • 72. MILAN 18/19.11.2015 - GIULIO SANTOLI Docker Machine enables any host, whether a laptop, server, VM or remote cloud instance, to run Docker apps. Docker Compose is a tool for defining and running multi-container applications with by using a single declarative file (i.e. docker-compose.yml). At the core of the Docker platform is Docker Engine, a lightweight runtime that builds and runs your containers.
  • 73. MILAN 18/19.11.2015 - GIULIO SANTOLI Managing Docker Clusters A = Node Clusters B = Nodes C = Containers D = Links E = Volumes F = Services Tutum is designed to ease the management of using Docker. Tutum offers a single platform to help with automating deployment, scaling, linking containers that run on different cloud providers, achieving redundancy and monitoring the deployment.
  • 74. MILAN 18/19.11.2015 - GIULIO SANTOLI LAB: Scenario 7
  • 75. MILAN 18/19.11.2015 - GIULIO SANTOLI LAB: Scenario 8
  • 76. MILAN 18/19.11.2015 - GIULIO SANTOLI 1. Here comes the Unicorns 2. Monolith v.s. Microservices 3. Services for the Microservices: a. Service Discovery b. Load Balacing c. Fault Tolerance d. Edge Server and Data Aggregation 4. The Death Star strikes back 5. Dockerize it 6. Centralized Logging and Monitoring 7. Running on Cloud Foundry 8. Continous Delivery, DevOps and NoOps 9. What’s next? Agenda
  • 77. MILAN 18/19.11.2015 - GIULIO SANTOLI “If you can’t measure it, you can’t improve it.” Lord Kelvin
  • 78. MILAN 18/19.11.2015 - GIULIO SANTOLI Centralized logging with the ELK Stack Elasticsearch is a distributed, open source search and analytics engine. Logstash is a flexible, open source data collection, enrichment, and transportation pipeline. Kibana is an open source data visualization platform to interact with your data.
  • 79. MILAN 18/19.11.2015 - GIULIO SANTOLI SOME MORE EXAMPLES
  • 80. MILAN 18/19.11.2015 - GIULIO SANTOLI A Picture is Worth a Thousand Words Good visualization helps to communicate and deliver insights effectively. http://techblog.netflix.com/2014/01/improving-netflixs-operational.html
  • 81. MILAN 18/19.11.2015 - GIULIO SANTOLI Predictive Auto-Scaling at Netflix http://techblog.netflix.com/2013/11/scryer-netflixs-predictive-auto-scaling.html
  • 82. MILAN 18/19.11.2015 - GIULIO SANTOLI LAB: Scenario 9
  • 83. MILAN 18/19.11.2015 - GIULIO SANTOLI 1. Here comes the Unicorns 2. Monolith v.s. Microservices 3. Services for the Microservices: a. Service Discovery b. Load Balacing c. Fault Tolerance d. Edge Server and Data Aggregation 4. The Death Star strikes back 5. Dockerize it 6. Centralized Logging and Monitoring 7. Running on Cloud Foundry 8. Continous Delivery, DevOps and NoOps 9. What’s next? Agenda
  • 84. MILAN 18/19.11.2015 - GIULIO SANTOLI Cloud Foundry is an open source project platform-as- a-service, making it faster and easier to build, test, deploy, and scale applications Introducing Cloud Foundry
  • 85. MILAN 18/19.11.2015 - GIULIO SANTOLI IaaS Cloud Foundry BOSH Cloud Foundry Agent Agent Droplet Execution Agent (DEA) Container Runtime Application Container Runtime Application Cloud Foundry Underlayng Infrastructure Apps
  • 86. MILAN 18/19.11.2015 - GIULIO SANTOLI Cloud Foundry distributes the containers among the DEA cells cell1 cell2 cell3 cell4 When a container crashes, it’s automatically restarted When a cell crashes, it’s workload is distributed among the other cells cell1 cell2 cell3 cell4 cell1 cell2 cell3 cell4 Container orchestration in Cloud Foundry time
  • 87. MILAN 18/19.11.2015 - GIULIO SANTOLI Lattice: a minimal Cloud Foundry
  • 88. MILAN 18/19.11.2015 - GIULIO SANTOLI LAB: Scenario 10
  • 89. MILAN 18/19.11.2015 - GIULIO SANTOLI 1. Here comes the Unicorns 2. Monolith v.s. Microservices 3. Services for the Microservices: a. Service Discovery b. Load Balacing c. Fault Tolerance d. Edge Server and Data Aggregation 4. The Death Star strikes back 5. Dockerize it 6. Centralized Logging and Monitoring 7. Running on Cloud Foundry 8. Continous Delivery, DevOps and NoOps 9. What’s next? Agenda
  • 90. MILAN 18/19.11.2015 - GIULIO SANTOLI “In software, when something is painful, the way to reduce the pain is to do it more frequently, not less.” David Farley
  • 91. MILAN 18/19.11.2015 - GIULIO SANTOLI Continuous Delivery vs Continuous Deployment http://blog.crisp.se/2013/02/05/yassalsundman/continuous-delivery-vs-continuous-deployment
  • 92. MILAN 18/19.11.2015 - GIULIO SANTOLI Deployment Techniques minimize downtime minimize risks increase feedback http://techblog.netflix.com/2013/08/deploying-netflix-api.html
  • 93. MILAN 18/19.11.2015 - GIULIO SANTOLI APP v1 Blue-Green Deployment APP v2 Router http://martinfowler.com/bliki/BlueGreenDeployment.html APP v1 APP v2 Router
  • 94. MILAN 18/19.11.2015 - GIULIO SANTOLI APP v1 Red-Black Deployment & Canary Deployment APP v2 Router http://techblog.netflix.com/2013/08/deploying-netflix-api.html http://martinfowler.com/bliki/CanaryRelease.html APP v1 APP v2 Router APP v1 APP v2 Router
  • 95. MILAN 18/19.11.2015 - GIULIO SANTOLI LAB: Scenario 11
  • 96. MILAN 18/19.11.2015 - GIULIO SANTOLI “Until code is in production, no value is actually being generated” Gene Kim
  • 97. MILAN 18/19.11.2015 - GIULIO SANTOLI Ops from to NoOpsDevOps Operations DevOps http://blogs.forrester.com/mike_gualtieri/11-02-07-i_dont_want_devops_i_want_noops
  • 98. MILAN 18/19.11.2015 - GIULIO SANTOLI “You Build It, You Run It” Werner Vogels (Amazon)
  • 99. MILAN 18/19.11.2015 - GIULIO SANTOLI Continous Delivery at Neflix http://techblog.netflix.com/2013/08/deploying-netflix-api.html
  • 100. MILAN 18/19.11.2015 - GIULIO SANTOLI “Run longevity tests. It’s the only way to catch longevity bugs.” Michael T. Nygard
  • 101. MILAN 18/19.11.2015 - GIULIO SANTOLI Failures happen, and they inevitably happen when least desired. Simian Army consists of services (Monkeys) in the cloud for generating various kinds of failures, detecting abnormal conditions, and testing our ability to survive them. The goal is to keep our cloud safe, secure, and highly available http://techblog.netflix.com/2011/07/netflix-simian-army.html
  • 102. MILAN 18/19.11.2015 - GIULIO SANTOLI 1. Here comes the Unicorns 2. Monolith v.s. Microservices 3. Services for the Microservices: a. Service Discovery b. Load Balacing c. Fault Tolerance d. Edge Server and Data Aggregation 4. The Death Star strikes back 5. Dockerize it 6. Centralized Logging and Monitoring 7. Running on Cloud Foundry 8. Continous Delivery, DevOps and NoOps 9. What’s next? Agenda
  • 103. MILAN 18/19.11.2015 - GIULIO SANTOLI What’s ?
  • 104. MILAN 18/19.11.2015 - GIULIO SANTOLI https://blog.codecentric.de/en/2014/10/log-management-spring-boot-applications-logstash-elastichsearch-kibana Log Management for Spring Boot Applications with Logstash, Elasticsearch and Kibana http://callistaenterprise.se/blogg/teknik/2015/05/20/blog-series-building-microservices Blog Series - Building Microservices https://spring.io/blog/2015/01/20/microservice-registration-and-discovery-with-spring-cloud-and-netflix-s-eureka Microservice Registration and Discovery with Spring Cloud and Netflix's Eureka http://ryanjbaxter.com/2015/07/15/using-microservices-to-build-cloud-native-applications-part-1 Using Microservices To Build Cloud Native Applications Very good tutorials
  • 105. MILAN 18/19.11.2015 - GIULIO SANTOLI https://www.youtube.com/watch?v=6wvVANQ6EJ8 Videos Spring Cloud at Netflix: Jon Schneider and Taylor Wicksell (Netflix) https://www.youtube.com/watch?v=2YqiSPjIBqQ Monitoring and Simulating Microservices: Adrian Cockcroft (Battery Ventures)
  • 106. MILAN 18/19.11.2015 - GIULIO SANTOLI More Books
  • 107. MILAN 18/19.11.2015 - GIULIO SANTOLI “Beware the distributed monolith.” James Lewis (ThoughWorks)