Lesson 190 - Logical vs Physical Architecture
ฝัง
- เผยแพร่เมื่อ 11 ก.ย. 2024
- In Lesson 177 I talked about logical architecture components and how they relate to the structure of the source code within a system. In this lesson I take a higher-level approach, describing how a logical architecture differs from a physical architecture, and why a logical architecture is important.
Logical Components: www.developert...
Software Architecture Monday: bit.ly/3dadEe3
Head First Software Architecture: amzn.to/3VNFI0o
Fundamentals of Software Architecture: amzn.to/3rgFLjY
Software Architecture: The Hard Parts: amzn.to/3BjMMF2
Thank you for the lesson, Mr.Richards 👍
Glad you enjoyed it!
Lesson 177 is here - th-cam.com/video/2GIYtcxXDqY/w-d-xo.html
I'm really grateful for these lessons sir thank you ✨️
Glad you are finding them useful!
Excellent video, thank you. I learn a lot from your books AND your videos.
Can you please provide some tips on how to connect logical and physical architecture together, effectively and clearly? The way you pinpointed (8:52) can easily get convoluted,messy and inconceivable as the number of compoents increase.
Also, how different deployment models are shown / expressed in logical architecture?
Sure! What I usually do is indicate what logical components exist within the separate deployment units (services). For example, a "Payment" service (physical) would show the components included in it (such as "Credit Card", "Gift card", and so on).
Good one Mark.
One question - generally we are designing these kinds of diagram in the initial phase of project. At that time normally codebase is still under development.
How can we map project folder structure with logical diagram when codebase is not ready?
You can still create the folders (even though there's no source code yet). Alternatively, you can wait until development, and govern them through tools like ArchUnit, ArchUnitNet, PyTestArch, NetArchTest, and TSArch during development.
Is there some intermediate type of architecture? When designing systems (usually based on some acceptance criteria, business designs etc.) my teams often were creating something similar to this logical architectures but with some extra details, like: "here we want to write data do DB", "here we want to send data to other component" but without specifying if that DB is Postgres, Cassandra, Mongo or whatever else or without specifying if data will be sent over HTTP, TCP, kafka etc. I feel like both architectures on their own are a bit lacking, and leave too many unanswered questions and connecting them like you shown at the end of video may result with very complicated diagrams where average engineer may be quickly lost.
I think the logical architecture is useful when you want to abstract away the architecture style (monolith, microservices) and focus on the runtime behavior. This is useful in initial phase of the project when you don't know which architectural style you will use or you want to understand how system components are decomposed to solve a problem. I think if you mixed that with infrastructure, you will be biased quickly to a a certain architectural style, may be this is what you want in a brown field project for example. The main point is a logical architecture can be mapped to a many physical architectures all supporting different architectural characteristics. I agree with you the diagrams not carefully selected.
Absolutely. In many cases you might want to add a repository in a logical architecture, or add additional details to provide guidance. There are really no hard-and-fast rules about what can and can't go into a logical architecture diagram.