Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Why DDD Matters Today

Why DDD Matters Today

This was my keynote at KanDDDinsky 2017.

It's an interesting entry point behind the dynamics of Domain-Driven Design, during the rise of Microservices.

Alberto Brandolini

October 20, 2017
Tweet

More Decks by Alberto Brandolini

Other Decks in Technology

Transcript

  1. “It's a basic truth of the human condition that everybody

    lies. The only variable is about what.” Dr. Gregory House
  2. Strategies for non-core Traditional On-Time / On-Budget Pseudo-Agile thing Follow

    the backlog Avoid Taking unnecessary risks No time for “gold plating”
  3. 2) Keep the implementation as close as possible to our

    understanding #protip this is what Ubiquitous Language is all about
  4. “Every piece of knowledge must have a single, unambiguous, authoritative

    representation, within a system” Andy Hunt & Dave Thomas The DRY principle
  5. “Every piece of knowledge must have a single, unambiguous, authoritative

    representation, within a system” Andy Hunt & Dave Thomas The DRY principle
  6. Modelling Data-First Focus on nouns Expand the scope in order

    to accomodate new concepts … … Leave the company cursing the Legacy
  7. Nouns won’t help Everybody agrees what an order is? Of

    course we do! An order is an order! And has a customer too! Agreed!
  8. Perfect recipe: Talk with many people Model Data-First (everybody agrees

    on nouns) Add some “Dogmatic DRY principle” Repeat
  9. The Big Ball of Mud I swear it was a

    monolith last time I checked!!!
  10. … only to discover that they’re tangled with dependencies!! I

    spend most of my time rescuing teams that went micro services over a monolith…
  11. Bounded Context Is a LANGUAGE boundary. Defines a consistent MODEL

    around a specific PURPOSE #PROTIP: “Managing” is not a purpose
  12. … Still I have no Idea what a Bounded Context

    is I have no Idea what a micro service is, but I am pretty sure it’s a bounded Context But I am using Docker!
  13. … just being exilicit More microservices within a bounded context

    Just don’t call it “micro*” anymore.
  14. Thin red line • Start a project with a data

    first approach • Add misunderstood DRY PRINCIPLE • Lack of control requires protection & specialisation • few people become key, others retire or get minionized Business grows on top of old code • SAFETY is gone. Without it, no experiments are possible. • More responsibilities: less time to change it, harder to make the call • Hard to recruit seniors to finish the job
  15. Thin red line • Postpone evolutions of critical software •

    prevent the organisation from getting new feedback • -> how long are your iterations? • Suddenly realise that the organisation is dumbed down and blames IT for everything