Drawing Boxes
Drawing Boxes
  • 10
  • 184 440
Agile Manifesto: What Agile development is really about
The original Agile Manifesto lays out 4 simple values:
0:00 Intro
0:30 Responding to change over following a plan
2:02 Customer collaboration over contract negotiation
3:23 Working software over comprehensive documentation
4:38 Individuals and interactions over processes and tools
5:25 Conway's Law
agilemanifesto.org/
zhlédnutí: 919

Video

Events vs Commands: What's the difference?
zhlédnutí 2,4KPřed 5 měsíci
Message bus communication often uses Commands and Events. But, what's the difference between them? Aren't they both just messages? The difference is about grammar, intention, and also the direction of some different kinds of arrows... 0:00 Intro 0:18 What do the words mean? 0:34 When do they happen? 1:36 Who are they for? 2:53 Direction of control and dependency 4:19 Example third party provide...
Outbox Pattern: Fixing event failures in an event-driven architecture
zhlédnutí 4,7KPřed 6 měsíci
The Transactional Outbox Pattern ensures a message is always published to a message broker when making changes to a database, even if the message broker fails initially. This is essential for event-driven architecture to ensure consistency when other services are rebuilding state from your events. 0:00 Network failures 0:54 Atomic Transactions 2:00 Publishing the event 2:52 At-Least Once delive...
Conway’s Law: Why your architecture looks like your team structure
zhlédnutí 4,9KPřed 8 měsíci
The communication structures in your organisation influence your software architecture. We explore some examples of this and explain how it relates to Domain-Driven Design (DDD) and Microservices. 0:00 Definition 0:31 Layered teams example 2:04 Lifecycle teams example 3:07 Cross-functional teams & DDD 4:22 Inverse Conway Manoeuvre Conway's Law: www.melconway.com/Home/Conways_Law.html Inverse Ma...
Event Sourcing Explained
zhlédnutí 18KPřed rokem
What is Event Sourcing? Is it anything to do with CQRS and DDD? We explain the pros and cons compared to traditionally updating the current state in a database. We cover trade-offs with Eventual Consistency, problems with concurrency, and options to solve those with optimistic concurrency techniques. 0:00 Intro 0:40 Deleting 0:57 Analytics & Metrics 1:23 Concurrency 2:24 Calculating State 3:26 ...
Microservices vs Monolithic Architecture
zhlédnutí 13KPřed rokem
Microservices, a Modular Monolith, or a Big Ball of Mud. This video explains the pros and cons of choosing a distributed system over one big monolith (whether that's a nicely structured Modular Monolith, or just a jumble of spaghetti code). 00:00 Definition of Microservices 00:14 Monoliths 00:35 Big Ball of Mud 00:52 Modules 01:30 Microservices 02:17 Network Communication 02:59 Distributed Ball...
DDD Bounded Contexts & Subdomains
zhlédnutí 31KPřed rokem
Bounded Contexts, subdomains and strategic design from Domain-Driven Design explained. 0:00 Complex Systems 0:26 Ambiguous Language 1:26 Separating Contexts 2:06 Context Map 2:22 Types of Subdomains 3:11 Integrating Between Contexts
DDD Building Blocks
zhlédnutí 34KPřed rokem
Explaining Aggregate Roots, Domain Events, Entities, Value Objects and Repositories - the building blocks in Domain-Driven Design. 0:00 Building Blocks 0:18 Ubiquitous Language 0:54 Value Objects 1:41 Entities 2:22 Domain Events 2:51 Aggregates 3:39 Repositories
CQS and CQRS: Command Query Responsibility Segregation
zhlédnutí 22KPřed rokem
The CQS and CQRS design principles explained. 00:00 CQS: Command Query Separation 01:29 CQRS: Command Query Responsibility Segregation 2:10 Separating reads and writes 2:37 Scaling independently
Hexagonal, Onion & Clean Architecture
zhlédnutí 54KPřed 2 lety
Three similar software architectures explained. 00:00 N-Tier Inversion 01:04 Hexagonal Architecture 01:50 Onion Architecture 02:58 Clean Architecture Hexagonal Architecture - alistair.cockburn.us/hexagonal-architecture/ Onion Architecture - jeffreypalermo.com/2008/07/the-onion-architecture-part-1/ Clean Architecture - blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html

Komentáře

  • @tbm8347
    @tbm8347 Před dnem

    Your Videos containing explanations in few minutes what workshops trying to say in hours. Thank you very much! Keep up! I will share it within my Team :)😊

  • @tamasszebenyi5942
    @tamasszebenyi5942 Před 3 dny

    Up! I appreciate videos like these because Agile has been abused by quickly trained Agile coaches with no real knowledge of IT. They are enforcing practices they don't understand, making teams miserable and ineffective, eventually making people completely turn away from Agile I'm not a fan of the whole commercialised thing, but it's clear that the core values make sense

  • @Dalamain
    @Dalamain Před 11 dny

    Love your explanation thank you - I'm still on the fence about this paradigm. Again it feels like it was put together by some journeymen devs who were bored and felt they needed to invent something nobody asked for and probably another layer of bloat in microservice hell architecture. We developers often cite how complicated web development has become and its because of things like this.

    • @drawingboxes
      @drawingboxes Před 2 dny

      Thanks! Glad you like it. I think in some cases you could argue that CRUD adds a layer of bloat to things that naturally have separate read and write models. But yes, using CQRS where it is not a good fit just unnecessarily complicates things

  • @danyboomz
    @danyboomz Před 12 dny

    Please take a look at spring modulith, it implements all the concepts you described in all your videos !

  • @masickboi
    @masickboi Před 14 dny

    czcams.com/users/shortsBZxSDkVcwhU?si=HkQ2Ly-GnzI66pnE

  • @SarcSaus
    @SarcSaus Před 18 dny

    For our new system I actually implemented an event-sourced system backed by SQL using efcore; it's typed, uses automatic JSON versioning and upgrade-on-read, as well as a strongly-consistent projections system where the projection state goes in the same transaction as the event append. Performance has actually been pretty great, and the way it makes rearranging the read model as requirements change has been absolutely amazing, I don't think I'd want to go back to a regular ORM.

  • @SweetTorment72
    @SweetTorment72 Před 18 dny

    Isn't Value Object a bit of an oxymoron, since objects usually have identity in OO? My brain wants to call them Value Types. They behave more like value types such as int and enum, and I also think they are easier to implement as structs rather than classes in C#.

    • @agostiik5712
      @agostiik5712 Před 3 dny

      One reason to call them value OBJECT instead of TYPE, is that it is like an attribute of an entity. These attributes can also be simple or complex (=> object) but the important thing as the video also says is that it has to be immutable. For sure, simple attributes could be handled in structs or enums but the more complex it gets, the easier it is to implement it in a class. And in OO an object can literally be anything, either simple or complex. It is not a usual thing to have id in an object, thats more like an entity.

  • @HungLe-jp6ct
    @HungLe-jp6ct Před 21 dnem

    I can't believe how clearly this video explains everything. It's the best comprehensive explanation I've had in a while.

  • @primavera919
    @primavera919 Před 26 dny

    Excellent video displayed in an animation, thanks a lot

  • @tmkhandl
    @tmkhandl Před 27 dny

    Its most underrated channel. Thanks for good explanation. I request you one think please avoid music. Your explanation is very important cor viewers.

  • @AttilaOlbrich
    @AttilaOlbrich Před 29 dny

    I really like your videos, they explain everything clearly, though I have a little bit of a different opinion here regarding monolith. Yes it is frequently become a "spaghetti jungle" what I'v seen in many companies I worked for, but I think there are use cases where the monolith application is the preferable choice considering the expected scalability, deployment and cost. The business scenario and so on. It this case a monolith application should be built in a clear and modular way following best practices, separation of concerns, business logic, therefore it will be easy to maintain, and the code in a properly structured monolith can be easy to follow, modify. If it is done in a proper modular way, there is a way to split it up later in that unlikely scenario that it has to be ported to a micro-service architecture. I am saying "unlikely" because before making the decision of the right architecture I assume it was assessed properly which solution fits the business case.

    • @drawingboxes
      @drawingboxes Před 2 dny

      Yup, spot on! There are always trade-offs to consider. Sometimes a modular monolith is exactly the way to go

  • @Zainjerr
    @Zainjerr Před měsícem

    You just earned a sub! Awesome explanation mate

  • @Zainjerr
    @Zainjerr Před měsícem

    Amazing video!! 👏

  • @1over137
    @1over137 Před měsícem

    This is fine for atomic streams of operations that don't conflict received in order. Like 80% of website style transaction. However it does NOT scale horizontally. It provides, no, it refuses basic concurrency monitor controls and basics like "Test and set". Splitting a "Dequeue" operation into 2 concurrent/ordered operations leaves you wide open to race conditions, dead locks and I cannot see how this scales horizontally to accomodate increasing loads.

  • @miguelacuna7148
    @miguelacuna7148 Před měsícem

    You deserve a lot more views and subscribers. Love how clear you explain things.

  • @CheDCanal
    @CheDCanal Před měsícem

    I have never faced the "hexagonal architecture" wording in my 11-years career

  • @Mempler
    @Mempler Před měsícem

    This is also somewhat i figured. Thanks for clarifying everything 👌

  • @saidk.6461
    @saidk.6461 Před měsícem

    Great explanation, thank you!

  • @BaM6IIuP
    @BaM6IIuP Před 2 měsíci

    an undervalued video with amazing explanation of so sophisticated topic. мое почтение

  • @johnxisde
    @johnxisde Před 2 měsíci

    amazing video!

  • @gorgin_dev
    @gorgin_dev Před 2 měsíci

    Thanks for your great content!

  • @jmbrjmbr2397
    @jmbrjmbr2397 Před 2 měsíci

    great video, thanks!

  • @alibabarahaei2229
    @alibabarahaei2229 Před 2 měsíci

    best

  • @alibabarahaei2229
    @alibabarahaei2229 Před 2 měsíci

    perfect♥

  • @semenivanoff8615
    @semenivanoff8615 Před 2 měsíci

    Well, not quite. Teams do not decide on cross domain integration and interactions. Architects do.

    • @drawingboxes
      @drawingboxes Před 2 měsíci

      Architects themselves are part of the communication structures too, and what they build/create (frameworks, documentation, etc) is part of the system

  • @semenivanoff8615
    @semenivanoff8615 Před 2 měsíci

    Ok, this has its cons. It is twice slower, because we need to do two additional DB operations which are slow. Second, don't deleta data from status table. Mark it as processed instead. This will keep tracking and reduce the possibility of double send.

    • @drawingboxes
      @drawingboxes Před 2 měsíci

      Yup - there are always trade-offs! If performance is more important than guaranteeing message delivery in your system then you can just do both in parallel and accept that there could be inconsistencies. I like the idea of marking as processed instead hard deleting from the outbox. Trade-off there is with storage space. Maybe a retention period can hard delete them after a few days/months

  • @botyironcastle
    @botyironcastle Před 2 měsíci

    what if you have huge data like 100000000comments in Post object. I don't think you can init a domain object with that much... looks useless to me when dealing with large chunks of data. Thoughts?

    • @drawingboxes
      @drawingboxes Před 2 měsíci

      That's a great example. There's a bit of an art to defining the aggregate boundary, and I think yes you want to try keep them smaller than that. Does your domain need the full comments list to be consistent? If two users load the page, then both leave a comment, should the second comment fail with some concurrency error? Or just allow both comments? Perhaps the boundary is around the comment, not the post. But if you do, your implementation doesn't have to load every comment into memory to know if something has changed. Checking a LastCommentDate or LastUpdateDate could also work.

  • @justarandomname
    @justarandomname Před 2 měsíci

    the ending is superb

  • @TheHawkeyede
    @TheHawkeyede Před 3 měsíci

    exceptional well explained!

  • @thiensinh6872
    @thiensinh6872 Před 3 měsíci

    What toolset are you using to create these great videos? I supposed PowerPoint is one of them.

    • @drawingboxes
      @drawingboxes Před 3 měsíci

      Exactly - export slides as video, record my voice and make background music in Ableton, then retime the video to the audio with DaVinci Resolve

  • @almeanawy
    @almeanawy Před 3 měsíci

    رائع .... حقيقي رائع !

  • @joseavilasg
    @joseavilasg Před 3 měsíci

    I can't believe it. Best explanation ever.

  • @dartneer
    @dartneer Před 3 měsíci

    This content for free? You are a blessing to humanity, mate. It has really removed many grey areas to my understanding of the topic. Thank you!

    • @drawingboxes
      @drawingboxes Před 3 měsíci

      Yup! There's Patreon for those who want to donate, but otherwise, free! You're very welcome - glad I can help

  • @EljoPro
    @EljoPro Před 3 měsíci

    insane explanation thanks alot

  • @KiddyCut
    @KiddyCut Před 3 měsíci

    At first glance I was thinking "Oh, drawing boxes is branching out from the technical videos of software engineering" The more I work in enterprise software development, the more I realize how important it is to also understand how you can work as knowledge worker in a team and how to communicate and plan even outside of it, so this video feels very much connected to the other content on this channel. Thank you!

    • @drawingboxes
      @drawingboxes Před 3 měsíci

      Exactly! It's a bit different from my other videos, sure, but this kind of stuff is just as important. You're very welcome!

  • @rini4808
    @rini4808 Před 3 měsíci

    holy shit thats what a clear explanation is!

  • @vitorsantana2795
    @vitorsantana2795 Před 4 měsíci

    What an absolutely fantastic material!! Thanks a lot for this :)

  • @hammadiazaiez9337
    @hammadiazaiez9337 Před 4 měsíci

    honestly, your are very underrated :/ Your are helping me alot with these videos! Thanks !

  • @asierpaz4866
    @asierpaz4866 Před 4 měsíci

    It is very well explained, but I'm missing domain services. Quoting Evans: "Sometimes, it just isn’t a thing.".

    • @drawingboxes
      @drawingboxes Před 2 měsíci

      Thanks! Aaaah yes - I'll add that to my list of potential future videos :)

  • @ericveltman5624
    @ericveltman5624 Před 4 měsíci

    Excellent explanation! Visual, concise but still explaining all the important matters.

  • @Kubkochan
    @Kubkochan Před 4 měsíci

    that last slide is confusing. how is callback related to ES?

    • @drawingboxes
      @drawingboxes Před 4 měsíci

      Those bits are unrelated. The link to ES is really just for those that might be learning about "events" in software engineering more generally, that's all. Apologies for the confusion!

  • @devtomek7246
    @devtomek7246 Před 4 měsíci

    Why does this channel only have less than 5k subscribers? Should be at least 100k... 🔺

  • @hatiko8227
    @hatiko8227 Před 5 měsíci

    Need video for Unit of Work pls

  • @JedaiasRodrigues7
    @JedaiasRodrigues7 Před 5 měsíci

    I'm happy to be learning English and being able to enjoy incredible content like this! Thank you very much for sharing your knowledge, you have many skills! Congratulations on your genius. For the good of humanity, please continue.

    • @marcelusmeridius
      @marcelusmeridius Před 2 měsíci

      Sabia que era BR. Caraca, impressionante a explicação sobre as arquiteturas.

  • @AK-vx4dy
    @AK-vx4dy Před 5 měsíci

    Crisp and clear, leaving no doubts or unanswered ifs. Great job. Draw us more boxes.

  • @tamasszebenyi5942
    @tamasszebenyi5942 Před 5 měsíci

    Nice!

  • @danial_hamedi
    @danial_hamedi Před 5 měsíci

    thanks man, you are awesome!

  • @sillycoder9690
    @sillycoder9690 Před 5 měsíci

    you are awesome and so are your videos !!!

  • @KhoaLe-wn5wb
    @KhoaLe-wn5wb Před 5 měsíci

    Waiting for so long😊

    • @drawingboxes
      @drawingboxes Před 5 měsíci

      Hehe, thanks for waiting! A lot of time goes into these videos - hopefully I'll get faster one day

  • @Pentatonic_Hardcore
    @Pentatonic_Hardcore Před 5 měsíci

    very difficult to understand, still can't get the point