SlideShare a Scribd company logo
LagomReactive microservices framework
#NightClazz @Lagom
12/05/16
Fabrice Sznajderman
@fsznajderman
Agenda
● Core concepts
● Lagom framework
● Hands on Lagom
Who I am?
Fabrice Sznajderman
○ Java/Scala/Web developer
■ Java/Scala trainer
■ Co-organizer of Scala IO 2016
■ Contributor on Lagom
● BrownBagLunch.fr
Chapter 1
Core
Concepts
Agenda
● Microservices architecture
● CQRS
● Event Sourcing
Core concepts
Core concepts
Microservices
Architecture
Monolithic vs Microservices
Monolithic issues
● All features are concentrated
in one app
● One technology used (silver
bullet?)
● Complexity rising over time
● new comers have difficulties to
dive into code base
Microservices-based
Architecture
Reactive Microservices Architecture: Design Principles for Distributed Systems - James Boner http:
//www.oreilly.com/programming/free/reactive-microservices-architecture.html
Microservices-Based Architecture is a simple concept: it
advocates creating a system from a collection of small,
isolated services, each of which owns their data, and is
independently isolated, scalable and resilient to
failure.
Services integrate with other services in order to form a
cohesive system that’s far more flexible than the typical
enterprise systems we build today.
What is a microservice?
Standalone component
What is a microservice?
Isolated
What is a microservice?
Own its data
What is a microservice?
Located microservice
What is a microservice?
Communication by asynchronous message
What is a good microservice ?
Answer with 3 questions ...
Question 1
Does my service do only one thing?
If you can state a microservice’s full
purpose with a short sentence, your
service is OK!
“This service manages users’
accounts”
Question 2
Is my service autonomous?
A service should be responsible
for its own behavior. It shouldn’t
rely on other services to do its
job.
“An autonomous service would accept the
any request regardless of the status of
others services.”
Question 3
Does this service own its own data?
A service “owns” data if it is the
sole writer and the sole reader of
the database where the data lives
“Data can be accessed only throught the
service interface, no directly”
Anti-pattern
● Adapted use-case?
● Transactionnal
● Distributed monolithic layers
● “Don’t Repeat Yourself”
● Shared data repository
That implies challenges
● Organisational impacts
● Monitoring of services
● Locating service
● Test strategy
● Distributed development
environment
Reading
Reactive Microservices Architecture by Jonas Boner
CQRS
Core concepts
CQRS stands for
● Command
● Query
● Responsability
● Segregation
Traditional approach
Traditional approach
● Using the same model for read
and write
● Read & write have different
needs
○ Representation of data can
take several forms
○ Update side contains
validation rules
● All together rises complexity
● Performance issues
Write : Normalization,
consistency, transactional...
Read : Denormalization,
scalability, performance...
Needs between read and write are not the
same.
http://martinfowler.com/bliki/CommandQuerySeparation.html
Facts
Command : Change the state of a
system but do not return a value
Queries : Return a result and do
not change the observable state
of the system (are free of side
effects)
Principle is that we divide our model into two
sharply separated categories:
http://martinfowler.com/bliki/CommandQuerySeparation.html
CQRS approach
CQRS approach
CQRS approah
● Each model are on
○ separate logicals processes
○ separate hardware
● Database :
○ shared
○ unique per model
● Unique model with differente
interfaces
Several manners to implement
Other architecture
CQRS approah
● Not a silver bullet, every case
doesn’t fit with this CQRS
approach.
● Doesn’t apply CQRS on whole
system, only be used on specific
portions of system (bounded
context - DDD)
Cautions
Next
CQRS design fits well with Event
Sourcing pattern...
Event
Sourcing
Core concepts
Traditional approah
Active record
Traditional approah
Active record
Traditional approah
● Only final state is captured
● Debugability & tracability not
really easy
● Complexity with mapping O & R
● Performance issue (update)
How we have reached this state?
Active record
Event Sourcing approach
● Don't update the current state
of objects
● Save the events that lead to the
current state
Different approach
Event Sourcing approach
● Complete log of every state
change
● Debugability & tracability
come easy
● Good performance (commit
log)
and more …
Benefits
● Complete rebuild
● Temporal query
● Event replay
Event Sourcing approach
More benefits
● Commands are going to change the
state (or not)
● Each state change creates an event
● Order of events must be preserved
Event Sourcing approach
How does it works?
● Command’s name describe an action
to do (imperative)
● Event’s name describe an action in
the past
Event Sourcing approach
Remarks
Event Sourcing approach
Restore
state into model
Event Sourcing approach
Deleting an object
Update the query side with deletion of
bank account.
Event Sourcing approach
Snapshot
● Several events will be created
● Restore all events to reach one state
might be expensive
● To avoid this, we use a snapshot
Lagom
Framework
Chapter 2
Agenda
● Big picture of Lagom
● Project structure
● My first microservice
Lagom framework
Big picture
of Lagom
Big picture of Lagom
First of all, … Lagom pronounce :
What is Lagom?
● Microservices framework for a
system of microservices
● Based on the Reactive principles
● A fully integrated development
environment
Which language?
● Core of framework written in
Scala
● Developments are in Java
● Scala version migth be available
soon
Main features
● Service API
● Persistence API
● Development Environment
● Production Environment
Service API
● Interface as descriptor
● Defined API of exposed services
● Synchronous request/response
● Asynchronous streaming
message
Persistence API
● Provides event-sourced
persisted entities
● CQRS Read side
● Entry point for events handlers
Development Environment
● One command to start all
services
● Hot reload of your code
● Several services provided out of
the box
● IDE Integration
Production Environment
● ConductR for production
environment
● Scaling
● Deployment
● Monitoring
Communication protocols
● Polyglot systems
● HTTP, WebSocket, JSON are
standards
● can consumed
● can be consumed
Component technologies
● Collection of technologies
● Some come from Lightbend
● Others are third-party and
open-source
Component technologies
● Java 8 (& Scala)
● Immutables
● SBT
● Jackson
● Cassandra
● Play framework
● Guice
● Akka : Persistence, Pub/Sub,
cluster
● Akka Stream : Streaming part
● SLF4J & Logback
● Asynchronous & non blocking as
default
● Distributed persistence : ES /
CQRS as default
● Circuit breaker (as default)
● Productivity for developers :
Expressive service interface
Design philosophy
Project
Structure
with Lagom
Activator
activator sampleProject lagom-java
● Engine provided by Lightbend
● Create project from template
● Template name for Lagom: lagom-java
● Activator must be installed apart
● Generated a new project :
Project tree
SBT build file
● Project configuration
● Describe all modules
● Describe all dependencies per module
● Host all parameters for project
○ cassandra
○ service locator
○ etc
Service declaration
● One service is composed of 2 sub-
projects
○ API
○ Implementation
● Implementation depends on API
SBT build file
organization in ThisBuild := "sample.helloworld"
// the Scala version that will be used for cross-
compiled libraries
scalaVersion in ThisBuild := "2.11.7"
lazy val helloworldApi = project("helloworld-api")
.settings(
version := "1.0-SNAPSHOT",
libraryDependencies += lagomJavadslApi
)
lazy val helloworldImpl = project("helloworld-impl")
.enablePlugins(LagomJava)
.settings(
version := "1.0-SNAPSHOT",
libraryDependencies ++= Seq(
lagomJavadslPersistence,
lagomJavadslTestKit
)
)
.settings(lagomForkedTestSettings: _*)
.dependsOn(helloworldApi)
Service imported
● One service could be imported as
dependency
● Just declare it and it will start as others
Launch services
● One command to launch all Lagom’s
service : sbt runAll
● Several services are launched
○ Cassandra
○ Service locator
○ service gateway
○ All services that you declared
Launch one service
● One command to launch one Lagom’s
service : sbt project_name/run
● no more services are launched
● One service Locator must be available
apart.
Locator service
● All services register on this locator
● By default, one service locator is started
● It can be started apart
Cassandra embedded
● One instance of Cassandra is started by
default
● It can be unactivate if no persistence is
required
● It can be started apart
● Cassandra’s client can be used to
explore tables
Mapping of one Service
Write a
service
with Lagom
Demo
Here, we will see :
○ Global configuration of project
○ Service Interface - Descriptor
○ Related implementation
○ All stuffs linked with persistence (CQRS-EventSourcing)
Just an information !
● 5 days ago, the API has change !!!
ServiceCall<Id,Request, Response>
interface ServiceCall<Request, Response> {
CompletionStage<Response> invoke(Request request);
//others methods
}
Ok, now we can dive into dark side...code! ;)
Thank you!
Next …
Hands on!
Chapter 3
Lagom : Reactive microservice framework

More Related Content

PPTX
Dnc2015 azure-microservizi-vforusso
PDF
Microservices and modularity with java
PDF
Docker+java
ODP
Spring cloud for microservices architecture
PDF
MicroProfile Panel - Sept 2016
PPTX
Web application I have always dreamt of
PDF
JEE Conf 2015: Less JS!
PDF
Microservices with Spring Boot
Dnc2015 azure-microservizi-vforusso
Microservices and modularity with java
Docker+java
Spring cloud for microservices architecture
MicroProfile Panel - Sept 2016
Web application I have always dreamt of
JEE Conf 2015: Less JS!
Microservices with Spring Boot

What's hot (20)

PDF
React.js - and how it changed our thinking about UI
PDF
Building Services with WSO2 Microservices Framework for Java
PDF
Dropwizard
PDF
Power tools in Java
PDF
Exposing GraphQLs as Managed APIs
PDF
What’s new in WSO2 Enterprise Integrator 6.6
PDF
Java 9 and Project Jigsaw
PDF
Java 8: Nashorn & avatar.js di Enrico Risa al JUG Roma
PDF
Dynamic management of kubernetes
PDF
2016_04_04_CNI_Spring_Meeting_Microservices
PPTX
Levelling up in Akka
PDF
Introducing Workflow Architectures Using Grails - Greach 2015
KEY
Scala & Lift (JEEConf 2012)
PPTX
istio: service mesh for all
PDF
Micronaut Deep Dive - Devoxx Belgium 2019
PDF
Introduction to the Nancy Framework
PDF
MongoDB and Machine Learning with Flowable
PPTX
Debugging Grails Database Performance
PDF
Slick eventsourcing
PDF
Type-safe front-end development with Scala
React.js - and how it changed our thinking about UI
Building Services with WSO2 Microservices Framework for Java
Dropwizard
Power tools in Java
Exposing GraphQLs as Managed APIs
What’s new in WSO2 Enterprise Integrator 6.6
Java 9 and Project Jigsaw
Java 8: Nashorn & avatar.js di Enrico Risa al JUG Roma
Dynamic management of kubernetes
2016_04_04_CNI_Spring_Meeting_Microservices
Levelling up in Akka
Introducing Workflow Architectures Using Grails - Greach 2015
Scala & Lift (JEEConf 2012)
istio: service mesh for all
Micronaut Deep Dive - Devoxx Belgium 2019
Introduction to the Nancy Framework
MongoDB and Machine Learning with Flowable
Debugging Grails Database Performance
Slick eventsourcing
Type-safe front-end development with Scala
Ad

Viewers also liked (20)

PDF
Lagom, reactive framework(chtijug2016)
PDF
Lagom, reactive framework(paris jug2017)
PDF
Lagom, reactive framework
PDF
Lean engineering for lean/balanced teams: lessons learned (and still learning...
PDF
ContainerCon 2015 - Be a Microservices Hero
PPTX
Dropwizard Restful 微服務 (microservice) 初探 - JCConf TW 2014
PDF
Developing Applications with a Micro Service Architecture - Chris Richardson
PPTX
Best Practices Building Cloud Scale Apps with Microservices
PDF
Disruptors Don't Play By The Rules
PPTX
Microservices - firststatedot.net - 13-oct-15
PDF
MicroProfile Devoxx.us
PDF
Maven c'est bien, SBT c'est mieux
PDF
Universitélang scala tools
PDF
Les monades Scala, Java 8
PDF
Java EE Microservices
PDF
Université des langages scala
PDF
Scala Intro
PPTX
Microservice architecture design principles
PPTX
Cloud Security
PDF
Introduction à Scala - Michel Schinz - January 2010
Lagom, reactive framework(chtijug2016)
Lagom, reactive framework(paris jug2017)
Lagom, reactive framework
Lean engineering for lean/balanced teams: lessons learned (and still learning...
ContainerCon 2015 - Be a Microservices Hero
Dropwizard Restful 微服務 (microservice) 初探 - JCConf TW 2014
Developing Applications with a Micro Service Architecture - Chris Richardson
Best Practices Building Cloud Scale Apps with Microservices
Disruptors Don't Play By The Rules
Microservices - firststatedot.net - 13-oct-15
MicroProfile Devoxx.us
Maven c'est bien, SBT c'est mieux
Universitélang scala tools
Les monades Scala, Java 8
Java EE Microservices
Université des langages scala
Scala Intro
Microservice architecture design principles
Cloud Security
Introduction à Scala - Michel Schinz - January 2010
Ad

Similar to Lagom : Reactive microservice framework (20)

ODP
Introduction to Lagom Framework
PDF
Intoduction to lagom framework
PDF
Event Sourcing in less than 20 minutes - With Akka and Java 8
PDF
Trivadis TechEvent 2016 Introduction to Lagom - another microservice-based fr...
PDF
Stay productive_while_slicing_up_the_monolith
PDF
Lagom - Mircoservices "Just Right"
PDF
Stay productive while slicing up the monolith
PDF
CQRS and ES with Lagom
PDF
TDC2017 | São Paulo - Trilha Arquitetura Java How we figured out we had a SRE...
PDF
Taking the friction out of microservice frameworks with Lagom
PDF
Full Stack Reactive In Practice
PDF
Stay productive while slicing up the monolith
PDF
Stay productive while slicing up the monolith
PDF
CQRS and Event Sourcing for Java Developers
PDF
The 6 Rules for Modernizing Your Legacy Java Monolith with Microservices
PDF
Modernizing Applications with Microservices
PDF
Lightbend Lagom: Microservices Just Right
PDF
Reactive Architectures
PDF
Viktor Turskyi "Effective NodeJS Application Development"
PPTX
Patterns of Distributed Application Design
Introduction to Lagom Framework
Intoduction to lagom framework
Event Sourcing in less than 20 minutes - With Akka and Java 8
Trivadis TechEvent 2016 Introduction to Lagom - another microservice-based fr...
Stay productive_while_slicing_up_the_monolith
Lagom - Mircoservices "Just Right"
Stay productive while slicing up the monolith
CQRS and ES with Lagom
TDC2017 | São Paulo - Trilha Arquitetura Java How we figured out we had a SRE...
Taking the friction out of microservice frameworks with Lagom
Full Stack Reactive In Practice
Stay productive while slicing up the monolith
Stay productive while slicing up the monolith
CQRS and Event Sourcing for Java Developers
The 6 Rules for Modernizing Your Legacy Java Monolith with Microservices
Modernizing Applications with Microservices
Lightbend Lagom: Microservices Just Right
Reactive Architectures
Viktor Turskyi "Effective NodeJS Application Development"
Patterns of Distributed Application Design

Recently uploaded (20)

PDF
Design an Analysis of Algorithms II-SECS-1021-03
PDF
Why TechBuilder is the Future of Pickup and Delivery App Development (1).pdf
PDF
Complete React Javascript Course Syllabus.pdf
PPTX
Agentic AI : A Practical Guide. Undersating, Implementing and Scaling Autono...
PPTX
ManageIQ - Sprint 268 Review - Slide Deck
PPTX
history of c programming in notes for students .pptx
PDF
Claude Code: Everyone is a 10x Developer - A Comprehensive AI-Powered CLI Tool
PPTX
Materi-Enum-and-Record-Data-Type (1).pptx
PPTX
Lecture 3: Operating Systems Introduction to Computer Hardware Systems
PPTX
Transform Your Business with a Software ERP System
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 41
PDF
Wondershare Filmora 15 Crack With Activation Key [2025
PPTX
Online Work Permit System for Fast Permit Processing
PDF
Upgrade and Innovation Strategies for SAP ERP Customers
PPTX
Materi_Pemrograman_Komputer-Looping.pptx
PDF
Addressing The Cult of Project Management Tools-Why Disconnected Work is Hold...
PPTX
Introduction to Artificial Intelligence
PDF
T3DD25 TYPO3 Content Blocks - Deep Dive by André Kraus
PPTX
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
PDF
Adobe Illustrator 28.6 Crack My Vision of Vector Design
Design an Analysis of Algorithms II-SECS-1021-03
Why TechBuilder is the Future of Pickup and Delivery App Development (1).pdf
Complete React Javascript Course Syllabus.pdf
Agentic AI : A Practical Guide. Undersating, Implementing and Scaling Autono...
ManageIQ - Sprint 268 Review - Slide Deck
history of c programming in notes for students .pptx
Claude Code: Everyone is a 10x Developer - A Comprehensive AI-Powered CLI Tool
Materi-Enum-and-Record-Data-Type (1).pptx
Lecture 3: Operating Systems Introduction to Computer Hardware Systems
Transform Your Business with a Software ERP System
Internet Downloader Manager (IDM) Crack 6.42 Build 41
Wondershare Filmora 15 Crack With Activation Key [2025
Online Work Permit System for Fast Permit Processing
Upgrade and Innovation Strategies for SAP ERP Customers
Materi_Pemrograman_Komputer-Looping.pptx
Addressing The Cult of Project Management Tools-Why Disconnected Work is Hold...
Introduction to Artificial Intelligence
T3DD25 TYPO3 Content Blocks - Deep Dive by André Kraus
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
Adobe Illustrator 28.6 Crack My Vision of Vector Design

Lagom : Reactive microservice framework

  • 1. LagomReactive microservices framework #NightClazz @Lagom 12/05/16 Fabrice Sznajderman @fsznajderman
  • 2. Agenda ● Core concepts ● Lagom framework ● Hands on Lagom
  • 3. Who I am? Fabrice Sznajderman ○ Java/Scala/Web developer ■ Java/Scala trainer ■ Co-organizer of Scala IO 2016 ■ Contributor on Lagom ● BrownBagLunch.fr
  • 5. Agenda ● Microservices architecture ● CQRS ● Event Sourcing Core concepts
  • 8. Monolithic issues ● All features are concentrated in one app ● One technology used (silver bullet?) ● Complexity rising over time ● new comers have difficulties to dive into code base
  • 9. Microservices-based Architecture Reactive Microservices Architecture: Design Principles for Distributed Systems - James Boner http: //www.oreilly.com/programming/free/reactive-microservices-architecture.html Microservices-Based Architecture is a simple concept: it advocates creating a system from a collection of small, isolated services, each of which owns their data, and is independently isolated, scalable and resilient to failure. Services integrate with other services in order to form a cohesive system that’s far more flexible than the typical enterprise systems we build today.
  • 10. What is a microservice? Standalone component
  • 11. What is a microservice? Isolated
  • 12. What is a microservice? Own its data
  • 13. What is a microservice? Located microservice
  • 14. What is a microservice? Communication by asynchronous message
  • 15. What is a good microservice ? Answer with 3 questions ...
  • 16. Question 1 Does my service do only one thing? If you can state a microservice’s full purpose with a short sentence, your service is OK! “This service manages users’ accounts”
  • 17. Question 2 Is my service autonomous? A service should be responsible for its own behavior. It shouldn’t rely on other services to do its job. “An autonomous service would accept the any request regardless of the status of others services.”
  • 18. Question 3 Does this service own its own data? A service “owns” data if it is the sole writer and the sole reader of the database where the data lives “Data can be accessed only throught the service interface, no directly”
  • 19. Anti-pattern ● Adapted use-case? ● Transactionnal ● Distributed monolithic layers ● “Don’t Repeat Yourself” ● Shared data repository
  • 20. That implies challenges ● Organisational impacts ● Monitoring of services ● Locating service ● Test strategy ● Distributed development environment
  • 23. CQRS stands for ● Command ● Query ● Responsability ● Segregation
  • 25. Traditional approach ● Using the same model for read and write ● Read & write have different needs ○ Representation of data can take several forms ○ Update side contains validation rules ● All together rises complexity ● Performance issues
  • 26. Write : Normalization, consistency, transactional... Read : Denormalization, scalability, performance... Needs between read and write are not the same. http://martinfowler.com/bliki/CommandQuerySeparation.html Facts
  • 27. Command : Change the state of a system but do not return a value Queries : Return a result and do not change the observable state of the system (are free of side effects) Principle is that we divide our model into two sharply separated categories: http://martinfowler.com/bliki/CommandQuerySeparation.html CQRS approach
  • 29. CQRS approah ● Each model are on ○ separate logicals processes ○ separate hardware ● Database : ○ shared ○ unique per model ● Unique model with differente interfaces Several manners to implement
  • 31. CQRS approah ● Not a silver bullet, every case doesn’t fit with this CQRS approach. ● Doesn’t apply CQRS on whole system, only be used on specific portions of system (bounded context - DDD) Cautions
  • 32. Next CQRS design fits well with Event Sourcing pattern...
  • 36. Traditional approah ● Only final state is captured ● Debugability & tracability not really easy ● Complexity with mapping O & R ● Performance issue (update) How we have reached this state? Active record
  • 37. Event Sourcing approach ● Don't update the current state of objects ● Save the events that lead to the current state Different approach
  • 38. Event Sourcing approach ● Complete log of every state change ● Debugability & tracability come easy ● Good performance (commit log) and more … Benefits
  • 39. ● Complete rebuild ● Temporal query ● Event replay Event Sourcing approach More benefits
  • 40. ● Commands are going to change the state (or not) ● Each state change creates an event ● Order of events must be preserved Event Sourcing approach How does it works?
  • 41. ● Command’s name describe an action to do (imperative) ● Event’s name describe an action in the past Event Sourcing approach Remarks
  • 43. Event Sourcing approach Deleting an object Update the query side with deletion of bank account.
  • 44. Event Sourcing approach Snapshot ● Several events will be created ● Restore all events to reach one state might be expensive ● To avoid this, we use a snapshot
  • 46. Agenda ● Big picture of Lagom ● Project structure ● My first microservice Lagom framework
  • 48. Big picture of Lagom First of all, … Lagom pronounce :
  • 49. What is Lagom? ● Microservices framework for a system of microservices ● Based on the Reactive principles ● A fully integrated development environment
  • 50. Which language? ● Core of framework written in Scala ● Developments are in Java ● Scala version migth be available soon
  • 51. Main features ● Service API ● Persistence API ● Development Environment ● Production Environment
  • 52. Service API ● Interface as descriptor ● Defined API of exposed services ● Synchronous request/response ● Asynchronous streaming message
  • 53. Persistence API ● Provides event-sourced persisted entities ● CQRS Read side ● Entry point for events handlers
  • 54. Development Environment ● One command to start all services ● Hot reload of your code ● Several services provided out of the box ● IDE Integration
  • 55. Production Environment ● ConductR for production environment ● Scaling ● Deployment ● Monitoring
  • 56. Communication protocols ● Polyglot systems ● HTTP, WebSocket, JSON are standards ● can consumed ● can be consumed
  • 57. Component technologies ● Collection of technologies ● Some come from Lightbend ● Others are third-party and open-source
  • 58. Component technologies ● Java 8 (& Scala) ● Immutables ● SBT ● Jackson ● Cassandra ● Play framework ● Guice ● Akka : Persistence, Pub/Sub, cluster ● Akka Stream : Streaming part ● SLF4J & Logback
  • 59. ● Asynchronous & non blocking as default ● Distributed persistence : ES / CQRS as default ● Circuit breaker (as default) ● Productivity for developers : Expressive service interface Design philosophy
  • 61. Activator activator sampleProject lagom-java ● Engine provided by Lightbend ● Create project from template ● Template name for Lagom: lagom-java ● Activator must be installed apart ● Generated a new project :
  • 63. SBT build file ● Project configuration ● Describe all modules ● Describe all dependencies per module ● Host all parameters for project ○ cassandra ○ service locator ○ etc
  • 64. Service declaration ● One service is composed of 2 sub- projects ○ API ○ Implementation ● Implementation depends on API
  • 65. SBT build file organization in ThisBuild := "sample.helloworld" // the Scala version that will be used for cross- compiled libraries scalaVersion in ThisBuild := "2.11.7" lazy val helloworldApi = project("helloworld-api") .settings( version := "1.0-SNAPSHOT", libraryDependencies += lagomJavadslApi ) lazy val helloworldImpl = project("helloworld-impl") .enablePlugins(LagomJava) .settings( version := "1.0-SNAPSHOT", libraryDependencies ++= Seq( lagomJavadslPersistence, lagomJavadslTestKit ) ) .settings(lagomForkedTestSettings: _*) .dependsOn(helloworldApi)
  • 66. Service imported ● One service could be imported as dependency ● Just declare it and it will start as others
  • 67. Launch services ● One command to launch all Lagom’s service : sbt runAll ● Several services are launched ○ Cassandra ○ Service locator ○ service gateway ○ All services that you declared
  • 68. Launch one service ● One command to launch one Lagom’s service : sbt project_name/run ● no more services are launched ● One service Locator must be available apart.
  • 69. Locator service ● All services register on this locator ● By default, one service locator is started ● It can be started apart
  • 70. Cassandra embedded ● One instance of Cassandra is started by default ● It can be unactivate if no persistence is required ● It can be started apart ● Cassandra’s client can be used to explore tables
  • 71. Mapping of one Service
  • 73. Demo Here, we will see : ○ Global configuration of project ○ Service Interface - Descriptor ○ Related implementation ○ All stuffs linked with persistence (CQRS-EventSourcing)
  • 74. Just an information ! ● 5 days ago, the API has change !!! ServiceCall<Id,Request, Response> interface ServiceCall<Request, Response> { CompletionStage<Response> invoke(Request request); //others methods }
  • 75. Ok, now we can dive into dark side...code! ;)