SlideShare une entreprise Scribd logo
1  sur  40
POLYGLOT HEAVEN
How to Build an Async, Reactive Application in
2014
NDC London
Tomas Jansson
04/12/2014
POLYGLOT HEAVEN
How to Build an Async, Reactive Application in
2014
NDC London
Tomas Jansson
04/12/2014
And this should probably be 2015
This here, a title to get accept
THIS IS ME
Tomas Jansson
Manager & Practice Lead .NET
BEKK Oslo
@TomasJansson
tomas.jansson@bekk.no
github.com/mastoj
blog.tomasjansson.com
AGENDA
WHY ASYNC AND REACTIVE?
LET’S TALK DATA
WHY POLYGLOT?
WHAT CAN WE DO?
DEMO
SUMMARY
WHY ASYNC AND REACTIVE? - ASYNC
Async doesn’t
mean unreliable
Async gives you
responsiveness
Data will be
consistent
WHY ASYNC AND REACTIVE? - REACTIVE
Message based
 modular
React on change
Eventual
consistent
LET’S TALK DATA
Let’s talk Data
LET’S TALK DATA
Are all data the
same?
LET’S TALK DATA
What different
kinds of data
do we have?
LET’S TALK DATA
Changes, state,
relations,
cache...
”if all you have is a
hammer, everything
looks like a nail”
Why polyglot?
WHY POLYGLOT? – CHOOSE THE RIGHT TOOLS
Documents
WHY POLYGLOT? – CHOOSE THE RIGHT TOOLS
Documents
Document
database
WHY POLYGLOT? – CHOOSE THE RIGHT TOOLS
Documents
Document
database
Changes
WHY POLYGLOT? – CHOOSE THE RIGHT TOOLS
Documents
Document
database
Changes Event store
WHY POLYGLOT? – CHOOSE THE RIGHT TOOLS
Documents
Document
database
Changes Event store
Relations
WHY POLYGLOT? – CHOOSE THE RIGHT TOOLS
Documents
Document
database
Relations
Graph
database
Changes Event store
What can
we do?
Change!
3-LAYERED ARCHITECTURE – WHY OH WHY?
3-LAYERED ARCHITECTURE – WHY OH WHY?
You are mixing
your domain
with your
query model!
What do you think about
”Divide and Conquer?”
COMMAND QUERY RESPONSIBILITY SEGREGATION - CQRS
CQRS is ”Divide and
Conquer” applied on a
architecutral level
CQRS WITH EVENT SOURCING - OVERVIEW
ApplicationCommand Events
Events Projection View
CQRS WITH EVENT SOURCING - OVERVIEW
Application: f(x, ys)  ys’, x: Command, ys: list of Events
Projection: f(y, ys)  z, y: Event, ys: list of Events, z: View
CQRS WITH EVENT SOURCING - OVERVIEW
Application: f(x, ys)  ys’, x: Command, ys: list of Events
Projection: f(y, ys)  z, y: Event, ys: list of Events, z: View
Your
application is a
pure function!
How you
implement it is
secondary, the
events are what
matters!
CQRS WITH EVENT SOURCING - TESTS
[Test]
public void PlaceOrder_Should_CreateAnOrder() {
var productId = Guid.NewGuid();
var customerId = Guid.NewGuid();
var orderId = Guid.NewGuid();
var orderItems =
Contracts.Helpers.ToFSharpList(new[] {new OrderItem(productId, 20)});
Given(new ProductCreated(productId, "a name", 20),
new CustomerCreated(customerId, "John Doe"));
When(new PlaceOrder(orderId, customerId, orderItems));
Then(new OrderPlaced(orderId, customerId, orderItems));
}
Pure functions
are easy to test
WHAT WILL I SHOW TODAY?
ApplicationCommand Events
Events Projection View
WHAT WILL I SHOW TODAY?
ApplicationCommand Events
Events Projection View
HTTP
THE KEY COMPONENT
This is where
the ”truth” is
stored
Demo!
View databases
Web
Application View
CreateCustomer
CreateProduct
PlaceOrder
GetRecommendations
GetCustomer
GetProduct
SUMMARY
Why async and reactive?
• Responsive
• Scalable
• Modular
SUMMARY
Why async and reactive?
• Responsive
• Scalable
• Modular
Why polyglot?
• Not all data is the same
• Not everything is a nail
SUMMARY
Why async and reactive?
• Responsive
• Scalable
• Modular
Why polyglot?
• Not all data is the same
• Not everything is a nail
Event sourcing and CQRS
• CQRS is divide and conquer on an architecture level
• Your application should be a function
• You don’t have to write in a functional language to write functional code (but it might make it easier)
SUMMARY
Why async and reactive?
• Responsive
• Scalable
• Modular
Why polyglot?
• Not all data is the same
• Not everything is a nail
Event sourcing and CQRS
• CQRS is divide and conquer on an architecture level
• Your application should be a function
• You don’t have to write in a functional language to write functional code (but it might make it easier)
http://www.slideshare.net/mastoj/polyglot-
heaven
https://github.com/mastoj/PolyglotHeaven
http://open.bekk.no/polyglot-heaven-a-
response-to-the-bekk-radar
Questions?
Thank you!
@TomasJansson

Contenu connexe

En vedette

GPU Computing for Data Science
GPU Computing for Data Science GPU Computing for Data Science
GPU Computing for Data Science Domino Data Lab
 
Agile Development + Interaction design = True
Agile Development + Interaction design = TrueAgile Development + Interaction design = True
Agile Development + Interaction design = TrueKlara Vatn
 
Digital Meets Physical: Collective Currents, et IoT-eksperiment
Digital Meets Physical: Collective Currents, et IoT-eksperimentDigital Meets Physical: Collective Currents, et IoT-eksperiment
Digital Meets Physical: Collective Currents, et IoT-eksperimentLillian Ayla Ersoy
 
Oit And Indirect Illumination Using Dx11 Linked Lists
Oit And Indirect Illumination Using Dx11 Linked ListsOit And Indirect Illumination Using Dx11 Linked Lists
Oit And Indirect Illumination Using Dx11 Linked ListsHolger Gruen
 
First-time users, longtime strategies: Why Parkinson’s Law is making you less...
First-time users, longtime strategies: Why Parkinson’s Law is making you less...First-time users, longtime strategies: Why Parkinson’s Law is making you less...
First-time users, longtime strategies: Why Parkinson’s Law is making you less...Rosenfeld Media
 
Real World Elixir Deployment
Real World Elixir DeploymentReal World Elixir Deployment
Real World Elixir DeploymentPete Gamache
 
Probabilistic algorithms for fun and pseudorandom profit
Probabilistic algorithms for fun and pseudorandom profitProbabilistic algorithms for fun and pseudorandom profit
Probabilistic algorithms for fun and pseudorandom profitTyler Treat
 
Overview of ZeroMQ
Overview of ZeroMQOverview of ZeroMQ
Overview of ZeroMQpieterh
 
DevOps and Continuous Delivery Reference Architectures (including Nexus and o...
DevOps and Continuous Delivery Reference Architectures (including Nexus and o...DevOps and Continuous Delivery Reference Architectures (including Nexus and o...
DevOps and Continuous Delivery Reference Architectures (including Nexus and o...Sonatype
 

En vedette (11)

GPU Computing for Data Science
GPU Computing for Data Science GPU Computing for Data Science
GPU Computing for Data Science
 
Graph search with Neo4j
Graph search with Neo4jGraph search with Neo4j
Graph search with Neo4j
 
Agile Development + Interaction design = True
Agile Development + Interaction design = TrueAgile Development + Interaction design = True
Agile Development + Interaction design = True
 
Digital Meets Physical: Collective Currents, et IoT-eksperiment
Digital Meets Physical: Collective Currents, et IoT-eksperimentDigital Meets Physical: Collective Currents, et IoT-eksperiment
Digital Meets Physical: Collective Currents, et IoT-eksperiment
 
Oit And Indirect Illumination Using Dx11 Linked Lists
Oit And Indirect Illumination Using Dx11 Linked ListsOit And Indirect Illumination Using Dx11 Linked Lists
Oit And Indirect Illumination Using Dx11 Linked Lists
 
First-time users, longtime strategies: Why Parkinson’s Law is making you less...
First-time users, longtime strategies: Why Parkinson’s Law is making you less...First-time users, longtime strategies: Why Parkinson’s Law is making you less...
First-time users, longtime strategies: Why Parkinson’s Law is making you less...
 
Real World Elixir Deployment
Real World Elixir DeploymentReal World Elixir Deployment
Real World Elixir Deployment
 
Probabilistic algorithms for fun and pseudorandom profit
Probabilistic algorithms for fun and pseudorandom profitProbabilistic algorithms for fun and pseudorandom profit
Probabilistic algorithms for fun and pseudorandom profit
 
Overview of ZeroMQ
Overview of ZeroMQOverview of ZeroMQ
Overview of ZeroMQ
 
DevOps and Continuous Delivery Reference Architectures (including Nexus and o...
DevOps and Continuous Delivery Reference Architectures (including Nexus and o...DevOps and Continuous Delivery Reference Architectures (including Nexus and o...
DevOps and Continuous Delivery Reference Architectures (including Nexus and o...
 
Design Thinking and Lean UX
Design Thinking and Lean UXDesign Thinking and Lean UX
Design Thinking and Lean UX
 

Similaire à Polyglot heaven

SOLID in the Wild: Life when your software is actually soft
SOLID in the Wild: Life when your software is actually softSOLID in the Wild: Life when your software is actually soft
SOLID in the Wild: Life when your software is actually softVMware Tanzu
 
Refactoring Wunderlist. UA Mobile 2016.
Refactoring Wunderlist. UA Mobile 2016.Refactoring Wunderlist. UA Mobile 2016.
Refactoring Wunderlist. UA Mobile 2016.UA Mobile
 
Similarity Search For Web Services
Similarity Search For Web ServicesSimilarity Search For Web Services
Similarity Search For Web ServicesTalal Alsubaie
 
Global Innovation Nights - Spark
Global Innovation Nights - SparkGlobal Innovation Nights - Spark
Global Innovation Nights - SparkWorks Applications
 
Impact Analysis - LoopConf
Impact Analysis - LoopConfImpact Analysis - LoopConf
Impact Analysis - LoopConfChris Lema
 
Impactanalysis 150507054758-lva1-app6891
Impactanalysis 150507054758-lva1-app6891Impactanalysis 150507054758-lva1-app6891
Impactanalysis 150507054758-lva1-app6891Jose P. Banuelos
 
Analysis In Agile: It's More than Just User Stories
Analysis In Agile: It's More than Just User StoriesAnalysis In Agile: It's More than Just User Stories
Analysis In Agile: It's More than Just User StoriesKent McDonald
 
Webinar-From user stories to automated acceptance tests with BDD-Eduardo Riol
Webinar-From user stories to automated acceptance tests with BDD-Eduardo RiolWebinar-From user stories to automated acceptance tests with BDD-Eduardo Riol
Webinar-From user stories to automated acceptance tests with BDD-Eduardo RiolatSistemas
 
PaaS Boot Camp Demo Kit
PaaS Boot Camp Demo KitPaaS Boot Camp Demo Kit
PaaS Boot Camp Demo KitPLDTAlpha
 
Making the Most of Customer Data
Making the Most of Customer DataMaking the Most of Customer Data
Making the Most of Customer DataWSO2
 
Me and my importers
Me and my importersMe and my importers
Me and my importersDonny Wals
 
NSA for Enterprises Log Analysis Use Cases
NSA for Enterprises   Log Analysis Use Cases NSA for Enterprises   Log Analysis Use Cases
NSA for Enterprises Log Analysis Use Cases WSO2
 
Fast REST APIs Development with MongoDB
Fast REST APIs Development with MongoDBFast REST APIs Development with MongoDB
Fast REST APIs Development with MongoDBMongoDB
 
Reactive to Proactive: Intelligent Troubleshooting and Monitoring with Splunk
Reactive to Proactive: Intelligent Troubleshooting and Monitoring with SplunkReactive to Proactive: Intelligent Troubleshooting and Monitoring with Splunk
Reactive to Proactive: Intelligent Troubleshooting and Monitoring with SplunkSplunk
 
Primavera short cuts or smart cuts in p6-advance
Primavera  short cuts or smart cuts in p6-advancePrimavera  short cuts or smart cuts in p6-advance
Primavera short cuts or smart cuts in p6-advanceASHISH KUMAR SINGH
 
Backbone and edge - architecting the balance between continuity and change
Backbone and edge - architecting the balance between continuity and changeBackbone and edge - architecting the balance between continuity and change
Backbone and edge - architecting the balance between continuity and changeTetradian Consulting
 

Similaire à Polyglot heaven (20)

State or intent
State or intentState or intent
State or intent
 
SOLID in the Wild: Life when your software is actually soft
SOLID in the Wild: Life when your software is actually softSOLID in the Wild: Life when your software is actually soft
SOLID in the Wild: Life when your software is actually soft
 
Refactoring Wunderlist. UA Mobile 2016.
Refactoring Wunderlist. UA Mobile 2016.Refactoring Wunderlist. UA Mobile 2016.
Refactoring Wunderlist. UA Mobile 2016.
 
All the cool kids....
All the cool kids....All the cool kids....
All the cool kids....
 
Similarity Search For Web Services
Similarity Search For Web ServicesSimilarity Search For Web Services
Similarity Search For Web Services
 
Global Innovation Nights - Spark
Global Innovation Nights - SparkGlobal Innovation Nights - Spark
Global Innovation Nights - Spark
 
Impact Analysis - LoopConf
Impact Analysis - LoopConfImpact Analysis - LoopConf
Impact Analysis - LoopConf
 
Impactanalysis 150507054758-lva1-app6891
Impactanalysis 150507054758-lva1-app6891Impactanalysis 150507054758-lva1-app6891
Impactanalysis 150507054758-lva1-app6891
 
Analysis In Agile: It's More than Just User Stories
Analysis In Agile: It's More than Just User StoriesAnalysis In Agile: It's More than Just User Stories
Analysis In Agile: It's More than Just User Stories
 
Webinar-From user stories to automated acceptance tests with BDD-Eduardo Riol
Webinar-From user stories to automated acceptance tests with BDD-Eduardo RiolWebinar-From user stories to automated acceptance tests with BDD-Eduardo Riol
Webinar-From user stories to automated acceptance tests with BDD-Eduardo Riol
 
PaaS Boot Camp Demo Kit
PaaS Boot Camp Demo KitPaaS Boot Camp Demo Kit
PaaS Boot Camp Demo Kit
 
Making the Most of Customer Data
Making the Most of Customer DataMaking the Most of Customer Data
Making the Most of Customer Data
 
Me and my importers
Me and my importersMe and my importers
Me and my importers
 
NSA for Enterprises Log Analysis Use Cases
NSA for Enterprises   Log Analysis Use Cases NSA for Enterprises   Log Analysis Use Cases
NSA for Enterprises Log Analysis Use Cases
 
Fast REST APIs Development with MongoDB
Fast REST APIs Development with MongoDBFast REST APIs Development with MongoDB
Fast REST APIs Development with MongoDB
 
Reactive to Proactive: Intelligent Troubleshooting and Monitoring with Splunk
Reactive to Proactive: Intelligent Troubleshooting and Monitoring with SplunkReactive to Proactive: Intelligent Troubleshooting and Monitoring with Splunk
Reactive to Proactive: Intelligent Troubleshooting and Monitoring with Splunk
 
Primavera short cuts or smart cuts in p6-advance
Primavera  short cuts or smart cuts in p6-advancePrimavera  short cuts or smart cuts in p6-advance
Primavera short cuts or smart cuts in p6-advance
 
Backbone and edge - architecting the balance between continuity and change
Backbone and edge - architecting the balance between continuity and changeBackbone and edge - architecting the balance between continuity and change
Backbone and edge - architecting the balance between continuity and change
 
Ajax-Tutorial
Ajax-TutorialAjax-Tutorial
Ajax-Tutorial
 
Workshop: Integrating Amazon APIs in Unity
Workshop: Integrating Amazon APIs in Unity Workshop: Integrating Amazon APIs in Unity
Workshop: Integrating Amazon APIs in Unity
 

Plus de Tomas Jansson

Functional webapplicaations using fsharp and suave
Functional webapplicaations using fsharp and suaveFunctional webapplicaations using fsharp and suave
Functional webapplicaations using fsharp and suaveTomas Jansson
 
What does the future hold for us in asp.net 5
What does the future hold for us in asp.net 5What does the future hold for us in asp.net 5
What does the future hold for us in asp.net 5Tomas Jansson
 
OWIN Web API with Linky
OWIN Web API with LinkyOWIN Web API with Linky
OWIN Web API with LinkyTomas Jansson
 
File -> new project to deploy in 10 minutes with TeamCity and Octopus Deploy
File -> new project to deploy in 10 minutes with TeamCity and Octopus DeployFile -> new project to deploy in 10 minutes with TeamCity and Octopus Deploy
File -> new project to deploy in 10 minutes with TeamCity and Octopus DeployTomas Jansson
 
Getting started with Elasticsearch and .NET
Getting started with Elasticsearch and .NETGetting started with Elasticsearch and .NET
Getting started with Elasticsearch and .NETTomas Jansson
 
Deployment taken seriously with Octopus Deploy and TeamCity
Deployment taken seriously with Octopus Deploy and TeamCityDeployment taken seriously with Octopus Deploy and TeamCity
Deployment taken seriously with Octopus Deploy and TeamCityTomas Jansson
 
NServiceBus workshop presentation
NServiceBus workshop presentationNServiceBus workshop presentation
NServiceBus workshop presentationTomas Jansson
 
SignalR - Building an async web app with .NET
SignalR - Building an async web app with .NETSignalR - Building an async web app with .NET
SignalR - Building an async web app with .NETTomas Jansson
 
REST for .NET - Introduction to ASP.NET Web API
REST for .NET - Introduction to ASP.NET Web APIREST for .NET - Introduction to ASP.NET Web API
REST for .NET - Introduction to ASP.NET Web APITomas Jansson
 

Plus de Tomas Jansson (10)

Functional webapplicaations using fsharp and suave
Functional webapplicaations using fsharp and suaveFunctional webapplicaations using fsharp and suave
Functional webapplicaations using fsharp and suave
 
What does the future hold for us in asp.net 5
What does the future hold for us in asp.net 5What does the future hold for us in asp.net 5
What does the future hold for us in asp.net 5
 
OWIN Web API with Linky
OWIN Web API with LinkyOWIN Web API with Linky
OWIN Web API with Linky
 
Roslyn
RoslynRoslyn
Roslyn
 
File -> new project to deploy in 10 minutes with TeamCity and Octopus Deploy
File -> new project to deploy in 10 minutes with TeamCity and Octopus DeployFile -> new project to deploy in 10 minutes with TeamCity and Octopus Deploy
File -> new project to deploy in 10 minutes with TeamCity and Octopus Deploy
 
Getting started with Elasticsearch and .NET
Getting started with Elasticsearch and .NETGetting started with Elasticsearch and .NET
Getting started with Elasticsearch and .NET
 
Deployment taken seriously with Octopus Deploy and TeamCity
Deployment taken seriously with Octopus Deploy and TeamCityDeployment taken seriously with Octopus Deploy and TeamCity
Deployment taken seriously with Octopus Deploy and TeamCity
 
NServiceBus workshop presentation
NServiceBus workshop presentationNServiceBus workshop presentation
NServiceBus workshop presentation
 
SignalR - Building an async web app with .NET
SignalR - Building an async web app with .NETSignalR - Building an async web app with .NET
SignalR - Building an async web app with .NET
 
REST for .NET - Introduction to ASP.NET Web API
REST for .NET - Introduction to ASP.NET Web APIREST for .NET - Introduction to ASP.NET Web API
REST for .NET - Introduction to ASP.NET Web API
 

Dernier

办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样umasea
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...Technogeeks
 
Machine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringMachine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringHironori Washizaki
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...confluent
 
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsSensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsChristian Birchler
 
Sending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdfSending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdf31events.com
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfAlina Yurenko
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfFerryKemperman
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Hr365.us smith
 
Comparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfComparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfDrew Moseley
 
VK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web DevelopmentVK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web Developmentvyaparkranti
 
Cyber security and its impact on E commerce
Cyber security and its impact on E commerceCyber security and its impact on E commerce
Cyber security and its impact on E commercemanigoyal112
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfMarharyta Nedzelska
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWave PLM
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based projectAnoyGreter
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Andreas Granig
 
Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Mater
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmSujith Sukumaran
 

Dernier (20)

Odoo Development Company in India | Devintelle Consulting Service
Odoo Development Company in India | Devintelle Consulting ServiceOdoo Development Company in India | Devintelle Consulting Service
Odoo Development Company in India | Devintelle Consulting Service
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...
 
Machine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringMachine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their Engineering
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
 
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort ServiceHot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
 
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsSensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
 
Sending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdfSending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdf
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdf
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)
 
Comparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfComparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdf
 
VK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web DevelopmentVK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web Development
 
Cyber security and its impact on E commerce
Cyber security and its impact on E commerceCyber security and its impact on E commerce
Cyber security and its impact on E commerce
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdf
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need It
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based project
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024
 
Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalm
 

Polyglot heaven

Notes de l'éditeur

  1. Trenger en ny profilbilde
  2. You will get a response, it is not fire and forget  model your error handling Responsiveness  return to the user early The data will be consistent, at some point in time
  3. Applications that react to changes Message based, in the form of event Things are modular  fits in your head. This doesn’t mean it is not complex, the connections between the modules might be harder to see Not all system react at the same time, but it will lead to eventual consistency
  4. A simple question
  5. No! Not all data are the same, so why are we often treaten the data the same way (yes I’m thinking about SQL)
  6. Changes or events
  7. I’ve had some discussion with other people telling me that the thing I sugges is the new hammer since it is new and shiny and we should stick with SQL. But that reasoning makes SQL your hammer. I’m suggesting different tools for different problems.
  8. SQL is terrible at relations, if they get somewhat complex. Use SQL for reporting, then it is great!
  9. Standard picture from googling the ”standard” architecture 3-layered architecture
  10. As soon as you want to show the user some variation of the data you have to change the model where you have your domain logic  makes your domain complex doing more than it is supposed to.. Domain is about behavior and changes!
  11. This is a technique most of us learned in college or university, so why doesn’t we use it more?
  12. This is a really simplified picture of CQRS, but it’s not that simplified. It comes from CQS but applied to todays context
  13. I do have a test helper, but it is just setting up dependencies