Domain-driven design with Golang use Golang to create simple, maintainable systems to solve complex business problems
Chapter 7: DDD for Distributed Systems -- Technical requirements -- What is a distributed system? -- CAP theorem and databases -- Distributed system patterns -- CQRS -- EDA -- Dealing with failure -- Two-phase commit (2PC) -- The saga pattern -- What is a message bus? -- Kafka -- RabbitMQ -- NATS --...
Otros Autores: | |
---|---|
Formato: | Libro electrónico |
Idioma: | Inglés |
Publicado: |
London, England :
Packt Publishing
[2022]
|
Edición: | 1st ed |
Materias: | |
Ver en Biblioteca Universitat Ramon Llull: | https://discovery.url.edu/permalink/34CSUC_URL/1im36ta/alma991009711814406719 |
Tabla de Contenidos:
- Cover
- Title Page
- Copyright and credits
- Contributors
- About the reviewers
- Table of Contents
- Preface
- Part 1: Introduction to Domain-Driven Design
- Chapter 1: A Brief History of Domain-Driven Design
- The world before DDD
- So, what are OOD patterns?
- Eric Evans and DDD
- Three pillars of DDD
- Adoption of DDD
- When should you use DDD?
- Summary
- Further reading
- Chapter 2: Understanding Domains, Ubiquitous Language, and Bounded Contexts
- Technical requirements
- Setting the scene
- Domains and sub-domains
- Ubiquitous language
- Benefits of ubiquitous language
- Bounded contexts
- Open Host Service
- Published language
- Anti-corruption layer
- Summary
- Further reading
- Chapter 3: Entities, Value Objects, and Aggregates
- Technical requirements
- Working with entities
- Generating good identifiers
- A warning when defining entities
- A note on object-relational mapping
- Working with value objects
- How should I decide whether to use an entity or value object?
- The aggregate pattern
- Discovering aggregates
- Designing aggregates
- Aggregates beyond a single bounded context
- Summary
- Further reading
- Chapter 4: Exploring Factories, Repositories, and Services
- Technical requirements
- Introducing the factory pattern
- Entity factories
- Implementing the repository pattern in Golang
- Understanding services
- Domain services
- Application services
- Summary
- Part 2: Real -World Domain-Driven Design with Golang
- Chapter 5: Applying Domain-Driven Design to a Monolithic Application
- Technical requirements
- What do we mean when we say monolithic application?
- Setting the scene
- Getting started with our CoffeeCo system
- Implementing our product repository
- Adding an infrastructure service for payment handling
- Paying with CoffeeBux.
- Adding store-specific discounts
- Extending our service
- Summary
- Further reading
- Chapter 6: Building a Microservice Using DDD
- Technical requirements
- A friendly warning (again)
- What do we mean by microservices?
- What are the benefits of microservices?
- What are the downsides of microservices?
- Should my company adopt microservices?
- Setting the scene (again)
- Building a recommendation system
- Revisiting the anti-corruption layer
- Exposing our service via an open host service
- Summary
- Chapter 7: DDD for Distributed Systems
- Technical requirements
- What is a distributed system?
- CAP theorem and databases
- Distributed system patterns
- CQRS
- EDA
- Dealing with failure
- Two-phase commit (2PC)
- The saga pattern
- What is a message bus?
- Kafka
- RabbitMQ
- NATS
- Summary
- Further reading
- Chapter 8: TDD, BDD, and DDD
- Technical requirements
- TDD
- Adding a test
- Run the test we just wrote - it should fail (and we should expect it to)
- Write as little code as possible to pass the test
- Refactoring
- BDD
- Summary
- Index
- Other Books You May Enjoy.