SlideShare a Scribd company logo
1 of 42
Download to read offline
in a Microservices Architecture
Dennis van der Stelt
Software Architect
v a n d e r s t e l t
2
Your presenter
Dennis van der Stelt
http://dennis.bloggingabout.net/
Software Architect
Geek
Developer
Architect
Gamer
Enthousiast
Professional Skills
Something about me that you should know
About Dennis
Innovative software architect
Almost 20 years of experience in development of
distributed systems. Has a continuous drive to
learn and improve knowledge in different
architectural styles, including quality in software
development. Highly motivated to share his
knowledge via articles, presentations and his blog.
Awards
98%
80%
60%
40%
100%
NServiceBus Champ
Typemock MVP
Certified Trainer
v a n d e r s t e l t
3
Agenda
In a polyglot architectural landscape with a lot of business logic, data
and information, how can we build solid loosely coupled systems?
Let’s have a look at the differences
between those opposites
Monolithic vs Microservices
Dividing your system’s business
logic over logical boundaries
Service Boundaries
Why duplicating data is a bad
practice, but replicating data is
perfectly fine
Replicating vs Duplicating
v a n d e r s t e l t
Monolithic application
Wikipedia : large, powerful, and
intractably indivisible and uniform.
A monolithic application is build and
deployed as a single unit.
WordPress is a successful & scalable
monolithic application used by millions!
Monolith is therefor not by default a
badly designed system
4
v a n d e r s t e l t
5
Microservices
a software architectural style for complex
applications of small, independent processes.
services are small, highly decoupled and
focus on a single task
communicate via language agnostic APIs
boundaries are explicit
services are autonomous
share schema & contract, not classes
compatibility is based on policy
v a n d e r s t e l t
Monolithic application 6
single deployment unit
v a n d e r s t e l t
Microservices 7
multiple deployable services
v a n d e r s t e l t
Authentication
8
Coupling
OSS
ViewModel
Change
Product
Database
Razor
v a n d e r s t e l t
9
First law
“My First Law of Distributed Object Design: Don't distribute your objects”
Martin Fowler in Patterns of Enterprise Application Architecture
v a n d e r s t e l t
10
Monolithic application problems
Problem Analysis
of all monolithic systems are build
with high time constraints, resulting
in big balls of mud in which no
developer can find their way.
42%
Maintenance
The coupling makes it hard to change anything
Documentation
Cost to add new features
Building the 100th feature as fast as the 1st
Project Ownership
v a n d e r s t e l t
Monolithic application 11
v a n d e r s t e l t
12
v a n d e r s t e l t
13
Microservices
“don't even consider microservices unless you have a system that's too complex to manage as a monolith”
Martin Fowler
SERVICE BOUNDARIESDividing your system’s business logic over logical boundaries
v a n d e r s t e l t
15
Microservices architecture
Deployment
Don’t necessarily need to
separately deploy every
single service
Services boundaries
Define boundaries around
logical business processes
Monitoring
Document message flows
and monitor them with
great tools
Messaging
Asynchronous communication
via messaging &
publish/subscribe
v a n d e r s t e l t
Any organization that designs a system will produce a design whose structure is a
copy of the organization's communication structure.
“
”Conway’s law – 1968
v a n d e r s t e l t
Service boundaries 17
Shipping
FinanceSales
Marketing
v a n d e r s t e l t
Deployment 18
Shipping
FinanceSales
Marketing
SQL
SQL
{ }
v a n d e r s t e l t
Architectural style 19
Shipping
FinanceSales
Marketing
CQRS
Event Sourcing
CRUD
there is no
top level
architecture
v a n d e r s t e l t
Coupling aspects 20
SpatialTemporalPlatform
v a n d e r s t e l t
Messaging
21
Shipping
FinanceSales
Marketing
SQL
v a n d e r s t e l t
Messaging
22
Shipping
FinanceSales
Marketing
SQL
v a n d e r s t e l t
Messaging
23
Shipping
FinanceSales
Marketing
SQL
Publish / Subscribe
v a n d e r s t e l t
24
Messaging
Handle business events through
Inversion of communication
by supplementing SOA with EDA
“
”
v a n d e r s t e l t
25
Resume
Service Boundaries
Try to see if your organizational communication
structure can be the model for your logical service
boundaries.
Messaging
Avoid RPC style communication between services.
Use messaging with an event driven architecture.
Deployment
Don’t necessarily see every microservice as a
deployable unit. Do keep an eye out for coupling.
Avoid joins in your database between entities.
DUPLICATION vs REPLICATIONWhy you shouldn’t duplicate, but replicate data
v a n d e r s t e l t
27
Do not duplicate
across service boundaries
You can share…
some information
Publish / Subscribe
to notify in advance
v a n d e r s t e l t
28
Duplicating data
What event just took place
business process related
events that other services
require to properly function
and take action on
Status changes Identifiers Date Time Info
Who was the subject
the triggered event has a
specific subject in our domain
When does the status expire
when status updates expire or
are no longer relevant at a
point in time, we provide
expiration information
v a n d e r s t e l t
Sales
Messaging 29
Taxi
Customers
TaxiRequested
TaxiRequested
RequestTaxi
v a n d e r s t e l t
Sales
Messaging 30
Taxi
TaxiRequested
RequestTaxi
Finance
TaxiAssigned
Customers
v a n d e r s t e l t
Sales
Messaging 31
Taxi
RequestCancelled
Finance
RequestCancelled
CancelRequest
v a n d e r s t e l t
32
Replicating vs Duplicating data
So duplication of
data is not good But what about this
replicating data?
v a n d e r s t e l t
33
Replicating vs Duplicating data
So duplication of
data is not good But what about this
replicating data?
Replicating within a
service boundary is okay
for performance or
connectivity issues
v a n d e r s t e l t
34
Replicating data options
Performance optimization
Suitable for all categories business
and personal presentation
In memory cache
Prepare for optimal querying
Prepare data for querying, for example
into a specific readmodel / viewmodel
Resolve latency issues
Replicating data across physical machines
does not break service boundaries
Resolve network issues
Different sites across the globe, or
a moving site without connection,
like a large container ship
Viewmodels
Different machines
Different sites
v a n d e r s t e l t
35
Composite UI
Sales
Lists requests made by
customer
Customer
Displays customer
information such as name
and current location
Taxi
Shows where taxi drivers
are and at what time they
arrive at your location
Finance
Displays status of all
financial transactions and
outstanding bills
MONITORINGyour services
v a n d e r s t e l t
37
Monitoring
v a n d e r s t e l t
38
Monitoring
v a n d e r s t e l t
39
Monitoring
v a n d e r s t e l t
40
Resume; how we build microservices
Define Boundaries
Define boundaries of your services. Your organizational
structure may help. Do not duplicate data across services.
Share status changes, identifiers and date-times.
Implement
Implement your microservices that handle a single task.
Use publish/subscribe to notify other services with status
changes.
Composite UI
Everything from data up until the user interface should
belong in a service, resulting in a composite ui that
retrieves data based on the mentioned identifiers.
Deploy
Deploy your microservices, but not necessarily as single
units. A possibility is a deployment unit per service
boundary.
v a n d e r s t e l t
41
Microservices can be hard to build, deploy &
monitor. Get help from people with experience
Think about temporal coupling between services
and how to solve this, possibly with messaging
Do not duplicate data between services, as at some
point business logic will follow
Conclusion
v a n d e r s t e l t
42
Contact Me
Address
Rotterdam, The Netherlands
Email
dennis@bloggingabout.net
Twitter
@dvdstelt
Website
http://dennis.bloggingabout.net
Thank you for your time…

More Related Content

What's hot

Building infrastructure as code using Terraform - DevOps Krakow
Building infrastructure as code using Terraform - DevOps KrakowBuilding infrastructure as code using Terraform - DevOps Krakow
Building infrastructure as code using Terraform - DevOps KrakowAnton Babenko
 
Real Time Test Data with Grafana
Real Time Test Data with GrafanaReal Time Test Data with Grafana
Real Time Test Data with GrafanaIoannis Papadakis
 
Grafana introduction
Grafana introductionGrafana introduction
Grafana introductionRico Chen
 
Juraci Paixão Kröhling - All you need to know about OpenTelemetry
Juraci Paixão Kröhling - All you need to know about OpenTelemetryJuraci Paixão Kröhling - All you need to know about OpenTelemetry
Juraci Paixão Kröhling - All you need to know about OpenTelemetryJuliano Costa
 
Kubernetes Deployment Strategies
Kubernetes Deployment StrategiesKubernetes Deployment Strategies
Kubernetes Deployment StrategiesAbdennour TM
 
Infrastructure & System Monitoring using Prometheus
Infrastructure & System Monitoring using PrometheusInfrastructure & System Monitoring using Prometheus
Infrastructure & System Monitoring using PrometheusMarco Pas
 
Easy enterprise application integration with RabbitMQ and AMQP
Easy enterprise application integration with RabbitMQ and AMQPEasy enterprise application integration with RabbitMQ and AMQP
Easy enterprise application integration with RabbitMQ and AMQPRabbit MQ
 
Monitoring using Prometheus and Grafana
Monitoring using Prometheus and GrafanaMonitoring using Prometheus and Grafana
Monitoring using Prometheus and GrafanaArvind Kumar G.S
 
Monitoring Kubernetes with Prometheus
Monitoring Kubernetes with PrometheusMonitoring Kubernetes with Prometheus
Monitoring Kubernetes with PrometheusGrafana Labs
 
Monitoring With Prometheus
Monitoring With PrometheusMonitoring With Prometheus
Monitoring With PrometheusKnoldus Inc.
 
Servlet 3.1 Async I/O
Servlet 3.1 Async I/OServlet 3.1 Async I/O
Servlet 3.1 Async I/OSimone Bordet
 
Power Your Predictive Analytics with InfluxDB
Power Your Predictive Analytics with InfluxDBPower Your Predictive Analytics with InfluxDB
Power Your Predictive Analytics with InfluxDBInfluxData
 
Monitoring Kubernetes with Prometheus
Monitoring Kubernetes with PrometheusMonitoring Kubernetes with Prometheus
Monitoring Kubernetes with PrometheusGrafana Labs
 

What's hot (20)

Prometheus 101
Prometheus 101Prometheus 101
Prometheus 101
 
Building infrastructure as code using Terraform - DevOps Krakow
Building infrastructure as code using Terraform - DevOps KrakowBuilding infrastructure as code using Terraform - DevOps Krakow
Building infrastructure as code using Terraform - DevOps Krakow
 
Kubernetes networking & Security
Kubernetes networking & SecurityKubernetes networking & Security
Kubernetes networking & Security
 
Real Time Test Data with Grafana
Real Time Test Data with GrafanaReal Time Test Data with Grafana
Real Time Test Data with Grafana
 
Grafana introduction
Grafana introductionGrafana introduction
Grafana introduction
 
Juraci Paixão Kröhling - All you need to know about OpenTelemetry
Juraci Paixão Kröhling - All you need to know about OpenTelemetryJuraci Paixão Kröhling - All you need to know about OpenTelemetry
Juraci Paixão Kröhling - All you need to know about OpenTelemetry
 
Kubernetes Deployment Strategies
Kubernetes Deployment StrategiesKubernetes Deployment Strategies
Kubernetes Deployment Strategies
 
Infrastructure & System Monitoring using Prometheus
Infrastructure & System Monitoring using PrometheusInfrastructure & System Monitoring using Prometheus
Infrastructure & System Monitoring using Prometheus
 
Easy enterprise application integration with RabbitMQ and AMQP
Easy enterprise application integration with RabbitMQ and AMQPEasy enterprise application integration with RabbitMQ and AMQP
Easy enterprise application integration with RabbitMQ and AMQP
 
Monitoring using Prometheus and Grafana
Monitoring using Prometheus and GrafanaMonitoring using Prometheus and Grafana
Monitoring using Prometheus and Grafana
 
Monitoring Kubernetes with Prometheus
Monitoring Kubernetes with PrometheusMonitoring Kubernetes with Prometheus
Monitoring Kubernetes with Prometheus
 
Grafana.pptx
Grafana.pptxGrafana.pptx
Grafana.pptx
 
Monitoring With Prometheus
Monitoring With PrometheusMonitoring With Prometheus
Monitoring With Prometheus
 
Monitoring With Prometheus
Monitoring With PrometheusMonitoring With Prometheus
Monitoring With Prometheus
 
Grafana 7.0
Grafana 7.0Grafana 7.0
Grafana 7.0
 
Using Netconf/Yang with OpenDalight
Using Netconf/Yang with OpenDalightUsing Netconf/Yang with OpenDalight
Using Netconf/Yang with OpenDalight
 
Servlet 3.1 Async I/O
Servlet 3.1 Async I/OServlet 3.1 Async I/O
Servlet 3.1 Async I/O
 
Power Your Predictive Analytics with InfluxDB
Power Your Predictive Analytics with InfluxDBPower Your Predictive Analytics with InfluxDB
Power Your Predictive Analytics with InfluxDB
 
Final terraform
Final terraformFinal terraform
Final terraform
 
Monitoring Kubernetes with Prometheus
Monitoring Kubernetes with PrometheusMonitoring Kubernetes with Prometheus
Monitoring Kubernetes with Prometheus
 

Viewers also liked

Building reliable applications with messaging
Building reliable applications with messagingBuilding reliable applications with messaging
Building reliable applications with messagingDennis van der Stelt
 
Data Architecture not Just for Microservices
Data Architecture not Just for MicroservicesData Architecture not Just for Microservices
Data Architecture not Just for MicroservicesEberhard Wolff
 
REST vs. Messaging For Microservices
REST vs. Messaging For MicroservicesREST vs. Messaging For Microservices
REST vs. Messaging For MicroservicesEberhard Wolff
 
LIDNUG : Reliable applications with messaging
LIDNUG : Reliable applications with messagingLIDNUG : Reliable applications with messaging
LIDNUG : Reliable applications with messagingDennis van der Stelt
 
From Monolithic to Microservices in 45 Minutes
From Monolithic to Microservices in 45 MinutesFrom Monolithic to Microservices in 45 Minutes
From Monolithic to Microservices in 45 MinutesMongoDB
 
Business Track: Building a Private Cloud to Empower the Business at Goldman ...
Business Track: Building a Private Cloud  to Empower the Business at Goldman ...Business Track: Building a Private Cloud  to Empower the Business at Goldman ...
Business Track: Building a Private Cloud to Empower the Business at Goldman ...MongoDB
 
Enabling Cloud Native Security with OAuth2 and Multi-Tenant UAA
Enabling Cloud Native Security with OAuth2 and Multi-Tenant UAA Enabling Cloud Native Security with OAuth2 and Multi-Tenant UAA
Enabling Cloud Native Security with OAuth2 and Multi-Tenant UAA Will Tran
 
Running the Business of IT on ServiceNow using IT4IT
Running the Business of IT on ServiceNow using IT4ITRunning the Business of IT on ServiceNow using IT4IT
Running the Business of IT on ServiceNow using IT4ITcccamericas
 
Real-Time Analytics Visualized w/ Kafka + Streamliner + MemSQL + ZoomData, An...
Real-Time Analytics Visualized w/ Kafka + Streamliner + MemSQL + ZoomData, An...Real-Time Analytics Visualized w/ Kafka + Streamliner + MemSQL + ZoomData, An...
Real-Time Analytics Visualized w/ Kafka + Streamliner + MemSQL + ZoomData, An...confluent
 
Integration Patterns and Anti-Patterns for Microservices Architectures
Integration Patterns and Anti-Patterns for Microservices ArchitecturesIntegration Patterns and Anti-Patterns for Microservices Architectures
Integration Patterns and Anti-Patterns for Microservices ArchitecturesApcera
 
Asynchronous micro-services and the unified log
Asynchronous micro-services and the unified logAsynchronous micro-services and the unified log
Asynchronous micro-services and the unified logAlexander Dean
 
How to Split Your System into Microservices
How to Split Your System into MicroservicesHow to Split Your System into Microservices
How to Split Your System into MicroservicesEberhard Wolff
 
Microservices - opportunities, dilemmas and problems
Microservices - opportunities, dilemmas and problemsMicroservices - opportunities, dilemmas and problems
Microservices - opportunities, dilemmas and problemsŁukasz Sowa
 
Better Software—Faster: Ten Best Practices from Sequoia's Microservices Summit
Better Software—Faster: Ten Best Practices from Sequoia's Microservices SummitBetter Software—Faster: Ten Best Practices from Sequoia's Microservices Summit
Better Software—Faster: Ten Best Practices from Sequoia's Microservices SummitSequoia Capital
 
Developing event-driven microservices with event sourcing and CQRS (svcc, sv...
Developing event-driven microservices with event sourcing and CQRS  (svcc, sv...Developing event-driven microservices with event sourcing and CQRS  (svcc, sv...
Developing event-driven microservices with event sourcing and CQRS (svcc, sv...Chris Richardson
 
Principles of microservices velocity
Principles of microservices   velocityPrinciples of microservices   velocity
Principles of microservices velocitySam Newman
 

Viewers also liked (19)

Building reliable applications with messaging
Building reliable applications with messagingBuilding reliable applications with messaging
Building reliable applications with messaging
 
Data Architecture not Just for Microservices
Data Architecture not Just for MicroservicesData Architecture not Just for Microservices
Data Architecture not Just for Microservices
 
REST vs. Messaging For Microservices
REST vs. Messaging For MicroservicesREST vs. Messaging For Microservices
REST vs. Messaging For Microservices
 
LIDNUG : Reliable applications with messaging
LIDNUG : Reliable applications with messagingLIDNUG : Reliable applications with messaging
LIDNUG : Reliable applications with messaging
 
Death of the batch job
Death of the batch jobDeath of the batch job
Death of the batch job
 
From Monolithic to Microservices in 45 Minutes
From Monolithic to Microservices in 45 MinutesFrom Monolithic to Microservices in 45 Minutes
From Monolithic to Microservices in 45 Minutes
 
Business Track: Building a Private Cloud to Empower the Business at Goldman ...
Business Track: Building a Private Cloud  to Empower the Business at Goldman ...Business Track: Building a Private Cloud  to Empower the Business at Goldman ...
Business Track: Building a Private Cloud to Empower the Business at Goldman ...
 
Enabling Cloud Native Security with OAuth2 and Multi-Tenant UAA
Enabling Cloud Native Security with OAuth2 and Multi-Tenant UAA Enabling Cloud Native Security with OAuth2 and Multi-Tenant UAA
Enabling Cloud Native Security with OAuth2 and Multi-Tenant UAA
 
Market basket analysis
Market basket analysisMarket basket analysis
Market basket analysis
 
Running the Business of IT on ServiceNow using IT4IT
Running the Business of IT on ServiceNow using IT4ITRunning the Business of IT on ServiceNow using IT4IT
Running the Business of IT on ServiceNow using IT4IT
 
Real-Time Analytics Visualized w/ Kafka + Streamliner + MemSQL + ZoomData, An...
Real-Time Analytics Visualized w/ Kafka + Streamliner + MemSQL + ZoomData, An...Real-Time Analytics Visualized w/ Kafka + Streamliner + MemSQL + ZoomData, An...
Real-Time Analytics Visualized w/ Kafka + Streamliner + MemSQL + ZoomData, An...
 
Integration Patterns and Anti-Patterns for Microservices Architectures
Integration Patterns and Anti-Patterns for Microservices ArchitecturesIntegration Patterns and Anti-Patterns for Microservices Architectures
Integration Patterns and Anti-Patterns for Microservices Architectures
 
Asynchronous micro-services and the unified log
Asynchronous micro-services and the unified logAsynchronous micro-services and the unified log
Asynchronous micro-services and the unified log
 
How to Split Your System into Microservices
How to Split Your System into MicroservicesHow to Split Your System into Microservices
How to Split Your System into Microservices
 
Microservices - opportunities, dilemmas and problems
Microservices - opportunities, dilemmas and problemsMicroservices - opportunities, dilemmas and problems
Microservices - opportunities, dilemmas and problems
 
Better Software—Faster: Ten Best Practices from Sequoia's Microservices Summit
Better Software—Faster: Ten Best Practices from Sequoia's Microservices SummitBetter Software—Faster: Ten Best Practices from Sequoia's Microservices Summit
Better Software—Faster: Ten Best Practices from Sequoia's Microservices Summit
 
Developing event-driven microservices with event sourcing and CQRS (svcc, sv...
Developing event-driven microservices with event sourcing and CQRS  (svcc, sv...Developing event-driven microservices with event sourcing and CQRS  (svcc, sv...
Developing event-driven microservices with event sourcing and CQRS (svcc, sv...
 
Xml ppt
Xml pptXml ppt
Xml ppt
 
Principles of microservices velocity
Principles of microservices   velocityPrinciples of microservices   velocity
Principles of microservices velocity
 

Similar to Duplicating data or replicating data in Micro Services

Rethink! How Digital Transformation disrupts Enterprise Architecture
Rethink! How Digital Transformation disrupts Enterprise ArchitectureRethink! How Digital Transformation disrupts Enterprise Architecture
Rethink! How Digital Transformation disrupts Enterprise ArchitectureLeanIX GmbH
 
Financial services 2.0 Innovation, Disruption, Automation and Trust
Financial services 2.0 Innovation, Disruption, Automation and TrustFinancial services 2.0 Innovation, Disruption, Automation and Trust
Financial services 2.0 Innovation, Disruption, Automation and TrustBob Bonomo
 
Sgd itm-soft-computing-11-march -11
Sgd itm-soft-computing-11-march -11Sgd itm-soft-computing-11-march -11
Sgd itm-soft-computing-11-march -11Sanjeev Deshmukh
 
Understanding Content: Machine Learning & the Modern Insurer
Understanding Content:Machine Learning & the Modern InsurerUnderstanding Content:Machine Learning & the Modern Insurer
Understanding Content: Machine Learning & the Modern InsurerNuxeo
 
Modern Architectures: Keynote - Using Fabrics to Weave Success in the Cloud
Modern Architectures: Keynote - Using Fabrics to Weave Success in the CloudModern Architectures: Keynote - Using Fabrics to Weave Success in the Cloud
Modern Architectures: Keynote - Using Fabrics to Weave Success in the CloudDreamforce
 
Data-Centric Business Transformation Using Knowledge Graphs
Data-Centric Business Transformation Using Knowledge GraphsData-Centric Business Transformation Using Knowledge Graphs
Data-Centric Business Transformation Using Knowledge GraphsAlan Morrison
 
Why Data Virtualization? An Introduction
Why Data Virtualization? An IntroductionWhy Data Virtualization? An Introduction
Why Data Virtualization? An IntroductionDenodo
 
Kaleido Overview - Full-Stack B2B Platform for Modern Business Networks
Kaleido Overview - Full-Stack B2B Platform for Modern Business NetworksKaleido Overview - Full-Stack B2B Platform for Modern Business Networks
Kaleido Overview - Full-Stack B2B Platform for Modern Business NetworksKaleido
 
Goodenough 110424192114-phpapp02
Goodenough 110424192114-phpapp02Goodenough 110424192114-phpapp02
Goodenough 110424192114-phpapp02Gerson Orlando Jr
 
SOA in Financial Services
SOA in Financial ServicesSOA in Financial Services
SOA in Financial ServicesMike Walker
 
CSG’s Journey with Elastic
CSG’s Journey with ElasticCSG’s Journey with Elastic
CSG’s Journey with ElasticElasticsearch
 
Data governance and discoverability at AO.com | Jon Vines, AO.com and Christo...
Data governance and discoverability at AO.com | Jon Vines, AO.com and Christo...Data governance and discoverability at AO.com | Jon Vines, AO.com and Christo...
Data governance and discoverability at AO.com | Jon Vines, AO.com and Christo...HostedbyConfluent
 
itSMF Spanish Conference Deck
itSMF Spanish Conference Deck itSMF Spanish Conference Deck
itSMF Spanish Conference Deck Robert Stroud
 
itSMF Espana presentation
itSMF Espana presentationitSMF Espana presentation
itSMF Espana presentationRobert Stroud
 
Utilities Can Ramp Up CX with a Customer Data Platform
Utilities Can Ramp Up CX with a Customer Data PlatformUtilities Can Ramp Up CX with a Customer Data Platform
Utilities Can Ramp Up CX with a Customer Data PlatformCognizant
 
Piloting The Cloud: Acting on OMB's Mandate - RightNow Technologies
Piloting The Cloud: Acting on OMB's Mandate - RightNow TechnologiesPiloting The Cloud: Acting on OMB's Mandate - RightNow Technologies
Piloting The Cloud: Acting on OMB's Mandate - RightNow TechnologiesNitin Badjatia
 

Similar to Duplicating data or replicating data in Micro Services (20)

Een andere kijk op Microservices
Een andere kijk op MicroservicesEen andere kijk op Microservices
Een andere kijk op Microservices
 
Rethink! How Digital Transformation disrupts Enterprise Architecture
Rethink! How Digital Transformation disrupts Enterprise ArchitectureRethink! How Digital Transformation disrupts Enterprise Architecture
Rethink! How Digital Transformation disrupts Enterprise Architecture
 
Financial services 2.0 Innovation, Disruption, Automation and Trust
Financial services 2.0 Innovation, Disruption, Automation and TrustFinancial services 2.0 Innovation, Disruption, Automation and Trust
Financial services 2.0 Innovation, Disruption, Automation and Trust
 
Sgd itm-soft-computing-11-march -11
Sgd itm-soft-computing-11-march -11Sgd itm-soft-computing-11-march -11
Sgd itm-soft-computing-11-march -11
 
Understanding Content: Machine Learning & the Modern Insurer
Understanding Content:Machine Learning & the Modern InsurerUnderstanding Content:Machine Learning & the Modern Insurer
Understanding Content: Machine Learning & the Modern Insurer
 
Modern Architectures: Keynote - Using Fabrics to Weave Success in the Cloud
Modern Architectures: Keynote - Using Fabrics to Weave Success in the CloudModern Architectures: Keynote - Using Fabrics to Weave Success in the Cloud
Modern Architectures: Keynote - Using Fabrics to Weave Success in the Cloud
 
Microevent
MicroeventMicroevent
Microevent
 
Data-Centric Business Transformation Using Knowledge Graphs
Data-Centric Business Transformation Using Knowledge GraphsData-Centric Business Transformation Using Knowledge Graphs
Data-Centric Business Transformation Using Knowledge Graphs
 
Why Data Virtualization? An Introduction
Why Data Virtualization? An IntroductionWhy Data Virtualization? An Introduction
Why Data Virtualization? An Introduction
 
Kaleido Overview - Full-Stack B2B Platform for Modern Business Networks
Kaleido Overview - Full-Stack B2B Platform for Modern Business NetworksKaleido Overview - Full-Stack B2B Platform for Modern Business Networks
Kaleido Overview - Full-Stack B2B Platform for Modern Business Networks
 
Goodenough 110424192114-phpapp02
Goodenough 110424192114-phpapp02Goodenough 110424192114-phpapp02
Goodenough 110424192114-phpapp02
 
SOA in Financial Services
SOA in Financial ServicesSOA in Financial Services
SOA in Financial Services
 
CSG’s Journey with Elastic
CSG’s Journey with ElasticCSG’s Journey with Elastic
CSG’s Journey with Elastic
 
GT Nexus Corporate Brochure
GT Nexus Corporate BrochureGT Nexus Corporate Brochure
GT Nexus Corporate Brochure
 
Data governance and discoverability at AO.com | Jon Vines, AO.com and Christo...
Data governance and discoverability at AO.com | Jon Vines, AO.com and Christo...Data governance and discoverability at AO.com | Jon Vines, AO.com and Christo...
Data governance and discoverability at AO.com | Jon Vines, AO.com and Christo...
 
itSMF Spanish Conference Deck
itSMF Spanish Conference Deck itSMF Spanish Conference Deck
itSMF Spanish Conference Deck
 
itSMF Espana presentation
itSMF Espana presentationitSMF Espana presentation
itSMF Espana presentation
 
Digital Transformation by Richard Baird
Digital Transformation by Richard BairdDigital Transformation by Richard Baird
Digital Transformation by Richard Baird
 
Utilities Can Ramp Up CX with a Customer Data Platform
Utilities Can Ramp Up CX with a Customer Data PlatformUtilities Can Ramp Up CX with a Customer Data Platform
Utilities Can Ramp Up CX with a Customer Data Platform
 
Piloting The Cloud: Acting on OMB's Mandate - RightNow Technologies
Piloting The Cloud: Acting on OMB's Mandate - RightNow TechnologiesPiloting The Cloud: Acting on OMB's Mandate - RightNow Technologies
Piloting The Cloud: Acting on OMB's Mandate - RightNow Technologies
 

More from Dennis van der Stelt

More from Dennis van der Stelt (14)

Change your architecture during deployment
Change your architecture during deploymentChange your architecture during deployment
Change your architecture during deployment
 
Dealing with eventual consistency
Dealing with eventual consistencyDealing with eventual consistency
Dealing with eventual consistency
 
Dealing with eventual consistency
Dealing with eventual consistencyDealing with eventual consistency
Dealing with eventual consistency
 
Death of the batch job - NServiceBus Sagas
Death of the batch job - NServiceBus SagasDeath of the batch job - NServiceBus Sagas
Death of the batch job - NServiceBus Sagas
 
Distributed Systems Principles
Distributed Systems PrinciplesDistributed Systems Principles
Distributed Systems Principles
 
Distributed Systems principles
Distributed Systems principlesDistributed Systems principles
Distributed Systems principles
 
Distributed Systems Design
Distributed Systems DesignDistributed Systems Design
Distributed Systems Design
 
Silverlight & WCF RIA
Silverlight & WCF RIASilverlight & WCF RIA
Silverlight & WCF RIA
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
 
AppFabric Velocity
AppFabric VelocityAppFabric Velocity
AppFabric Velocity
 
Continuous integration
Continuous integrationContinuous integration
Continuous integration
 
App fabric introduction
App fabric introductionApp fabric introduction
App fabric introduction
 
SOLID Principles part 2
SOLID Principles part 2SOLID Principles part 2
SOLID Principles part 2
 
SOLID Principles part 1
SOLID Principles part 1SOLID Principles part 1
SOLID Principles part 1
 

Recently uploaded

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
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
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
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
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
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
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
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
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
 
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
 
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
 
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
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 

Recently uploaded (20)

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
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
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
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
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
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
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
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
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
 
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
 
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
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
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
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 

Duplicating data or replicating data in Micro Services

  • 1. in a Microservices Architecture Dennis van der Stelt Software Architect
  • 2. v a n d e r s t e l t 2 Your presenter Dennis van der Stelt http://dennis.bloggingabout.net/ Software Architect Geek Developer Architect Gamer Enthousiast Professional Skills Something about me that you should know About Dennis Innovative software architect Almost 20 years of experience in development of distributed systems. Has a continuous drive to learn and improve knowledge in different architectural styles, including quality in software development. Highly motivated to share his knowledge via articles, presentations and his blog. Awards 98% 80% 60% 40% 100% NServiceBus Champ Typemock MVP Certified Trainer
  • 3. v a n d e r s t e l t 3 Agenda In a polyglot architectural landscape with a lot of business logic, data and information, how can we build solid loosely coupled systems? Let’s have a look at the differences between those opposites Monolithic vs Microservices Dividing your system’s business logic over logical boundaries Service Boundaries Why duplicating data is a bad practice, but replicating data is perfectly fine Replicating vs Duplicating
  • 4. v a n d e r s t e l t Monolithic application Wikipedia : large, powerful, and intractably indivisible and uniform. A monolithic application is build and deployed as a single unit. WordPress is a successful & scalable monolithic application used by millions! Monolith is therefor not by default a badly designed system 4
  • 5. v a n d e r s t e l t 5 Microservices a software architectural style for complex applications of small, independent processes. services are small, highly decoupled and focus on a single task communicate via language agnostic APIs boundaries are explicit services are autonomous share schema & contract, not classes compatibility is based on policy
  • 6. v a n d e r s t e l t Monolithic application 6 single deployment unit
  • 7. v a n d e r s t e l t Microservices 7 multiple deployable services
  • 8. v a n d e r s t e l t Authentication 8 Coupling OSS ViewModel Change Product Database Razor
  • 9. v a n d e r s t e l t 9 First law “My First Law of Distributed Object Design: Don't distribute your objects” Martin Fowler in Patterns of Enterprise Application Architecture
  • 10. v a n d e r s t e l t 10 Monolithic application problems Problem Analysis of all monolithic systems are build with high time constraints, resulting in big balls of mud in which no developer can find their way. 42% Maintenance The coupling makes it hard to change anything Documentation Cost to add new features Building the 100th feature as fast as the 1st Project Ownership
  • 11. v a n d e r s t e l t Monolithic application 11
  • 12. v a n d e r s t e l t 12
  • 13. v a n d e r s t e l t 13 Microservices “don't even consider microservices unless you have a system that's too complex to manage as a monolith” Martin Fowler
  • 14. SERVICE BOUNDARIESDividing your system’s business logic over logical boundaries
  • 15. v a n d e r s t e l t 15 Microservices architecture Deployment Don’t necessarily need to separately deploy every single service Services boundaries Define boundaries around logical business processes Monitoring Document message flows and monitor them with great tools Messaging Asynchronous communication via messaging & publish/subscribe
  • 16. v a n d e r s t e l t Any organization that designs a system will produce a design whose structure is a copy of the organization's communication structure. “ ”Conway’s law – 1968
  • 17. v a n d e r s t e l t Service boundaries 17 Shipping FinanceSales Marketing
  • 18. v a n d e r s t e l t Deployment 18 Shipping FinanceSales Marketing SQL SQL { }
  • 19. v a n d e r s t e l t Architectural style 19 Shipping FinanceSales Marketing CQRS Event Sourcing CRUD there is no top level architecture
  • 20. v a n d e r s t e l t Coupling aspects 20 SpatialTemporalPlatform
  • 21. v a n d e r s t e l t Messaging 21 Shipping FinanceSales Marketing SQL
  • 22. v a n d e r s t e l t Messaging 22 Shipping FinanceSales Marketing SQL
  • 23. v a n d e r s t e l t Messaging 23 Shipping FinanceSales Marketing SQL Publish / Subscribe
  • 24. v a n d e r s t e l t 24 Messaging Handle business events through Inversion of communication by supplementing SOA with EDA “ ”
  • 25. v a n d e r s t e l t 25 Resume Service Boundaries Try to see if your organizational communication structure can be the model for your logical service boundaries. Messaging Avoid RPC style communication between services. Use messaging with an event driven architecture. Deployment Don’t necessarily see every microservice as a deployable unit. Do keep an eye out for coupling. Avoid joins in your database between entities.
  • 26. DUPLICATION vs REPLICATIONWhy you shouldn’t duplicate, but replicate data
  • 27. v a n d e r s t e l t 27 Do not duplicate across service boundaries You can share… some information Publish / Subscribe to notify in advance
  • 28. v a n d e r s t e l t 28 Duplicating data What event just took place business process related events that other services require to properly function and take action on Status changes Identifiers Date Time Info Who was the subject the triggered event has a specific subject in our domain When does the status expire when status updates expire or are no longer relevant at a point in time, we provide expiration information
  • 29. v a n d e r s t e l t Sales Messaging 29 Taxi Customers TaxiRequested TaxiRequested RequestTaxi
  • 30. v a n d e r s t e l t Sales Messaging 30 Taxi TaxiRequested RequestTaxi Finance TaxiAssigned Customers
  • 31. v a n d e r s t e l t Sales Messaging 31 Taxi RequestCancelled Finance RequestCancelled CancelRequest
  • 32. v a n d e r s t e l t 32 Replicating vs Duplicating data So duplication of data is not good But what about this replicating data?
  • 33. v a n d e r s t e l t 33 Replicating vs Duplicating data So duplication of data is not good But what about this replicating data? Replicating within a service boundary is okay for performance or connectivity issues
  • 34. v a n d e r s t e l t 34 Replicating data options Performance optimization Suitable for all categories business and personal presentation In memory cache Prepare for optimal querying Prepare data for querying, for example into a specific readmodel / viewmodel Resolve latency issues Replicating data across physical machines does not break service boundaries Resolve network issues Different sites across the globe, or a moving site without connection, like a large container ship Viewmodels Different machines Different sites
  • 35. v a n d e r s t e l t 35 Composite UI Sales Lists requests made by customer Customer Displays customer information such as name and current location Taxi Shows where taxi drivers are and at what time they arrive at your location Finance Displays status of all financial transactions and outstanding bills
  • 37. v a n d e r s t e l t 37 Monitoring
  • 38. v a n d e r s t e l t 38 Monitoring
  • 39. v a n d e r s t e l t 39 Monitoring
  • 40. v a n d e r s t e l t 40 Resume; how we build microservices Define Boundaries Define boundaries of your services. Your organizational structure may help. Do not duplicate data across services. Share status changes, identifiers and date-times. Implement Implement your microservices that handle a single task. Use publish/subscribe to notify other services with status changes. Composite UI Everything from data up until the user interface should belong in a service, resulting in a composite ui that retrieves data based on the mentioned identifiers. Deploy Deploy your microservices, but not necessarily as single units. A possibility is a deployment unit per service boundary.
  • 41. v a n d e r s t e l t 41 Microservices can be hard to build, deploy & monitor. Get help from people with experience Think about temporal coupling between services and how to solve this, possibly with messaging Do not duplicate data between services, as at some point business logic will follow Conclusion
  • 42. v a n d e r s t e l t 42 Contact Me Address Rotterdam, The Netherlands Email dennis@bloggingabout.net Twitter @dvdstelt Website http://dennis.bloggingabout.net Thank you for your time…