SlideShare una empresa de Scribd logo
1 de 63
Descargar para leer sin conexión
© Nokia 20161 Public
Microservices & docker:
from theory to practice
• Tom Van Cutsem, PhD and Nico Janssens, PhD
• Bell Labs, Application platforms and software systems lab
• December 1st, 2016
© Nokia 20162
Context
Public
Microservices
© Nokia 20163
What drives microservices?
Public
Cloud
Microservices
Continuous
Deployment
© Nokia 20164
You’re in good company
Public
Cloud
Microservices
Continuous
Deployment
© Nokia 20165
What are microservices?
Public
-- James Lewis and Martin Fowler
“SOA done right”
© Nokia 20166
Microservices: characteristics
Public
Componentization
via services
Smart endpoints,
dumb pipes
© Nokia 20167
Microservices: characteristics
Public
Products,
not projects
Organized around
business capabilities
“you build it, you run it”
© Nokia 20168
Microservices: characteristics
Public
Products,
not projects
Organized around
business capabilities
“you build it, you run it”
© Nokia 20169
Microservices: organize around business services
Public
"Any organization that designs a system … will inevitably produce a design
whose structure is a copy of the organization's communication structure."
-- Melvin Conway, 1968
(Source: Martin Fowler)
© Nokia 201610
Microservices: characteristics
Public
Decentralized
Governance
Decentralized
Data Management
© Nokia 201611
War stories from large web companies
Large codebases seem to auto-evolve into microservices
Public
(Source: highscalability.com, 2015)
Monolithic
app
1st gen 2nd gen 3nd gen
Tiered
architecture
Polyglot
microservices
Written in one
language
(e.g. Perl, C++)
Java as
dominant
language
Mix of
languages
© Nokia 201612
Microservices: characteristics
Public
Infrastructure
Automation
Design for Failure Evolutionary
Design
“IT is an API”
© Nokia 201613
Microservices & DevOps culture
Public
• Need to be able to provision infrastructure fast
• Containerize services (Docker)
• Container orchestration (Swarm, Kubernetes, Rancher, Mesos, …)
• Teams maintain their own services in production
© Nokia 201614
Microservices: risks
Public
Independent
services
Service boundaries
not easy to change
Design for Failure
Investment in monitoring
tools
End-to-end testing/debugging
more difficult
Technological
Diversity
Strong and diverse
skill set
Operational complexityDistributed systems
challenges
© Nokia 201615
Case study: ShowMe
Public
© Nokia 201616
Discover or share what’s up near a location of interest
ShowMe: location-based video sharing
Public
LIVE PERSONAL
CONTENT
LOCATION AS
SHARED CONTEXT
© Nokia 201617
Prototype app + experience movie
ShowMe: location-based video sharing
Public
© Nokia 201618
Functional architecture
Public
Web client
(consumer)
Checkin
server
Web server
Session
storage
Analytics
DB
Media server
Web client
(producer)
Foursquare
app Push API
Checkin API
Auth API
Venue APIGeocoding
API
Session
server
Stored
streams
© Nokia 201619
Technology stack
Public
Web client
(consumer)
Checkin
server
Web server
Session
storage
Analytics
DB
Media server
Web client
(producer)
Foursquare
app
Geocoding
API
Session
server
Stored
streamsC++
© Nokia 201620
Service interfaces
Public
Web client
(consumer)
Checkin
server
Web server
Session
storage
Analytics
DB
Media server
Web client
(producer)
Foursquare
app
Geocoding
API
Session
server
Stored
streams
REST/HTTP
REST/HTTP
REST/HTTP
© Nokia 201621
Lessons learned
Public
• Multiple teams working on independent subsystems = highly productive
– Different goals
– Different skillsets
– Different release schedules
– Less conflicts
• Testing and debugging of the overall system was a pain
• We didn’t sufficiently invest in tooling and automation
– Manual configuration and set-up
– Infrastructure not set up to host multiple versions of the app
– No cross-service unit testing infrastructure
© Nokia 201622
Lessons learned
Public
• Micro-service architecture = distributed system
– Deal with asynchrony, failure, latency, keeping data consistent across databases
– Interfaces between services are implicit, not checked by compiler.
• Testing services in isolation is not enough
– Focus is on monitoring and detecting anomalies more than on thorough testing before
deployment
• Deployment is much more complicated
– Fine-grained orchestration and configuration
– Each service needs clustering, monitoring, load-balancing, …
– Variety of runtimes and databases requires larger skill set to tweak, deploy, maintain
– To do microservices right, should keep old and new versions of the service running side-by-side
© Nokia 201623
Case study: instadash
Public
© Nokia 201624
Real-time fleet tracking
Instadash app
Public
GPS receiver
OBD via CAN bus
Dashcam
On-board Unit
2 real cars,
10 hours footage
400 virtual cars
© Nokia 201625
Instadash: functional architecture
Public
Message Bus
Workers
Web
gateway
Media
server
Workers
Workers
Device
registry
Websocket
server
Web
client
Devices
Resource
manager
Query
deployer
System
monitor
© Nokia 201626
Instadash: functional architecture
Public
Message Bus
Workers
Web
gateway
Media
server
Workers
Workers
Device
registry
Websocket
server
Web
client
Devices
Resource
manager
Query
deployer
System
monitor
© Nokia 201627
Instadash: technology stack
Public
Message Bus
Workers
Web
gateway
Media
server
Workers
Workers
Device
registry
Websocket
server
Web
client
Devices
Resource
manager
Query
deployer
System
monitor
© Nokia 201628
Instadash: service interfaces
Public
Message Bus
Workers
Web
gateway
Media
server
Workers
Workers
Device
registry
Websocket
server
Web
client
Devices
Resource
manager
Query
deployer
System
monitor
JSON-RPC
over AMQP
Protobuf over TCP
REST/HTTP
JSON
over
AMQP
REST/HTTP
Microservice communication patterns
Public
Microservice
A
Microservice
B
REST over HTTP
Text-based protocol overheadsREST/HTTP is well-understood
HTTP support is ubiquitous
JSON as data model is a natural fit
Microservice communication patterns
Public
Microservice
A
Microservice
B
RPC
Firewall issues, less ubiquitousFast, often binary encoding
Built-in schema support Need an additional discovery service
JSON-RPC
Microservice communication patterns
Public
Microservice
A Message Bus
Microservice
B
More complex, beware
bottleneck
Decoupling between components
(bus handles both discovery and routing)
© Nokia 201632
Communication patterns
Public
Message Bus
Workers
Web
gateway
Media
server
Workers
Workers
Device
registry
Websocket
server
Web
client
Devices
Resource
manager
Query
deployer
System
monitor
• Open source
• Large community
• Many client libraries
© Nokia 201633
Communication patterns: point-to-point
Public
Message Bus
Workers
Web
gateway
Media
server
Workers
Workers
Device
registry
Websocket
server
Web
client
Devices
Resource
manager
Query
deployer
System
monitor
• JSON-RPC over AMQP
• Messages represent requests or commands
© Nokia 201634
Communication patterns: publish-subscribe
Public
Message Bus
Workers
Web
gateway
Media
server
Workers
Workers
Device
registry
Websocket
server
Web
client
Devices
Resource
manager
Query
deployer
System
monitor
• Use AMQP’s rich routing semantics via topic exchanges
• Messages represent events (JSON payload)
© Nokia 201635
Communication patterns: work queueing
Public
Message Bus
Workers
Web
gateway
Media
server
Workers
Workers
Device
registry
Websocket
server
Web
client
Devices
Resource
manager
Query
deployer
System
monitor
• A single queue served by multiple workers.
• Goal is to spread tasks over multiple instances of the same serv
• Messages represent tasks (work to be done)
© Nokia 201636
Monitoring: our approach
Public
• Used Riemann as central dashboard and event monitoring server
• Client libraries for a variety of programming languages (remember: polyglot)
• Each microservice regularly reports service-specific statistics
• Each host machine also reports generic resource statistics
© Nokia 201637
Monitoring
Public
Message Bus
Workers
Web
gateway
Media
server
Workers
Workers
Device
registry
Websocket
server
Web
client
Devices
Resource
manager
Query
deployer
System
monitor
Protobufs over UDP or TCP
© Nokia 201638
Monitoring: dashboards
Public
Lessons learned
Public
• Message bus as central broker had many advantages
– Solved service discovery (all components need to know the broker, not each other)
– Queueing makes services more robust to failover
– Message bus dashboard gave a wealth of system information about communication patterns,
message rates, etc.
– But: can quickly become a bottleneck: proper configuration and tuning was key
– Also: all components needed hardening to e.g. auto-reconnect when broker went down
• Use external configuration files that can be generated or templated from a central place
• Use schema validation to catch bugs faster (e.g. JSON-Schema, Protobufs, AVRO, …)
• Monitoring was essential to see what’s going on
• Dockerizing services was key to getting this system going (20+ processes)
© Nokia 201640
PART II
On MicroServices, Docker and
DevOps
© Nokia 201641
Context
Public
Microservices
© Nokia 201642
Efficiency
Docker Containers
Public
Lightweight application isolation è very low performance overhead
source: https://blog.jayway.com/2015/03/21/a-not-very-short-introduction-to-docker/
© Nokia 201643
Programmability
Docker Containers
Public
Container programming è Dockerfile
FROM ubuntu:16.04
MAINTAINER Sven Dowideit <SvenDowideit@docker.com>
RUN apt-get update && apt-get install -y openssh-server
RUN mkdir /var/run/sshd
RUN echo 'root:screencast' | chpasswd
RUN sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
# SSH login fix. Otherwise user is kicked off after login
RUN sed 's@sessions*requireds*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd
ENV NOTVISIBLE "in users profile"
RUN echo "export VISIBLE=now" >> /etc/profile
EXPOSE 22
CMD ["/usr/sbin/sshd", "-D"]
© Nokia 201644
Active eco-system
Docker Containers
Public
source: http://slidedeck.io/dpdornseifer/reveal_docker
© Nokia 201645
Portability
Docker Containers
Public
The matrix from hell
source: http://www.slideshare.net/Docker/docker-lpc-2014cristian
© Nokia 201646
Flexibility
Docker Containers
Public
Build, ship and run any app, anyware [docker]
source: http://blog.terranillius.com/post/docker_testing/
© Nokia 201647
Demo
Docker Containers
Public
© Nokia 201648
@10k feet
DevOps
Public
source: http://www.drdobbs.com/architecture-and-design/getting-devops-right-the-lay-of-the-land/240062639
© Nokia 201649
CALMS
DevOps
Public
••Promotes collaborative and open culture between Dev and Ops
••Embrace change and experimentationCulture
••Automate whenever possible
••CI/CD, Infrastructure as Code, …Automation
••Focus on producing value for the end-user
••Small size batches, higher release cyclesLean
••Measure everything all the time and use this info to improve/refine cycles
••Show the improvementMeasurement
••Open information sharing – experiences, successes, failures, etc.
••Collaboration & communication – learn from each other (Kanban board, IM, wiki)Sharing
© Nokia 201650
Operational costs pressures push Telcos to virtualize environments while
preserving non-functional requirements
• 5 nines availability
• Reliability
• Performance and response times
Moving away from traditional telco service design
Public
© Nokia 201651
Moving away from traditional telco service design
Public
Additional non-functional
requirements to take into account
• Scalability
• Elasticity
• Agility
• Operability and portability
Low overhead
Portability
Micro-service architectures
Active eco-system + public image
registries
Facilitates DevOps methodology
© Nokia 201652
Bell Labs Projects: New Home/IoT Service Platform
Public
Mobile 5G Network
WIFI Network
Edge
Cloud
HubDevice
Distributed Cloud
Platform
For Heterogeneous HW
infrastructure
Home
High Performance & Predictability
Small footprints
Central
Cloud
Sensor network
WiFi network
Mobile 5G network
© Nokia 201653
QUERY
UNION
GROUP-BY
ORDER-BY
LIMIT
FILTER
PROJECTPROJECT
FILTER
PROJECTPROJECT
FILTER
PROJECTPROJECT
FILTER
PROJECTPROJECT
FILTER
PROJECTPROJECT
FILTER
PROJECTPROJECT
UNIONUNION
ACCESS
EDGE
CORE NETWORK /
DATA CENTER
[animated
slide]
B. Theeten and N. Janssens, CHive:
Bandwidth Optimized Continuous
Querying in Distributed Clouds. IEEE
Transactions on Cloud Computing 3
(2), pp. 219-232, 2015.
Bell Labs Projects: Bandwidth Optimized Streaming Analytics
© Nokia 201654
Bell Labs Projects: New Communication Service
Public
Key Goal: Simplify interactions among people, machines,
and their environments
• From transaction-oriented Web model to persistent
conversations
• Uniform interaction model for people, machines, and
objects
• Rich context-based communications and collaboration
© Nokia 201655
Micro-service chat architecture
Public
load balancer
WS server
message
broker
key-value
database
document-
oriented db
Stateless Workers
Chat-Thread Mgr
User Mgr
Group Mgr
User View Mgr
User Presence Mgr
Push Notification Adapter
Call Mgr
…
TURN/STUN Media Server
SDK
mobile client
web browser
machine buddies
web storage
distributed
object store
and FS
RT + batch
analytics
HTTP server
location and
geo-fencing
service
CMB
coTURN
© Nokia 201656
20 node cluster with RANCHER and DOCKER
Initial production design
Public
Host Host Host
…
Rancher
Agent
Rancher
Agent
Private IP Net
Server
Firewall
NAT, DHCP,
LB,DNS
Docker
Daemon
Docker
Daemon
VM
Rancher
Agent
Docker
Daemon
WorkerContainer WorkerContainer
Rancher Cluster Manager
• Native Docker support
• Re-usage of Docker Compose files
• Low entry hurdle
• Dashboard
• Redundancy
• IPSec support
Public Cloud
Operator
Mgmt Server
Rancher
Mgmt
Docker
Registry
Mgmt Server
Rancher
Mgmt
Docker
Registry
Server
Firewall
NAT, DHCP,
LB,DNS
© Nokia 201657
MicroServices
Evaluation
Public
Rapid and independent evolution (lifecycle management) ✔
Use the right tool for the job ✔
Decentralized governance and data management ✔
© Nokia 201658
Docker
Evaluation
Public
Low overhead ✔
Portability ✔
Micro-service architectures ✔
Active eco-system with public image registries ✔
Facilitates DevOps methodology ✔
toolbox
compose
registry
© Nokia 201659
Docker
Evaluation
Public
Docker lifecycle management
• Don’t forget to clean old containers and dangling images
• For non-trivial lifecycle mgmt and production environments, rely on other tools
– compose, swarm, kubernetes, mesos+marathon/chronos, saltstack, terraform, etc.
Dockerfiles
• Think carefully how to structure your Dockerfiles (across Dockerfiles)
– Each line in a Docker file is a separate image layer, which by default will be cached (exceptions!)
• Order from generic/stable commands to specific/unstable commands
– Use explicit version tagging for all installed packages (consistency across future builds)
– Avoid unnecessary layers & packages à smartly combine commands
Performance when sharing host resources (e.g. when using bridge network)
No need to dockerize all your services ...
© Nokia 201660
Docker
Evaluation
Public
Application packaging à KISS!
– Containers are not VMs, but application environments
– Don’t try to stuff too many background services inside each container (sshd, logging, etc.)
– Don’t install build tools (e.g. gcc) without good reason à use build containers for that!
Data storage
– Try to avoid storing (all) data inside the application containers
• Containers should be as much as possible easily replacable
– Use key-value stores (etcd), DBs (mysql), data containers or host-volumes (-v)
Security
Networking
© Nokia 201661
Background reading and references
Public
• Martin Fowler’s article (must read): http://martinfowler.com/articles/microservices.html
• Community site: http://microservices.io/
• A. Cockcroft (prev. Netflix lead engineer) on migrating to micro-services:
http://www.infoq.com/presentations/migration-cloud-native
• Insightful blogs:
– http://www.tigerteam.dk/2014/micro-services-its-not-only-the-size-that-matters-its-also-how-you-use-them-part-1/
– http://gomorpheus.com/blog/2014-10-24-the-new-reality-microservices-apply-the-internet-model-to-app-development
– A critical note: http://contino.co.uk/microservices-not-a-free-lunch/
– http://highscalability.com/blog/2015/12/1/deep-lessons-from-google-and-ebay-on-building-ecosystems-of.html
• Colossus (Tumblr Engineering Blog): http://engineering.tumblr.com/post/102906359034/colossus-a-new-service-
framework-from-tumblr
• Finagle (Twitter Engineering Blog): https://blog.twitter.com/2011/finagle-a-protocol-agnostic-rpc-system
© Nokia 201663
Copyright and confidentiality
Public
The contents of this document are proprietary and
confidential property of Nokia. This document is
provided subject to confidentiality obligations of the
applicable agreement(s).
This document is intended for use of Nokia’s
customers and collaborators only for the purpose
for which this document is submitted by Nokia. No
part of this document may be reproduced or made
available to the public or to any third party in any
form or means without the prior written permission
of Nokia. This document is to be used by properly
trained professional personnel. Any use of the
contents in this document is limited strictly to the
use(s) specifically created in the applicable
agreement(s) under which the document is
submitted. The user of this document may
voluntarily provide suggestions, comments or other
feedback to Nokia in respect of the contents of this
document ("Feedback").
Such Feedback may be used in Nokia products and
related specifications or other documentation.
Accordingly, if the user of this document gives Nokia
Feedback on the contents of this document, Nokia
may freely use, disclose, reproduce, license,
distribute and otherwise commercialize the
feedback in any Nokia product, technology, service,
specification or other documentation.
Nokia operates a policy of ongoing development.
Nokia reserves the right to make changes and
improvements to any of the products and/or
services described in this document or withdraw this
document at any time without prior notice.
The contents of this document are provided "as is".
Except as required by applicable law, no warranties
of any kind, either express or implied, including, but
not limited to, the implied warranties of
merchantability and fitness for a particular purpose,
are made in relation to the accuracy, reliability or
contents of this document. NOKIA SHALL NOT BE
RESPONSIBLE IN ANY EVENT FOR ERRORS IN THIS
DOCUMENT or for
any loss of data or income or any special, incidental,
consequential, indirect or direct damages
howsoever caused, that might arise from the use of
this document or any contents of this document.
This document and the product(s) it describes
are protected by copyright according to the
applicable laws.
Nokia is a registered trademark of Nokia
Corporation. Other product and company names
mentioned herein may be trademarks or trade
names of their respective owners.

Más contenido relacionado

La actualidad más candente

Implementing a WebRTC endpoint in GStreamer: challenges, problems and perspec...
Implementing a WebRTC endpoint in GStreamer: challenges, problems and perspec...Implementing a WebRTC endpoint in GStreamer: challenges, problems and perspec...
Implementing a WebRTC endpoint in GStreamer: challenges, problems and perspec...Luis Lopez
 
Open Source Networking Days- Service Mesh
Open Source Networking Days- Service MeshOpen Source Networking Days- Service Mesh
Open Source Networking Days- Service MeshCloudOps2005
 
The Interoperability Challenge in Telecom and NFS Environments
The Interoperability Challenge in Telecom and NFS EnvironmentsThe Interoperability Challenge in Telecom and NFS Environments
The Interoperability Challenge in Telecom and NFS EnvironmentsOpen Networking Summit
 
Microservice Architecture
Microservice ArchitectureMicroservice Architecture
Microservice ArchitectureNguyen Tung
 
MicroServices, yet another architectural style?
MicroServices, yet another architectural style?MicroServices, yet another architectural style?
MicroServices, yet another architectural style?ACA IT-Solutions
 
Connecting All Abstractions with Istio
Connecting All Abstractions with IstioConnecting All Abstractions with Istio
Connecting All Abstractions with IstioVMware Tanzu
 
Comparison of Current Service Mesh Architectures
Comparison of Current Service Mesh ArchitecturesComparison of Current Service Mesh Architectures
Comparison of Current Service Mesh ArchitecturesMirantis
 
Mastering Chaos - A Netflix Guide to Microservices
Mastering Chaos - A Netflix Guide to MicroservicesMastering Chaos - A Netflix Guide to Microservices
Mastering Chaos - A Netflix Guide to MicroservicesC4Media
 
Introducing ONAP for OpenStack St Louis Meetup
Introducing ONAP for OpenStack St Louis MeetupIntroducing ONAP for OpenStack St Louis Meetup
Introducing ONAP for OpenStack St Louis Meetupdjzook
 
Automate and customise application services and deployment
Automate and customise application services and deploymentAutomate and customise application services and deployment
Automate and customise application services and deploymentChristina Hoh
 
Service Discovery with Consul
Service Discovery with ConsulService Discovery with Consul
Service Discovery with ConsulAli Demirsoy
 
Get more versatile and scalable protection with F5 BIG-IP
Get more versatile and scalable protection with F5 BIG-IPGet more versatile and scalable protection with F5 BIG-IP
Get more versatile and scalable protection with F5 BIG-IPF5NetworksAPJ
 
Securing Kubernetes Clusters with NGINX Plus Ingress Controller & NAP
Securing Kubernetes Clusters with NGINX Plus Ingress Controller & NAPSecuring Kubernetes Clusters with NGINX Plus Ingress Controller & NAP
Securing Kubernetes Clusters with NGINX Plus Ingress Controller & NAPOlivia LaMar
 
Extending The Power Of Anypoint Platform Using Anypoint Service Mesh
Extending The Power Of Anypoint Platform Using Anypoint Service MeshExtending The Power Of Anypoint Platform Using Anypoint Service Mesh
Extending The Power Of Anypoint Platform Using Anypoint Service MeshAaronLieberman5
 
The Complete Guide to Service Mesh
The Complete Guide to Service MeshThe Complete Guide to Service Mesh
The Complete Guide to Service MeshAspen Mesh
 

La actualidad más candente (20)

Implementing a WebRTC endpoint in GStreamer: challenges, problems and perspec...
Implementing a WebRTC endpoint in GStreamer: challenges, problems and perspec...Implementing a WebRTC endpoint in GStreamer: challenges, problems and perspec...
Implementing a WebRTC endpoint in GStreamer: challenges, problems and perspec...
 
Open Source Networking Days- Service Mesh
Open Source Networking Days- Service MeshOpen Source Networking Days- Service Mesh
Open Source Networking Days- Service Mesh
 
The Interoperability Challenge in Telecom and NFS Environments
The Interoperability Challenge in Telecom and NFS EnvironmentsThe Interoperability Challenge in Telecom and NFS Environments
The Interoperability Challenge in Telecom and NFS Environments
 
State of the OpenDaylight Union
State of the OpenDaylight UnionState of the OpenDaylight Union
State of the OpenDaylight Union
 
Microservice Architecture
Microservice ArchitectureMicroservice Architecture
Microservice Architecture
 
MicroServices, yet another architectural style?
MicroServices, yet another architectural style?MicroServices, yet another architectural style?
MicroServices, yet another architectural style?
 
Connecting All Abstractions with Istio
Connecting All Abstractions with IstioConnecting All Abstractions with Istio
Connecting All Abstractions with Istio
 
Microservices
MicroservicesMicroservices
Microservices
 
Comparison of Current Service Mesh Architectures
Comparison of Current Service Mesh ArchitecturesComparison of Current Service Mesh Architectures
Comparison of Current Service Mesh Architectures
 
Mastering Chaos - A Netflix Guide to Microservices
Mastering Chaos - A Netflix Guide to MicroservicesMastering Chaos - A Netflix Guide to Microservices
Mastering Chaos - A Netflix Guide to Microservices
 
Introducing ONAP for OpenStack St Louis Meetup
Introducing ONAP for OpenStack St Louis MeetupIntroducing ONAP for OpenStack St Louis Meetup
Introducing ONAP for OpenStack St Louis Meetup
 
Automate and customise application services and deployment
Automate and customise application services and deploymentAutomate and customise application services and deployment
Automate and customise application services and deployment
 
Service Discovery with Consul
Service Discovery with ConsulService Discovery with Consul
Service Discovery with Consul
 
Microservice architecture
Microservice architectureMicroservice architecture
Microservice architecture
 
Get more versatile and scalable protection with F5 BIG-IP
Get more versatile and scalable protection with F5 BIG-IPGet more versatile and scalable protection with F5 BIG-IP
Get more versatile and scalable protection with F5 BIG-IP
 
Javantura v6 - Istio Service Mesh - The magic between your microservices - Ma...
Javantura v6 - Istio Service Mesh - The magic between your microservices - Ma...Javantura v6 - Istio Service Mesh - The magic between your microservices - Ma...
Javantura v6 - Istio Service Mesh - The magic between your microservices - Ma...
 
Securing Kubernetes Clusters with NGINX Plus Ingress Controller & NAP
Securing Kubernetes Clusters with NGINX Plus Ingress Controller & NAPSecuring Kubernetes Clusters with NGINX Plus Ingress Controller & NAP
Securing Kubernetes Clusters with NGINX Plus Ingress Controller & NAP
 
Extending The Power Of Anypoint Platform Using Anypoint Service Mesh
Extending The Power Of Anypoint Platform Using Anypoint Service MeshExtending The Power Of Anypoint Platform Using Anypoint Service Mesh
Extending The Power Of Anypoint Platform Using Anypoint Service Mesh
 
The Complete Guide to Service Mesh
The Complete Guide to Service MeshThe Complete Guide to Service Mesh
The Complete Guide to Service Mesh
 
WebRTC presentation
WebRTC presentationWebRTC presentation
WebRTC presentation
 

Similar a Microservices bell labs_kulak_final

Executive Briefing: The Why, What, and Where of Containers
Executive Briefing: The Why, What, and Where of ContainersExecutive Briefing: The Why, What, and Where of Containers
Executive Briefing: The Why, What, and Where of ContainersNVISIA
 
CNCF Introduction - Feb 2018
CNCF Introduction - Feb 2018CNCF Introduction - Feb 2018
CNCF Introduction - Feb 2018Krishna-Kumar
 
Microservices, Containers, Docker and a Cloud-Native Architecture in the Midd...
Microservices, Containers, Docker and a Cloud-Native Architecture in the Midd...Microservices, Containers, Docker and a Cloud-Native Architecture in the Midd...
Microservices, Containers, Docker and a Cloud-Native Architecture in the Midd...Kai Wähner
 
WebRTC standards update (13 Nov 2013)
WebRTC standards update (13 Nov 2013)WebRTC standards update (13 Nov 2013)
WebRTC standards update (13 Nov 2013)Victor Pascual Ávila
 
Radisys/Orange/Strategy Analytics Webinar 090618
Radisys/Orange/Strategy Analytics Webinar 090618Radisys/Orange/Strategy Analytics Webinar 090618
Radisys/Orange/Strategy Analytics Webinar 090618Radisys Corporation
 
Automation, Agility and NFV
Automation, Agility and NFVAutomation, Agility and NFV
Automation, Agility and NFVJames Crawshaw
 
Product Keynote: How to Compete in the API Economy
Product Keynote: How to Compete in the API EconomyProduct Keynote: How to Compete in the API Economy
Product Keynote: How to Compete in the API EconomyBui Kiet
 
Product Keynote: How to Compete in the API Economy
Product Keynote: How to Compete in the API EconomyProduct Keynote: How to Compete in the API Economy
Product Keynote: How to Compete in the API EconomyMuleSoft
 
Getting Started with Docker - Nick Stinemates
Getting Started with Docker - Nick StinematesGetting Started with Docker - Nick Stinemates
Getting Started with Docker - Nick StinematesAtlassian
 
Collaborating with OpenDaylight for a Network-Enabled Cloud
Collaborating with OpenDaylight for a Network-Enabled CloudCollaborating with OpenDaylight for a Network-Enabled Cloud
Collaborating with OpenDaylight for a Network-Enabled CloudTesora
 
Keynote from Cloud Expo West, November 2010
Keynote from Cloud Expo West, November 2010Keynote from Cloud Expo West, November 2010
Keynote from Cloud Expo West, November 2010Mohamad Afshar
 
Ignacio design and building of iaa s clouds
Ignacio design and building of iaa s cloudsIgnacio design and building of iaa s clouds
Ignacio design and building of iaa s cloudsEuroCloud
 
Ignacio design and building of iaa s clouds
Ignacio design and building of iaa s cloudsIgnacio design and building of iaa s clouds
Ignacio design and building of iaa s cloudsEuroCloud
 
Yohanes Widi Sono - Modern Development for Business Agility
Yohanes Widi Sono - Modern Development for Business AgilityYohanes Widi Sono - Modern Development for Business Agility
Yohanes Widi Sono - Modern Development for Business AgilityAgile Impact Conference
 
Cisco ACI for the Microsoft Cloud Platform
Cisco ACI for the Microsoft Cloud PlatformCisco ACI for the Microsoft Cloud Platform
Cisco ACI for the Microsoft Cloud PlatformShashi Kiran
 
IoT Physical Servers and Cloud Offerings.pdf
IoT Physical Servers and Cloud Offerings.pdfIoT Physical Servers and Cloud Offerings.pdf
IoT Physical Servers and Cloud Offerings.pdfGVNSK Sravya
 
Cloudify: Open vCPE Design Concepts and Multi-Cloud Orchestration
Cloudify: Open vCPE Design Concepts and Multi-Cloud OrchestrationCloudify: Open vCPE Design Concepts and Multi-Cloud Orchestration
Cloudify: Open vCPE Design Concepts and Multi-Cloud OrchestrationCloudify Community
 
DCSF19 Adding a Modern API Layer to ‘Dockerized’ Legacy Apps
DCSF19 Adding a Modern API Layer to ‘Dockerized’ Legacy Apps  DCSF19 Adding a Modern API Layer to ‘Dockerized’ Legacy Apps
DCSF19 Adding a Modern API Layer to ‘Dockerized’ Legacy Apps Docker, Inc.
 
TransitioningToMicroServonDocker_MS
TransitioningToMicroServonDocker_MSTransitioningToMicroServonDocker_MS
TransitioningToMicroServonDocker_MSLana Kalashnyk
 
Architecting your WebRTC application for scalability, Arin Sime
Architecting your WebRTC application for scalability, Arin SimeArchitecting your WebRTC application for scalability, Arin Sime
Architecting your WebRTC application for scalability, Arin SimeAlan Quayle
 

Similar a Microservices bell labs_kulak_final (20)

Executive Briefing: The Why, What, and Where of Containers
Executive Briefing: The Why, What, and Where of ContainersExecutive Briefing: The Why, What, and Where of Containers
Executive Briefing: The Why, What, and Where of Containers
 
CNCF Introduction - Feb 2018
CNCF Introduction - Feb 2018CNCF Introduction - Feb 2018
CNCF Introduction - Feb 2018
 
Microservices, Containers, Docker and a Cloud-Native Architecture in the Midd...
Microservices, Containers, Docker and a Cloud-Native Architecture in the Midd...Microservices, Containers, Docker and a Cloud-Native Architecture in the Midd...
Microservices, Containers, Docker and a Cloud-Native Architecture in the Midd...
 
WebRTC standards update (13 Nov 2013)
WebRTC standards update (13 Nov 2013)WebRTC standards update (13 Nov 2013)
WebRTC standards update (13 Nov 2013)
 
Radisys/Orange/Strategy Analytics Webinar 090618
Radisys/Orange/Strategy Analytics Webinar 090618Radisys/Orange/Strategy Analytics Webinar 090618
Radisys/Orange/Strategy Analytics Webinar 090618
 
Automation, Agility and NFV
Automation, Agility and NFVAutomation, Agility and NFV
Automation, Agility and NFV
 
Product Keynote: How to Compete in the API Economy
Product Keynote: How to Compete in the API EconomyProduct Keynote: How to Compete in the API Economy
Product Keynote: How to Compete in the API Economy
 
Product Keynote: How to Compete in the API Economy
Product Keynote: How to Compete in the API EconomyProduct Keynote: How to Compete in the API Economy
Product Keynote: How to Compete in the API Economy
 
Getting Started with Docker - Nick Stinemates
Getting Started with Docker - Nick StinematesGetting Started with Docker - Nick Stinemates
Getting Started with Docker - Nick Stinemates
 
Collaborating with OpenDaylight for a Network-Enabled Cloud
Collaborating with OpenDaylight for a Network-Enabled CloudCollaborating with OpenDaylight for a Network-Enabled Cloud
Collaborating with OpenDaylight for a Network-Enabled Cloud
 
Keynote from Cloud Expo West, November 2010
Keynote from Cloud Expo West, November 2010Keynote from Cloud Expo West, November 2010
Keynote from Cloud Expo West, November 2010
 
Ignacio design and building of iaa s clouds
Ignacio design and building of iaa s cloudsIgnacio design and building of iaa s clouds
Ignacio design and building of iaa s clouds
 
Ignacio design and building of iaa s clouds
Ignacio design and building of iaa s cloudsIgnacio design and building of iaa s clouds
Ignacio design and building of iaa s clouds
 
Yohanes Widi Sono - Modern Development for Business Agility
Yohanes Widi Sono - Modern Development for Business AgilityYohanes Widi Sono - Modern Development for Business Agility
Yohanes Widi Sono - Modern Development for Business Agility
 
Cisco ACI for the Microsoft Cloud Platform
Cisco ACI for the Microsoft Cloud PlatformCisco ACI for the Microsoft Cloud Platform
Cisco ACI for the Microsoft Cloud Platform
 
IoT Physical Servers and Cloud Offerings.pdf
IoT Physical Servers and Cloud Offerings.pdfIoT Physical Servers and Cloud Offerings.pdf
IoT Physical Servers and Cloud Offerings.pdf
 
Cloudify: Open vCPE Design Concepts and Multi-Cloud Orchestration
Cloudify: Open vCPE Design Concepts and Multi-Cloud OrchestrationCloudify: Open vCPE Design Concepts and Multi-Cloud Orchestration
Cloudify: Open vCPE Design Concepts and Multi-Cloud Orchestration
 
DCSF19 Adding a Modern API Layer to ‘Dockerized’ Legacy Apps
DCSF19 Adding a Modern API Layer to ‘Dockerized’ Legacy Apps  DCSF19 Adding a Modern API Layer to ‘Dockerized’ Legacy Apps
DCSF19 Adding a Modern API Layer to ‘Dockerized’ Legacy Apps
 
TransitioningToMicroServonDocker_MS
TransitioningToMicroServonDocker_MSTransitioningToMicroServonDocker_MS
TransitioningToMicroServonDocker_MS
 
Architecting your WebRTC application for scalability, Arin Sime
Architecting your WebRTC application for scalability, Arin SimeArchitecting your WebRTC application for scalability, Arin Sime
Architecting your WebRTC application for scalability, Arin Sime
 

Último

Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfOrbitshub
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyKhushali Kathiriya
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusZilliz
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Victor Rentea
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Zilliz
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native ApplicationsWSO2
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesrafiqahmad00786416
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Orbitshub
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Zilliz
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingEdi Saputra
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistandanishmna97
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelDeepika Singh
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...Zilliz
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityWSO2
 

Último (20)

Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering Developers
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 

Microservices bell labs_kulak_final

  • 1. © Nokia 20161 Public Microservices & docker: from theory to practice • Tom Van Cutsem, PhD and Nico Janssens, PhD • Bell Labs, Application platforms and software systems lab • December 1st, 2016
  • 3. © Nokia 20163 What drives microservices? Public Cloud Microservices Continuous Deployment
  • 4. © Nokia 20164 You’re in good company Public Cloud Microservices Continuous Deployment
  • 5. © Nokia 20165 What are microservices? Public -- James Lewis and Martin Fowler “SOA done right”
  • 6. © Nokia 20166 Microservices: characteristics Public Componentization via services Smart endpoints, dumb pipes
  • 7. © Nokia 20167 Microservices: characteristics Public Products, not projects Organized around business capabilities “you build it, you run it”
  • 8. © Nokia 20168 Microservices: characteristics Public Products, not projects Organized around business capabilities “you build it, you run it”
  • 9. © Nokia 20169 Microservices: organize around business services Public "Any organization that designs a system … will inevitably produce a design whose structure is a copy of the organization's communication structure." -- Melvin Conway, 1968 (Source: Martin Fowler)
  • 10. © Nokia 201610 Microservices: characteristics Public Decentralized Governance Decentralized Data Management
  • 11. © Nokia 201611 War stories from large web companies Large codebases seem to auto-evolve into microservices Public (Source: highscalability.com, 2015) Monolithic app 1st gen 2nd gen 3nd gen Tiered architecture Polyglot microservices Written in one language (e.g. Perl, C++) Java as dominant language Mix of languages
  • 12. © Nokia 201612 Microservices: characteristics Public Infrastructure Automation Design for Failure Evolutionary Design “IT is an API”
  • 13. © Nokia 201613 Microservices & DevOps culture Public • Need to be able to provision infrastructure fast • Containerize services (Docker) • Container orchestration (Swarm, Kubernetes, Rancher, Mesos, …) • Teams maintain their own services in production
  • 14. © Nokia 201614 Microservices: risks Public Independent services Service boundaries not easy to change Design for Failure Investment in monitoring tools End-to-end testing/debugging more difficult Technological Diversity Strong and diverse skill set Operational complexityDistributed systems challenges
  • 15. © Nokia 201615 Case study: ShowMe Public
  • 16. © Nokia 201616 Discover or share what’s up near a location of interest ShowMe: location-based video sharing Public LIVE PERSONAL CONTENT LOCATION AS SHARED CONTEXT
  • 17. © Nokia 201617 Prototype app + experience movie ShowMe: location-based video sharing Public
  • 18. © Nokia 201618 Functional architecture Public Web client (consumer) Checkin server Web server Session storage Analytics DB Media server Web client (producer) Foursquare app Push API Checkin API Auth API Venue APIGeocoding API Session server Stored streams
  • 19. © Nokia 201619 Technology stack Public Web client (consumer) Checkin server Web server Session storage Analytics DB Media server Web client (producer) Foursquare app Geocoding API Session server Stored streamsC++
  • 20. © Nokia 201620 Service interfaces Public Web client (consumer) Checkin server Web server Session storage Analytics DB Media server Web client (producer) Foursquare app Geocoding API Session server Stored streams REST/HTTP REST/HTTP REST/HTTP
  • 21. © Nokia 201621 Lessons learned Public • Multiple teams working on independent subsystems = highly productive – Different goals – Different skillsets – Different release schedules – Less conflicts • Testing and debugging of the overall system was a pain • We didn’t sufficiently invest in tooling and automation – Manual configuration and set-up – Infrastructure not set up to host multiple versions of the app – No cross-service unit testing infrastructure
  • 22. © Nokia 201622 Lessons learned Public • Micro-service architecture = distributed system – Deal with asynchrony, failure, latency, keeping data consistent across databases – Interfaces between services are implicit, not checked by compiler. • Testing services in isolation is not enough – Focus is on monitoring and detecting anomalies more than on thorough testing before deployment • Deployment is much more complicated – Fine-grained orchestration and configuration – Each service needs clustering, monitoring, load-balancing, … – Variety of runtimes and databases requires larger skill set to tweak, deploy, maintain – To do microservices right, should keep old and new versions of the service running side-by-side
  • 23. © Nokia 201623 Case study: instadash Public
  • 24. © Nokia 201624 Real-time fleet tracking Instadash app Public GPS receiver OBD via CAN bus Dashcam On-board Unit 2 real cars, 10 hours footage 400 virtual cars
  • 25. © Nokia 201625 Instadash: functional architecture Public Message Bus Workers Web gateway Media server Workers Workers Device registry Websocket server Web client Devices Resource manager Query deployer System monitor
  • 26. © Nokia 201626 Instadash: functional architecture Public Message Bus Workers Web gateway Media server Workers Workers Device registry Websocket server Web client Devices Resource manager Query deployer System monitor
  • 27. © Nokia 201627 Instadash: technology stack Public Message Bus Workers Web gateway Media server Workers Workers Device registry Websocket server Web client Devices Resource manager Query deployer System monitor
  • 28. © Nokia 201628 Instadash: service interfaces Public Message Bus Workers Web gateway Media server Workers Workers Device registry Websocket server Web client Devices Resource manager Query deployer System monitor JSON-RPC over AMQP Protobuf over TCP REST/HTTP JSON over AMQP REST/HTTP
  • 29. Microservice communication patterns Public Microservice A Microservice B REST over HTTP Text-based protocol overheadsREST/HTTP is well-understood HTTP support is ubiquitous JSON as data model is a natural fit
  • 30. Microservice communication patterns Public Microservice A Microservice B RPC Firewall issues, less ubiquitousFast, often binary encoding Built-in schema support Need an additional discovery service JSON-RPC
  • 31. Microservice communication patterns Public Microservice A Message Bus Microservice B More complex, beware bottleneck Decoupling between components (bus handles both discovery and routing)
  • 32. © Nokia 201632 Communication patterns Public Message Bus Workers Web gateway Media server Workers Workers Device registry Websocket server Web client Devices Resource manager Query deployer System monitor • Open source • Large community • Many client libraries
  • 33. © Nokia 201633 Communication patterns: point-to-point Public Message Bus Workers Web gateway Media server Workers Workers Device registry Websocket server Web client Devices Resource manager Query deployer System monitor • JSON-RPC over AMQP • Messages represent requests or commands
  • 34. © Nokia 201634 Communication patterns: publish-subscribe Public Message Bus Workers Web gateway Media server Workers Workers Device registry Websocket server Web client Devices Resource manager Query deployer System monitor • Use AMQP’s rich routing semantics via topic exchanges • Messages represent events (JSON payload)
  • 35. © Nokia 201635 Communication patterns: work queueing Public Message Bus Workers Web gateway Media server Workers Workers Device registry Websocket server Web client Devices Resource manager Query deployer System monitor • A single queue served by multiple workers. • Goal is to spread tasks over multiple instances of the same serv • Messages represent tasks (work to be done)
  • 36. © Nokia 201636 Monitoring: our approach Public • Used Riemann as central dashboard and event monitoring server • Client libraries for a variety of programming languages (remember: polyglot) • Each microservice regularly reports service-specific statistics • Each host machine also reports generic resource statistics
  • 37. © Nokia 201637 Monitoring Public Message Bus Workers Web gateway Media server Workers Workers Device registry Websocket server Web client Devices Resource manager Query deployer System monitor Protobufs over UDP or TCP
  • 38. © Nokia 201638 Monitoring: dashboards Public
  • 39. Lessons learned Public • Message bus as central broker had many advantages – Solved service discovery (all components need to know the broker, not each other) – Queueing makes services more robust to failover – Message bus dashboard gave a wealth of system information about communication patterns, message rates, etc. – But: can quickly become a bottleneck: proper configuration and tuning was key – Also: all components needed hardening to e.g. auto-reconnect when broker went down • Use external configuration files that can be generated or templated from a central place • Use schema validation to catch bugs faster (e.g. JSON-Schema, Protobufs, AVRO, …) • Monitoring was essential to see what’s going on • Dockerizing services was key to getting this system going (20+ processes)
  • 40. © Nokia 201640 PART II On MicroServices, Docker and DevOps
  • 42. © Nokia 201642 Efficiency Docker Containers Public Lightweight application isolation è very low performance overhead source: https://blog.jayway.com/2015/03/21/a-not-very-short-introduction-to-docker/
  • 43. © Nokia 201643 Programmability Docker Containers Public Container programming è Dockerfile FROM ubuntu:16.04 MAINTAINER Sven Dowideit <SvenDowideit@docker.com> RUN apt-get update && apt-get install -y openssh-server RUN mkdir /var/run/sshd RUN echo 'root:screencast' | chpasswd RUN sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config # SSH login fix. Otherwise user is kicked off after login RUN sed 's@sessions*requireds*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd ENV NOTVISIBLE "in users profile" RUN echo "export VISIBLE=now" >> /etc/profile EXPOSE 22 CMD ["/usr/sbin/sshd", "-D"]
  • 44. © Nokia 201644 Active eco-system Docker Containers Public source: http://slidedeck.io/dpdornseifer/reveal_docker
  • 45. © Nokia 201645 Portability Docker Containers Public The matrix from hell source: http://www.slideshare.net/Docker/docker-lpc-2014cristian
  • 46. © Nokia 201646 Flexibility Docker Containers Public Build, ship and run any app, anyware [docker] source: http://blog.terranillius.com/post/docker_testing/
  • 47. © Nokia 201647 Demo Docker Containers Public
  • 48. © Nokia 201648 @10k feet DevOps Public source: http://www.drdobbs.com/architecture-and-design/getting-devops-right-the-lay-of-the-land/240062639
  • 49. © Nokia 201649 CALMS DevOps Public ••Promotes collaborative and open culture between Dev and Ops ••Embrace change and experimentationCulture ••Automate whenever possible ••CI/CD, Infrastructure as Code, …Automation ••Focus on producing value for the end-user ••Small size batches, higher release cyclesLean ••Measure everything all the time and use this info to improve/refine cycles ••Show the improvementMeasurement ••Open information sharing – experiences, successes, failures, etc. ••Collaboration & communication – learn from each other (Kanban board, IM, wiki)Sharing
  • 50. © Nokia 201650 Operational costs pressures push Telcos to virtualize environments while preserving non-functional requirements • 5 nines availability • Reliability • Performance and response times Moving away from traditional telco service design Public
  • 51. © Nokia 201651 Moving away from traditional telco service design Public Additional non-functional requirements to take into account • Scalability • Elasticity • Agility • Operability and portability Low overhead Portability Micro-service architectures Active eco-system + public image registries Facilitates DevOps methodology
  • 52. © Nokia 201652 Bell Labs Projects: New Home/IoT Service Platform Public Mobile 5G Network WIFI Network Edge Cloud HubDevice Distributed Cloud Platform For Heterogeneous HW infrastructure Home High Performance & Predictability Small footprints Central Cloud Sensor network WiFi network Mobile 5G network
  • 53. © Nokia 201653 QUERY UNION GROUP-BY ORDER-BY LIMIT FILTER PROJECTPROJECT FILTER PROJECTPROJECT FILTER PROJECTPROJECT FILTER PROJECTPROJECT FILTER PROJECTPROJECT FILTER PROJECTPROJECT UNIONUNION ACCESS EDGE CORE NETWORK / DATA CENTER [animated slide] B. Theeten and N. Janssens, CHive: Bandwidth Optimized Continuous Querying in Distributed Clouds. IEEE Transactions on Cloud Computing 3 (2), pp. 219-232, 2015. Bell Labs Projects: Bandwidth Optimized Streaming Analytics
  • 54. © Nokia 201654 Bell Labs Projects: New Communication Service Public Key Goal: Simplify interactions among people, machines, and their environments • From transaction-oriented Web model to persistent conversations • Uniform interaction model for people, machines, and objects • Rich context-based communications and collaboration
  • 55. © Nokia 201655 Micro-service chat architecture Public load balancer WS server message broker key-value database document- oriented db Stateless Workers Chat-Thread Mgr User Mgr Group Mgr User View Mgr User Presence Mgr Push Notification Adapter Call Mgr … TURN/STUN Media Server SDK mobile client web browser machine buddies web storage distributed object store and FS RT + batch analytics HTTP server location and geo-fencing service CMB coTURN
  • 56. © Nokia 201656 20 node cluster with RANCHER and DOCKER Initial production design Public Host Host Host … Rancher Agent Rancher Agent Private IP Net Server Firewall NAT, DHCP, LB,DNS Docker Daemon Docker Daemon VM Rancher Agent Docker Daemon WorkerContainer WorkerContainer Rancher Cluster Manager • Native Docker support • Re-usage of Docker Compose files • Low entry hurdle • Dashboard • Redundancy • IPSec support Public Cloud Operator Mgmt Server Rancher Mgmt Docker Registry Mgmt Server Rancher Mgmt Docker Registry Server Firewall NAT, DHCP, LB,DNS
  • 57. © Nokia 201657 MicroServices Evaluation Public Rapid and independent evolution (lifecycle management) ✔ Use the right tool for the job ✔ Decentralized governance and data management ✔
  • 58. © Nokia 201658 Docker Evaluation Public Low overhead ✔ Portability ✔ Micro-service architectures ✔ Active eco-system with public image registries ✔ Facilitates DevOps methodology ✔ toolbox compose registry
  • 59. © Nokia 201659 Docker Evaluation Public Docker lifecycle management • Don’t forget to clean old containers and dangling images • For non-trivial lifecycle mgmt and production environments, rely on other tools – compose, swarm, kubernetes, mesos+marathon/chronos, saltstack, terraform, etc. Dockerfiles • Think carefully how to structure your Dockerfiles (across Dockerfiles) – Each line in a Docker file is a separate image layer, which by default will be cached (exceptions!) • Order from generic/stable commands to specific/unstable commands – Use explicit version tagging for all installed packages (consistency across future builds) – Avoid unnecessary layers & packages à smartly combine commands Performance when sharing host resources (e.g. when using bridge network) No need to dockerize all your services ...
  • 60. © Nokia 201660 Docker Evaluation Public Application packaging à KISS! – Containers are not VMs, but application environments – Don’t try to stuff too many background services inside each container (sshd, logging, etc.) – Don’t install build tools (e.g. gcc) without good reason à use build containers for that! Data storage – Try to avoid storing (all) data inside the application containers • Containers should be as much as possible easily replacable – Use key-value stores (etcd), DBs (mysql), data containers or host-volumes (-v) Security Networking
  • 61. © Nokia 201661 Background reading and references Public • Martin Fowler’s article (must read): http://martinfowler.com/articles/microservices.html • Community site: http://microservices.io/ • A. Cockcroft (prev. Netflix lead engineer) on migrating to micro-services: http://www.infoq.com/presentations/migration-cloud-native • Insightful blogs: – http://www.tigerteam.dk/2014/micro-services-its-not-only-the-size-that-matters-its-also-how-you-use-them-part-1/ – http://gomorpheus.com/blog/2014-10-24-the-new-reality-microservices-apply-the-internet-model-to-app-development – A critical note: http://contino.co.uk/microservices-not-a-free-lunch/ – http://highscalability.com/blog/2015/12/1/deep-lessons-from-google-and-ebay-on-building-ecosystems-of.html • Colossus (Tumblr Engineering Blog): http://engineering.tumblr.com/post/102906359034/colossus-a-new-service- framework-from-tumblr • Finagle (Twitter Engineering Blog): https://blog.twitter.com/2011/finagle-a-protocol-agnostic-rpc-system
  • 62.
  • 63. © Nokia 201663 Copyright and confidentiality Public The contents of this document are proprietary and confidential property of Nokia. This document is provided subject to confidentiality obligations of the applicable agreement(s). This document is intended for use of Nokia’s customers and collaborators only for the purpose for which this document is submitted by Nokia. No part of this document may be reproduced or made available to the public or to any third party in any form or means without the prior written permission of Nokia. This document is to be used by properly trained professional personnel. Any use of the contents in this document is limited strictly to the use(s) specifically created in the applicable agreement(s) under which the document is submitted. The user of this document may voluntarily provide suggestions, comments or other feedback to Nokia in respect of the contents of this document ("Feedback"). Such Feedback may be used in Nokia products and related specifications or other documentation. Accordingly, if the user of this document gives Nokia Feedback on the contents of this document, Nokia may freely use, disclose, reproduce, license, distribute and otherwise commercialize the feedback in any Nokia product, technology, service, specification or other documentation. Nokia operates a policy of ongoing development. Nokia reserves the right to make changes and improvements to any of the products and/or services described in this document or withdraw this document at any time without prior notice. The contents of this document are provided "as is". Except as required by applicable law, no warranties of any kind, either express or implied, including, but not limited to, the implied warranties of merchantability and fitness for a particular purpose, are made in relation to the accuracy, reliability or contents of this document. NOKIA SHALL NOT BE RESPONSIBLE IN ANY EVENT FOR ERRORS IN THIS DOCUMENT or for any loss of data or income or any special, incidental, consequential, indirect or direct damages howsoever caused, that might arise from the use of this document or any contents of this document. This document and the product(s) it describes are protected by copyright according to the applicable laws. Nokia is a registered trademark of Nokia Corporation. Other product and company names mentioned herein may be trademarks or trade names of their respective owners.