领域驱动的微服务架构设计工作坊实施步骤
我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。
Summary of EventStorming Relationships Among Various Reports
Acknowledgments
The article synthesizes content from a workshop taught by the author's colleagues at the Beijing office of ThoughtWorks and practices used by colleague Kang Jiangmei in business analysis. The contributions of Xiao Ran, Wang Wei, and Liu Shangqi from the workshop on "Domain-Driven Microservices Architecture Design" held on July 22, 2017, are acknowledged.
Purpose
The Domain-Driven Microservices Architecture Design workshop aims to quickly align software development teams on the value, user personas, key scenarios, and aggregates of new or legacy systems. This helps in identifying problem and solution domains, discovering API contracts between microservices, and accordingly splitting microservices and teams for product development or system refactoring. The approach also benefits teams not practicing microservices by guiding modular division.
Steps
Preparation
- Gather all stakeholders including analysts, developers, testers, and DBAs for the workshop and prepare materials like large paper, colored sticky notes, blue-tack, and markers.
Product Value
- Develop user personas with detailed attributes and identify core selling points of the product through an elevator pitch.
Key Scenarios
- Create user journey maps to recognize key scenarios related to core selling points and select the first key scenario to draw a process map.
Event Storming
- Identify log-worthy business events on the process map, take photos, arrange events chronologically, and associate commands, policies, and external systems with corresponding events.
Aggregates
- Place aggregates between events and commands, merge them under one aggregate root with a common lifecycle for maintaining business consistency, and name the aggregate root. Repeat for each key scenario until all aggregates are identified and merged.
Problem and Solution Domains
- Organize aggregate roots into subdomains according to business core selling points, identify core, supporting, and generic subdomains, and arrange them into bounded contexts that may represent microservices. Document relationships between bounded contexts and take photos.
API Contracts Between Microservices
- Reconstruct the process map with business events and identify external interfaces provided by bounded contexts for each event, then take photos.
User Stories and Acceptance Conditions Within Each Microservice
- Reconstruct events within aggregates from photos, split teams according to bounded contexts, and have each microservice team write user stories and acceptance conditions. Each team then identifies nouns and verbs within its bounded context and creates an entity relationship diagram to guide development or refactoring.
References
- Domain-Driven Design
- 《领域驱动设计》
- Domain-Driven Microservices Architecture Design Workshop
- Domain-Driven Design Distilled
- Introducing EventStorming
想要了解更多内容?
白皮书上线