Are you working with an existing codebase? Do you want to use the cool libraries, tools or methodology you saw at this conference? This talk will show you how to combine legacy code with bleeding edge technology.
Often the use of new technology and protocols is limited by fear of change in existing applications. Yet, as developers, we want to remain relevant and have fun with all the disruptive changes in our industry.
This talk will drill-down from a high-level architectural view to the actual implementation of modern, strangling services in a legacy monolith, using DDD to define bounded contexts, in a safe and controlled manner.
5. Observation: There's a colossal gap
between a lot of solutions presented at
conferences and the kinds of problems
many folks are actually trying to solve.
Robert Smallshire (@robsmallshire)
7. Service Decomposition
Three Approaches
to Moving From a
Large Monolith to
Smaller Services
Strangle
Extract and re-implement.
Extend
Prevent the monolith from becoming
larger.
Split
Focus on data. Look for high cohesion
and low-coupling.
@DaggieBe
8. • Conduct a dependency analysis
• Focus on the data
• Split off one by one and validate
• Learn and refine
Split
@DaggieBe
9. • Existing functionality is extracted
and re-implemented
• Use an Anti Corruption Layer for decoupling
• Make the monolith smaller
Strangle
@DaggieBe
10. • Minimise impact on the existing application
• Implement new features as separate services
• Use an Anti Corruption Layer for decoupling
• Prevent the monolith from growing
Extend
@DaggieBe
11. You do not need
to stick to a
single approach.
19. What is an event?
Something that has happened in the past.
Types of data
An event can
contain 3 types of
data
data it owns
data it needs
reference data
@DaggieBe
31. Observation: There's a colossal gap
between a lot of solutions presented at
conferences and the kinds of problems
many folks are actually trying to solve.
Robert Smallshire (@robsmallshire)
37. Continuous Experimentation
Microservices enable experimentation
Feature toggles
Dynamically enable or disable features
Traffic routing
Route your traffic to your experiments
Data-driven decision making
Monitoring and telemetry to observe behaviour
@DaggieBe
38. Distributed systems are hard
Fallacies of distributed computing
Benefits
Loose coupling, enabling innovation, …
Drawbacks
Moving parts, transport, consistency, …
@DaggieBe
40. Middleware
Runs on my machine …
Dependencies
Containers without orchestration?
Suitable infrastructure
Database, messaging bus, monitoring, …
@DaggieBe
41. GREG YOUNG - 5 common reasons DDD projects fail and how to avoid them
https://skillsmatter.com/skillscasts/1431-greg-young-ddd-projects
Sources
MARTIN FOWLER - Richardson Maturity Model
https://martinfowler.com/articles/richardsonMaturityModel.html
WIKIPEDIA - Fallacies of distributed computing
https://en.wikipedia.org/wiki/Fallacies_of_distributed_computing
IEEE Software - Continuous Experimentation
https://ieeexplore.ieee.org/document/8255793/
DEMO - Postal Demo
https://github.com/bart-blommaerts/postal-demo
DEMO - Postal Calculator
https://github.com/bart-blommaerts/postal-calculator
@DaggieBe