Course of DDD in TypeScript: Communication Between Services and Applications

Fernando VilasRubén SaladoDani Santamaria

By Fernando Vilas, Rubén Salado y Dani Santamaria Software Design and Architecture

Communicate services and applications using Domain-Driven Design (DDD) and TypeScript, enabling software and teams to scale progressively.

💸 First lesson available without registration 💸

In this course of the DDD in TypeScript series, we focus on how to perform communication between services and applications, and we see the steps to evolve the system as the request volume and the domains and teams evolve.

Initially, we use an in-memory asynchronous Event Bus for communication, and later perform communication with a distributed Message Broker using RabbitMQ.

Along the way, we apply concepts from the Event Driven Architecture course, utilizing techniques of Parallel Change and Anti-Corruption Layers (ACLs), and we implement a search engine using MongoDB and ElasticSearch.

In this course, you will learn to:

  • ✨ Produce, publish, and consume domain events
  • 🫧 Communicate services with async Event Bus in memory
  • 🛰️ Communicate services in a distributed fashion with RabbitMQ
  • 🙅🏾‍♂️ Error management when publishing and consuming events
  • 🪞 Generate read models with projections
  • 🔀 Implement a Command Bus and Query Bus in TypeScript
  • 👯 Register new services progressively
  • 🔍 Create a search engine in MongoDB using Criterion Pattern
  • 🤘 Migrate the search engine to ElasticSearch

Course Content 👇

  1. 🛰️ [FREE] Communicate applications and services with TypeScript and DDD
    • ✉️ Communication with domain events in DDD applications
  2. 🫧 Communication between modules with asynchronous EventBus
    • 👇 Definition of domain events and subscribers
    • 🥳 Publication of domain events CourseCreated
    • 🤔 Subscription of events and acceptance testing
    • 🚷 Idempotence in consuming events
  3. 🐇 Communication between Bounded Context with RabbitMQ
    • 👽 Publish domain events in RabbitMQ
    • 🐰 Error management when publishing domain events
    • 🦉Help us improve
  4. ⚡ Consume Events from RabbitMQ
    • 🎱 Generate RabbitMQ configuration
    • 🌬 Consume events from RabbitMQ
    • 🙅🏾‍♂️ Error management when consuming: Retry and Dead Letter Queues
    • 👨‍🚒 Implement error management upon consumption
  5. 🔀 From Hexagonal Architecture to CQRS
    • 🥁 Implement Command Bus in TypeScript
    • ♻️ Refactoring: From Hexagonal Architecture to CQRS
    • ♻️… 🚌💨 Integration and refactoring to Query Bus
  6. ✨ Create a new Backoffice application
    • 🐣 Register a new application: Backoffice
    • 🐍 Create courses in the Backoffice using the Mooc context
    • 📚 Add the list of courses in the Backoffice Frontend
    • 🦉Help us improve
  7. 🪞 Add projections to the Backoffice with Parallel Change
    • 🧐 List of courses in the Backoffice using QueryBus
    • 🌅 Create projections in the Backoffice context
    • 🤘 Refactoring from QueryBus to projections
  8. 🔍 Course search engine in the Backoffice: From Mongo to ElasticSearch
    • 🪄 Course search engine with the Criteria/Specification Pattern
    • 👯 Parallel Change from Mongo to Elastic: Proxy Repository
    • ✅ Complete migration to Elastic
    • 🎙 Improve domain expressiveness: Specification Pattern and Ubiquitous Language
  9. 🔜 Conclusion and next steps
    • 👐 Alternatives for EventBus acceptance tests
    • 🦉 Conclusions and next steps

Videos of the course

Related courses

See full catalogue

Pay according to your needs

lite (only monthly)

19 €
per month
  • Access to a subset of courses to lay the foundation for maintainable, scalable, and testable code
  • Company invoice
Popular

standard

24,92 €
Save 121
Annual payment of 299
per month
  • Full course catalog
  • Design and architecture challenges
  • Highlighted solutions videos for challenges
  • Receive job offers verified by Codely
  • Company invoice

premium

41,58 €
Save 89
Annual payment of 499
per month
  • All previous benefits
  • Early access to new courses
  • More benefits coming soon

We won’t increase the price while your subscription is active