What is Software Architecture?

  Рет қаралды 18,531

CodeOpinion

CodeOpinion

Күн бұрын

Пікірлер: 36
@CodeOpinion
@CodeOpinion 2 жыл бұрын
Wanted to mention the video Aaron from Petabridge did on this topic. Check out his video: kzbin.info/www/bejne/kIbMppuVo5t7gck
@anthonylevine8783
@anthonylevine8783 2 жыл бұрын
I love both of these videos. Sometimes it's the really deep, technical discussions that have a huge impact on the way I think, and sometimes it's videos like this that simply offer a different want to think about building software that really change that way I approach things. Another really important idea that you've espoused is concept of "tradeoffs". Allowing myself to entertain ALL solutions (even those people on Twitter swear never to do) and "intentionally" choose what offers the best balance at the moment sounds simple, but can be really difficult when learning (and trying not to shoot yourself in the foot).
@CodeOpinion
@CodeOpinion 2 жыл бұрын
Ya I was aware I left that out. I plan on making a video explicitly talking about it with examples. But ultimately the tradeoff between option vs cost on laying the ground work for those options in the future.
@Eamo-21
@Eamo-21 2 жыл бұрын
Appreciate the high quality videos you put out. There's so much content for beginners but not so much for those with a few years experience.
@prod42
@prod42 2 жыл бұрын
CQRS is more as you describe here. It can be exactly what you are saying but I have found in context of manufacturing applications (This is what I learned over the last quarter of a century :) ) it can also mean and apply differently. In my effort what I have the last couple years, getting major monolith broken down in a SOA construct and in a construct where I do have a part of the software with high response requirements and a part where data needs to be available to many other services and business parts I see it this way: CQRS is a separation between C as "Command and Control" and Q as "Query in sense of reporting and analytics" ...therefor a want to keep the C part close to the production area. Probably OnPrem up to the edge at max. (all data that I need to produce or manufactore parts in seconds or minutes ...just in time (not realtime but ...almost :) ) and the Q part of data can be in different formats find there way in some kind of query optimized db, data lakes of whatever you call it. Available for everyone and everything decoupled from the real manufacturing process.
@branislavpetrovic7486
@branislavpetrovic7486 2 жыл бұрын
A great simple explanation of software architecture that I totally agree with! Thanks!
@CodeOpinion
@CodeOpinion 2 жыл бұрын
Great to hear!
@SlackoJacko
@SlackoJacko 2 жыл бұрын
Just a thought on the CQRS portion of this video, have you had a look at Marten or similar library? Not always the 'right' choice It could act as a great demonstration of how simple event sourcing could be when you don't over complicate things.
@CodeOpinion
@CodeOpinion 2 жыл бұрын
Yes, I'm aware of it. I haven't used it for anything significant but I'll see if I can get it into a video.
@bzmind_
@bzmind_ 2 жыл бұрын
This channel is basically a gem.
@CodeOpinion
@CodeOpinion 2 жыл бұрын
Thanks!
@DiogoBaeder
@DiogoBaeder Жыл бұрын
I tend to use the term "systems architecture" when I'm on a system level (components, integrations, services etc), and "software architecture" when I'm at the software level (clean architecture, layers, SOLID etc). What's your opinion on this?
@CodeOpinion
@CodeOpinion Жыл бұрын
Ya, I can see that. I tend to avoid the term "distributed system" when talking about an application because I think most tend to view it in the sense of a distributed infrastructure, eg database.
@matt-g-recovers
@matt-g-recovers Жыл бұрын
This is all well and good. I like what your saying but I'm having a hard time putting that to a practical use of something I've interacted with in the past. If I were to rebuild that system, for example, could you show some examples?
@bunnihilator
@bunnihilator 2 жыл бұрын
In a monolith, using one database, if i start isolating/decoupling by module/bounded context (isolating repository interface to its corresponding module) would i lose entity relationship to some extent in the database and risk database integrity? Or should i share repository interface between modules so each can set its relationship to keep db integrity? Or should each module hide it's repo interface and expose only service interface for retrieving some entity for the other module that needs it? How important is database integrity in a modular monolith?
@CodeOpinion
@CodeOpinion 2 жыл бұрын
You can keep constraints with the knowledge that you know everything is on the same physical database. I don't actually run into this problem with integrity even without constraints
@thedacian123
@thedacian123 2 жыл бұрын
CQRS handlers stay at application service layer,the don't have to contain domain logic.Does not they?Thnks!
@CodeOpinion
@CodeOpinion 2 жыл бұрын
Depends. Often times they can delegate to domain objects or if not complex can be simply viewed as transaction scripts and work with data models and persistence.
@Isitar09
@Isitar09 2 жыл бұрын
@@CodeOpinion do I apply it correctly? the cqrs handler queries the db/repo to construct the domain models and call the methods/services (domain layer) and then saves the changes back to the db.
@ricardo190988
@ricardo190988 2 жыл бұрын
Nice video, simple and concise.
@stochastic84
@stochastic84 2 жыл бұрын
I'm not convinced that using message passing instead of a function call automatically buys you "lower coupling". Maybe at best it's a form of "hidden coupling" since it's now harder to trace.
@CodeOpinion
@CodeOpinion 2 жыл бұрын
Passing messages via a durable message broker removes temporal coupling. Sender and Receiver don't need to be online/available at the same time. Publish/Subscribe patterns allows the publisher to be decoupled from the consumers. Publisher is totally unaware of who is subscribing or what they are doing with the event. Is it harder to visualize (or trace) calls between messages, it can be without distributed tracing.
@kormuss
@kormuss Жыл бұрын
Don't think that monolith has to have tight coupling. Perhaps its more tempting to introduce coupling.
@CodeOpinion
@CodeOpinion Жыл бұрын
It doesn't. I talk about this in a couple videos, this being one: kzbin.info/www/bejne/jHi2mad9ipibhcU
@azzurithewise2499
@azzurithewise2499 2 жыл бұрын
When is CQRS/Mediatr overkill?
@valentin51151
@valentin51151 2 жыл бұрын
Amazing explanation! Keep it up!
@CodeOpinion
@CodeOpinion 2 жыл бұрын
Thanks 👍
@malekalhourani5930
@malekalhourani5930 2 жыл бұрын
So, is Messaging a Silver Bullet that solve all distributed systems issues?
@CodeOpinion
@CodeOpinion 2 жыл бұрын
Of course not. It's a way to communicate between logical boundaries to prevent tight coupling. It gives you options for dealing with availability, failures, resilience, etc.
@ruekkart
@ruekkart 2 жыл бұрын
@@CodeOpinion What other solution could help to prevent tight coupling?
@jamerach
@jamerach 2 жыл бұрын
@@ruekkart Messaging is very versatile solution in general and applicable nearly everywhere. However it does bring complexity initially, especially if developers are unfamiliar with it (like Derek mentioned). Other options do exist but potentially are equally difficult in different areas. For example microservices resolve a lot of those issues if implemented correctly. Fault tolerance in this case, with services that rely on chain of calls with either HTTP or RPC is something to resolve separately, and there are more cases. I do agree with Derek that design of bounded context is very important either way, since communication between service is something that can be worked on, though it is better to decide on it from the start due to later complexity. TLDR: I don't think that any architecture in itself resolves decoupling out of the box. It is the design of the system that does that. Though some approaches make it easier to fit :)
@krccmsitp2884
@krccmsitp2884 2 жыл бұрын
There are never any silver bullets, no matter what the topic.
@oeaoo
@oeaoo 2 жыл бұрын
It's a good enough bullet I'd say. Whatever it means for you.
@shahrazkl
@shahrazkl 2 жыл бұрын
well explained!
@CodeOpinion
@CodeOpinion 2 жыл бұрын
Thanks!
@vijayjayaram606
@vijayjayaram606 2 жыл бұрын
👌
Why is Clean Architecture so Popular?
11:52
CodeOpinion
Рет қаралды 50 М.
Shared Database between Services? Maybe!
13:51
CodeOpinion
Рет қаралды 25 М.
Леон киллер и Оля Полякова 😹
00:42
Канал Смеха
Рет қаралды 4,7 МЛН
We Attempted The Impossible 😱
00:54
Topper Guild
Рет қаралды 56 МЛН
How to treat Acne💉
00:31
ISSEI / いっせい
Рет қаралды 108 МЛН
What is Event Driven Architecture (EDA)?
12:10
IBM Technology
Рет қаралды 189 М.
What Software Architects Do That Programmers DON'T
12:51
Thriving Technologist
Рет қаралды 133 М.
10 Years of Software Architecture: Best And Worst Decisions
15:09
SOLID Principles? Nope, just Coupling and Cohesion
13:56
CodeOpinion
Рет қаралды 34 М.
Minimum Viable Architecture • Randy Shoup • YOW! 2022
47:40
GOTO Conferences
Рет қаралды 58 М.
Which Software Architecture should you pick?
8:57
CodeOpinion
Рет қаралды 14 М.
Леон киллер и Оля Полякова 😹
00:42
Канал Смеха
Рет қаралды 4,7 МЛН