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 --...

Descripción completa

Detalles Bibliográficos
Otros Autores: Boyle, Matthew, author (author)
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.