Is Domain-Driven Design Overrated? • Stefan Tilkov • GOTO 2021

  Рет қаралды 670,354

GOTO Conferences

GOTO Conferences

Күн бұрын

Пікірлер: 44
@GOTO-
@GOTO- 9 күн бұрын
Looking for books & other references mentioned in this video? Check out the video description for all the links! Want early access to videos & exclusive perks? Join our channel membership today: kzbin.info/door/s_tLP3AiwYKwdUHpltJPuAjoin Question for you: What’s your biggest takeaway from this video? Let us know in the comments! ⬇
@dfonnegrag
@dfonnegrag 10 ай бұрын
Without being an expert in software architecture, I think there is definitely a performance disadvantage between tactical DDD compared to a data-centric approach. However, many times performance issues can be solved horizontally scaling the system. And that's the goal of the tactical patterns of DDD and clean architecture methodologies. To group software pieces with higher cohesion that change for the same reasons and at the same rate. One might say, that horizontal scaling can increase considerably the costs of operation of systems, but Uncle Bob has a point there. Machines are cheap and humans are expensive. If you compare the costs of instances compared to the salaries of people, you'll see that it's better to have a system that has a high cost of operation but low cost of development, to a system with a high cost of development and a low cost of operation. In the long run, highly optimized systems have a higher development costs because they're written for machines and not for humans. I'm not DDD preacher, and there are clearly cases where DDD rules need to broken, but it's a great starting point to adhere to them and evolve with the software needs. As a last comment, I wouldn't recommend this video to people that's just starting in the world of software architecture because it might be misunderstood. DDD is by far one of the best software philosophies there is.
@selimsnotes
@selimsnotes Жыл бұрын
Engaging talk, here's my take-aways DDD emphasizes close collaboration among domain people, designers, UI/UX, business, product, and engineering. This collaboration enables a shared language and deeper understanding. The context is another key idea. The same word can mean different things depending on the team. So DDD emphasizes clear boundaries of meaning between sub-systems. A frequent pattern is defining the core layer of models and business logic, independent of any specific technology. And building the rest as replaceable layers around this core, like an onion. People call it hexagonal architecture or clean architecture. This is the model-driven way and useful in many cases but it's not the only way. Systems have different needs and usage patterns. For example, for a database-driven system, it might make sense to express this core layer with a relational database leveraging the strengths of the database system like relationships and constraints. In some other cases, it might make sense to drive design from UI experiments and user feedback. Another system might have a few core data types and many different operations on them, then a functional approach could be more expressive. The bottom line is that there is no one true way. A good idea is good in its context. Yet the core process is sound. When we listen well, collaborate, think deeply, and care about our work, the results are delightful.
@LukePuplett
@LukePuplett 3 жыл бұрын
Stefan always speaks ground truth. He reminds me of Allen Holub in that sense. There's a lot of talk about "architects" in the video and comments. An administrative empire that are "above writing code" is a red flag that should be picked up during interview. Most of our community's problems are rooted in inertia and the management of creative, collaborative, reactive and deeply intellectual work using ideas popularised in the 1900s. It's high time we let such companies die.
@DPGrupa
@DPGrupa 3 жыл бұрын
Where I come from, DDD stands for Davai Davai Deploy, which roughly translates as "Come on, deploy already!" Needles to say, it's not considered the best practice, despite it's ubiquity.
@dardanbekteshi3177
@dardanbekteshi3177 3 жыл бұрын
😂
@bpospanov
@bpospanov 2 ай бұрын
Thats perfect 😂
@mohamedhabas7391
@mohamedhabas7391 Жыл бұрын
Many thanks for this talk, it checked many boxes in my head :)
@kirilokun2426
@kirilokun2426 2 жыл бұрын
If you're working by yourself on a fairly small project then perhaps not abstracting your domain logic core from incidental complexity might work. But even then things change and the architecture needs to be decoupled and robust to support those changes. An RDBMS centric system mixes essential and incidental complexity and makes changes progressively more difficult. I'm working on just such a system right now and it's a nightmare. Clean architecture is about allowing friction-free changes by decoupling system components.
@miletacekovic
@miletacekovic 3 жыл бұрын
Everything you said is true, but it is also all in the book itself! In several places it says that tactical design patterns are how DDD would be implemented in the 'OO world', but in other worlds like Functional or Relational patterns would be different, of course. Regarding the 'UI world', its a bit different, as what you describe as UI being at the center of the attention is actually driving the model by the UI (most notably aggregate boundaries and service layer), which is completely and perfectly fine. Maybe you are just interacting with a lot of 'Ortodox DDD' practitioners 😁 that interpret the book as the Bible instead of, as in your wonderful analogy, just a kitchen receipt for the main meat course! If the dish is vegetarian, then we should use the Functional paradigm of course 😂
@antonmursid3505
@antonmursid3505 2 жыл бұрын
Antonmursid🙏🙏🙏🙏✌💝👌🇸🇬🇸🇬🇸🇬🇸🇬✌💝👌
@unkiwii0
@unkiwii0 3 жыл бұрын
Thank you for showing in a thoroughly manner something I'm advocating for so long: don't be dogmatic, take the theory and modify it to your needs to implement *your* version of DDD. Excellent presentation.
@convincible-u1y
@convincible-u1y 3 жыл бұрын
if Scala and Functional programming was mentioned, I click "Like" :-) Seriously, I think DDD became like Agile some time ago, i.e. lots of consultants promoting it as a viable methodology that one can't live without it, however you can. I agree that DDD is something we used for years without knowing it is DDD. I try to avoid DDD jargon to be not locked in one methodology.
@xetas2
@xetas2 3 жыл бұрын
> I try to avoid DDD jargon to be not locked in one methodology. That logic looks strange to me. "DDD jargon" gives you clear terminology for the certain concepts. Those word will be instantly understood by other people who are familiar with DDD, which makes communication more efficient. Why to forego the benefits?
@RicardoSilvaTripcall
@RicardoSilvaTripcall 3 жыл бұрын
@@xetas2 Lots of methodologies in the past had the same "feature" of trying to use the same "jargon" and most of them don't exist anymore, so, why DDD would be the savior at this time?
@shafaqatullah1046
@shafaqatullah1046 2 жыл бұрын
22 but not 34
@centerfield6339
@centerfield6339 2 жыл бұрын
@@RicardoSilvaTripcall why did SN15 land and previous iterations exploded? You're asking the wrong question.
@brandonpearman9218
@brandonpearman9218 3 жыл бұрын
Great talk. For me the problem is that many architects follow the common DDD patterns but ignore everything else. I find that many companies do Pattern Driven Design, where they mandate the patterns without caring what the problem space is. Some companies I have worked at force everyone to use specific "DDD" libraries and patterns, but nobody collaborates with business, there is no common understanding of the model and no shared language with domain experts. A context map is some drawing on the architects machine that nobody cares about. But they say they do DDD because they call their objects entities and value objects.
@sadafzahra1209
@sadafzahra1209 2 жыл бұрын
Mmmhhjjmip
@SilentTremor
@SilentTremor 2 жыл бұрын
I hope DDD is forgotten very soon, unfortunately DDD advocates never stay to see how unmaintainable system ends up to be or if they stay they don't admit it, Dieter Rams' 10 Principles of Good Design made me hate it from the moment I had to use it.
@badhombre4942
@badhombre4942 3 жыл бұрын
After decades doing software development, I concluded that Architects are the bane of the industry. It's the role to which the most incompetent developers aspire, to ensure the demise of projects. This presentation confirmed it. Design is overrated.
@tullius43
@tullius43 3 жыл бұрын
it's hard to hear you. The volume is low and the sound is kinda distorted
@rrr00bb1
@rrr00bb1 3 жыл бұрын
Relational work makes a lot of sense when you are dealing with highly mutable data; and imply strong consistency; if it is replicated at all. Document databases make more sense when you need to replay events that created the data, so that lots of independent processors can respond; when actually altering things happens much less than adding new things. In those cases, strongly consistent islands, merged together with eventual consistency makes more sense. (ie: A replication log, where events need to commute to converge on a consistent result to handle partitions between the strongly consistent islands, etc.).
@sikanderbhatti3259
@sikanderbhatti3259 2 жыл бұрын
Qqqqa l@llfyyy
@this-is-bioman
@this-is-bioman 6 ай бұрын
A context already means that it's bounded. Otherwise it wouldn't be a context. Saying bounded context is just stupidly confusing.
@LeviRamsey
@LeviRamsey 3 жыл бұрын
The most important thing to focus on and nail down, IMO/E, after figuring out what the bounded contexts are, is how state changes in a bounded context. For this, domain events are really useful, especially in a more behavior-driven approach where you're defining the state changes through the window of behavior. That leads to some incorporation of UI: spelling out that setting a widget's color to red means that afterwards the widget shows up as red in the UI (UI for this could just be HTTP API; the key thing is making it clear what information has to be included). If you have invariants that need to be enforced, then that leads to distinguishing commands and events and to needing a consistency boundary: the actor model is pretty useful here.
@fatimapinno4805
@fatimapinno4805 2 жыл бұрын
Lll
@ЛуарвикЛ.Луарвик
@ЛуарвикЛ.Луарвик 3 жыл бұрын
If DDD is overrated, then this whole talk is overtheoretized. I've been using DDD for more than 10 years, and now I can't see any alternative approach deserving my attention. Especially when it comes to the security of architecture.
@brandonpearman9218
@brandonpearman9218 3 жыл бұрын
"I can't see any alternative approach deserving my attention", Sounds to me like that is the problem. I like the agility that is suggested with DDD but in practice architects just mandate a set of patterns and forget about everything else that comes with DDD. So would you say that the DDD patterns are perfect for every situation? Would all software be better off if everyone only used that set of patterns and nothing else?
@snowy0110
@snowy0110 2 жыл бұрын
@@brandonpearman9218 Again, DDD is not only patterns, as it was mentioned in the talk and as it was mentioned in the comments here. Patterns are only one chapter of the book. The blue book sets priorities, makes emphasis on things that matter, shows clear examples why. It is a whole tool box, philosophy, not just patterns. Personally, I have never seen such level of deep understanding of breaking down complex systems anywhere else.
@brandonpearman9218
@brandonpearman9218 2 жыл бұрын
@@snowy0110 yeah thats why i said "in practice". Most if the time the focus is on the patterns and nothing else, i think because its something which is easy to mandate on the teams. But the power of DDD is not the patterns. I would rather use everything else except the patterns, than just the patterns(which is how most do DDD)
@snowy0110
@snowy0110 2 жыл бұрын
@@brandonpearman9218 Totally agree with you
@RodrigoNishino
@RodrigoNishino 3 жыл бұрын
this dudes's voice is LIT
@j.j.9538
@j.j.9538 3 жыл бұрын
amazing
@christophecalves4393
@christophecalves4393 3 жыл бұрын
Very good talk! I kept telling myself it applies to Design Patterns so much to.
@SlowPlayingMax
@SlowPlayingMax 3 жыл бұрын
It's exactly what I think of DDD, especially when database design is overlooked due to excessive focus on implementing DDD patterns
@BryonLape
@BryonLape 3 жыл бұрын
How old is old?
@enerjazzer
@enerjazzer 3 жыл бұрын
Isn't UX-driven exactly the hell we had in 90s with all those apps developed from Form1?
@orlovskyconsulting
@orlovskyconsulting 3 жыл бұрын
Haha, DDD is overrated what a wonder! My problem with DDD, somebody should maintain all domain definitions, which in real word really hard job and believe me nobody wants to do that.
@snowy0110
@snowy0110 3 жыл бұрын
That's just sad
@ahmadatif4960
@ahmadatif4960 2 жыл бұрын
T
@mishasawangwan6652
@mishasawangwan6652 3 жыл бұрын
buzzwords ftw ?
@masoomahmed2499
@masoomahmed2499 2 жыл бұрын
Red
Domain Driven Design with BDD
16:22
Continuous Delivery
Рет қаралды 33 М.
FOREVER BUNNY
00:14
Natan por Aí
Рет қаралды 31 МЛН
Twin Telepathy Challenge!
00:23
Stokes Twins
Рет қаралды 119 МЛН
Domain Driven Design: What You Need To Know
8:42
Alex Hyett
Рет қаралды 141 М.
How To Use Domain-Driven Design In Clean Architecture
30:27
Milan Jovanović
Рет қаралды 112 М.
Domain Driven Design and Python: David Seddon
24:52
PyCon UK
Рет қаралды 1,8 М.
"Good Enough" Architecture • Stefan Tilkov • GOTO 2019
41:41
GOTO Conferences
Рет қаралды 261 М.
Domain-Driven Design Made Me Realize Something About AI Tools
14:39
Modeling a Domain With Domain-Driven Design From Scratch | DDD
19:10
Milan Jovanović
Рет қаралды 92 М.