SlideShare una empresa de Scribd logo
1 de 33
Descargar para leer sin conexión
WEBINAR
Monitoring Microservices in Production 

with Lightbend Reactive Platform
Duncan Devore (@ironfish) & Henrik Engström (@h3nk3)
Agenda
● What is Monitoring?
● Traditional Monitoring
● Monitoring Reactive Applications
● Lightbend Monitoring
○ Overview
○ Under the hood
○ Reporters
● Business Process Monitoring
○ Focus on business process level
● Functional Monitoring
○ Focus on use-case level
● Technical Monitoring
○ Focus on individual pieces
What is Monitoring? - Categories
What is Monitoring? - Types
● System Monitoring
● Tracing/Span/Transaction Monitoring
● Performance Monitoring
● Integration Monitoring
● Application Monitoring
Traditional Monitoring Metrics and Debugging
WEB
LAYER
WEB
LAYER
METRICS
BASED ON
SYNCHRONOUS
REQUEST
RESPONSE
APP
LAYER
APP
LAYER
Reactive - An Overview
Reactive - An Overview
● Responsive reacting in a desired or positive way quick to react or respond
● Elastic return to original shape/size after being stretched, squeezed, etc.
● Resilient become strong, or successful again after something bad happens
● Message recorded communication sent to a recipient who cannot be contacted
● Driven operated, moved, or controlled by a specified person or source of power
-- Merriam Webster Dictionary
Architecture Shift Freedom for all!
Finally, asynchronous,
parallel, distributed
computing that works
for the common
person
Distributed Computing Disclaimer The availability and accuracy of the information delivered by these services and information they portray are contingent on a distributed computing environment comprised of several unique asynchronous, parallel and non-
deterministic applications within the said companies multi-clustered system. As a result, the availability, accuracy and access to these services and the data they provide, may or may not be available at any given time. Additionally, the availability, precision and
access to dynamic data provided on these multi-clustered services may or may not be dependent on other systems being available at the time of use. The user is cautioned that these services may or may not be available at any time may become unavailable
without notice for any reason and for any length of time. Why? Well, because the stack traces produced are pretty much useless, and the supporting development staff must fall back on print-line statements to isoloate the cause of said error.
Monitoring Reactive Applications The Challenge
Asynchronous and Distributed => traditional ways of monitoring no longer valid...
[info] at cinnamon.sample.failure.B$$anonfun$receive$2.applyOrElse(FailureDemo.scala 102)
[info] at akka.actor.Actor$class.aroundReceive(Actor.scala 467)
[info] at cinnamon.sample.failure.B.aroundReceive(FailureDemo.scala 86)
[info] at akka.actor.ActorCell.receiveMessage(ActorCell.scala 516)
[info] at akka.actor.ActorCell.invoke(ActorCell.scala)
[info] at akka.dispatch.Mailbox.processMailbox(Mailbox.scala 238)
[info] at akka.dispatch.Mailbox.run$$original(Mailbox.scala 220)
[info] at akka.dispatch.Mailbox.run(Mailbox.scala 29)
[info] at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala 397)
[info] at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java 260)
[info] at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java 1339)
[info] at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java 1979)
[info] at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java 107)
Monitoring Reactive Applications The Challenge
Asynchronous and Distributed means:
● The path to where you are is no longer available
● You don’t know where your code will execute
● The epitome of non-determinism
What to do??
Monitoring Reactive Applications Tracing
● Traces follow asynchronous message flows
● Create a unique entry point
● Flows through multiple actors via message sends
● Create a unique ending point
● The result is a trace span or “hot path”
● From this we can
○ Gather metrics on time-to-complete
○ Derive latency metrics
○ Establish a base for flow visualization
Monitoring Reactive Applications Tracing
import akka.actor.{ Actor, Props }
import com.lightbend.cinnamon.akka. Tracer
class ActorA extends Actor {
val actorB = context.actorOf (Props[ActorB], "b")
def receive = {
case "begin" =>
Tracer(context.system ).start("myTraceName") {
actorB forward "doWork"
}
}
}
Monitoring Reactive Applications Tracing
class ActorB extends Actor {
def receive = {
case "doWork" =>
doSomeWork()
Tracer(context.system).end("myTraceName")
}
def doSomeWork(): Unit = ???
}
Output
[metrics-logger-reporter-1-thread-1] INFO output-sink - type=HISTOGRAM, name=traces.myTraceName.
trace-histogram, count=109, min=266598801, max=4344502206, mean=2.132377393674398E9, stddev=1.
3304223746691678E9, median=1.84076406E9, p75=3.410501492E9, p95=4.157100469E9, p98=4.276913089E9,
p99=4.283057143E9, p999=4.344502206E9
● Dapper paper from Google in 2010 - Highly Influential
● Typesafe’s implementation of the Dapper paper was called
Typesafe Console (2012 - 2013)
The Monitored
Application
Instr.
The Monitored
Application
Instr.
Monitoring Reactive Applications Dapper
Database
Analyzers Query/Read SideThe Monitored
Application
Instrumentation
Monitoring Reactive Applications Trace Info.
Actor
A
Actor
B
Actor
C
received msg1
told msg2
completed msg1 received msg2
forwarded msg3
completed msg2 received msg3
told msg4
completed msg3
received msg4
completed msg4
msg1
msg2
msg3
msg4
Monitoring Reactive Applications Trace Events
"id" : "4RHh8WFt3T6JkhKx9rj2qQ==",
"trace" : "4RHh8ZFx2z6JkhKx9rj2qQ==",
"parent" : "4RHh8UAf3T6JkhKx9rj2qQ==",
"host" : "192.168.99.100",
"nanoTime" : "1346248552246712000",
"annotation" : {
"type" : "received",
"actor" : "akka://SomeActorSystem/user/ActorA"
}
Monitoring Reactive Applications Associated Cost
● Which Akka application is more costly to monitor?
○ Application with few actors with lots of business logic
○ Application with several temporary, short-lived, actors
● Cost associated with each “event” in the application
● Each application has its own set of characteristics
● Performance overhead is therefore very difficult to predict!
Monitoring Reactive Applications Cost Mitigation
● Flexible Configuration
● Sampling Capabilities
● Delta Approach
Each cost mitigation has its drawbacks less insight or higher
complexity. When it comes to monitoring lunch != free
Lightbend Monitoring
● Project started 1.5 years ago
● Support for Akka actors and Lagom circuit breakers
● Generates metrics, events and traces
● Support for various backends
○ StatsD, Takipi, MDC, etc.
○ Miscellaneous Coda Hale reporters
● Monitoring requires subscription with Lightbend
○ Free to try out during development!
Lightbend Monitoring - v2.0 (released in August)
● Agent based - enables instrumentation of more libraries
○ Used to be pre-instrumented JAR files
○ Supports OS Akka 2.3.x and 2.4.x out of the box
● Lagom circuit breaker metrics
● More reporters - e.g. ElasticSearch integration
● Simplified setup for sbt, Maven and Gradle
● Improved configuration and documentation
Lightbend Monitoring - Overview
The Monitored
Application
The Monitored
Application
The Monitored
Application
Instr.
&
Metrics
Events
Traces
Instr.
&
Metrics
Events
Traces
Instr.
&
Metrics
Events
Traces
Lightbend Monitoring 2.x (x > 0)
● Monitoring of Dispatchers and Thread Pools
● “Flows” a.k.a. Futures and Streams
● Improved monitoring of Lagom
● ConductR based “packaged solution” for easy exploration
○ Provided UI dashboards out of the box
○ Uses Elasticsearch, Grafana and Kibana
Lightbend Monitoring - Under the hood
● Uses a Java agent
○ Start with “java -javaagent cinnamon-agent.jar ...”
■ Documentation describes how to set this up for sbt, Maven and Gradle
● Agent instruments code during load-time
● Instrumented code calls a SPI
Lightbend Monitoring - Instrumented Code
// Inside the Akka ActorCell class...
protected def create(failure: Option[ActorInitializationException]):Unit = {
//...
try {
val created = newActor()
//...
system.instrumentation.actorStarted(self)
} catch {
//...
}
}
Lightbend Monitoring - SPI
public abstract class ActorInstrumentation {
public abstract void actorCreated( ActorRef actorRef, MessageDispatcher
dispatcher);
public abstract void actorStarted( ActorRef actorRef);
public abstract void actorStopped( ActorRef actorRef);
//...
}
Lightbend Monitoring - Under the hood
Backend Plugins
● CodaHale Metrics
● Takipi
Lightbend Monitoring - Under the hood
Metrics Abstractions
● MetricsBackend & Factory
○ Counter
○ Guage
○ Rate
○ Recorder
/**
* {@code Recorder} metric for measuring changing
* values (like durations).
*/
public interface Recorder extends Metric {
/**
* Record a new value.
*/
void record(long value);
/**
* Empty no-op {@code Recorder}.
*/
Recorder NONE = new Recorder() {
@Override
public void record(long value) {
}
@Override
public void destroy() {
}
};
}
Lightbend Monitoring - Configuration
MetricsFactory by Config
# Automatically set up the Coda Hale Metrics backend
cinnamon.backends += chmetrics
cinnamon {
chmetrics {
backend-class = "cinnamon.chmetrics.CodaHaleBackend"
... more config
}
}
Lightbend Monitoring - Reporters
CodaHale Metrics Reporters
● JMX
● Console
● ElasticSearch
● SLF4J
● HTTP
● StatsD
● Memory usage
● Garbage Collection
● Class loading
cinnamon {
chmetrics {
show-config-info = true
show-loaded-config-settings = true
reporters += "console-reporter"
}
akka.actors {
"sample.bottleneck.*" = {
report-by = class
}
}
trace.thresholds {
"hotpath" = 60s
}
}
Lightbend Monitoring - Information
● “Sounds like this is cool, how can I try it out?”
○ Commercial, but free use in development
○ https //www.lightbend.com/products/monitoring
● Checkout the docs for more info
○ http //monitoring.lightbend.com/docs/latest/home.html
● Checkout our online demo
○ http //demo.lightbend.com
Upgrade your grey matter

Two free O’Reilly eBooks by Lightbend
http://bit.ly/ReactiveMicroservice http://bit.ly/DevelopReactiveMicroservice
lightbend.com/pov
Reactive Roundtable

World Tour by Lightbend
lightbend.com/reactive-roundtable
Proof of Value Service

Accelerate Project Success
Monitoring Microservices in Production with Lightbend Reactive Platform

Más contenido relacionado

Destacado

Building a Real-Time Forecasting Engine with Scala and Akka
Building a Real-Time Forecasting Engine with Scala and Akka Building a Real-Time Forecasting Engine with Scala and Akka
Building a Real-Time Forecasting Engine with Scala and Akka Lightbend
 
Going Reactive in the Land of No
Going Reactive in the Land of NoGoing Reactive in the Land of No
Going Reactive in the Land of NoLightbend
 
Using the Actor Model with Domain-Driven Design (DDD) in Reactive Systems - w...
Using the Actor Model with Domain-Driven Design (DDD) in Reactive Systems - w...Using the Actor Model with Domain-Driven Design (DDD) in Reactive Systems - w...
Using the Actor Model with Domain-Driven Design (DDD) in Reactive Systems - w...Lightbend
 
Exploring Reactive Integrations With Akka Streams, Alpakka And Apache Kafka
Exploring Reactive Integrations With Akka Streams, Alpakka And Apache KafkaExploring Reactive Integrations With Akka Streams, Alpakka And Apache Kafka
Exploring Reactive Integrations With Akka Streams, Alpakka And Apache KafkaLightbend
 
Lightbend Fast Data Platform
Lightbend Fast Data PlatformLightbend Fast Data Platform
Lightbend Fast Data PlatformLightbend
 
Journey to the Modern App with Containers, Microservices and Big Data
Journey to the Modern App with Containers, Microservices and Big DataJourney to the Modern App with Containers, Microservices and Big Data
Journey to the Modern App with Containers, Microservices and Big DataLightbend
 
Typesafe Reactive Platform: Monitoring 1.0, Commercial features and more
Typesafe Reactive Platform: Monitoring 1.0, Commercial features and moreTypesafe Reactive Platform: Monitoring 1.0, Commercial features and more
Typesafe Reactive Platform: Monitoring 1.0, Commercial features and moreLegacy Typesafe (now Lightbend)
 
What is reactive
What is reactiveWhat is reactive
What is reactiveLightbend
 
Managing Binary Compatibility in Scala (Scala Days 2011)
Managing Binary Compatibility in Scala (Scala Days 2011)Managing Binary Compatibility in Scala (Scala Days 2011)
Managing Binary Compatibility in Scala (Scala Days 2011)mircodotta
 
Go Reactive: Event-Driven, Scalable, Resilient & Responsive Systems (Soft-Sha...
Go Reactive: Event-Driven, Scalable, Resilient & Responsive Systems (Soft-Sha...Go Reactive: Event-Driven, Scalable, Resilient & Responsive Systems (Soft-Sha...
Go Reactive: Event-Driven, Scalable, Resilient & Responsive Systems (Soft-Sha...mircodotta
 
Introduction to akka actors with java 8
Introduction to akka actors with java 8Introduction to akka actors with java 8
Introduction to akka actors with java 8Johan Andrén
 
How to deal with REST API Evolution
How to deal with REST API EvolutionHow to deal with REST API Evolution
How to deal with REST API EvolutionMiredot
 
Scala Past, Present & Future
Scala Past, Present & FutureScala Past, Present & Future
Scala Past, Present & Futuremircodotta
 
RESTFul API Design and Documentation - an Introduction
RESTFul API Design and Documentation - an IntroductionRESTFul API Design and Documentation - an Introduction
RESTFul API Design and Documentation - an IntroductionMiredot
 

Destacado (14)

Building a Real-Time Forecasting Engine with Scala and Akka
Building a Real-Time Forecasting Engine with Scala and Akka Building a Real-Time Forecasting Engine with Scala and Akka
Building a Real-Time Forecasting Engine with Scala and Akka
 
Going Reactive in the Land of No
Going Reactive in the Land of NoGoing Reactive in the Land of No
Going Reactive in the Land of No
 
Using the Actor Model with Domain-Driven Design (DDD) in Reactive Systems - w...
Using the Actor Model with Domain-Driven Design (DDD) in Reactive Systems - w...Using the Actor Model with Domain-Driven Design (DDD) in Reactive Systems - w...
Using the Actor Model with Domain-Driven Design (DDD) in Reactive Systems - w...
 
Exploring Reactive Integrations With Akka Streams, Alpakka And Apache Kafka
Exploring Reactive Integrations With Akka Streams, Alpakka And Apache KafkaExploring Reactive Integrations With Akka Streams, Alpakka And Apache Kafka
Exploring Reactive Integrations With Akka Streams, Alpakka And Apache Kafka
 
Lightbend Fast Data Platform
Lightbend Fast Data PlatformLightbend Fast Data Platform
Lightbend Fast Data Platform
 
Journey to the Modern App with Containers, Microservices and Big Data
Journey to the Modern App with Containers, Microservices and Big DataJourney to the Modern App with Containers, Microservices and Big Data
Journey to the Modern App with Containers, Microservices and Big Data
 
Typesafe Reactive Platform: Monitoring 1.0, Commercial features and more
Typesafe Reactive Platform: Monitoring 1.0, Commercial features and moreTypesafe Reactive Platform: Monitoring 1.0, Commercial features and more
Typesafe Reactive Platform: Monitoring 1.0, Commercial features and more
 
What is reactive
What is reactiveWhat is reactive
What is reactive
 
Managing Binary Compatibility in Scala (Scala Days 2011)
Managing Binary Compatibility in Scala (Scala Days 2011)Managing Binary Compatibility in Scala (Scala Days 2011)
Managing Binary Compatibility in Scala (Scala Days 2011)
 
Go Reactive: Event-Driven, Scalable, Resilient & Responsive Systems (Soft-Sha...
Go Reactive: Event-Driven, Scalable, Resilient & Responsive Systems (Soft-Sha...Go Reactive: Event-Driven, Scalable, Resilient & Responsive Systems (Soft-Sha...
Go Reactive: Event-Driven, Scalable, Resilient & Responsive Systems (Soft-Sha...
 
Introduction to akka actors with java 8
Introduction to akka actors with java 8Introduction to akka actors with java 8
Introduction to akka actors with java 8
 
How to deal with REST API Evolution
How to deal with REST API EvolutionHow to deal with REST API Evolution
How to deal with REST API Evolution
 
Scala Past, Present & Future
Scala Past, Present & FutureScala Past, Present & Future
Scala Past, Present & Future
 
RESTFul API Design and Documentation - an Introduction
RESTFul API Design and Documentation - an IntroductionRESTFul API Design and Documentation - an Introduction
RESTFul API Design and Documentation - an Introduction
 

Más de Lightbend

IoT 'Megaservices' - High Throughput Microservices with Akka
IoT 'Megaservices' - High Throughput Microservices with AkkaIoT 'Megaservices' - High Throughput Microservices with Akka
IoT 'Megaservices' - High Throughput Microservices with AkkaLightbend
 
How Akka Cluster Works: Actors Living in a Cluster
How Akka Cluster Works: Actors Living in a ClusterHow Akka Cluster Works: Actors Living in a Cluster
How Akka Cluster Works: Actors Living in a ClusterLightbend
 
The Reactive Principles: Eight Tenets For Building Cloud Native Applications
The Reactive Principles: Eight Tenets For Building Cloud Native ApplicationsThe Reactive Principles: Eight Tenets For Building Cloud Native Applications
The Reactive Principles: Eight Tenets For Building Cloud Native ApplicationsLightbend
 
Putting the 'I' in IoT - Building Digital Twins with Akka Microservices
Putting the 'I' in IoT - Building Digital Twins with Akka MicroservicesPutting the 'I' in IoT - Building Digital Twins with Akka Microservices
Putting the 'I' in IoT - Building Digital Twins with Akka MicroservicesLightbend
 
Akka at Enterprise Scale: Performance Tuning Distributed Applications
Akka at Enterprise Scale: Performance Tuning Distributed ApplicationsAkka at Enterprise Scale: Performance Tuning Distributed Applications
Akka at Enterprise Scale: Performance Tuning Distributed ApplicationsLightbend
 
Digital Transformation with Kubernetes, Containers, and Microservices
Digital Transformation with Kubernetes, Containers, and MicroservicesDigital Transformation with Kubernetes, Containers, and Microservices
Digital Transformation with Kubernetes, Containers, and MicroservicesLightbend
 
Detecting Real-Time Financial Fraud with Cloudflow on Kubernetes
Detecting Real-Time Financial Fraud with Cloudflow on KubernetesDetecting Real-Time Financial Fraud with Cloudflow on Kubernetes
Detecting Real-Time Financial Fraud with Cloudflow on KubernetesLightbend
 
Cloudstate - Towards Stateful Serverless
Cloudstate - Towards Stateful ServerlessCloudstate - Towards Stateful Serverless
Cloudstate - Towards Stateful ServerlessLightbend
 
Digital Transformation from Monoliths to Microservices to Serverless and Beyond
Digital Transformation from Monoliths to Microservices to Serverless and BeyondDigital Transformation from Monoliths to Microservices to Serverless and Beyond
Digital Transformation from Monoliths to Microservices to Serverless and BeyondLightbend
 
Akka Anti-Patterns, Goodbye: Six Features of Akka 2.6
Akka Anti-Patterns, Goodbye: Six Features of Akka 2.6Akka Anti-Patterns, Goodbye: Six Features of Akka 2.6
Akka Anti-Patterns, Goodbye: Six Features of Akka 2.6Lightbend
 
Lessons From HPE: From Batch To Streaming For 20 Billion Sensors With Lightbe...
Lessons From HPE: From Batch To Streaming For 20 Billion Sensors With Lightbe...Lessons From HPE: From Batch To Streaming For 20 Billion Sensors With Lightbe...
Lessons From HPE: From Batch To Streaming For 20 Billion Sensors With Lightbe...Lightbend
 
How to build streaming data pipelines with Akka Streams, Flink, and Spark usi...
How to build streaming data pipelines with Akka Streams, Flink, and Spark usi...How to build streaming data pipelines with Akka Streams, Flink, and Spark usi...
How to build streaming data pipelines with Akka Streams, Flink, and Spark usi...Lightbend
 
Microservices, Kubernetes, and Application Modernization Done Right
Microservices, Kubernetes, and Application Modernization Done RightMicroservices, Kubernetes, and Application Modernization Done Right
Microservices, Kubernetes, and Application Modernization Done RightLightbend
 
Full Stack Reactive In Practice
Full Stack Reactive In PracticeFull Stack Reactive In Practice
Full Stack Reactive In PracticeLightbend
 
Akka and Kubernetes: A Symbiotic Love Story
Akka and Kubernetes: A Symbiotic Love StoryAkka and Kubernetes: A Symbiotic Love Story
Akka and Kubernetes: A Symbiotic Love StoryLightbend
 
Scala 3 Is Coming: Martin Odersky Shares What To Know
Scala 3 Is Coming: Martin Odersky Shares What To KnowScala 3 Is Coming: Martin Odersky Shares What To Know
Scala 3 Is Coming: Martin Odersky Shares What To KnowLightbend
 
Migrating From Java EE To Cloud-Native Reactive Systems
Migrating From Java EE To Cloud-Native Reactive SystemsMigrating From Java EE To Cloud-Native Reactive Systems
Migrating From Java EE To Cloud-Native Reactive SystemsLightbend
 
Running Kafka On Kubernetes With Strimzi For Real-Time Streaming Applications
Running Kafka On Kubernetes With Strimzi For Real-Time Streaming ApplicationsRunning Kafka On Kubernetes With Strimzi For Real-Time Streaming Applications
Running Kafka On Kubernetes With Strimzi For Real-Time Streaming ApplicationsLightbend
 
Designing Events-First Microservices For A Cloud Native World
Designing Events-First Microservices For A Cloud Native WorldDesigning Events-First Microservices For A Cloud Native World
Designing Events-First Microservices For A Cloud Native WorldLightbend
 
Scala Security: Eliminate 200+ Code-Level Threats With Fortify SCA For Scala
Scala Security: Eliminate 200+ Code-Level Threats With Fortify SCA For ScalaScala Security: Eliminate 200+ Code-Level Threats With Fortify SCA For Scala
Scala Security: Eliminate 200+ Code-Level Threats With Fortify SCA For ScalaLightbend
 

Más de Lightbend (20)

IoT 'Megaservices' - High Throughput Microservices with Akka
IoT 'Megaservices' - High Throughput Microservices with AkkaIoT 'Megaservices' - High Throughput Microservices with Akka
IoT 'Megaservices' - High Throughput Microservices with Akka
 
How Akka Cluster Works: Actors Living in a Cluster
How Akka Cluster Works: Actors Living in a ClusterHow Akka Cluster Works: Actors Living in a Cluster
How Akka Cluster Works: Actors Living in a Cluster
 
The Reactive Principles: Eight Tenets For Building Cloud Native Applications
The Reactive Principles: Eight Tenets For Building Cloud Native ApplicationsThe Reactive Principles: Eight Tenets For Building Cloud Native Applications
The Reactive Principles: Eight Tenets For Building Cloud Native Applications
 
Putting the 'I' in IoT - Building Digital Twins with Akka Microservices
Putting the 'I' in IoT - Building Digital Twins with Akka MicroservicesPutting the 'I' in IoT - Building Digital Twins with Akka Microservices
Putting the 'I' in IoT - Building Digital Twins with Akka Microservices
 
Akka at Enterprise Scale: Performance Tuning Distributed Applications
Akka at Enterprise Scale: Performance Tuning Distributed ApplicationsAkka at Enterprise Scale: Performance Tuning Distributed Applications
Akka at Enterprise Scale: Performance Tuning Distributed Applications
 
Digital Transformation with Kubernetes, Containers, and Microservices
Digital Transformation with Kubernetes, Containers, and MicroservicesDigital Transformation with Kubernetes, Containers, and Microservices
Digital Transformation with Kubernetes, Containers, and Microservices
 
Detecting Real-Time Financial Fraud with Cloudflow on Kubernetes
Detecting Real-Time Financial Fraud with Cloudflow on KubernetesDetecting Real-Time Financial Fraud with Cloudflow on Kubernetes
Detecting Real-Time Financial Fraud with Cloudflow on Kubernetes
 
Cloudstate - Towards Stateful Serverless
Cloudstate - Towards Stateful ServerlessCloudstate - Towards Stateful Serverless
Cloudstate - Towards Stateful Serverless
 
Digital Transformation from Monoliths to Microservices to Serverless and Beyond
Digital Transformation from Monoliths to Microservices to Serverless and BeyondDigital Transformation from Monoliths to Microservices to Serverless and Beyond
Digital Transformation from Monoliths to Microservices to Serverless and Beyond
 
Akka Anti-Patterns, Goodbye: Six Features of Akka 2.6
Akka Anti-Patterns, Goodbye: Six Features of Akka 2.6Akka Anti-Patterns, Goodbye: Six Features of Akka 2.6
Akka Anti-Patterns, Goodbye: Six Features of Akka 2.6
 
Lessons From HPE: From Batch To Streaming For 20 Billion Sensors With Lightbe...
Lessons From HPE: From Batch To Streaming For 20 Billion Sensors With Lightbe...Lessons From HPE: From Batch To Streaming For 20 Billion Sensors With Lightbe...
Lessons From HPE: From Batch To Streaming For 20 Billion Sensors With Lightbe...
 
How to build streaming data pipelines with Akka Streams, Flink, and Spark usi...
How to build streaming data pipelines with Akka Streams, Flink, and Spark usi...How to build streaming data pipelines with Akka Streams, Flink, and Spark usi...
How to build streaming data pipelines with Akka Streams, Flink, and Spark usi...
 
Microservices, Kubernetes, and Application Modernization Done Right
Microservices, Kubernetes, and Application Modernization Done RightMicroservices, Kubernetes, and Application Modernization Done Right
Microservices, Kubernetes, and Application Modernization Done Right
 
Full Stack Reactive In Practice
Full Stack Reactive In PracticeFull Stack Reactive In Practice
Full Stack Reactive In Practice
 
Akka and Kubernetes: A Symbiotic Love Story
Akka and Kubernetes: A Symbiotic Love StoryAkka and Kubernetes: A Symbiotic Love Story
Akka and Kubernetes: A Symbiotic Love Story
 
Scala 3 Is Coming: Martin Odersky Shares What To Know
Scala 3 Is Coming: Martin Odersky Shares What To KnowScala 3 Is Coming: Martin Odersky Shares What To Know
Scala 3 Is Coming: Martin Odersky Shares What To Know
 
Migrating From Java EE To Cloud-Native Reactive Systems
Migrating From Java EE To Cloud-Native Reactive SystemsMigrating From Java EE To Cloud-Native Reactive Systems
Migrating From Java EE To Cloud-Native Reactive Systems
 
Running Kafka On Kubernetes With Strimzi For Real-Time Streaming Applications
Running Kafka On Kubernetes With Strimzi For Real-Time Streaming ApplicationsRunning Kafka On Kubernetes With Strimzi For Real-Time Streaming Applications
Running Kafka On Kubernetes With Strimzi For Real-Time Streaming Applications
 
Designing Events-First Microservices For A Cloud Native World
Designing Events-First Microservices For A Cloud Native WorldDesigning Events-First Microservices For A Cloud Native World
Designing Events-First Microservices For A Cloud Native World
 
Scala Security: Eliminate 200+ Code-Level Threats With Fortify SCA For Scala
Scala Security: Eliminate 200+ Code-Level Threats With Fortify SCA For ScalaScala Security: Eliminate 200+ Code-Level Threats With Fortify SCA For Scala
Scala Security: Eliminate 200+ Code-Level Threats With Fortify SCA For Scala
 

Último

How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsAndolasoft Inc
 
Project Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationProject Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationkaushalgiri8080
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfkalichargn70th171
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...OnePlan Solutions
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AIABDERRAOUF MEHENNI
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...soniya singh
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxbodapatigopi8531
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideChristina Lin
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataBradBedford3
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)OPEN KNOWLEDGE GmbH
 
Active Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdfActive Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdfCionsystems
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software DevelopersVinodh Ram
 
Test Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendTest Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendArshad QA
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number SystemsJheuzeDellosa
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...gurkirankumar98700
 

Último (20)

How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 
Project Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationProject Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanation
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptx
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)
 
Active Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdfActive Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdf
 
Exploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the ProcessExploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the Process
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software Developers
 
Test Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendTest Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and Backend
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number Systems
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
 

Monitoring Microservices in Production with Lightbend Reactive Platform

  • 1. WEBINAR Monitoring Microservices in Production 
 with Lightbend Reactive Platform Duncan Devore (@ironfish) & Henrik Engström (@h3nk3)
  • 2. Agenda ● What is Monitoring? ● Traditional Monitoring ● Monitoring Reactive Applications ● Lightbend Monitoring ○ Overview ○ Under the hood ○ Reporters
  • 3. ● Business Process Monitoring ○ Focus on business process level ● Functional Monitoring ○ Focus on use-case level ● Technical Monitoring ○ Focus on individual pieces What is Monitoring? - Categories
  • 4. What is Monitoring? - Types ● System Monitoring ● Tracing/Span/Transaction Monitoring ● Performance Monitoring ● Integration Monitoring ● Application Monitoring
  • 5. Traditional Monitoring Metrics and Debugging WEB LAYER WEB LAYER METRICS BASED ON SYNCHRONOUS REQUEST RESPONSE APP LAYER APP LAYER
  • 6. Reactive - An Overview
  • 7. Reactive - An Overview ● Responsive reacting in a desired or positive way quick to react or respond ● Elastic return to original shape/size after being stretched, squeezed, etc. ● Resilient become strong, or successful again after something bad happens ● Message recorded communication sent to a recipient who cannot be contacted ● Driven operated, moved, or controlled by a specified person or source of power -- Merriam Webster Dictionary
  • 8. Architecture Shift Freedom for all! Finally, asynchronous, parallel, distributed computing that works for the common person Distributed Computing Disclaimer The availability and accuracy of the information delivered by these services and information they portray are contingent on a distributed computing environment comprised of several unique asynchronous, parallel and non- deterministic applications within the said companies multi-clustered system. As a result, the availability, accuracy and access to these services and the data they provide, may or may not be available at any given time. Additionally, the availability, precision and access to dynamic data provided on these multi-clustered services may or may not be dependent on other systems being available at the time of use. The user is cautioned that these services may or may not be available at any time may become unavailable without notice for any reason and for any length of time. Why? Well, because the stack traces produced are pretty much useless, and the supporting development staff must fall back on print-line statements to isoloate the cause of said error.
  • 9. Monitoring Reactive Applications The Challenge Asynchronous and Distributed => traditional ways of monitoring no longer valid... [info] at cinnamon.sample.failure.B$$anonfun$receive$2.applyOrElse(FailureDemo.scala 102) [info] at akka.actor.Actor$class.aroundReceive(Actor.scala 467) [info] at cinnamon.sample.failure.B.aroundReceive(FailureDemo.scala 86) [info] at akka.actor.ActorCell.receiveMessage(ActorCell.scala 516) [info] at akka.actor.ActorCell.invoke(ActorCell.scala) [info] at akka.dispatch.Mailbox.processMailbox(Mailbox.scala 238) [info] at akka.dispatch.Mailbox.run$$original(Mailbox.scala 220) [info] at akka.dispatch.Mailbox.run(Mailbox.scala 29) [info] at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala 397) [info] at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java 260) [info] at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java 1339) [info] at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java 1979) [info] at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java 107)
  • 10. Monitoring Reactive Applications The Challenge Asynchronous and Distributed means: ● The path to where you are is no longer available ● You don’t know where your code will execute ● The epitome of non-determinism What to do??
  • 11. Monitoring Reactive Applications Tracing ● Traces follow asynchronous message flows ● Create a unique entry point ● Flows through multiple actors via message sends ● Create a unique ending point ● The result is a trace span or “hot path” ● From this we can ○ Gather metrics on time-to-complete ○ Derive latency metrics ○ Establish a base for flow visualization
  • 12. Monitoring Reactive Applications Tracing import akka.actor.{ Actor, Props } import com.lightbend.cinnamon.akka. Tracer class ActorA extends Actor { val actorB = context.actorOf (Props[ActorB], "b") def receive = { case "begin" => Tracer(context.system ).start("myTraceName") { actorB forward "doWork" } } }
  • 13. Monitoring Reactive Applications Tracing class ActorB extends Actor { def receive = { case "doWork" => doSomeWork() Tracer(context.system).end("myTraceName") } def doSomeWork(): Unit = ??? } Output [metrics-logger-reporter-1-thread-1] INFO output-sink - type=HISTOGRAM, name=traces.myTraceName. trace-histogram, count=109, min=266598801, max=4344502206, mean=2.132377393674398E9, stddev=1. 3304223746691678E9, median=1.84076406E9, p75=3.410501492E9, p95=4.157100469E9, p98=4.276913089E9, p99=4.283057143E9, p999=4.344502206E9
  • 14. ● Dapper paper from Google in 2010 - Highly Influential ● Typesafe’s implementation of the Dapper paper was called Typesafe Console (2012 - 2013) The Monitored Application Instr. The Monitored Application Instr. Monitoring Reactive Applications Dapper Database Analyzers Query/Read SideThe Monitored Application Instrumentation
  • 15. Monitoring Reactive Applications Trace Info. Actor A Actor B Actor C received msg1 told msg2 completed msg1 received msg2 forwarded msg3 completed msg2 received msg3 told msg4 completed msg3 received msg4 completed msg4 msg1 msg2 msg3 msg4
  • 16. Monitoring Reactive Applications Trace Events "id" : "4RHh8WFt3T6JkhKx9rj2qQ==", "trace" : "4RHh8ZFx2z6JkhKx9rj2qQ==", "parent" : "4RHh8UAf3T6JkhKx9rj2qQ==", "host" : "192.168.99.100", "nanoTime" : "1346248552246712000", "annotation" : { "type" : "received", "actor" : "akka://SomeActorSystem/user/ActorA" }
  • 17. Monitoring Reactive Applications Associated Cost ● Which Akka application is more costly to monitor? ○ Application with few actors with lots of business logic ○ Application with several temporary, short-lived, actors ● Cost associated with each “event” in the application ● Each application has its own set of characteristics ● Performance overhead is therefore very difficult to predict!
  • 18. Monitoring Reactive Applications Cost Mitigation ● Flexible Configuration ● Sampling Capabilities ● Delta Approach Each cost mitigation has its drawbacks less insight or higher complexity. When it comes to monitoring lunch != free
  • 19. Lightbend Monitoring ● Project started 1.5 years ago ● Support for Akka actors and Lagom circuit breakers ● Generates metrics, events and traces ● Support for various backends ○ StatsD, Takipi, MDC, etc. ○ Miscellaneous Coda Hale reporters ● Monitoring requires subscription with Lightbend ○ Free to try out during development!
  • 20. Lightbend Monitoring - v2.0 (released in August) ● Agent based - enables instrumentation of more libraries ○ Used to be pre-instrumented JAR files ○ Supports OS Akka 2.3.x and 2.4.x out of the box ● Lagom circuit breaker metrics ● More reporters - e.g. ElasticSearch integration ● Simplified setup for sbt, Maven and Gradle ● Improved configuration and documentation
  • 21. Lightbend Monitoring - Overview The Monitored Application The Monitored Application The Monitored Application Instr. & Metrics Events Traces Instr. & Metrics Events Traces Instr. & Metrics Events Traces
  • 22. Lightbend Monitoring 2.x (x > 0) ● Monitoring of Dispatchers and Thread Pools ● “Flows” a.k.a. Futures and Streams ● Improved monitoring of Lagom ● ConductR based “packaged solution” for easy exploration ○ Provided UI dashboards out of the box ○ Uses Elasticsearch, Grafana and Kibana
  • 23. Lightbend Monitoring - Under the hood ● Uses a Java agent ○ Start with “java -javaagent cinnamon-agent.jar ...” ■ Documentation describes how to set this up for sbt, Maven and Gradle ● Agent instruments code during load-time ● Instrumented code calls a SPI
  • 24. Lightbend Monitoring - Instrumented Code // Inside the Akka ActorCell class... protected def create(failure: Option[ActorInitializationException]):Unit = { //... try { val created = newActor() //... system.instrumentation.actorStarted(self) } catch { //... } }
  • 25. Lightbend Monitoring - SPI public abstract class ActorInstrumentation { public abstract void actorCreated( ActorRef actorRef, MessageDispatcher dispatcher); public abstract void actorStarted( ActorRef actorRef); public abstract void actorStopped( ActorRef actorRef); //... }
  • 26. Lightbend Monitoring - Under the hood Backend Plugins ● CodaHale Metrics ● Takipi
  • 27. Lightbend Monitoring - Under the hood Metrics Abstractions ● MetricsBackend & Factory ○ Counter ○ Guage ○ Rate ○ Recorder /** * {@code Recorder} metric for measuring changing * values (like durations). */ public interface Recorder extends Metric { /** * Record a new value. */ void record(long value); /** * Empty no-op {@code Recorder}. */ Recorder NONE = new Recorder() { @Override public void record(long value) { } @Override public void destroy() { } }; }
  • 28. Lightbend Monitoring - Configuration MetricsFactory by Config # Automatically set up the Coda Hale Metrics backend cinnamon.backends += chmetrics cinnamon { chmetrics { backend-class = "cinnamon.chmetrics.CodaHaleBackend" ... more config } }
  • 29. Lightbend Monitoring - Reporters CodaHale Metrics Reporters ● JMX ● Console ● ElasticSearch ● SLF4J ● HTTP ● StatsD ● Memory usage ● Garbage Collection ● Class loading cinnamon { chmetrics { show-config-info = true show-loaded-config-settings = true reporters += "console-reporter" } akka.actors { "sample.bottleneck.*" = { report-by = class } } trace.thresholds { "hotpath" = 60s } }
  • 30. Lightbend Monitoring - Information ● “Sounds like this is cool, how can I try it out?” ○ Commercial, but free use in development ○ https //www.lightbend.com/products/monitoring ● Checkout the docs for more info ○ http //monitoring.lightbend.com/docs/latest/home.html ● Checkout our online demo ○ http //demo.lightbend.com
  • 31. Upgrade your grey matter
 Two free O’Reilly eBooks by Lightbend http://bit.ly/ReactiveMicroservice http://bit.ly/DevelopReactiveMicroservice
  • 32. lightbend.com/pov Reactive Roundtable
 World Tour by Lightbend lightbend.com/reactive-roundtable Proof of Value Service
 Accelerate Project Success