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

Refactoring, Emergent Design & Evolutionary Architecture
Refactoring, Emergent Design & Evolutionary ArchitectureRefactoring, Emergent Design & Evolutionary Architecture
Refactoring, Emergent Design & Evolutionary ArchitectureBrad Appleton
 
ドメイン駆動設計 分析しながら設計する
ドメイン駆動設計 分析しながら設計するドメイン駆動設計 分析しながら設計する
ドメイン駆動設計 分析しながら設計する増田 亨
 
[E-commerce & Retail Day] Amazon 혁신과 AWS Retail 사례
[E-commerce & Retail Day] Amazon 혁신과 AWS Retail 사례[E-commerce & Retail Day] Amazon 혁신과 AWS Retail 사례
[E-commerce & Retail Day] Amazon 혁신과 AWS Retail 사례Amazon Web Services Korea
 
오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...
오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...
오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...Amazon Web Services Korea
 
(DVO312) Sony: Building At-Scale Services with AWS Elastic Beanstalk
(DVO312) Sony: Building At-Scale Services with AWS Elastic Beanstalk(DVO312) Sony: Building At-Scale Services with AWS Elastic Beanstalk
(DVO312) Sony: Building At-Scale Services with AWS Elastic BeanstalkAmazon Web Services
 
ドメイン駆動設計 ( DDD ) をやってみよう
ドメイン駆動設計 ( DDD ) をやってみようドメイン駆動設計 ( DDD ) をやってみよう
ドメイン駆動設計 ( DDD ) をやってみよう増田 亨
 
4. 대용량 아키텍쳐 설계 패턴
4. 대용량 아키텍쳐 설계 패턴4. 대용량 아키텍쳐 설계 패턴
4. 대용량 아키텍쳐 설계 패턴Terry Cho
 
[오픈테크넷서밋2022] 국내 PaaS(Kubernetes) Best Practice 및 DevOps 환경 구축 사례.pdf
[오픈테크넷서밋2022] 국내 PaaS(Kubernetes) Best Practice 및 DevOps 환경 구축 사례.pdf[오픈테크넷서밋2022] 국내 PaaS(Kubernetes) Best Practice 및 DevOps 환경 구축 사례.pdf
[오픈테크넷서밋2022] 국내 PaaS(Kubernetes) Best Practice 및 DevOps 환경 구축 사례.pdfOpen Source Consulting
 
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2011
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2011徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2011
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2011Hiroshi Tokumaru
 
WHOIS教室 〜 JPOPM36 20190621
WHOIS教室 〜 JPOPM36 20190621WHOIS教室 〜 JPOPM36 20190621
WHOIS教室 〜 JPOPM36 20190621Akira Nakagawa
 
[225]yarn 기반의 deep learning application cluster 구축 김제민
[225]yarn 기반의 deep learning application cluster 구축 김제민[225]yarn 기반의 deep learning application cluster 구축 김제민
[225]yarn 기반의 deep learning application cluster 구축 김제민NAVER D2
 
現場で役立つシステム設計の原則
現場で役立つシステム設計の原則現場で役立つシステム設計の原則
現場で役立つシステム設計の原則増田 亨
 
ドメインロジックの実装方法とドメイン駆動設計
ドメインロジックの実装方法とドメイン駆動設計ドメインロジックの実装方法とドメイン駆動設計
ドメインロジックの実装方法とドメイン駆動設計Tadayoshi Sato
 
【JAWS DAYS 2016】ランサーズを支えるAurora
【JAWS DAYS 2016】ランサーズを支えるAurora【JAWS DAYS 2016】ランサーズを支えるAurora
【JAWS DAYS 2016】ランサーズを支えるAuroraYuki Kanazawa
 
금융 회사를 위한 클라우드 이용 가이드 – 신은수 AWS 솔루션즈 아키텍트, 김호영 AWS 정책협력 담당:: AWS Cloud Week ...
금융 회사를 위한 클라우드 이용 가이드 –  신은수 AWS 솔루션즈 아키텍트, 김호영 AWS 정책협력 담당:: AWS Cloud Week ...금융 회사를 위한 클라우드 이용 가이드 –  신은수 AWS 솔루션즈 아키텍트, 김호영 AWS 정책협력 담당:: AWS Cloud Week ...
금융 회사를 위한 클라우드 이용 가이드 – 신은수 AWS 솔루션즈 아키텍트, 김호영 AWS 정책협력 담당:: AWS Cloud Week ...Amazon Web Services Korea
 
TF에서 팀 빌딩까지 9개월의 기록 : 성장하는 조직을 만드는 여정
TF에서 팀 빌딩까지 9개월의 기록 : 성장하는 조직을 만드는 여정TF에서 팀 빌딩까지 9개월의 기록 : 성장하는 조직을 만드는 여정
TF에서 팀 빌딩까지 9개월의 기록 : 성장하는 조직을 만드는 여정Seongyun Byeon
 
Web ベースのカジュアルゲーム「block pong」の実装とビジネス
Web ベースのカジュアルゲーム「block pong」の実装とビジネスWeb ベースのカジュアルゲーム「block pong」の実装とビジネス
Web ベースのカジュアルゲーム「block pong」の実装とビジネスt-kihira
 
ドメイン駆動設計 の 実践 Part3 DDD
ドメイン駆動設計 の 実践 Part3 DDDドメイン駆動設計 の 実践 Part3 DDD
ドメイン駆動設計 の 実践 Part3 DDD増田 亨
 
MSA를 넘어 Function의 로의 진화::주경호 수석::AWS Summit Seoul 2018
MSA를 넘어 Function의 로의 진화::주경호 수석::AWS Summit Seoul 2018MSA를 넘어 Function의 로의 진화::주경호 수석::AWS Summit Seoul 2018
MSA를 넘어 Function의 로의 진화::주경호 수석::AWS Summit Seoul 2018Amazon Web Services Korea
 
まだ DOM 操作で消耗してるの?
まだ DOM 操作で消耗してるの?まだ DOM 操作で消耗してるの?
まだ DOM 操作で消耗してるの?Yuki Ishikawa
 

What's hot (20)

Refactoring, Emergent Design & Evolutionary Architecture
Refactoring, Emergent Design & Evolutionary ArchitectureRefactoring, Emergent Design & Evolutionary Architecture
Refactoring, Emergent Design & Evolutionary Architecture
 
ドメイン駆動設計 分析しながら設計する
ドメイン駆動設計 分析しながら設計するドメイン駆動設計 分析しながら設計する
ドメイン駆動設計 分析しながら設計する
 
[E-commerce & Retail Day] Amazon 혁신과 AWS Retail 사례
[E-commerce & Retail Day] Amazon 혁신과 AWS Retail 사례[E-commerce & Retail Day] Amazon 혁신과 AWS Retail 사례
[E-commerce & Retail Day] Amazon 혁신과 AWS Retail 사례
 
오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...
오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...
오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...
 
(DVO312) Sony: Building At-Scale Services with AWS Elastic Beanstalk
(DVO312) Sony: Building At-Scale Services with AWS Elastic Beanstalk(DVO312) Sony: Building At-Scale Services with AWS Elastic Beanstalk
(DVO312) Sony: Building At-Scale Services with AWS Elastic Beanstalk
 
ドメイン駆動設計 ( DDD ) をやってみよう
ドメイン駆動設計 ( DDD ) をやってみようドメイン駆動設計 ( DDD ) をやってみよう
ドメイン駆動設計 ( DDD ) をやってみよう
 
4. 대용량 아키텍쳐 설계 패턴
4. 대용량 아키텍쳐 설계 패턴4. 대용량 아키텍쳐 설계 패턴
4. 대용량 아키텍쳐 설계 패턴
 
[오픈테크넷서밋2022] 국내 PaaS(Kubernetes) Best Practice 및 DevOps 환경 구축 사례.pdf
[오픈테크넷서밋2022] 국내 PaaS(Kubernetes) Best Practice 및 DevOps 환경 구축 사례.pdf[오픈테크넷서밋2022] 국내 PaaS(Kubernetes) Best Practice 및 DevOps 환경 구축 사례.pdf
[오픈테크넷서밋2022] 국내 PaaS(Kubernetes) Best Practice 및 DevOps 환경 구축 사례.pdf
 
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2011
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2011徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2011
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2011
 
WHOIS教室 〜 JPOPM36 20190621
WHOIS教室 〜 JPOPM36 20190621WHOIS教室 〜 JPOPM36 20190621
WHOIS教室 〜 JPOPM36 20190621
 
[225]yarn 기반의 deep learning application cluster 구축 김제민
[225]yarn 기반의 deep learning application cluster 구축 김제민[225]yarn 기반의 deep learning application cluster 구축 김제민
[225]yarn 기반의 deep learning application cluster 구축 김제민
 
現場で役立つシステム設計の原則
現場で役立つシステム設計の原則現場で役立つシステム設計の原則
現場で役立つシステム設計の原則
 
ドメインロジックの実装方法とドメイン駆動設計
ドメインロジックの実装方法とドメイン駆動設計ドメインロジックの実装方法とドメイン駆動設計
ドメインロジックの実装方法とドメイン駆動設計
 
【JAWS DAYS 2016】ランサーズを支えるAurora
【JAWS DAYS 2016】ランサーズを支えるAurora【JAWS DAYS 2016】ランサーズを支えるAurora
【JAWS DAYS 2016】ランサーズを支えるAurora
 
금융 회사를 위한 클라우드 이용 가이드 – 신은수 AWS 솔루션즈 아키텍트, 김호영 AWS 정책협력 담당:: AWS Cloud Week ...
금융 회사를 위한 클라우드 이용 가이드 –  신은수 AWS 솔루션즈 아키텍트, 김호영 AWS 정책협력 담당:: AWS Cloud Week ...금융 회사를 위한 클라우드 이용 가이드 –  신은수 AWS 솔루션즈 아키텍트, 김호영 AWS 정책협력 담당:: AWS Cloud Week ...
금융 회사를 위한 클라우드 이용 가이드 – 신은수 AWS 솔루션즈 아키텍트, 김호영 AWS 정책협력 담당:: AWS Cloud Week ...
 
TF에서 팀 빌딩까지 9개월의 기록 : 성장하는 조직을 만드는 여정
TF에서 팀 빌딩까지 9개월의 기록 : 성장하는 조직을 만드는 여정TF에서 팀 빌딩까지 9개월의 기록 : 성장하는 조직을 만드는 여정
TF에서 팀 빌딩까지 9개월의 기록 : 성장하는 조직을 만드는 여정
 
Web ベースのカジュアルゲーム「block pong」の実装とビジネス
Web ベースのカジュアルゲーム「block pong」の実装とビジネスWeb ベースのカジュアルゲーム「block pong」の実装とビジネス
Web ベースのカジュアルゲーム「block pong」の実装とビジネス
 
ドメイン駆動設計 の 実践 Part3 DDD
ドメイン駆動設計 の 実践 Part3 DDDドメイン駆動設計 の 実践 Part3 DDD
ドメイン駆動設計 の 実践 Part3 DDD
 
MSA를 넘어 Function의 로의 진화::주경호 수석::AWS Summit Seoul 2018
MSA를 넘어 Function의 로의 진화::주경호 수석::AWS Summit Seoul 2018MSA를 넘어 Function의 로의 진화::주경호 수석::AWS Summit Seoul 2018
MSA를 넘어 Function의 로의 진화::주경호 수석::AWS Summit Seoul 2018
 
まだ DOM 操作で消耗してるの?
まだ DOM 操作で消耗してるの?まだ DOM 操作で消耗してるの?
まだ DOM 操作で消耗してるの?
 

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
 
2019 06-12-aws taipei summit-dev day-essential capabilities behind microservices
2019 06-12-aws taipei summit-dev day-essential capabilities behind microservices2019 06-12-aws taipei summit-dev day-essential capabilities behind microservices
2019 06-12-aws taipei summit-dev day-essential capabilities behind microservicesKim 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 (9)

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的豔遇
 
2019 06-12-aws taipei summit-dev day-essential capabilities behind microservices
2019 06-12-aws taipei summit-dev day-essential capabilities behind microservices2019 06-12-aws taipei summit-dev day-essential capabilities behind microservices
2019 06-12-aws taipei summit-dev day-essential capabilities behind microservices
 
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

Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 

Recently uploaded (20)

Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 

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