Building that glorious monolith. And carving it too. - Glenn F. Henriksen - NDC Porto 2023

"Discover the benefits of building and maintaining monolithic applications, exploring topics such as communication, complexity management and scalability in a single, cohesive system."

Key takeaways
  • Microservices are not always a solution to all problems, and building monoliths can be beneficial.
  • A monolith can be a good solution when working with small to medium-sized features, and separate domains.
  • A monolith can be easier to manage and reason about than microservices, especially for smaller applications.
  • Domain events can be used to communicate between features in a monolith.
  • The outbox pattern can be used to handle events in a monolith.
  • Distributed applications can be complex and hard to maintain.
  • A single monolith can be a starting point, even for larger applications.
  • Domain-driven design can be beneficial for understanding the complexity of a system.
  • Changes to the public API can be a major challenge in a distributed application.
  • A mediator can be used to handle queries and commands in a monolithic application.
  • Abstractions and layers can help to manage complexity in a monolithic application.
  • Local events can be used to communicate within a feature in a monolith.
  • Vault user objects can be used to manage user data in a monolithic application.
  • Entity frameworks can be used to generate code for a monolithic application.
  • Supporting multiple languages and font requirements can be complex in a monolithic application.
  • A centralized event store can be used to handle events in a distributed application.
  • Communication between features in a monolith can be handled using events and integrations.
  • Separate contexts can be used to handle different domains in a monolith.
  • Data duplication can be a challenge in a distributed application.