SlideShare a Scribd company logo
1 of 64
Download to read offline
© 2019, Domain Driven Design Taiwan Community
Kim Kao ( )
Jan 26, 2019
Why DDD matters
Crunch problems, design solutions
© 2019, Domain Driven Design Taiwan Community
© 2019, Domain Driven Design Taiwan Community
uncertainty.equals(dangerous) == true
© 2019, Domain Driven Design Taiwan Community
A typical day for problem solving...
Manager -
“We are going to launch new product.
We are challenged by competitors, several niche economics there."
“I heard of microservices(anything else), sounds good to quick deliver.
Make sure you are aware on this, and release on time!!!”
Developer - “...........”
© 2019, Domain Driven Design Taiwan Community
Problem Solving
&
& &
© 2019, Domain Driven Design Taiwan Community
Application is …
Requirements Software Modeling Collaboration
© 2019, Domain Driven Design Taiwan Community
Eric Evans
Ubiquitous Language
Bounded Context
Collaboration
© 2019, Domain Driven Design Taiwan Community
Sheet music works
© 2019, Domain Driven Design Taiwan Community
When talk about problem
© 2019, Domain Driven Design Taiwan Community
IoT
SSO
Server
less
Network
Container
Firecracker
AI/ML
DW
Front
End DB
CI/CD
© 2019, Domain Driven Design Taiwan Community
© 2019, Domain Driven Design Taiwan Community
Knowledge from stakeholders
Use Case Modeling
© 2019, Domain Driven Design Taiwan Community
Through Classic to Agile
ICONIX Processing
© 2019, Domain Driven Design Taiwan Community
Object Modeling …
ER Modeling …
xxx Modeling …
A lack of Collaboration with non-tech stakeholders
Not “Ubiquitous Language”
© 2019, Domain Driven Design Taiwan Community
Way to collaborate
• Point out the events
• Who send the command
• Find the Noun(s)
• Have all team voices
Commands
Events
Aggregate
© 2019, Domain Driven Design Taiwan Community
Domain Driven Design
© 2019, Domain Driven Design Taiwan Community
© 2019, Domain Driven Design Taiwan Community
Intent matters
© 2019, Domain Driven Design Taiwan Community
Domain Driven Design (DDD)
• What is DDD?
• Not only a Technology / Methodology
• Set of principles and patterns for focusing the design effort where
it matters most
• It’s all about
• Understanding the domain where the software will be applied
• Create highly expressive model of that domain
• Distil Ubiquitous language
© 2019, Domain Driven Design Taiwan Community
Domain (Strategy) Modeling – Basic Terms
• Domain
• Subject area where the software will be applied
• Example : VOD Domain, EC Domain, Banking Domain
• Subdomain
• Logically separated part of the Domain
• Example : Ingestion, Streaming, Geo Location
• Domain Model
• Software model for solution of a domain problem
• Bounded Context
• Explicit boundary where Domain Model lives
© 2019, Domain Driven Design Taiwan Community
Tell about story
© 2019, Domain Driven Design Taiwan Community
Domain is about capability
Grab key events to
Abstraction to give
© 2019, Domain Driven Design Taiwan Community
Dive into relationships and why
Strategic DDD
© 2019, Domain Driven Design Taiwan Community
Pattern in Practice
Tactical DDD
© 2019, Domain Driven Design Taiwan Community
Approach
• Collect the “Aggregates” which stand for similar concept in
the “Bounded Context”.
• Prioritize the “Domains”, which one is Core Domain, rest for
Sub Domain, even Utility Domain.
• Get Consensus, not Compromise
• Focus on Core Domain
© 2019, Domain Driven Design Taiwan Community
Tell story by coding
© 2019, Domain Driven Design Taiwan Community
Microservices?
© 2019, Domain Driven Design Taiwan Community
100
LOC
© 2019, Domain Driven Design Taiwan Community
200
LOC
© 2019, Domain Driven Design Taiwan Community
400?
1000?
© 2019, Domain Driven Design Taiwan Community
Trap in Microservices
© 2019, Domain Driven Design Taiwan Community
Crunch Bounded Context
• 1st focus on high Cohesion
• Always Low Coupling later
© 2019, Domain Driven Design Taiwan Community
“All Things Distributed”
“Design to Fail”
“Redundancy is hard”
“Server provisioning hell .....................................”
© 2019, Domain Driven Design Taiwan Community
It’s about capability
• Are you ready to deal with M:N transaction compensation ?
• Are you ready to embrace the rapidly change by contract ?
© 2019, Domain Driven Design Taiwan Community
When you should dive in Microservices
Team
Partners
Business
Operation
Coding
Value
© 2019, Domain Driven Design Taiwan Community
Migration Strategy
Assess and
prioritize, one app
at a time
Re-host (lift-and-shift)
data center or Cloud
Re-platform (lift-tinker-shift)
VMs à containers
Re-factor
monolith à microservices
Re-invent (cloud-native)
new serverless microservices
Determine
Core/Sub/utility
Domain
© 2019, Domain Driven Design Taiwan Community
How BBoM to Microservices
• Only one domain a time
• Test Driven
• Value Driven
• Change Driven
• Adapter in BBoM
• Port in Microservices
© 2019, Domain Driven Design Taiwan Community
Event handler
© 2019, Domain Driven Design Taiwan Community
Domain Events means …
Un Cer tain ty
the state of being uncertain.
© 2019, Domain Driven Design Taiwan Community
De duplicator
Event 3 Event 1 Event 2 Event 1 Event 3 Event 2 Event 1
…
Want In-Order, actually Uncertainty
© 2019, Domain Driven Design Taiwan Community
Uncomfortable
It’s okay to feel this way.
@VaughnVernon
© 2019, Domain Driven Design Taiwan Community
Dependencies
© 2019, Domain Driven Design Taiwan Community
Focus on Contract and Protocol
• Service owner is consumer
• Expose SDK means projection technical decisions to consumer
• “Operation” complexity spread to consumer
• Consumer should be able to use any language/technology
and change over time!
• AWS
• API Gateway, Lambda Execution, any composable API call
© 2019, Domain Driven Design Taiwan Community
Some exceptions
• Centralized Logging
• Monitoring
• Distributed tracing
© 2019, Domain Driven Design Taiwan Community
Principle
© 2019, Domain Driven Design Taiwan Community
Adopt Microservices?
© 2019, Domain Driven Design Taiwan Community
Business Wants
https://vaughnvernon.co/tag/event-storming/
© 2019, Domain Driven Design Taiwan Community
But You Want
https://vaughnvernon.co/tag/event-storming/
© 2019, Domain Driven Design Taiwan Community
Challenge on migration to Microserivces
• Legacy looks like Big ball of mud(BBOM)
• Heavy dependency with external system
• No idea on split BBOM
• No idea to find out system boundary
• Which service(s) worth to do
• Human resources allocation
• Team, out sourcing, ISVs solution
© 2019, Domain Driven Design Taiwan Community
Business operation without whole picture
The Blind Men and the Elephant
Is It correct to all in microservices or serverless ?
© 2019, Domain Driven Design Taiwan Community
Precondition to do microservices
Rapid Provisioning
Basic monitoring
Rapid application deployment
Martin
Fowler
Realize the business flow, way to decompos
© 2019, Domain Driven Design Taiwan Community
Better way to decompose Monolith
Domain
Expert
Matters
© 2019, Domain Driven Design Taiwan Community
Learn and respect Domain experts
© 2019, Domain Driven Design Taiwan Community
How DDD can help you
• Business strategy on resource allocation
• Best resources should be put in most key/core domain
• Buy or out-sourcing common domain and sub domain
• Service re-architecture
• Form up the system context boundary
• Knowing the upstream-downstream relationship between domains
• Meaningful to do microservice (separate computing/persist, and
API communication )
• Service Migration
• Good to re-architecture
© 2019, Domain Driven Design Taiwan Community
Migration Business Case
Know Why/What/How
• Options to Optimize
• Learn and speak same language with
Domain expert
• Capture key business events, if it matters
• Adopt appropriate AWS services to
implement Solution
© 2019, Domain Driven Design Taiwan Community
Sharpen your saw
© 2019, Domain Driven Design Taiwan Community
DDD stuff
© 2019, Domain Driven Design Taiwan Community
Event Storming
© 2019, Domain Driven Design Taiwan Community
Specification by Example
© 2019, Domain Driven Design Taiwan Community
Programming Skills level up
• Test Driven Design
• Behavior Driven Design
• Refactoring
• CI/CD
© 2019, Domain Driven Design Taiwan Community
Practice DDD
Telegram : YikaiKao
WeChat : YikaiKao
Twitter : @DddTaiwan, @YikaiKao
GitHub Repos
© 2019, Domain Driven Design Taiwan Community
Thank You!
© 2019, Domain Driven Design Taiwan Community
Let’s explore
Event Storming

More Related Content

What's hot

Event Sourcing & CQRS, Kafka, Rabbit MQ
Event Sourcing & CQRS, Kafka, Rabbit MQEvent Sourcing & CQRS, Kafka, Rabbit MQ
Event Sourcing & CQRS, Kafka, Rabbit MQAraf Karsh Hamid
 
Red Hat Java Update and Quarkus Introduction
Red Hat Java Update and Quarkus IntroductionRed Hat Java Update and Quarkus Introduction
Red Hat Java Update and Quarkus IntroductionJohn Archer
 
Apache Kafka Architecture & Fundamentals Explained
Apache Kafka Architecture & Fundamentals ExplainedApache Kafka Architecture & Fundamentals Explained
Apache Kafka Architecture & Fundamentals Explainedconfluent
 
OpenShift 4 installation
OpenShift 4 installationOpenShift 4 installation
OpenShift 4 installationRobert Bohne
 
Running Apache Spark on Kubernetes: Best Practices and Pitfalls
Running Apache Spark on Kubernetes: Best Practices and PitfallsRunning Apache Spark on Kubernetes: Best Practices and Pitfalls
Running Apache Spark on Kubernetes: Best Practices and PitfallsDatabricks
 
Kafka streams - From pub/sub to a complete stream processing platform
Kafka streams - From pub/sub to a complete stream processing platformKafka streams - From pub/sub to a complete stream processing platform
Kafka streams - From pub/sub to a complete stream processing platformPaolo Castagna
 
DevDay2017 ESGI Essential DDD
DevDay2017 ESGI Essential DDDDevDay2017 ESGI Essential DDD
DevDay2017 ESGI Essential DDDGregory Boissinot
 
Domain Driven Design Demonstrated
Domain Driven Design Demonstrated Domain Driven Design Demonstrated
Domain Driven Design Demonstrated Alan Christensen
 
Optimizing Kubernetes Resource Requests/Limits for Cost-Efficiency and Latenc...
Optimizing Kubernetes Resource Requests/Limits for Cost-Efficiency and Latenc...Optimizing Kubernetes Resource Requests/Limits for Cost-Efficiency and Latenc...
Optimizing Kubernetes Resource Requests/Limits for Cost-Efficiency and Latenc...Henning Jacobs
 
Big Data Redis Mongodb Dynamodb Sharding
Big Data Redis Mongodb Dynamodb ShardingBig Data Redis Mongodb Dynamodb Sharding
Big Data Redis Mongodb Dynamodb ShardingAraf Karsh Hamid
 
Microservices Part 3 Service Mesh and Kafka
Microservices Part 3 Service Mesh and KafkaMicroservices Part 3 Service Mesh and Kafka
Microservices Part 3 Service Mesh and KafkaAraf Karsh Hamid
 
A Hands-on Introduction on Terraform Best Concepts and Best Practices
A Hands-on Introduction on Terraform Best Concepts and Best Practices A Hands-on Introduction on Terraform Best Concepts and Best Practices
A Hands-on Introduction on Terraform Best Concepts and Best Practices Nebulaworks
 
Serverless Architecture Patterns
Serverless Architecture PatternsServerless Architecture Patterns
Serverless Architecture PatternsAmazon Web Services
 
A Journey from Hexagonal Architecture to Event Sourcing - SymfonyCon Cluj 2017
A Journey from Hexagonal Architecture to Event Sourcing - SymfonyCon Cluj 2017A Journey from Hexagonal Architecture to Event Sourcing - SymfonyCon Cluj 2017
A Journey from Hexagonal Architecture to Event Sourcing - SymfonyCon Cluj 2017Carlos Buenosvinos
 
Microservices Architecture - Bangkok 2018
Microservices Architecture - Bangkok 2018Microservices Architecture - Bangkok 2018
Microservices Architecture - Bangkok 2018Araf Karsh Hamid
 
NATS Streaming - an alternative to Apache Kafka?
NATS Streaming - an alternative to Apache Kafka?NATS Streaming - an alternative to Apache Kafka?
NATS Streaming - an alternative to Apache Kafka?Anton Zadorozhniy
 
Securing Kafka
Securing Kafka Securing Kafka
Securing Kafka confluent
 

What's hot (20)

Event Sourcing & CQRS, Kafka, Rabbit MQ
Event Sourcing & CQRS, Kafka, Rabbit MQEvent Sourcing & CQRS, Kafka, Rabbit MQ
Event Sourcing & CQRS, Kafka, Rabbit MQ
 
Red Hat Java Update and Quarkus Introduction
Red Hat Java Update and Quarkus IntroductionRed Hat Java Update and Quarkus Introduction
Red Hat Java Update and Quarkus Introduction
 
Apache Kafka Architecture & Fundamentals Explained
Apache Kafka Architecture & Fundamentals ExplainedApache Kafka Architecture & Fundamentals Explained
Apache Kafka Architecture & Fundamentals Explained
 
OpenShift 4 installation
OpenShift 4 installationOpenShift 4 installation
OpenShift 4 installation
 
Running Apache Spark on Kubernetes: Best Practices and Pitfalls
Running Apache Spark on Kubernetes: Best Practices and PitfallsRunning Apache Spark on Kubernetes: Best Practices and Pitfalls
Running Apache Spark on Kubernetes: Best Practices and Pitfalls
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Design
 
Kafka streams - From pub/sub to a complete stream processing platform
Kafka streams - From pub/sub to a complete stream processing platformKafka streams - From pub/sub to a complete stream processing platform
Kafka streams - From pub/sub to a complete stream processing platform
 
DevDay2017 ESGI Essential DDD
DevDay2017 ESGI Essential DDDDevDay2017 ESGI Essential DDD
DevDay2017 ESGI Essential DDD
 
Domain Driven Design Demonstrated
Domain Driven Design Demonstrated Domain Driven Design Demonstrated
Domain Driven Design Demonstrated
 
Optimizing Kubernetes Resource Requests/Limits for Cost-Efficiency and Latenc...
Optimizing Kubernetes Resource Requests/Limits for Cost-Efficiency and Latenc...Optimizing Kubernetes Resource Requests/Limits for Cost-Efficiency and Latenc...
Optimizing Kubernetes Resource Requests/Limits for Cost-Efficiency and Latenc...
 
Big Data Redis Mongodb Dynamodb Sharding
Big Data Redis Mongodb Dynamodb ShardingBig Data Redis Mongodb Dynamodb Sharding
Big Data Redis Mongodb Dynamodb Sharding
 
Microservices Part 3 Service Mesh and Kafka
Microservices Part 3 Service Mesh and KafkaMicroservices Part 3 Service Mesh and Kafka
Microservices Part 3 Service Mesh and Kafka
 
A Hands-on Introduction on Terraform Best Concepts and Best Practices
A Hands-on Introduction on Terraform Best Concepts and Best Practices A Hands-on Introduction on Terraform Best Concepts and Best Practices
A Hands-on Introduction on Terraform Best Concepts and Best Practices
 
Domain Driven Design
Domain Driven Design Domain Driven Design
Domain Driven Design
 
Serverless Architecture Patterns
Serverless Architecture PatternsServerless Architecture Patterns
Serverless Architecture Patterns
 
A Journey from Hexagonal Architecture to Event Sourcing - SymfonyCon Cluj 2017
A Journey from Hexagonal Architecture to Event Sourcing - SymfonyCon Cluj 2017A Journey from Hexagonal Architecture to Event Sourcing - SymfonyCon Cluj 2017
A Journey from Hexagonal Architecture to Event Sourcing - SymfonyCon Cluj 2017
 
Microservices Architecture - Bangkok 2018
Microservices Architecture - Bangkok 2018Microservices Architecture - Bangkok 2018
Microservices Architecture - Bangkok 2018
 
NATS Streaming - an alternative to Apache Kafka?
NATS Streaming - an alternative to Apache Kafka?NATS Streaming - an alternative to Apache Kafka?
NATS Streaming - an alternative to Apache Kafka?
 
Quarkus k8s
Quarkus   k8sQuarkus   k8s
Quarkus k8s
 
Securing Kafka
Securing Kafka Securing Kafka
Securing Kafka
 

Similar to DDD Taiwan Community 2019 01-26-1st-meetup-why ddd matters

2019 04-25-agile communitymeetup-essentialcapabilitiesbehindmicroservices
2019 04-25-agile communitymeetup-essentialcapabilitiesbehindmicroservices2019 04-25-agile communitymeetup-essentialcapabilitiesbehindmicroservices
2019 04-25-agile communitymeetup-essentialcapabilitiesbehindmicroservicesKim Kao
 
2019 04-25-agile communitymeetup-essentialcapabilitiesbehindmicroservices
2019 04-25-agile communitymeetup-essentialcapabilitiesbehindmicroservices2019 04-25-agile communitymeetup-essentialcapabilitiesbehindmicroservices
2019 04-25-agile communitymeetup-essentialcapabilitiesbehindmicroservicessolidkim
 
2019 03-23-2nd-meetup-essential capabilities behind microservices
2019 03-23-2nd-meetup-essential capabilities behind microservices2019 03-23-2nd-meetup-essential capabilities behind microservices
2019 03-23-2nd-meetup-essential capabilities behind microservicesKim Kao
 
DDD for small organizations redelivery
DDD for small organizations redeliveryDDD for small organizations redelivery
DDD for small organizations redeliveryssuser281ba71
 
MSA, TBD, DDD, TDD, BDD, WTF?
MSA, TBD, DDD, TDD, BDD, WTF?MSA, TBD, DDD, TDD, BDD, WTF?
MSA, TBD, DDD, TDD, BDD, WTF?Michael Lambert
 
The As, Bs, and Four Cs of Testing Cloud-Native Applications
The As, Bs, and Four Cs of Testing Cloud-Native ApplicationsThe As, Bs, and Four Cs of Testing Cloud-Native Applications
The As, Bs, and Four Cs of Testing Cloud-Native ApplicationsDenim Group
 
Cloud Computing
Cloud ComputingCloud Computing
Cloud ComputingUOS
 
2019 08-01-i ddd-studygroup-appendix
2019 08-01-i ddd-studygroup-appendix2019 08-01-i ddd-studygroup-appendix
2019 08-01-i ddd-studygroup-appendixKim Kao
 
Migrate-Critical-Workload-to-AWS-From-Domain-Driven-Design-perspective
Migrate-Critical-Workload-to-AWS-From-Domain-Driven-Design-perspectiveMigrate-Critical-Workload-to-AWS-From-Domain-Driven-Design-perspective
Migrate-Critical-Workload-to-AWS-From-Domain-Driven-Design-perspectiveAmazon Web Services
 
2019-02-20-ddd taiwan-community-iddd-studygroup-1st
2019-02-20-ddd taiwan-community-iddd-studygroup-1st2019-02-20-ddd taiwan-community-iddd-studygroup-1st
2019-02-20-ddd taiwan-community-iddd-studygroup-1stKim Kao
 
Keynote_Disney_UnleashthePossibilitiesAvoidthePitfallswithCloud
Keynote_Disney_UnleashthePossibilitiesAvoidthePitfallswithCloudKeynote_Disney_UnleashthePossibilitiesAvoidthePitfallswithCloud
Keynote_Disney_UnleashthePossibilitiesAvoidthePitfallswithCloudAmazon Web Services
 
Modernization: Moving workloads to cloud
Modernization: Moving workloads to cloud Modernization: Moving workloads to cloud
Modernization: Moving workloads to cloud Shikha Srivastava
 
Cisco Live 2019: New Best Practices for Hybrid and Multicloud Network Strategies
Cisco Live 2019: New Best Practices for Hybrid and Multicloud Network StrategiesCisco Live 2019: New Best Practices for Hybrid and Multicloud Network Strategies
Cisco Live 2019: New Best Practices for Hybrid and Multicloud Network StrategiesMen and Mice
 
IBM Connect 2016 - Don't give up on Domino! Introducing Darwino: A New Lifeli...
IBM Connect 2016 - Don't give up on Domino!Introducing Darwino: A New Lifeli...IBM Connect 2016 - Don't give up on Domino!Introducing Darwino: A New Lifeli...
IBM Connect 2016 - Don't give up on Domino! Introducing Darwino: A New Lifeli...Philippe Riand
 
Using Dbvisit STANDBY as DR solution for Oracle ODA machines
Using Dbvisit STANDBY as DR solution for Oracle ODA machinesUsing Dbvisit STANDBY as DR solution for Oracle ODA machines
Using Dbvisit STANDBY as DR solution for Oracle ODA machinesMarketingArrowECS_CZ
 
Domain Driven Design Big Picture Strategic Patterns
Domain Driven Design Big Picture Strategic PatternsDomain Driven Design Big Picture Strategic Patterns
Domain Driven Design Big Picture Strategic PatternsMark Windholtz
 
Public cloud uses and limitations
Public cloud uses and limitationsPublic cloud uses and limitations
Public cloud uses and limitationsIDERA Software
 
Succeeding With Microservices | Harness Webinar
Succeeding With Microservices | Harness WebinarSucceeding With Microservices | Harness Webinar
Succeeding With Microservices | Harness WebinarTiffany Jachja
 
Planning Cloud Migrations: It's all about the destination
Planning Cloud Migrations: It's all about the destinationPlanning Cloud Migrations: It's all about the destination
Planning Cloud Migrations: It's all about the destinationArvind Viswanathan
 
Private Cloud Overview
Private Cloud OverviewPrivate Cloud Overview
Private Cloud OverviewEdKerstein
 

Similar to DDD Taiwan Community 2019 01-26-1st-meetup-why ddd matters (20)

2019 04-25-agile communitymeetup-essentialcapabilitiesbehindmicroservices
2019 04-25-agile communitymeetup-essentialcapabilitiesbehindmicroservices2019 04-25-agile communitymeetup-essentialcapabilitiesbehindmicroservices
2019 04-25-agile communitymeetup-essentialcapabilitiesbehindmicroservices
 
2019 04-25-agile communitymeetup-essentialcapabilitiesbehindmicroservices
2019 04-25-agile communitymeetup-essentialcapabilitiesbehindmicroservices2019 04-25-agile communitymeetup-essentialcapabilitiesbehindmicroservices
2019 04-25-agile communitymeetup-essentialcapabilitiesbehindmicroservices
 
2019 03-23-2nd-meetup-essential capabilities behind microservices
2019 03-23-2nd-meetup-essential capabilities behind microservices2019 03-23-2nd-meetup-essential capabilities behind microservices
2019 03-23-2nd-meetup-essential capabilities behind microservices
 
DDD for small organizations redelivery
DDD for small organizations redeliveryDDD for small organizations redelivery
DDD for small organizations redelivery
 
MSA, TBD, DDD, TDD, BDD, WTF?
MSA, TBD, DDD, TDD, BDD, WTF?MSA, TBD, DDD, TDD, BDD, WTF?
MSA, TBD, DDD, TDD, BDD, WTF?
 
The As, Bs, and Four Cs of Testing Cloud-Native Applications
The As, Bs, and Four Cs of Testing Cloud-Native ApplicationsThe As, Bs, and Four Cs of Testing Cloud-Native Applications
The As, Bs, and Four Cs of Testing Cloud-Native Applications
 
Cloud Computing
Cloud ComputingCloud Computing
Cloud Computing
 
2019 08-01-i ddd-studygroup-appendix
2019 08-01-i ddd-studygroup-appendix2019 08-01-i ddd-studygroup-appendix
2019 08-01-i ddd-studygroup-appendix
 
Migrate-Critical-Workload-to-AWS-From-Domain-Driven-Design-perspective
Migrate-Critical-Workload-to-AWS-From-Domain-Driven-Design-perspectiveMigrate-Critical-Workload-to-AWS-From-Domain-Driven-Design-perspective
Migrate-Critical-Workload-to-AWS-From-Domain-Driven-Design-perspective
 
2019-02-20-ddd taiwan-community-iddd-studygroup-1st
2019-02-20-ddd taiwan-community-iddd-studygroup-1st2019-02-20-ddd taiwan-community-iddd-studygroup-1st
2019-02-20-ddd taiwan-community-iddd-studygroup-1st
 
Keynote_Disney_UnleashthePossibilitiesAvoidthePitfallswithCloud
Keynote_Disney_UnleashthePossibilitiesAvoidthePitfallswithCloudKeynote_Disney_UnleashthePossibilitiesAvoidthePitfallswithCloud
Keynote_Disney_UnleashthePossibilitiesAvoidthePitfallswithCloud
 
Modernization: Moving workloads to cloud
Modernization: Moving workloads to cloud Modernization: Moving workloads to cloud
Modernization: Moving workloads to cloud
 
Cisco Live 2019: New Best Practices for Hybrid and Multicloud Network Strategies
Cisco Live 2019: New Best Practices for Hybrid and Multicloud Network StrategiesCisco Live 2019: New Best Practices for Hybrid and Multicloud Network Strategies
Cisco Live 2019: New Best Practices for Hybrid and Multicloud Network Strategies
 
IBM Connect 2016 - Don't give up on Domino! Introducing Darwino: A New Lifeli...
IBM Connect 2016 - Don't give up on Domino!Introducing Darwino: A New Lifeli...IBM Connect 2016 - Don't give up on Domino!Introducing Darwino: A New Lifeli...
IBM Connect 2016 - Don't give up on Domino! Introducing Darwino: A New Lifeli...
 
Using Dbvisit STANDBY as DR solution for Oracle ODA machines
Using Dbvisit STANDBY as DR solution for Oracle ODA machinesUsing Dbvisit STANDBY as DR solution for Oracle ODA machines
Using Dbvisit STANDBY as DR solution for Oracle ODA machines
 
Domain Driven Design Big Picture Strategic Patterns
Domain Driven Design Big Picture Strategic PatternsDomain Driven Design Big Picture Strategic Patterns
Domain Driven Design Big Picture Strategic Patterns
 
Public cloud uses and limitations
Public cloud uses and limitationsPublic cloud uses and limitations
Public cloud uses and limitations
 
Succeeding With Microservices | Harness Webinar
Succeeding With Microservices | Harness WebinarSucceeding With Microservices | Harness Webinar
Succeeding With Microservices | Harness Webinar
 
Planning Cloud Migrations: It's all about the destination
Planning Cloud Migrations: It's all about the destinationPlanning Cloud Migrations: It's all about the destination
Planning Cloud Migrations: It's all about the destination
 
Private Cloud Overview
Private Cloud OverviewPrivate Cloud Overview
Private Cloud Overview
 

More from Kim Kao

Enlarge influence by Participating in communities
Enlarge influence by Participating in communitiesEnlarge influence by Participating in communities
Enlarge influence by Participating in communitiesKim Kao
 
跟著Actor Model來一場與DDD的豔遇
跟著Actor Model來一場與DDD的豔遇跟著Actor Model來一場與DDD的豔遇
跟著Actor Model來一場與DDD的豔遇Kim Kao
 
Ddd by-clark chou
Ddd by-clark chouDdd by-clark chou
Ddd by-clark chouKim Kao
 
My past-3 yeas-developer-journey-at-linkedin-by-iantsai
My past-3 yeas-developer-journey-at-linkedin-by-iantsaiMy past-3 yeas-developer-journey-at-linkedin-by-iantsai
My past-3 yeas-developer-journey-at-linkedin-by-iantsaiKim Kao
 
Ddd(meetup 2) ddd with clean architecture
Ddd(meetup 2) ddd with clean architectureDdd(meetup 2) ddd with clean architecture
Ddd(meetup 2) ddd with clean architectureKim Kao
 
2019 03-13-implementing microservices by ddd
2019 03-13-implementing microservices by ddd2019 03-13-implementing microservices by ddd
2019 03-13-implementing microservices by dddKim Kao
 
2018 10-19-jc conf-embrace-legacy-java-ee-by-aws-serverless
2018 10-19-jc conf-embrace-legacy-java-ee-by-aws-serverless2018 10-19-jc conf-embrace-legacy-java-ee-by-aws-serverless
2018 10-19-jc conf-embrace-legacy-java-ee-by-aws-serverlessKim Kao
 
Legacy java ee meet lambda
Legacy java ee  meet lambdaLegacy java ee  meet lambda
Legacy java ee meet lambdaKim Kao
 

More from Kim Kao (8)

Enlarge influence by Participating in communities
Enlarge influence by Participating in communitiesEnlarge influence by Participating in communities
Enlarge influence by Participating in communities
 
跟著Actor Model來一場與DDD的豔遇
跟著Actor Model來一場與DDD的豔遇跟著Actor Model來一場與DDD的豔遇
跟著Actor Model來一場與DDD的豔遇
 
Ddd by-clark chou
Ddd by-clark chouDdd by-clark chou
Ddd by-clark chou
 
My past-3 yeas-developer-journey-at-linkedin-by-iantsai
My past-3 yeas-developer-journey-at-linkedin-by-iantsaiMy past-3 yeas-developer-journey-at-linkedin-by-iantsai
My past-3 yeas-developer-journey-at-linkedin-by-iantsai
 
Ddd(meetup 2) ddd with clean architecture
Ddd(meetup 2) ddd with clean architectureDdd(meetup 2) ddd with clean architecture
Ddd(meetup 2) ddd with clean architecture
 
2019 03-13-implementing microservices by ddd
2019 03-13-implementing microservices by ddd2019 03-13-implementing microservices by ddd
2019 03-13-implementing microservices by ddd
 
2018 10-19-jc conf-embrace-legacy-java-ee-by-aws-serverless
2018 10-19-jc conf-embrace-legacy-java-ee-by-aws-serverless2018 10-19-jc conf-embrace-legacy-java-ee-by-aws-serverless
2018 10-19-jc conf-embrace-legacy-java-ee-by-aws-serverless
 
Legacy java ee meet lambda
Legacy java ee  meet lambdaLegacy java ee  meet lambda
Legacy java ee meet lambda
 

Recently uploaded

AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...apidays
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamUiPathCommunity
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsNanddeep Nachan
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Orbitshub
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingEdi Saputra
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024The Digital Insurer
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodJuan lago vázquez
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...apidays
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...Zilliz
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Victor Rentea
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDropbox
 
Cyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdfCyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdfOverkill Security
 
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKSpring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKJago de Vreede
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesrafiqahmad00786416
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 

Recently uploaded (20)

AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Cyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdfCyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdf
 
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKSpring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 

DDD Taiwan Community 2019 01-26-1st-meetup-why ddd matters

  • 1. © 2019, Domain Driven Design Taiwan Community Kim Kao ( ) Jan 26, 2019 Why DDD matters Crunch problems, design solutions
  • 2. © 2019, Domain Driven Design Taiwan Community
  • 3. © 2019, Domain Driven Design Taiwan Community uncertainty.equals(dangerous) == true
  • 4. © 2019, Domain Driven Design Taiwan Community A typical day for problem solving... Manager - “We are going to launch new product. We are challenged by competitors, several niche economics there." “I heard of microservices(anything else), sounds good to quick deliver. Make sure you are aware on this, and release on time!!!” Developer - “...........”
  • 5. © 2019, Domain Driven Design Taiwan Community Problem Solving
  • 7. © 2019, Domain Driven Design Taiwan Community Application is … Requirements Software Modeling Collaboration
  • 8. © 2019, Domain Driven Design Taiwan Community Eric Evans Ubiquitous Language Bounded Context Collaboration
  • 9. © 2019, Domain Driven Design Taiwan Community Sheet music works
  • 10. © 2019, Domain Driven Design Taiwan Community When talk about problem
  • 11. © 2019, Domain Driven Design Taiwan Community IoT SSO Server less Network Container Firecracker AI/ML DW Front End DB CI/CD
  • 12. © 2019, Domain Driven Design Taiwan Community
  • 13. © 2019, Domain Driven Design Taiwan Community Knowledge from stakeholders Use Case Modeling
  • 14. © 2019, Domain Driven Design Taiwan Community Through Classic to Agile ICONIX Processing
  • 15. © 2019, Domain Driven Design Taiwan Community Object Modeling … ER Modeling … xxx Modeling … A lack of Collaboration with non-tech stakeholders Not “Ubiquitous Language”
  • 16. © 2019, Domain Driven Design Taiwan Community Way to collaborate • Point out the events • Who send the command • Find the Noun(s) • Have all team voices Commands Events Aggregate
  • 17. © 2019, Domain Driven Design Taiwan Community Domain Driven Design
  • 18. © 2019, Domain Driven Design Taiwan Community
  • 19. © 2019, Domain Driven Design Taiwan Community Intent matters
  • 20. © 2019, Domain Driven Design Taiwan Community Domain Driven Design (DDD) • What is DDD? • Not only a Technology / Methodology • Set of principles and patterns for focusing the design effort where it matters most • It’s all about • Understanding the domain where the software will be applied • Create highly expressive model of that domain • Distil Ubiquitous language
  • 21. © 2019, Domain Driven Design Taiwan Community Domain (Strategy) Modeling – Basic Terms • Domain • Subject area where the software will be applied • Example : VOD Domain, EC Domain, Banking Domain • Subdomain • Logically separated part of the Domain • Example : Ingestion, Streaming, Geo Location • Domain Model • Software model for solution of a domain problem • Bounded Context • Explicit boundary where Domain Model lives
  • 22. © 2019, Domain Driven Design Taiwan Community Tell about story
  • 23. © 2019, Domain Driven Design Taiwan Community Domain is about capability Grab key events to Abstraction to give
  • 24. © 2019, Domain Driven Design Taiwan Community Dive into relationships and why Strategic DDD
  • 25. © 2019, Domain Driven Design Taiwan Community Pattern in Practice Tactical DDD
  • 26. © 2019, Domain Driven Design Taiwan Community Approach • Collect the “Aggregates” which stand for similar concept in the “Bounded Context”. • Prioritize the “Domains”, which one is Core Domain, rest for Sub Domain, even Utility Domain. • Get Consensus, not Compromise • Focus on Core Domain
  • 27. © 2019, Domain Driven Design Taiwan Community Tell story by coding
  • 28. © 2019, Domain Driven Design Taiwan Community Microservices?
  • 29. © 2019, Domain Driven Design Taiwan Community 100 LOC
  • 30. © 2019, Domain Driven Design Taiwan Community 200 LOC
  • 31. © 2019, Domain Driven Design Taiwan Community 400? 1000?
  • 32. © 2019, Domain Driven Design Taiwan Community Trap in Microservices
  • 33. © 2019, Domain Driven Design Taiwan Community Crunch Bounded Context • 1st focus on high Cohesion • Always Low Coupling later
  • 34. © 2019, Domain Driven Design Taiwan Community “All Things Distributed” “Design to Fail” “Redundancy is hard” “Server provisioning hell .....................................”
  • 35. © 2019, Domain Driven Design Taiwan Community It’s about capability • Are you ready to deal with M:N transaction compensation ? • Are you ready to embrace the rapidly change by contract ?
  • 36. © 2019, Domain Driven Design Taiwan Community When you should dive in Microservices Team Partners Business Operation Coding Value
  • 37. © 2019, Domain Driven Design Taiwan Community Migration Strategy Assess and prioritize, one app at a time Re-host (lift-and-shift) data center or Cloud Re-platform (lift-tinker-shift) VMs à containers Re-factor monolith à microservices Re-invent (cloud-native) new serverless microservices Determine Core/Sub/utility Domain
  • 38. © 2019, Domain Driven Design Taiwan Community How BBoM to Microservices • Only one domain a time • Test Driven • Value Driven • Change Driven • Adapter in BBoM • Port in Microservices
  • 39. © 2019, Domain Driven Design Taiwan Community Event handler
  • 40. © 2019, Domain Driven Design Taiwan Community Domain Events means … Un Cer tain ty the state of being uncertain.
  • 41. © 2019, Domain Driven Design Taiwan Community De duplicator Event 3 Event 1 Event 2 Event 1 Event 3 Event 2 Event 1 … Want In-Order, actually Uncertainty
  • 42. © 2019, Domain Driven Design Taiwan Community Uncomfortable It’s okay to feel this way. @VaughnVernon
  • 43. © 2019, Domain Driven Design Taiwan Community Dependencies
  • 44. © 2019, Domain Driven Design Taiwan Community Focus on Contract and Protocol • Service owner is consumer • Expose SDK means projection technical decisions to consumer • “Operation” complexity spread to consumer • Consumer should be able to use any language/technology and change over time! • AWS • API Gateway, Lambda Execution, any composable API call
  • 45. © 2019, Domain Driven Design Taiwan Community Some exceptions • Centralized Logging • Monitoring • Distributed tracing
  • 46. © 2019, Domain Driven Design Taiwan Community Principle
  • 47. © 2019, Domain Driven Design Taiwan Community Adopt Microservices?
  • 48. © 2019, Domain Driven Design Taiwan Community Business Wants https://vaughnvernon.co/tag/event-storming/
  • 49. © 2019, Domain Driven Design Taiwan Community But You Want https://vaughnvernon.co/tag/event-storming/
  • 50. © 2019, Domain Driven Design Taiwan Community Challenge on migration to Microserivces • Legacy looks like Big ball of mud(BBOM) • Heavy dependency with external system • No idea on split BBOM • No idea to find out system boundary • Which service(s) worth to do • Human resources allocation • Team, out sourcing, ISVs solution
  • 51. © 2019, Domain Driven Design Taiwan Community Business operation without whole picture The Blind Men and the Elephant Is It correct to all in microservices or serverless ?
  • 52. © 2019, Domain Driven Design Taiwan Community Precondition to do microservices Rapid Provisioning Basic monitoring Rapid application deployment Martin Fowler Realize the business flow, way to decompos
  • 53. © 2019, Domain Driven Design Taiwan Community Better way to decompose Monolith Domain Expert Matters
  • 54. © 2019, Domain Driven Design Taiwan Community Learn and respect Domain experts
  • 55. © 2019, Domain Driven Design Taiwan Community How DDD can help you • Business strategy on resource allocation • Best resources should be put in most key/core domain • Buy or out-sourcing common domain and sub domain • Service re-architecture • Form up the system context boundary • Knowing the upstream-downstream relationship between domains • Meaningful to do microservice (separate computing/persist, and API communication ) • Service Migration • Good to re-architecture
  • 56. © 2019, Domain Driven Design Taiwan Community Migration Business Case Know Why/What/How • Options to Optimize • Learn and speak same language with Domain expert • Capture key business events, if it matters • Adopt appropriate AWS services to implement Solution
  • 57. © 2019, Domain Driven Design Taiwan Community Sharpen your saw
  • 58. © 2019, Domain Driven Design Taiwan Community DDD stuff
  • 59. © 2019, Domain Driven Design Taiwan Community Event Storming
  • 60. © 2019, Domain Driven Design Taiwan Community Specification by Example
  • 61. © 2019, Domain Driven Design Taiwan Community Programming Skills level up • Test Driven Design • Behavior Driven Design • Refactoring • CI/CD
  • 62. © 2019, Domain Driven Design Taiwan Community Practice DDD Telegram : YikaiKao WeChat : YikaiKao Twitter : @DddTaiwan, @YikaiKao GitHub Repos
  • 63. © 2019, Domain Driven Design Taiwan Community Thank You!
  • 64. © 2019, Domain Driven Design Taiwan Community Let’s explore Event Storming