SlideShare une entreprise Scribd logo
1  sur  62
J-Fall 2010
Event Driven Actors
Lessons learned
Rick van der Arend
Paul van Dam
Agenda
• Introduction
• Event Driven Actors
• Case 1: Research into EDA maintainability
• Case 2: Research project in Scala
• Case 3: Client project
• Wrap-up
INTRODUCTION
Introducing Sogyo
• Consultancy
• Training
• Development
• Since 1995
Introducing the speakers
Introducing the speakers
Paul van Dam
Sogyo Engineer
▫ Developer
▫ Team lead
Interests:
▫ DDD
▫ Craftsmanship
▫ Kung Fu
Rick van der Arend
Sogyo Consultant
▫ Developer
▫ Architect
▫ Coach / Trainer
Interests:
▫ Event Driven
▫ Actor Model
▫ Functional
▫ Questions
EVENT DRIVEN ACTORS
Event-driven Architecture
• Software architecture pattern promoting the
production, detection, consumption of, and
reaction to events.
Early usages in interrupt requests and the GUI
Events
• Something occurs
• This gets noticed
• Notification is distributed
• One-way, Immutable, Asynchronous
• Fire-and-forget
Event
Actors
• Incoming message queue
• Asynchronous message loop
• All mutable state internally
• All shared state is immutable
• An „independent‟ object
Actor
Events and Actors
• Events are published by an Actor
• Other Actors are subscribed to notifications
Actor
Actor
Actor
Bus
T=0
Event
1
2
2
Motivation: Partitioning
 Managing complexity is
done by partitioning
 HICLEC, SRP
 Examples: Subroutines,
Functions, Objects,
Services, Actors, Agents
 Actors are independent,
but deterministic
Actor Actor
System System
System
Actor
SOA (2.0)
Event Driven Actors
Enterprise level
Single system level
Motivation: Loose coupling
• Events: immutable, one-way, fire-and-forget
• Agents: independent and asynchronous
• These characteristics magnify each other
• Together, they make a very loose coupling
Motivation: Threading sucks
• Standard in Java, C# and others
• A form of concurrency with shared memory
“Non-trivial multi-threaded programs are
incomprehensible to humans …”
Edward A. Lee, The Problem with Threads
Requires custom locking
Motivation: Concurrency
No ever increasing clock speeds anymore…
 Transistors
 Clock speed
 Power
 Instructions / cycle
CASES
1 2 3
Cases
• Case 1: Research into EDA maintainability
• Case 2: Research project in Scala
• Case 3: Client project
Questions per case
1. What was the goal?
2. How did we approach this?
3. What did we do and why?
4. What are our experiences?
5. What have we learned?
CASE 1: EDA MAINTAINABILITY
Q1. What was the goal?
To get an answer to the question:
“Does an Event Driven
Architecture improve
maintainability?”
Q2. What was our approach
We had an UVA Software Engineering student
write a dissertation on EDA Maintainability
and gave him freedom to experiment
Q3. What did we do and why?
Theoretical
• Define the problem and its participants
• Reason about the influences on maintainability
• Compare an EDA and LA implementation
Practical
• Static code analysis on both implementations
• Experiment to get practical validation on the
comparison with a Layered Architecture
Q4. What are our experiences?
Cyclomatic complexities
EDA
LA
Efferent coupling
Q4. What are our experiences?
Cyclomatic complexities
EDA
LA
Efferent coupling
No significant differences
in static code analysis
Q3. – Setup of the experiment
Introduce
• Introduction of EDA & LA
• Everyone writes down name, experience
• Check machine and setup
Execute
• Implement 3 scenario‟s
• For both architectures
• Log durations and results
Review
• Report experiences and views
• Review architectures and implementations
Explore
Implement
Review &
Pause
Read
Task
1. Secret
Communication
2. Auditing
3. Popularity
Contest
Q4. What are our experiences?
Time spent to complete the Exploration phase
Participant EDA LA EDA / LA
A 0:09:04 0:24:33 37%
B 0:16:19 0:18:38 88%
C 0:25:23 0:43:11 59%
D 0:14:11 0:01:45 810%
Average 0:22:01 74%0:16:14
Participant EDA LA EDA / LA
A 0:53:11 0:54:30 98%
B 0:41:08 0:27:22 150%
C 1:34:19 1:21:52 115%
D 0:48:26 0:52:54 92%
Average 0:59:16 0:54:09 109%
Time spent to complete the Implementation phase
Q4. What are our experiences?
Time spent to complete the Exploration phase
Participant EDA LA EDA / LA
A 0:09:04 0:24:33 37%
B 0:16:19 0:18:38 88%
C 0:25:23 0:43:11 59%
D 0:14:11 0:01:45 810%
Average 0:22:01 74%0:16:14
Participant EDA LA EDA / LA
A 0:53:11 0:54:30 98%
B 0:41:08 0:27:22 150%
C 1:34:19 1:21:52 115%
D 0:48:26 0:52:54 92%
Average 0:59:16 0:54:09 109%
Time spent to complete the Implementation phase
EDA required a little less time to explore
EDA required a little more time to implement
Q4. What are our experiences?
• Impact on the existing code
EDA LA
Participant Files Places New Files Places New
A 3 3 2 5 9 0
B 6 8 0 3 12 0
C 3 3 2 6 6 0
D 2 6 1 3 8 0
Average 3.5 5 1.25 4.25 8.75 0
Q4. What are our experiences?
• Impact on the existing code
EDA LA
Participant Files Places New Files Places New
A 3 3 2 5 9 0
B 6 8 0 3 12 0
C 3 3 2 6 6 0
D 2 6 1 3 8 0
Average 3.5 5 1.25 4.25 8.75 0
• EDA leads to less changes, in less files
• EDA promotes addition over changing
Q5. What have we learned?
• Objectively, complexity stays more or less
the same, independent of architecture
• EDA makes the flow less visible
• EDA lessens the need to know the whole app
• EDA makes it easier to add new components
CASE 2: RESEARCH PROJECT
Q1. What was the goal?
• WK Pool application needed to be rebuilt
• We wanted to make a „object as an agent‟
EDA implementation
• Start at April 1st
• Deadline was fixed: June 14th 
Q2. What was our approach?
• Platform choice with the team
• Architectural choices with the team
• No „Design Phase‟
• Building user stories in a team of 7:
– 1 product manager / graphic designer
– 2 back-end developers
– 2 front-end developers
– 2 part-time architects
Q3. What did we do and why?
Platform
• JVM → team knowledge
• Scala → cool & support for actors, on the JVM
• AWS → cloud platform (fast setup and teardown), Java
support, Threading (unlike the Google App Engine)
Architecture
• Event Driven → research goal
• Actors → research goal
• Fine-Grained Actors → logical consistency-boundary
• Broadcast message bus → KISS
Q3. What did we do and why?
Architecture (continued)
• Model (Actor), View (Actor), Controller (Service) → well known
pattern, good fit with the Rest interface, CQRS. Need to attach
multiple views to one source (Model). Services localizable
statically ('object'-s in Scala)
• UI polling synchronously on a View Actor via Rest Interface →
experience with the pattern, possibility to use GWT
UI
• Lift on the server → cool, Scala framework, easy integration
• GWT on the client → AJAX UI, insufficient JS experience
Persistence
• CouchDb → fits actor boundary, scalability, easy replication
Q3. What did we do and why?
Message Bus
Controller Controller
Model
Actors
View
Actors
REST Interface
GWT UI
Log
Actor
Save
Actor
Q4. What are our experiences?
• Messages stay looping unless explicitly handled
• Timing problems because of non-persistent messaging
• Effects are hard to track, both design-time and run-time
• Debugging is hard (asynchronicity in debugger & logger)
• Modifying published messages was hard (design-time)
• Event avalanche: some events caused lots of new events
• Adding new functionality (especially views) is easy
Q5. What have we learned?
• Use persistent messaging (SBA, BBA?)
• Actors 'feel' like a simulation of real life
entities. But remember SRP..
• Adding new components in an EDA is easy
• Use or make sufficient tooling
• Add a timestamp and version to event
• Unit-test the actors (evts. in => evts. out)
CASE 3: CLIENT PROJECT
Q1. What was the goal?
Visualize what is going on in the machine
Q1. What was the goal?
Create a management dashboard
Q1. What was the goal?
Look “flashy”!
Q2. How did we approach this?
• A combined project team (Sogyo/WSP)
– WSP: domain knowledge
– Sogyo: software engineering knowledge
• Write an application that monitors and
reports about events in the real world using a
client server event driven architecture.
The product
The product
Q3. What did we do and why?
• Platform:
– .NET, WPF, WCF
• Architecture:
– Only events for PLC messages
– Internal event bus
– Service for configuration
– Deployment at customer site
SOAP
Q3. What did we do and why? (II)
Event BusService
Domain Model
PLC event
adapter
PLC command
adapter
Client(s)
Reporting
Q4. What are our experiences?
• The event bus can be simple.
• Don‟t modify event messages.
• Components can easily be stubbed.
• Measuring and configuring is something else.
4.1 The simple event bus
Server
Service
Domain
Event
bus
4.2 Modifying event messages
P P
Message queue
PLC
adapter
Domain
Reporting
P
4.2 Modifying event messages
P P
Message queue
PLC
adapter
Domain
Reporting
D
P
4.2 Modifying event messages
P P
Message queue
PLC
adapter
Domain
Reporting
D
PD
4.2 Modifying event messages
P P
Message queue
PLC
adapter
Domain
Reporting
PDD
4.2 Modifying event messages
D D
Message queue
PLC
adapter
Domain
Reporting
PDD
4.3 Stubbing of components
• Run simulations and tests for free
– Useful for performance and integration tests
– Demo purposes
4.4 Configuring vs. measuring
• Different modes of the application
– Configuring adding and removing elements to
be like the real world.
– Measuring by receiving events from the PLC.
• The domain is loaded at the start of the
application.
• No configuration while measuring
Q5. What have we learned?
• Every message on the bus must be unique!
• Think about different modes of the
application. In our case configuring vs
measuring.
• Not everything has to be event driven.
• EDA makes it easier to add new
components.
WRAP UP
Summary
Conclusions
• EDA lessens the need to know the whole app
• EDA makes the flow through the app less visible
• EDA makes it easier to add new components
Rules of thumb
• Use or make sufficient tooling
• Think hard about the scope of your components
• Not everything has to be event driven
Ideas for future research
• What is the proper context to use an EDA in?
• What would be the best tooling to have?
• How do we determine the granularity of our
components (actors)?
Questions?
Contact info
Rick van der Arend
rvdarend@sogyo.nl
Paul van Dam
pvdam@sogyo.nl
Web: www.sogyo.nl
Blog: www.software–innovators.nl

Contenu connexe

Tendances

Go Faster - Remove Inhibitors to Rapid Innovation
Go Faster - Remove Inhibitors to Rapid InnovationGo Faster - Remove Inhibitors to Rapid Innovation
Go Faster - Remove Inhibitors to Rapid InnovationFred George
 
Agile Software Development Process Practice in Thai Culture
Agile Software Development Process Practice in Thai CultureAgile Software Development Process Practice in Thai Culture
Agile Software Development Process Practice in Thai CultureWee Witthawaskul
 
Continuous Integration, Delivery and Deployment
Continuous Integration, Delivery and DeploymentContinuous Integration, Delivery and Deployment
Continuous Integration, Delivery and DeploymentEero Laukkanen
 
Private Cloud Deployment Automation with XebiaLabs and OpenShift
Private Cloud Deployment Automation with XebiaLabs and OpenShiftPrivate Cloud Deployment Automation with XebiaLabs and OpenShift
Private Cloud Deployment Automation with XebiaLabs and OpenShiftXebiaLabs
 
Agile Software Development in Practice - A Developer Perspective
Agile Software Development in Practice - A Developer PerspectiveAgile Software Development in Practice - A Developer Perspective
Agile Software Development in Practice - A Developer PerspectiveWee Witthawaskul
 
Preparing for Enterprise Continuous Delivery - 5 Critical Steps
Preparing for Enterprise Continuous Delivery - 5 Critical StepsPreparing for Enterprise Continuous Delivery - 5 Critical Steps
Preparing for Enterprise Continuous Delivery - 5 Critical StepsXebiaLabs
 
The Last Mile Continued: Incident Management
The Last Mile Continued: Incident Management The Last Mile Continued: Incident Management
The Last Mile Continued: Incident Management Rundeck
 
DevOps for z Systems @ InterConnect 2016
DevOps for z Systems @ InterConnect 2016DevOps for z Systems @ InterConnect 2016
DevOps for z Systems @ InterConnect 2016Sherri Hanna
 
Harman deepak v - agile on steriod - dev ops led transformation
Harman  deepak v - agile on steriod - dev ops led transformationHarman  deepak v - agile on steriod - dev ops led transformation
Harman deepak v - agile on steriod - dev ops led transformationXebia India
 
Agile vs. DevOps for Continuous Testing: How to Optimize Your Pipeline
Agile vs. DevOps for Continuous Testing: How to Optimize Your PipelineAgile vs. DevOps for Continuous Testing: How to Optimize Your Pipeline
Agile vs. DevOps for Continuous Testing: How to Optimize Your PipelinePerfecto by Perforce
 
Voxxed Athens 2018 - Going agile with kanban
Voxxed Athens 2018 - Going agile with kanbanVoxxed Athens 2018 - Going agile with kanban
Voxxed Athens 2018 - Going agile with kanbanVoxxed Athens
 
How to Embed Codeless Test Automation Into DevOps
How to Embed Codeless Test Automation Into DevOpsHow to Embed Codeless Test Automation Into DevOps
How to Embed Codeless Test Automation Into DevOpsPerfecto by Perforce
 
Mobile Apps development best practices. TDD, CI, CD
Mobile Apps development best practices. TDD, CI, CDMobile Apps development best practices. TDD, CI, CD
Mobile Apps development best practices. TDD, CI, CDGlobalLogic Ukraine
 
User story refinement in Project GATE
User story refinement in Project GATEUser story refinement in Project GATE
User story refinement in Project GATEPin-Ying Tu
 
CI/CD for mobile at HERE
CI/CD for mobile at HERECI/CD for mobile at HERE
CI/CD for mobile at HEREStefan Verhoeff
 
Continuous Delivery Overview
Continuous Delivery OverviewContinuous Delivery Overview
Continuous Delivery OverviewLuca Minudel
 
Introduction to CICD
Introduction to CICDIntroduction to CICD
Introduction to CICDKnoldus Inc.
 
User Experience Testing—with the Pilots at 18,000 Feet
User Experience Testing—with the Pilots at 18,000 FeetUser Experience Testing—with the Pilots at 18,000 Feet
User Experience Testing—with the Pilots at 18,000 FeetTechWell
 

Tendances (20)

Kku2011
Kku2011Kku2011
Kku2011
 
Go Faster - Remove Inhibitors to Rapid Innovation
Go Faster - Remove Inhibitors to Rapid InnovationGo Faster - Remove Inhibitors to Rapid Innovation
Go Faster - Remove Inhibitors to Rapid Innovation
 
Agile Software Development Process Practice in Thai Culture
Agile Software Development Process Practice in Thai CultureAgile Software Development Process Practice in Thai Culture
Agile Software Development Process Practice in Thai Culture
 
Continuous Integration, Delivery and Deployment
Continuous Integration, Delivery and DeploymentContinuous Integration, Delivery and Deployment
Continuous Integration, Delivery and Deployment
 
Private Cloud Deployment Automation with XebiaLabs and OpenShift
Private Cloud Deployment Automation with XebiaLabs and OpenShiftPrivate Cloud Deployment Automation with XebiaLabs and OpenShift
Private Cloud Deployment Automation with XebiaLabs and OpenShift
 
Agile Software Development in Practice - A Developer Perspective
Agile Software Development in Practice - A Developer PerspectiveAgile Software Development in Practice - A Developer Perspective
Agile Software Development in Practice - A Developer Perspective
 
Preparing for Enterprise Continuous Delivery - 5 Critical Steps
Preparing for Enterprise Continuous Delivery - 5 Critical StepsPreparing for Enterprise Continuous Delivery - 5 Critical Steps
Preparing for Enterprise Continuous Delivery - 5 Critical Steps
 
The Last Mile Continued: Incident Management
The Last Mile Continued: Incident Management The Last Mile Continued: Incident Management
The Last Mile Continued: Incident Management
 
DevOps for z Systems @ InterConnect 2016
DevOps for z Systems @ InterConnect 2016DevOps for z Systems @ InterConnect 2016
DevOps for z Systems @ InterConnect 2016
 
Harman deepak v - agile on steriod - dev ops led transformation
Harman  deepak v - agile on steriod - dev ops led transformationHarman  deepak v - agile on steriod - dev ops led transformation
Harman deepak v - agile on steriod - dev ops led transformation
 
2 Epic Migrations at Flo:
2 Epic Migrations at Flo:2 Epic Migrations at Flo:
2 Epic Migrations at Flo:
 
Agile vs. DevOps for Continuous Testing: How to Optimize Your Pipeline
Agile vs. DevOps for Continuous Testing: How to Optimize Your PipelineAgile vs. DevOps for Continuous Testing: How to Optimize Your Pipeline
Agile vs. DevOps for Continuous Testing: How to Optimize Your Pipeline
 
Voxxed Athens 2018 - Going agile with kanban
Voxxed Athens 2018 - Going agile with kanbanVoxxed Athens 2018 - Going agile with kanban
Voxxed Athens 2018 - Going agile with kanban
 
How to Embed Codeless Test Automation Into DevOps
How to Embed Codeless Test Automation Into DevOpsHow to Embed Codeless Test Automation Into DevOps
How to Embed Codeless Test Automation Into DevOps
 
Mobile Apps development best practices. TDD, CI, CD
Mobile Apps development best practices. TDD, CI, CDMobile Apps development best practices. TDD, CI, CD
Mobile Apps development best practices. TDD, CI, CD
 
User story refinement in Project GATE
User story refinement in Project GATEUser story refinement in Project GATE
User story refinement in Project GATE
 
CI/CD for mobile at HERE
CI/CD for mobile at HERECI/CD for mobile at HERE
CI/CD for mobile at HERE
 
Continuous Delivery Overview
Continuous Delivery OverviewContinuous Delivery Overview
Continuous Delivery Overview
 
Introduction to CICD
Introduction to CICDIntroduction to CICD
Introduction to CICD
 
User Experience Testing—with the Pilots at 18,000 Feet
User Experience Testing—with the Pilots at 18,000 FeetUser Experience Testing—with the Pilots at 18,000 Feet
User Experience Testing—with the Pilots at 18,000 Feet
 

En vedette

สรุปเศรษฐศาสตร์กลยุทธิ์ 17 เมษายน 2553
สรุปเศรษฐศาสตร์กลยุทธิ์ 17 เมษายน 2553สรุปเศรษฐศาสตร์กลยุทธิ์ 17 เมษายน 2553
สรุปเศรษฐศาสตร์กลยุทธิ์ 17 เมษายน 2553aombpat
 
D:\getting a charge out of sceience
D:\getting a charge out of sceienceD:\getting a charge out of sceience
D:\getting a charge out of sceienceguest5ac3f31
 
The Rebel’s Handbook
The Rebel’s HandbookThe Rebel’s Handbook
The Rebel’s Handbookshawnielegs
 
Lean & Scrum at VietnamWorks
Lean & Scrum at VietnamWorksLean & Scrum at VietnamWorks
Lean & Scrum at VietnamWorksChris Shayan
 
Pam Britton - Leveraging Learning
Pam Britton - Leveraging LearningPam Britton - Leveraging Learning
Pam Britton - Leveraging Learningguest07182a0
 
N E W Y O R K C I T Y
N E W Y O R K C I T YN E W Y O R K C I T Y
N E W Y O R K C I T Ywilliam HOUGH
 
L03 Ecosystems Biomes
L03 Ecosystems BiomesL03 Ecosystems Biomes
L03 Ecosystems BiomesFatimah Yusof
 
The RIGHT Way to Approach Long-Term Care Insurance
The RIGHT Way to Approach Long-Term Care InsuranceThe RIGHT Way to Approach Long-Term Care Insurance
The RIGHT Way to Approach Long-Term Care InsuranceDavidK051
 
I4school collaborative 3
I4school collaborative 3I4school collaborative 3
I4school collaborative 3CSP Scarl
 
Langrich社でのEmacs活用、langrich.el
Langrich社でのEmacs活用、langrich.elLangrich社でのEmacs活用、langrich.el
Langrich社でのEmacs活用、langrich.elTakashi Masuda
 

En vedette (20)

Claude monet
Claude monetClaude monet
Claude monet
 
ley 1014
ley 1014ley 1014
ley 1014
 
Arvoredeamigos
ArvoredeamigosArvoredeamigos
Arvoredeamigos
 
Laura Munn
Laura MunnLaura Munn
Laura Munn
 
Get Results With Email Marketing
Get Results With Email MarketingGet Results With Email Marketing
Get Results With Email Marketing
 
สรุปเศรษฐศาสตร์กลยุทธิ์ 17 เมษายน 2553
สรุปเศรษฐศาสตร์กลยุทธิ์ 17 เมษายน 2553สรุปเศรษฐศาสตร์กลยุทธิ์ 17 เมษายน 2553
สรุปเศรษฐศาสตร์กลยุทธิ์ 17 เมษายน 2553
 
D:\getting a charge out of sceience
D:\getting a charge out of sceienceD:\getting a charge out of sceience
D:\getting a charge out of sceience
 
The Rebel’s Handbook
The Rebel’s HandbookThe Rebel’s Handbook
The Rebel’s Handbook
 
Lean & Scrum at VietnamWorks
Lean & Scrum at VietnamWorksLean & Scrum at VietnamWorks
Lean & Scrum at VietnamWorks
 
Pam Britton - Leveraging Learning
Pam Britton - Leveraging LearningPam Britton - Leveraging Learning
Pam Britton - Leveraging Learning
 
N E W Y O R K C I T Y
N E W Y O R K C I T YN E W Y O R K C I T Y
N E W Y O R K C I T Y
 
L03 Ecosystems Biomes
L03 Ecosystems BiomesL03 Ecosystems Biomes
L03 Ecosystems Biomes
 
Sentences
SentencesSentences
Sentences
 
Xampp
XamppXampp
Xampp
 
Receitas pessah
Receitas pessahReceitas pessah
Receitas pessah
 
The RIGHT Way to Approach Long-Term Care Insurance
The RIGHT Way to Approach Long-Term Care InsuranceThe RIGHT Way to Approach Long-Term Care Insurance
The RIGHT Way to Approach Long-Term Care Insurance
 
Prototype
PrototypePrototype
Prototype
 
Small Business Effective Digital Presence
Small Business Effective Digital PresenceSmall Business Effective Digital Presence
Small Business Effective Digital Presence
 
I4school collaborative 3
I4school collaborative 3I4school collaborative 3
I4school collaborative 3
 
Langrich社でのEmacs活用、langrich.el
Langrich社でのEmacs活用、langrich.elLangrich社でのEmacs活用、langrich.el
Langrich社でのEmacs活用、langrich.el
 

Similaire à Event driven actors - lessons learned

Reliable mobile test automation
Reliable mobile test automationReliable mobile test automation
Reliable mobile test automationVishal Banthia
 
Conquer CI Server! - Re-establishment of Order and Nurture of the Solid Organ...
Conquer CI Server! - Re-establishment of Order and Nurture of the Solid Organ...Conquer CI Server! - Re-establishment of Order and Nurture of the Solid Organ...
Conquer CI Server! - Re-establishment of Order and Nurture of the Solid Organ...Rakuten Group, Inc.
 
Kubernetes at Reddit: An Origin Story - KubeCon NA 2018
Kubernetes at Reddit: An Origin Story - KubeCon NA 2018Kubernetes at Reddit: An Origin Story - KubeCon NA 2018
Kubernetes at Reddit: An Origin Story - KubeCon NA 2018Gregory Taylor
 
Cloud and Network Transformation using DevOps methodology : Cisco Live 2015
Cloud and Network Transformation using DevOps methodology : Cisco Live 2015Cloud and Network Transformation using DevOps methodology : Cisco Live 2015
Cloud and Network Transformation using DevOps methodology : Cisco Live 2015Vimal Suba
 
HCI U-II HCI software Process (1).pdf
HCI U-II HCI software Process (1).pdfHCI U-II HCI software Process (1).pdf
HCI U-II HCI software Process (1).pdfudhayaveenaa
 
Technology-Driven Development: Using Automation and Development Techniques to...
Technology-Driven Development: Using Automation and Development Techniques to...Technology-Driven Development: Using Automation and Development Techniques to...
Technology-Driven Development: Using Automation and Development Techniques to...Rakuten Group, Inc.
 
Sathish project mgmt_pmp_9+yrs
Sathish project mgmt_pmp_9+yrsSathish project mgmt_pmp_9+yrs
Sathish project mgmt_pmp_9+yrssathish kumar
 
Acceptance Test Driven Development
Acceptance Test Driven DevelopmentAcceptance Test Driven Development
Acceptance Test Driven DevelopmentMike Douglas
 
Why use Gitlab
Why use GitlabWhy use Gitlab
Why use Gitlababenyeung1
 
Why and How to Run Your Own Gitlab Runners as Your Company Grows
Why and How to Run Your Own Gitlab Runners as Your Company GrowsWhy and How to Run Your Own Gitlab Runners as Your Company Grows
Why and How to Run Your Own Gitlab Runners as Your Company GrowsNGINX, Inc.
 
Performance Testing in Continous Delivery
Performance Testing in Continous DeliveryPerformance Testing in Continous Delivery
Performance Testing in Continous DeliveryPablo Gallego Hermann
 
Directions NA Water-Agile-Fall methodology and NAV implementation
Directions NA Water-Agile-Fall methodology and NAV implementationDirections NA Water-Agile-Fall methodology and NAV implementation
Directions NA Water-Agile-Fall methodology and NAV implementationAleksandar Totovic
 
Global IT Service Management Tool Implementation – A PRINCE2® project managem...
Global IT Service Management Tool Implementation – A PRINCE2® project managem...Global IT Service Management Tool Implementation – A PRINCE2® project managem...
Global IT Service Management Tool Implementation – A PRINCE2® project managem...NUS-ISS
 
Apache CloudStack Examination - CloudStack Collaboration Conference in Europe...
Apache CloudStack Examination - CloudStack Collaboration Conference in Europe...Apache CloudStack Examination - CloudStack Collaboration Conference in Europe...
Apache CloudStack Examination - CloudStack Collaboration Conference in Europe...Midori Oge
 
Can We Make Maps from Videos? ~From AI Algorithm to Engineering for Continuou...
Can We Make Maps from Videos? ~From AI Algorithm to Engineering for Continuou...Can We Make Maps from Videos? ~From AI Algorithm to Engineering for Continuou...
Can We Make Maps from Videos? ~From AI Algorithm to Engineering for Continuou...DeNA
 
Behavior-Driven Development (BDD) Testing with Apache Spark with Aaron Colcor...
Behavior-Driven Development (BDD) Testing with Apache Spark with Aaron Colcor...Behavior-Driven Development (BDD) Testing with Apache Spark with Aaron Colcor...
Behavior-Driven Development (BDD) Testing with Apache Spark with Aaron Colcor...Databricks
 
Build software like a bag of marbles, not a castle of LEGO®
Build software like a bag of marbles, not a castle of LEGO®Build software like a bag of marbles, not a castle of LEGO®
Build software like a bag of marbles, not a castle of LEGO®Hannes Lowette
 

Similaire à Event driven actors - lessons learned (20)

Reliable mobile test automation
Reliable mobile test automationReliable mobile test automation
Reliable mobile test automation
 
Conquer CI Server! - Re-establishment of Order and Nurture of the Solid Organ...
Conquer CI Server! - Re-establishment of Order and Nurture of the Solid Organ...Conquer CI Server! - Re-establishment of Order and Nurture of the Solid Organ...
Conquer CI Server! - Re-establishment of Order and Nurture of the Solid Organ...
 
Kubernetes at Reddit: An Origin Story - KubeCon NA 2018
Kubernetes at Reddit: An Origin Story - KubeCon NA 2018Kubernetes at Reddit: An Origin Story - KubeCon NA 2018
Kubernetes at Reddit: An Origin Story - KubeCon NA 2018
 
Cloud and Network Transformation using DevOps methodology : Cisco Live 2015
Cloud and Network Transformation using DevOps methodology : Cisco Live 2015Cloud and Network Transformation using DevOps methodology : Cisco Live 2015
Cloud and Network Transformation using DevOps methodology : Cisco Live 2015
 
HCI U-II HCI software Process (1).pdf
HCI U-II HCI software Process (1).pdfHCI U-II HCI software Process (1).pdf
HCI U-II HCI software Process (1).pdf
 
Technology-Driven Development: Using Automation and Development Techniques to...
Technology-Driven Development: Using Automation and Development Techniques to...Technology-Driven Development: Using Automation and Development Techniques to...
Technology-Driven Development: Using Automation and Development Techniques to...
 
Sathish project mgmt_pmp_9+yrs
Sathish project mgmt_pmp_9+yrsSathish project mgmt_pmp_9+yrs
Sathish project mgmt_pmp_9+yrs
 
Acceptance Test Driven Development
Acceptance Test Driven DevelopmentAcceptance Test Driven Development
Acceptance Test Driven Development
 
The Agile Mindset
The Agile MindsetThe Agile Mindset
The Agile Mindset
 
Why use Gitlab
Why use GitlabWhy use Gitlab
Why use Gitlab
 
Why and How to Run Your Own Gitlab Runners as Your Company Grows
Why and How to Run Your Own Gitlab Runners as Your Company GrowsWhy and How to Run Your Own Gitlab Runners as Your Company Grows
Why and How to Run Your Own Gitlab Runners as Your Company Grows
 
Performance Testing in Continous Delivery
Performance Testing in Continous DeliveryPerformance Testing in Continous Delivery
Performance Testing in Continous Delivery
 
Directions NA Water-Agile-Fall methodology and NAV implementation
Directions NA Water-Agile-Fall methodology and NAV implementationDirections NA Water-Agile-Fall methodology and NAV implementation
Directions NA Water-Agile-Fall methodology and NAV implementation
 
Global IT Service Management Tool Implementation – A PRINCE2® project managem...
Global IT Service Management Tool Implementation – A PRINCE2® project managem...Global IT Service Management Tool Implementation – A PRINCE2® project managem...
Global IT Service Management Tool Implementation – A PRINCE2® project managem...
 
Apache CloudStack Examination - CloudStack Collaboration Conference in Europe...
Apache CloudStack Examination - CloudStack Collaboration Conference in Europe...Apache CloudStack Examination - CloudStack Collaboration Conference in Europe...
Apache CloudStack Examination - CloudStack Collaboration Conference in Europe...
 
Aniruddha_Mukherjee_Jan_2015
Aniruddha_Mukherjee_Jan_2015Aniruddha_Mukherjee_Jan_2015
Aniruddha_Mukherjee_Jan_2015
 
Can We Make Maps from Videos? ~From AI Algorithm to Engineering for Continuou...
Can We Make Maps from Videos? ~From AI Algorithm to Engineering for Continuou...Can We Make Maps from Videos? ~From AI Algorithm to Engineering for Continuou...
Can We Make Maps from Videos? ~From AI Algorithm to Engineering for Continuou...
 
Behavior-Driven Development (BDD) Testing with Apache Spark with Aaron Colcor...
Behavior-Driven Development (BDD) Testing with Apache Spark with Aaron Colcor...Behavior-Driven Development (BDD) Testing with Apache Spark with Aaron Colcor...
Behavior-Driven Development (BDD) Testing with Apache Spark with Aaron Colcor...
 
Usable Software Design
Usable Software DesignUsable Software Design
Usable Software Design
 
Build software like a bag of marbles, not a castle of LEGO®
Build software like a bag of marbles, not a castle of LEGO®Build software like a bag of marbles, not a castle of LEGO®
Build software like a bag of marbles, not a castle of LEGO®
 

Dernier

Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demoHarshalMandlekar2
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESmohitsingh558521
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxBkGupta21
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 

Dernier (20)

Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demo
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptx
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 

Event driven actors - lessons learned

  • 1. J-Fall 2010 Event Driven Actors Lessons learned Rick van der Arend Paul van Dam
  • 2. Agenda • Introduction • Event Driven Actors • Case 1: Research into EDA maintainability • Case 2: Research project in Scala • Case 3: Client project • Wrap-up
  • 4. Introducing Sogyo • Consultancy • Training • Development • Since 1995
  • 6. Introducing the speakers Paul van Dam Sogyo Engineer ▫ Developer ▫ Team lead Interests: ▫ DDD ▫ Craftsmanship ▫ Kung Fu Rick van der Arend Sogyo Consultant ▫ Developer ▫ Architect ▫ Coach / Trainer Interests: ▫ Event Driven ▫ Actor Model ▫ Functional ▫ Questions
  • 8. Event-driven Architecture • Software architecture pattern promoting the production, detection, consumption of, and reaction to events. Early usages in interrupt requests and the GUI
  • 9. Events • Something occurs • This gets noticed • Notification is distributed • One-way, Immutable, Asynchronous • Fire-and-forget Event
  • 10. Actors • Incoming message queue • Asynchronous message loop • All mutable state internally • All shared state is immutable • An „independent‟ object Actor
  • 11. Events and Actors • Events are published by an Actor • Other Actors are subscribed to notifications Actor Actor Actor Bus T=0 Event 1 2 2
  • 12. Motivation: Partitioning  Managing complexity is done by partitioning  HICLEC, SRP  Examples: Subroutines, Functions, Objects, Services, Actors, Agents  Actors are independent, but deterministic Actor Actor System System System Actor SOA (2.0) Event Driven Actors Enterprise level Single system level
  • 13. Motivation: Loose coupling • Events: immutable, one-way, fire-and-forget • Agents: independent and asynchronous • These characteristics magnify each other • Together, they make a very loose coupling
  • 14. Motivation: Threading sucks • Standard in Java, C# and others • A form of concurrency with shared memory “Non-trivial multi-threaded programs are incomprehensible to humans …” Edward A. Lee, The Problem with Threads Requires custom locking
  • 15. Motivation: Concurrency No ever increasing clock speeds anymore…  Transistors  Clock speed  Power  Instructions / cycle
  • 17. Cases • Case 1: Research into EDA maintainability • Case 2: Research project in Scala • Case 3: Client project
  • 18. Questions per case 1. What was the goal? 2. How did we approach this? 3. What did we do and why? 4. What are our experiences? 5. What have we learned?
  • 19. CASE 1: EDA MAINTAINABILITY
  • 20. Q1. What was the goal? To get an answer to the question: “Does an Event Driven Architecture improve maintainability?”
  • 21. Q2. What was our approach We had an UVA Software Engineering student write a dissertation on EDA Maintainability and gave him freedom to experiment
  • 22. Q3. What did we do and why? Theoretical • Define the problem and its participants • Reason about the influences on maintainability • Compare an EDA and LA implementation Practical • Static code analysis on both implementations • Experiment to get practical validation on the comparison with a Layered Architecture
  • 23. Q4. What are our experiences? Cyclomatic complexities EDA LA Efferent coupling
  • 24. Q4. What are our experiences? Cyclomatic complexities EDA LA Efferent coupling No significant differences in static code analysis
  • 25. Q3. – Setup of the experiment Introduce • Introduction of EDA & LA • Everyone writes down name, experience • Check machine and setup Execute • Implement 3 scenario‟s • For both architectures • Log durations and results Review • Report experiences and views • Review architectures and implementations Explore Implement Review & Pause Read Task 1. Secret Communication 2. Auditing 3. Popularity Contest
  • 26. Q4. What are our experiences? Time spent to complete the Exploration phase Participant EDA LA EDA / LA A 0:09:04 0:24:33 37% B 0:16:19 0:18:38 88% C 0:25:23 0:43:11 59% D 0:14:11 0:01:45 810% Average 0:22:01 74%0:16:14 Participant EDA LA EDA / LA A 0:53:11 0:54:30 98% B 0:41:08 0:27:22 150% C 1:34:19 1:21:52 115% D 0:48:26 0:52:54 92% Average 0:59:16 0:54:09 109% Time spent to complete the Implementation phase
  • 27. Q4. What are our experiences? Time spent to complete the Exploration phase Participant EDA LA EDA / LA A 0:09:04 0:24:33 37% B 0:16:19 0:18:38 88% C 0:25:23 0:43:11 59% D 0:14:11 0:01:45 810% Average 0:22:01 74%0:16:14 Participant EDA LA EDA / LA A 0:53:11 0:54:30 98% B 0:41:08 0:27:22 150% C 1:34:19 1:21:52 115% D 0:48:26 0:52:54 92% Average 0:59:16 0:54:09 109% Time spent to complete the Implementation phase EDA required a little less time to explore EDA required a little more time to implement
  • 28. Q4. What are our experiences? • Impact on the existing code EDA LA Participant Files Places New Files Places New A 3 3 2 5 9 0 B 6 8 0 3 12 0 C 3 3 2 6 6 0 D 2 6 1 3 8 0 Average 3.5 5 1.25 4.25 8.75 0
  • 29. Q4. What are our experiences? • Impact on the existing code EDA LA Participant Files Places New Files Places New A 3 3 2 5 9 0 B 6 8 0 3 12 0 C 3 3 2 6 6 0 D 2 6 1 3 8 0 Average 3.5 5 1.25 4.25 8.75 0 • EDA leads to less changes, in less files • EDA promotes addition over changing
  • 30. Q5. What have we learned? • Objectively, complexity stays more or less the same, independent of architecture • EDA makes the flow less visible • EDA lessens the need to know the whole app • EDA makes it easier to add new components
  • 31. CASE 2: RESEARCH PROJECT
  • 32. Q1. What was the goal? • WK Pool application needed to be rebuilt • We wanted to make a „object as an agent‟ EDA implementation • Start at April 1st • Deadline was fixed: June 14th 
  • 33. Q2. What was our approach? • Platform choice with the team • Architectural choices with the team • No „Design Phase‟ • Building user stories in a team of 7: – 1 product manager / graphic designer – 2 back-end developers – 2 front-end developers – 2 part-time architects
  • 34. Q3. What did we do and why? Platform • JVM → team knowledge • Scala → cool & support for actors, on the JVM • AWS → cloud platform (fast setup and teardown), Java support, Threading (unlike the Google App Engine) Architecture • Event Driven → research goal • Actors → research goal • Fine-Grained Actors → logical consistency-boundary • Broadcast message bus → KISS
  • 35. Q3. What did we do and why? Architecture (continued) • Model (Actor), View (Actor), Controller (Service) → well known pattern, good fit with the Rest interface, CQRS. Need to attach multiple views to one source (Model). Services localizable statically ('object'-s in Scala) • UI polling synchronously on a View Actor via Rest Interface → experience with the pattern, possibility to use GWT UI • Lift on the server → cool, Scala framework, easy integration • GWT on the client → AJAX UI, insufficient JS experience Persistence • CouchDb → fits actor boundary, scalability, easy replication
  • 36. Q3. What did we do and why? Message Bus Controller Controller Model Actors View Actors REST Interface GWT UI Log Actor Save Actor
  • 37. Q4. What are our experiences? • Messages stay looping unless explicitly handled • Timing problems because of non-persistent messaging • Effects are hard to track, both design-time and run-time • Debugging is hard (asynchronicity in debugger & logger) • Modifying published messages was hard (design-time) • Event avalanche: some events caused lots of new events • Adding new functionality (especially views) is easy
  • 38. Q5. What have we learned? • Use persistent messaging (SBA, BBA?) • Actors 'feel' like a simulation of real life entities. But remember SRP.. • Adding new components in an EDA is easy • Use or make sufficient tooling • Add a timestamp and version to event • Unit-test the actors (evts. in => evts. out)
  • 39. CASE 3: CLIENT PROJECT
  • 40. Q1. What was the goal? Visualize what is going on in the machine
  • 41. Q1. What was the goal? Create a management dashboard
  • 42. Q1. What was the goal? Look “flashy”!
  • 43. Q2. How did we approach this? • A combined project team (Sogyo/WSP) – WSP: domain knowledge – Sogyo: software engineering knowledge • Write an application that monitors and reports about events in the real world using a client server event driven architecture.
  • 46. Q3. What did we do and why? • Platform: – .NET, WPF, WCF • Architecture: – Only events for PLC messages – Internal event bus – Service for configuration – Deployment at customer site
  • 47. SOAP Q3. What did we do and why? (II) Event BusService Domain Model PLC event adapter PLC command adapter Client(s) Reporting
  • 48. Q4. What are our experiences? • The event bus can be simple. • Don‟t modify event messages. • Components can easily be stubbed. • Measuring and configuring is something else.
  • 49. 4.1 The simple event bus Server Service Domain Event bus
  • 50. 4.2 Modifying event messages P P Message queue PLC adapter Domain Reporting P
  • 51. 4.2 Modifying event messages P P Message queue PLC adapter Domain Reporting D P
  • 52. 4.2 Modifying event messages P P Message queue PLC adapter Domain Reporting D PD
  • 53. 4.2 Modifying event messages P P Message queue PLC adapter Domain Reporting PDD
  • 54. 4.2 Modifying event messages D D Message queue PLC adapter Domain Reporting PDD
  • 55. 4.3 Stubbing of components • Run simulations and tests for free – Useful for performance and integration tests – Demo purposes
  • 56. 4.4 Configuring vs. measuring • Different modes of the application – Configuring adding and removing elements to be like the real world. – Measuring by receiving events from the PLC. • The domain is loaded at the start of the application. • No configuration while measuring
  • 57. Q5. What have we learned? • Every message on the bus must be unique! • Think about different modes of the application. In our case configuring vs measuring. • Not everything has to be event driven. • EDA makes it easier to add new components.
  • 59. Summary Conclusions • EDA lessens the need to know the whole app • EDA makes the flow through the app less visible • EDA makes it easier to add new components Rules of thumb • Use or make sufficient tooling • Think hard about the scope of your components • Not everything has to be event driven
  • 60. Ideas for future research • What is the proper context to use an EDA in? • What would be the best tooling to have? • How do we determine the granularity of our components (actors)?
  • 62. Contact info Rick van der Arend rvdarend@sogyo.nl Paul van Dam pvdam@sogyo.nl Web: www.sogyo.nl Blog: www.software–innovators.nl