Microservice 4.0 Journey - From Spring NetFlix OSS to Istio Service Mesh and Serverless at Open Source Summit Japan
1. Microservice 4.0 Journey
From Spring NetFlix OSS to Istio Service Mesh and Serverless
Daniel Oh / DevOps Evangelist
Open Source Summit Japan 2018
2. About All of You
● How many of you are in charge of enterprise developer and application architect?
● How many of you have developed Microservices application based Spring Boot?
● How many of you have deployed Microservices app through containers in development?
● How many of you have heard about service mesh and istio before?
● How many of you have fingers on keyboard, played with service mesh via Istio?
● How many of you have deployed service mesh with istio in production?
● How many of you have developed serverless or FaaS(function as a service) in development?
● And so on and so forth
Straw Poll Time!
4. Short History of Microservices
Continuous
Integration
via XP
1999
AWS EC2
2006
DropWizard
May 2011
Agile
Manifesto
Feb
2001
NETFLIX
to AWS
2010
Ribbon
March 2012
Hystrix
March 2012
Eureka
July 2012
Microservices
Access
Thoughtworks
Radar
March 2012
Spring Boot
Sept 2013
Microservices
Defined
Thoughtworks
Fowler, Lewis
March 2014
Kubernetes
June 2014
Java EE 6
2009
DevOps
2009
Containers
Docker
2013
@danieloh30
5. The microservice architectural style is an approach to developing a single application as a
suite of small services, each running in its own process and communicating with lightweight
mechanisms, often an HTTP resource API.
These services are built around business capabilities and independently deployable by fully
automated deployment machinery. There is a bare minimum of centralized management of
these services, which may be written in different programming languages and use different
data storage technologies.
Martin Fowler
What is a microservice ?
@danieloh30
22. SERVICE DISCOVERY
Service
Spring Cloud
Config Server
Netflix Eureka
Netflix Ribbon Config
Service
Config
Service
Config
Svc Discovery Svc Discovery Svc Discovery
INFRASTRUCTURE
@danieloh30
23. DYNAMIC ROUTING
Spring Cloud
Config Server
Service
Netflix Eureka
Netflix Ribbon Config
Service
Config
Service
Config
Svc Discovery Svc Discovery Svc Discovery
Routing Routing Routing
Netflix Zuul
Server
INFRASTRUCTURE
@danieloh30
24. FAULT TOLERANCE
Spring Cloud
Config Server
Service
Netflix Eureka
Netflix Ribbon Config
Service
Config
Service
Config
Svc Discovery Svc Discovery Svc Discovery
Routing Routing Routing
Netflix Zuul
Server
Circuit Breaker Circuit Breaker Circuit Breaker
INFRASTRUCTURE
@danieloh30
25. TRACING AND VISIBILITY
Spring Cloud
Config Server
Service
Netflix Eureka
Netflix Ribbon Config
Service
Config
Service
Config
Svc Discovery Svc Discovery Svc Discovery
Routing Routing Routing
Netflix Zuul
Server
Circuit Breaker Circuit Breaker Circuit Breaker
Tracing Tracing Tracing
ZipKin Server
INFRASTRUCTURE
@danieloh30
26. Java Only
Adds a lot of libraries to YOUR code
What's Wrong with Netflix OSS?
@danieloh30
31. A service mesh is a dedicated infrastructure layer for handling
service-to-service communication. It’s responsible for the reliable delivery
of requests through the complex topology of services that comprise a
modern, cloud native application. In practice, the service mesh is typically
implemented as an array of lightweight network proxies that are deployed
alongside application code, without the application needing to be aware
https://buoyant.io/2017/04/25/whats-a-service-mesh-and-why-do-i-need-one/
Service Mesh Defined
@danieloh30
35. @danieloh30
Microservices embedding Capabilities
Container
JVM
Service B
Discovery
Load-balancer
Resiliency
Metrics
Tracing
Container
JVM
Service A
Discovery
Load-balancer
Resiliency
Metrics
Tracing
Container
JVM
Service C
Discovery
Load-balancer
Resiliency
Metrics
Tracing
Before Istio
37. @danieloh30
Envoy is the current sidecar
Pod
Container
JVM
Service A
Sidecar Container
Pod
Container
JVM
Service C
Sidecar Container
Pod
Container
JVM
Service B
Sidecar Container
49. @danieloh30
SECURE COMMUNICATION WITH ISTIO
POD
SERVICE
A
ENVOY
POD
SERVICE
B
ENVOY
POD
SERVICE
C
ENVOY
mutual TLS authentication, transparent to the services
TLS TLS
54. @danieloh30
inject protocol-specific errors, transparent to the services
POD
SERVICE
A
ENVOY
POD
SERVICE
B
ENVOY
POD
SERVICE
C
ENVOY
CHAOS ENGINEERING WITH ISTIO
HTTP 400
in 5% of requests
66. @danieloh30
Microservices Serverless
Functions
Your Control
Long-Lived Processes
Known Programming Model
Often Sync Request-Response
Mature:
IDE Integration
Debuggers
Tracers
Monitoring
CI/CD
Cloud Control
Short-Lived Processes
New Programming Model
Event-Driven Async
Immature:
?
79. Apache OpenWhisk
● Open Source incubating under Apache
● A Cloud platform to execute functions
written in:
○ JavaScript
○ Swift
○ Java
○ Python
○ PHP
○ Docker
○ Go
● Deployable on
○ Any platform where docker can be run
○ Kubernetes/OpenShift
@danieloh30
81. @danieloh30
Short History of Serverless
* Only supports JavaScript
Only for stateless, short-lived, simple applications
AWS
S3
March
2006
AWS
Lambda
November
2014 *
AWS
EC2
August
2006
Serverless
Described
Thoughtworks
August 2016
Serverless
Coined
October
2012
Serverless
Assess
Thoughtworks
Radar
April 2016
AWS
Dynamo
DB
January
2012
Firebase
September
2011
Iron.io
July
2011
Google
Cloud
Function
Feb 2016
Azure
Functions
Mar 2016
Pivotal
Function
Service
Dec 2017
Oracle
Functions
Sept 2016
IBM
Bluemix
OpenWhisk
Feb 2016
Oracle
Fn Project
Oct 2017