Drawing Boxes
Drawing Boxes
  • 10
  • 202 714
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/
Переглядів: 1 126

Відео

Events vs Commands: What's the difference?
Переглядів 3 тис.6 місяців тому
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
Переглядів 6 тис.7 місяців тому
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
Переглядів 6 тис.10 місяців тому
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
Переглядів 20 тис.Рік тому
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
Переглядів 14 тис.Рік тому
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
Переглядів 33 тис.Рік тому
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
Переглядів 38 тис.Рік тому
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
Переглядів 24 тис.Рік тому
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
Переглядів 57 тис.2 роки тому
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

КОМЕНТАРІ

  • @DuncanDarren-c4z
    @DuncanDarren-c4z 2 дні тому

    Marilou Mission

  • @LovieBiebel-c2v
    @LovieBiebel-c2v 3 дні тому

    Kiehn Villages

  • @GaleBradford
    @GaleBradford 3 дні тому

    7546 Hessel Walks

  • @royerguerrerop5982
    @royerguerrerop5982 11 днів тому

    We need more videos. the simplicity of your explanations is the glory

  • @tmanley1985
    @tmanley1985 12 днів тому

    This is fantastic. Great explanation. I've seen this explained elsewhere in a book I think and for the life of me can't remember which but this is an excellent summary.

  • @JustSomeObject
    @JustSomeObject 16 днів тому

    I was once in a project where I was forced to implement an architecture that is totally different to the team structure. it was a nightmare while the startup founder CTO lives in his ivory tower

  • @edgeeffect
    @edgeeffect 17 днів тому

    I've been binge watching all your videos. Great stuff, I already knew some of this stuff but these are still really really clear and concise descriptions and you've had a thing or two to teach me too. This one's my favourite though. I'm mad keen on spoken language too and all your talk of tenses and moods and persons ticks two of my boxes at once. :)

  • @edgeeffect
    @edgeeffect 17 днів тому

    Excellent! I've never really worked on any systems where Eventual Consistency is a thing... and I've, obviously, heard the term bandied about a lot... but never really known how it works.... until now! :)

  • @edgeeffect
    @edgeeffect 17 днів тому

    Cool... "Brian Foote and Joseph Yoder"... it's great to have a name (or, two names, in this case) to attach to the term "big ball of mud" :)

  • @IcaroAlvarez
    @IcaroAlvarez 27 днів тому

    Beauuutiful explanations! Thanks a lot

  • @SoroushOracle
    @SoroushOracle Місяць тому

    awesome

  • @SoroushOracle
    @SoroushOracle Місяць тому

    Very Good

  • @SoroushOracle
    @SoroushOracle Місяць тому

    Great

  • @jnjarun
    @jnjarun Місяць тому

    Best explanation with short videos. I really like it. Understood well about DDD.. Please post a video related AWS migration from off-premises to ON premises for legacy application ex: Java application

  • @alexanderaugust229
    @alexanderaugust229 Місяць тому

    great explanation! Thank you

  • @tbm8347
    @tbm8347 Місяць тому

    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 Місяць тому

    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 2 місяці тому

    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 Місяць тому

      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 2 місяці тому

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

  • @masickboi
    @masickboi 2 місяці тому

    ua-cam.com/users/shortsBZxSDkVcwhU?si=HkQ2Ly-GnzI66pnE

  • @SarcSaus
    @SarcSaus 2 місяці тому

    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 2 місяці тому

    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 Місяць тому

      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 2 місяці тому

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

  • @primavera919
    @primavera919 2 місяці тому

    Excellent video displayed in an animation, thanks a lot

  • @tmkhandl
    @tmkhandl 2 місяці тому

    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 2 місяці тому

    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 Місяць тому

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

  • @Zainjerr
    @Zainjerr 2 місяці тому

    You just earned a sub! Awesome explanation mate

  • @Zainjerr
    @Zainjerr 2 місяці тому

    Amazing video!! 👏

  • @1over137
    @1over137 2 місяці тому

    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 2 місяці тому

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

  • @CheDCanal
    @CheDCanal 3 місяці тому

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

  • @Mempler
    @Mempler 3 місяці тому

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

  • @saidk.6461
    @saidk.6461 3 місяці тому

    Great explanation, thank you!

  • @BaM6IIuP
    @BaM6IIuP 3 місяці тому

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

  • @johnxisde
    @johnxisde 3 місяці тому

    amazing video!

  • @gorgin_dev
    @gorgin_dev 3 місяці тому

    Thanks for your great content!

  • @jmbrjmbr2397
    @jmbrjmbr2397 4 місяці тому

    great video, thanks!

  • @alibabarahaei2229
    @alibabarahaei2229 4 місяці тому

    best

  • @alibabarahaei2229
    @alibabarahaei2229 4 місяці тому

    perfect♥

  • @semenivanoff8615
    @semenivanoff8615 4 місяці тому

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

    • @drawingboxes
      @drawingboxes 4 місяці тому

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

  • @semenivanoff8615
    @semenivanoff8615 4 місяці тому

    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 4 місяці тому

      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 4 місяці тому

    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 4 місяці тому

      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 4 місяці тому

    the ending is superb

  • @TheHawkeyede
    @TheHawkeyede 5 місяців тому

    exceptional well explained!

  • @thiensinh6872
    @thiensinh6872 5 місяців тому

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

    • @drawingboxes
      @drawingboxes 5 місяців тому

      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 5 місяців тому

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

  • @joseavilasg
    @joseavilasg 5 місяців тому

    I can't believe it. Best explanation ever.

  • @dartneer
    @dartneer 5 місяців тому

    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 5 місяців тому

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

  • @EljoPro
    @EljoPro 5 місяців тому

    insane explanation thanks alot

  • @KiddyCut
    @KiddyCut 5 місяців тому

    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 5 місяців тому

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