Hey folks!👋 Want to have hands-on practice on these concepts? 🤓 Try out CodeCrafters.io we have partnered and you can get 40% off 💸with this link: app.codecrafters.io/join?via=DevStory They have great hands-on tutorials and easy to get up to speed with complex systems. Check them out!
🎯 Key Takeaways for quick navigation: 00:00 🏢 Software architecture involves planning, designing, and constructing software solutions, combining art and science like architecture in buildings. 01:00 🏛️ Software architecture focuses on the structure and important decisions that impact quality and cost-effectiveness. 02:02 📈 Non-functional requirements (e.g., scalability, reliability) and restrictions (e.g., legal compliance) play a crucial role in software architecture. 03:25 🎯 Prioritization is key; some requirements may conflict, and trade-offs must be made. 04:27 💡 Start with one important aspect at a time in architecture design, avoid over-engineering, and follow the "You Ain't Going to Need It" (YAGNI) principle. 05:29 🏗️ Layered architecture is a common approach, dividing the system into database, logic, and UI layers. 06:28 🔄 The architecture can evolve over time, and different architectural patterns should be considered based on the use case. 07:25 🌐 Scaling is a critical consideration in architecture, and it's important to plan for scalability when serving a large number of user requests. Made with HARPA AI
I have been looking for a simple explanation of Software Architecture for a long time and then stumbled upon this video. So happy that I found this, the concepts are made very clear and appreciate the tutor taking us thru the definitions in simple words. Kudos!!
I am from Russia, I watched your video for 30 minutes (all unfamiliar words were translated for me). but your video made me very happy. thanks for this (:
Glad to hear this! If there's anything I can do to make it easier let me know. I don't speak Russian but I set the subtitles in English so it's easier to read. Hopefully that helps;
Thank you I think every programmer have to learn software architect after learning a programming language and a framework but information in internet are not practical most of time , thanks again ❤️
I love this way , and I am searching for this approach only where people don’t think about technical words but do align with the some practical examples. I really appreciate this and very thankful for sharing and serving to community
I was struggling to kick start the journey of Architecture learning. Finally found the best place to begin. Thanks a ton for a beautiful and simple explanation. 💯
Great video, special thanks for the free ebook reference. I just started working as a Business Analyst and I need understanding that on a fundamental level, even if I'm not coding. Thanks a lot!
Using practical engineering fields to extrapolate onto software engineering is so helpful since we can't materially see the inner workings of the products we are using. Good stuff man
Building a site ... What the system should do ?(Functional requirements) Search inventory Check reviews Buy a product Review past orders How should a system behave?(Non-functional requirements) Maintainability(work for several yrs) Scalability(able to serve millions) Reliability(available 24/7) Efficiency(Short response latency) Restriction- Legal compilance Time to market Cost Standards Talent hiring Prioritize- Some of the restrictions and requirements can conflict for eg - portability vs scalability/maintainability After prioritizing we need to think if it will be acceptable or not then we star designing the architecture. How to design architecture ? Try to tackle one thing at a time. Recommended book- Software architecture pattern.
Not only was the video incredibly informative, but it was one of the cleanest, most beautiful, engaging experiences I've had with a youtube video to date. Very professional. Well done, my man! Subscribed.
Fantastic overview! The approach is so much clearer than the current textbook I'm reading. Thank you for helping make sense of the topic. Also thanks for the book recommendation.
Among numerous contents over the web, I found this simple and clear definition of Software Architecture very very useful. The key success of your content is simplicity. Please continue making more contents about software architecture and development team management in a super super simple way to be understandable for all. Thanks man 🤞
When to go for Distributed Systems? --- This was the interview Question, After some quick google search got clues such as Fault / Failure, Parallelism, etc.
Yeah it's quite an interesting question. It can depend on multiple things, but distributed systems are way more complex than local systems. All web applications or mobile applications with a backend are distributed, and if you add more communications between systems is even more complex. If you can handle the load and the architecture is maintainable in a monolith for example, you can save yourself some headaches. Besides some of the reasons you mentioned, one of the motivations to go with distributed systems or things like Microservices is to scale the organization: being able to split the work with more team without needing so much coordination.
Thanks for the chance and to the people like you leaving comments! Always learning and specially learning on how to edit videos and record sound 🤣 latest videos hopefully are better
Hello! I’ve been wanting to look at videos on careers to see what I enjoyed the most. Thankfully I found this career and hoping I actually make it. I adore your content, keep up the amazing work! Much love!
For me this is very helpful. Presented in a very clear, structured and short ( without overengineering :)) way. Definitely will watch the rest of videos in the playlist. Subscribed. Thanks a lot.
Dear Friends, When I design a software system, I divide it into 3 categories: 1/ Conceptual: I will state the names of the software that will respond to the requirements of the business process from users, describe the names of the software to be processed and the behaviors. 2/ Logical: I can define software architecture by applying architectural pattern in this step and I will include constraints on availability, scalability, maintainability. I also describe in detail the function of each component. This step 3/ Physical: Define programming language, platform to realize the description in Logical step. Could you recommend?. Thank you.
Great video! I work in a start-up and we have multiple customizez software design for our needs (Admin panel, App, POS, Shopify), but no documentation at all. So we want to start doing our Architecture system documentation, but no idea to how to start, there're is lot of info. What kind of professional does this task? A solution architect? we might need a profesional guidance for sure.
Oh wow, you have a good challenge on your hands! So a developer with some time can help. No need for a solution architect (unless the tools are very common or standard and you can find experts). There are different ways to document architectures (for example the 4+1 view model: en.wikipedia.org/wiki/4%2B1_architectural_view_model) but being pragmatic I would start from a very high overview to the details. For example: - Start first with network communications: Which systems need to talk to which other systems? Does the Admin Panel talk to a database? does it talk to Shopify? these type of things. If you can have a big space for a diagram (in a whiteboard or diagramming tools like Miro) you can add it incrementally over some time. - Then continue going into more and more details. For example: Why does system A need to talk to system B? (there will probably be an API, like "PurchaseAPI" or something like that) so you can start having some names to those lines. In very complex systems it may be hard or time consuming to find all these communications, so I would recommend you to start with the most critical ones (the most used, the most risky, the most buggy, whatever the most critical ones mean to you) instead of trying to do all at once. Another approach is to do it by "use cases". Again, pick the most critical use cases for you and dig into the details of what's happening. For example: if the main use case is "user purchase", check all the systems, classes, databases that are affected throughout the interactions. Good luck!
Don't understand 1:27 "SA is about making the expensive choises that are coslty to change after they are implemented" and the picture shows "anticipate expensive choises"
There are cheap and expensive choices to make when designing software. So for example, changing the parameters of a function is way cheaper than deciding the persistent layer of the application. Software architecture is about making those expensive choices wisely. Decide what are the things that are harder to change in your application. Hope it's clearer
Great video thank you. One question. What is the difference between Software Architecture and System Design? For developer interviews we are sometimes asked a System Design problem. Isn't this architecture?
Some people tend to use them without paying too much attention to the difference (like me :S), but Systems Design is more tilted towards the implementation details while Software Architecture it's more about the "big picture". As I see it, for example, in Software Architecture you would say: "I'll have a 3 layer application with one layer being the persistence layer/database", and when you start designing the system you decide how to actually setup the tables, which indexes you want to create on the data, etc. You are not alone in the confusion, I'll leave you with a couple of links with discussions/explanations on the differences. Hopefully they are clearer: - stackoverflow.com/questions/704855/software-design-vs-software-architecture - medium.com/@concisesoftware/whats-the-difference-between-software-architecture-and-design-b705c2584631
@@ADevStory This is extremely helpful information and resources, thank you so much for sharing this! I am currently at the senior software engineer stage and am looking to eventually grow into a Software Architect role... your channel is very helpful in my journey! All the best to you!
Do you know where I can find an Architecture Design template (just to serve as a reference) for very early-stage startups? Just so it can develop and deploy the MVP. Thanks!
@@ADevStory Sample architectures for similar startups. Basically what type of infrastructure do startups usually use just to build and deploy the MVP? (Let's say... Browser -> Router 53 -> Load Balander -> ECS ... ? )
Oh but you are looking for typical setups if aws/cloud infrastructure. Hard to tell. There are probably other resources on the internet, I'm sorry I don't have them at hand. In terms of attitude, my approach would be the same as in this video. If you don't know anything about cloud start with something very basic and the start building more stuff. For example, how would you do it without cloud? Then try to find the equivalent approach in cloud. I can think of using a server where I'll deploy my code, so probably EC2 would be the first thing. As you get more knowledge then you can optimize (maybe use lambda) and so on
@@ADevStory Thanks for the detailed reply! I'm thinking about Heroku (for Front, Back and Database). I don't know if you have any thoughts on Heroku, but I don't want to take more of your time asking questions, but thank you so much for spending the time to answer my last question.
@@DanBP21 I haven't personally used Heroku but I've heard good things. It also depends on what you are trying to do in your startup. If you have too many unknowns, try to choose "boring technology" to reduce risks (boringtechnology.club/). With this I mean try to use what you know the most, what you can get more support of or can hire more easily.
Good question! I would say yes, it's fair. A senior developer must have already worked in multiple systems and it's typically a reference in the team on the technical side. What do you think?
Thank you for your video, it is very useful!!! In what moment in time should I decide the architecture to use: layered, microservices, monolithic, micro kernel, etc? and what diagram should I use to describe that? Also when should I start to design the visual pages, like in Figma, UML diagrams are too abstract. Also in what diagrams can I put the borders between front-end and back-end, I’ve seen examples when this isn’t portrayed and will be confusing to developers, like in sequence diagrams, it starts with the actor clicking a button and doing something up till the database, but it doesn’t show the borders between UI, app layer, logic layer and database layer, how can a developer know how to organize their code? Still a sequence diagram doesn’t show what fields or tables will be affected, so where do I put all the details. I’m trying to use UML but is too abstract and not enough detailed for a developer, it’s too general, like the Use Case diagrams. Any help? Thanks.
So in terms of what type of architecture to use is always tricky, hard and sometimes you may find that the architecture wasn't the best later and need to pivot. In some domains there's a "dominant" or "default" architecture. For example, in web applications typically a layered architecture works well. In high traffic/data driven applications, event driven architecture is commonly used. So in terms of being super practical, unless you have a very clear vision of the things that are different is good to start with the "default architecture" for that domain. You can find similar examples of the type of system you want to build on the internet and start with that base type of architecture. Of course, as you gain more experience, you would have seen more and more systems (some successful and other failures), maybe some built by you that allows you to get a clearer vision. There are different views to visualize architecture. One of the most famous/older ones is the 4+1 View Model, that includes different views: en.wikipedia.org/wiki/4%2B1_architectural_view_model. You can of course go with UML but the most important thing is not the type of diagrams you use but the message you want to communicate to others (and yourself!) about the system you are building. So as long as everyone involved in the project can understand all the moving parts feel free to use any type of diagram. Hope is clear, let me know if you have more doubts :)
It's a good question. I'm guessing since all application would have some type client/rendering aspect to it when access by users, so the book is focused on how is that application built instead of how do clients access it. Of course, i recommended the book because: it's short and concise, it's free and it's good, but by no means is exhaustive :) Also, keep in mind that some people differentiate between patterns and styles. The book talks about patterns, while client-server can be a style. More on that here: stackoverflow.com/questions/3958316/whats-the-difference-between-architectural-patterns-and-architectural-styles#:~:text=Styles%20generally%20provide%20guidance%20and,(or%20perhaps%20multiple%20styles).
Oh it seems it's not longer available from that link in O'Reilly. I can't find a new link right now, so maybe by googling for the name you are able to find a new link. I can try and check again in the future if O'Reilly fixes/add a new link.
Sorry it took me so long to reply! Yeah, there are some resources in the description of the video. There are a few, but some of my favorites are: - Fundamentals of Software Architecture: An Engineering Approach amzn.to/48mnsyL - System Design Interview - An Insider's Guide: Volume 2 amzn.to/460ynwM On the free side, I really like GOTO Conferences RUclips channel: www.youtube.com/@GOTO-, Martin Fowler's Blog : martinfowler.com/ or Chris Richardson's blog on Microservices: microservices.io/ Please let me know if you'd like more resources.
Hey, just want to point out that this is the most comprehensive Software Product Design overview on youtube! Can you share some insight on what is the responsibility of the Product Manager Vs Software Devs?
Glad to hear that! In my experience Product Managers should focus on the what and devs on the how. Of course there's collaboration and from my point of view better devs should also get more on to product, and better product mangers should also improve the understanding of the how, but the focus should be the same.
Oh no ese libro de patrones de arquitectura de software se ve buenísimo! Pero al entrar me aparece un error :( podrías darme el link directo? o sabes que paso con el libro?
El libro lamentablemente ya no está gratis en la página de O'Reilly. El link en la descripción te lleva a una versión en HTML que permite ojearlo, pero lamentablemente el PDF ya no se encuentra en la página oficial :s
Its pretty straight forward way to define the roles of architect along with the way to accomplish it ... best tutorial in youtube .. expecting a continuous series on this.... can not miss such valuable things so subscribed immediately thanks n Kudos !!
Thank you! And yes of course. In the description are my top recommendations and all the links. I would start with the free one I mentioned: Software Architecture Patterns since it's the shortest and very practical for reference. Let me know if it helps you!
Usually what I mentioned in the video: it depends. Most enterprise project have a "default architecture" (or how George Fairbanks calls it in "Just Enough Architecture": "presumptive architecture). That means that most projects in certain domains will have similar needs. When I face something new I try to look for similar projects online/books and how they were solved, and if by any chance I can't find the information, try to build something stable but cheap, so I can pivot later more esaily in case the design fails.
Heyy can you please share the PDF of "Software Architecture Patterns" on google drive or somewhere and share the link pleaseeee I will really appreciate it. As it is my course book and I need it right now.
I updated the official link in the description (no pdf though) but the pdf is not longer available. There are ways to find it online, but sadly I cannot share it. :(
Sure! Someone already asked it in the comments, but RUclips doesn't allow to link to the comment, so I'll paste the same answer: Some people tend to use them without paying too much attention to the difference (like me :S), but Systems Design is more tilted towards the implementation details while Software Architecture it's more about the "big picture". As I see it, for example, in Software Architecture you would say: "I'll have a 3 layer application with one layer being the persistence layer/database", and when you start designing the system you decide how to actually setup the tables, which indexes you want to create on the data, etc. You are not alone in the confusion, I'll leave you with a couple of links with discussions/explanations on the differences. Hopefully they are clearer: - stackoverflow.com/questions/704855/software-design-vs-software-architecture - medium.com/@concisesoftware/whats-the-difference-between-software-architecture-and-design-b705c2584631
I'm not familiar with SAP's architecture sorry :( layered architecture is the most common type of architecture so it's possible. But it can also be a more modular one (microkernel architecture for example). Also you can have a mix. You can a have a microservices architecture with also layered systems inside.
I would say neither, unless the logging system has an architecture by itself. But for a given system, logging would be an implementation detail or at best a non-functional requirement (say, part of observability) similar to others like having tests.
Hey folks!👋 Want to have hands-on practice on these concepts? 🤓
Try out CodeCrafters.io we have partnered and you can get 40% off 💸with this link: app.codecrafters.io/join?via=DevStory
They have great hands-on tutorials and easy to get up to speed with complex systems. Check them out!
🎯 Key Takeaways for quick navigation:
00:00 🏢 Software architecture involves planning, designing, and constructing software solutions, combining art and science like architecture in buildings.
01:00 🏛️ Software architecture focuses on the structure and important decisions that impact quality and cost-effectiveness.
02:02 📈 Non-functional requirements (e.g., scalability, reliability) and restrictions (e.g., legal compliance) play a crucial role in software architecture.
03:25 🎯 Prioritization is key; some requirements may conflict, and trade-offs must be made.
04:27 💡 Start with one important aspect at a time in architecture design, avoid over-engineering, and follow the "You Ain't Going to Need It" (YAGNI) principle.
05:29 🏗️ Layered architecture is a common approach, dividing the system into database, logic, and UI layers.
06:28 🔄 The architecture can evolve over time, and different architectural patterns should be considered based on the use case.
07:25 🌐 Scaling is a critical consideration in architecture, and it's important to plan for scalability when serving a large number of user requests.
Made with HARPA AI
I have been looking for a simple explanation of Software Architecture for a long time and then stumbled upon this video. So happy that I found this, the concepts are made very clear and appreciate the tutor taking us thru the definitions in simple words. Kudos!!
Thank you! Glad you enjoyed it!
I am from Russia, I watched your video for 30 minutes (all unfamiliar words were translated for me). but your video made me very happy. thanks for this (:
Glad to hear this! If there's anything I can do to make it easier let me know. I don't speak Russian but I set the subtitles in English so it's easier to read. Hopefully that helps;
@@ADevStory Yes. your subtitles helped me a lot. otherwise I won't understand your video completely. thank you for your time
Anytime!
Thank you I think every programmer have to learn software architect after learning a programming language and a framework but information in internet are not practical most of time , thanks again ❤️
Glad it was useful! :)
Finally youtube recommended me this amazing video after two years
Nice! Hope you liked it!
I love this way , and I am searching for this approach only where people don’t think about technical words but do align with the some practical examples. I really appreciate this and very thankful for sharing and serving to community
Thank you very much! Glad you liked it! Let me know if you have other topics you'd like me to cover.
I was struggling to kick start the journey of Architecture learning. Finally found the best place to begin. Thanks a ton for a beautiful and simple explanation. 💯
Glad to hear that! Good luck in your journey!
Great video, special thanks for the free ebook reference. I just started working as a Business Analyst and I need understanding that on a fundamental level, even if I'm not coding.
Thanks a lot!
Glad it was useful! 😁 Feel free to suggest additional topics that may be interesting
I loved the beginning of this part 0.30
Using practical engineering fields to extrapolate onto software engineering is so helpful since we can't materially see the inner workings of the products we are using. Good stuff man
Thanks!
your introduction alone was enough for a subscription. THANKS!! for the clarity of the said topic
Oh thank you! Cheers!
Love it! I've just decided to go all in into software architecture. This is a great place to start
Glad you found it useful! Thanks for the feedback! Let me know if there's specific content you'd like to see
@@ADevStory DDD and hexagonal architecture. Basically to know if it's worth it
Sounds good!
Thanks, your simple way of explaining is priceless
Thank you for the feedback! Glad you enjoyed it!
Building a site ...
What the system should do ?(Functional requirements)
Search inventory
Check reviews
Buy a product
Review past orders
How should a system behave?(Non-functional requirements)
Maintainability(work for several yrs)
Scalability(able to serve millions)
Reliability(available 24/7)
Efficiency(Short response latency)
Restriction-
Legal compilance
Time to market
Cost
Standards
Talent hiring
Prioritize-
Some of the restrictions and requirements can conflict for eg - portability vs scalability/maintainability
After prioritizing we need to think if it will be acceptable or not then we star designing the architecture.
How to design architecture ?
Try to tackle one thing at a time.
Recommended book- Software architecture pattern.
Great summary!
Best introductory content on software architecture I've ever seen so far, thanks for the hard work!
Thanks! Glad you enjoyed it!
Not only was the video incredibly informative, but it was one of the cleanest, most beautiful, engaging experiences I've had with a youtube video to date. Very professional. Well done, my man! Subscribed.
Thank you! 🙂 Really glad tou enjoyed it so much!
Good job!
Sincerely,
Overengineer
Fantastic overview! The approach is so much clearer than the current textbook I'm reading. Thank you for helping make sense of the topic. Also thanks for the book recommendation.
Thank you! glad you enjoyed it
I really enjoyed this playlist on SW Arc. Well done!
Oh thank you! Glad you liked it!
Explained in a simplistic manner, easy to understand. Loved It !
Awesome glad you enjoyed it!
Among numerous contents over the web, I found this simple and clear definition of Software Architecture very very useful. The key success of your content is simplicity. Please continue making more contents about software architecture and development team management in a super super simple way to be understandable for all. Thanks man 🤞
Oh thank you! Glad you enjoyed it!
just wanna thank u, I found it very helpful and I really enjoyed watching this video. thank you for your time.
Thank you for watching and sharing your feedback! Glad it was useful!
If you like a video on a specific topic please let me know
When to go for Distributed Systems? --- This was the interview Question, After some quick google search got clues such as Fault / Failure, Parallelism, etc.
Yeah it's quite an interesting question. It can depend on multiple things, but distributed systems are way more complex than local systems. All web applications or mobile applications with a backend are distributed, and if you add more communications between systems is even more complex.
If you can handle the load and the architecture is maintainable in a monolith for example, you can save yourself some headaches. Besides some of the reasons you mentioned, one of the motivations to go with distributed systems or things like Microservices is to scale the organization: being able to split the work with more team without needing so much coordination.
@@ADevStory thanks for the response. Any other channel or way to connect? I am looking for job so need such guidance.
Sure! Reddit: www.reddit.com/user/a_dev_story/ or my LinkedIn: www.linkedin.com/in/cvielma/?original_referer=
I love how you started the video.
Great work Christian❤
Thank you! Glad you liked it!
i was leaving as sound of video was damn slow, but read comments and watched whole video. Gr8 content.
Thanks for the chance and to the people like you leaving comments!
Always learning and specially learning on how to edit videos and record sound 🤣 latest videos hopefully are better
Hello! I’ve been wanting to look at videos on careers to see what I enjoyed the most. Thankfully I found this career and hoping I actually make it. I adore your content, keep up the amazing work! Much love!
Thank you! And good luck in this career!
La intro me gustó ❤
For me this is very helpful. Presented in a very clear, structured and short ( without overengineering :)) way. Definitely will watch the rest of videos in the playlist. Subscribed. Thanks a lot.
Awesome :)
Dear Friends,
When I design a software system, I divide it into 3 categories:
1/ Conceptual: I will state the names of the software that will respond to the requirements of the business process from users, describe the names of the software to be processed and the behaviors.
2/ Logical: I can define software architecture by applying architectural pattern in this step and I will include constraints on availability, scalability, maintainability. I also describe in detail the function of each component. This step
3/ Physical: Define programming language, platform to realize the description in Logical step.
Could you recommend?. Thank you.
Great video! I work in a start-up and we have multiple customizez software design for our needs (Admin panel, App, POS, Shopify), but no documentation at all. So we want to start doing our Architecture system documentation, but no idea to how to start, there're is lot of info. What kind of professional does this task? A solution architect? we might need a profesional guidance for sure.
Oh wow, you have a good challenge on your hands!
So a developer with some time can help. No need for a solution architect (unless the tools are very common or standard and you can find experts). There are different ways to document architectures (for example the 4+1 view model: en.wikipedia.org/wiki/4%2B1_architectural_view_model) but being pragmatic I would start from a very high overview to the details. For example:
- Start first with network communications: Which systems need to talk to which other systems? Does the Admin Panel talk to a database? does it talk to Shopify? these type of things. If you can have a big space for a diagram (in a whiteboard or diagramming tools like Miro) you can add it incrementally over some time.
- Then continue going into more and more details. For example: Why does system A need to talk to system B? (there will probably be an API, like "PurchaseAPI" or something like that) so you can start having some names to those lines.
In very complex systems it may be hard or time consuming to find all these communications, so I would recommend you to start with the most critical ones (the most used, the most risky, the most buggy, whatever the most critical ones mean to you) instead of trying to do all at once.
Another approach is to do it by "use cases". Again, pick the most critical use cases for you and dig into the details of what's happening. For example: if the main use case is "user purchase", check all the systems, classes, databases that are affected throughout the interactions.
Good luck!
Thank you very much for the detailed answer! it has been a great help. @@ADevStory
You're welcome!
Nice job man! Good luck with your channel. You are hitting on some important topics.
Thanks!
thank you very much, I really liked the content you taught, you made this subject very simple and objective
Thank you! Glad it was useful!
Simple and clear, thank you so much, now I have a base concept to beginning to study about this topic. Thanks dude!
That was the idea! Glad you found it useful!
Awesome Presentation. Superbly Explained. Many thanks Cheers
Thank you!
love to watch and gain knowledge beside hand on and reading programing book.
Yeah. There are different ways to learn that are helpful. Glad you enjoyed the video!
You've earned a subscriber sir!
Amazing! Glad you liked it and happy to have you onboard!
As a chemist, I appreciae your T-shirt! ^-^
Hahaha thanks!
Don't understand 1:27 "SA is about making the expensive choises that are coslty to change after they are implemented" and the picture shows "anticipate expensive choises"
There are cheap and expensive choices to make when designing software. So for example, changing the parameters of a function is way cheaper than deciding the persistent layer of the application.
Software architecture is about making those expensive choices wisely. Decide what are the things that are harder to change in your application.
Hope it's clearer
Great video! Thanks for the simple explanation and great resources.
Glad you liked it!
Great video thank you. One question. What is the difference between Software Architecture and System Design? For developer interviews we are sometimes asked a System Design problem. Isn't this architecture?
Some people tend to use them without paying too much attention to the difference (like me :S), but Systems Design is more tilted towards the implementation details while Software Architecture it's more about the "big picture". As I see it, for example, in Software Architecture you would say: "I'll have a 3 layer application with one layer being the persistence layer/database", and when you start designing the system you decide how to actually setup the tables, which indexes you want to create on the data, etc.
You are not alone in the confusion, I'll leave you with a couple of links with discussions/explanations on the differences. Hopefully they are clearer:
- stackoverflow.com/questions/704855/software-design-vs-software-architecture
- medium.com/@concisesoftware/whats-the-difference-between-software-architecture-and-design-b705c2584631
@@ADevStory This is extremely helpful information and resources, thank you so much for sharing this! I am currently at the senior software engineer stage and am looking to eventually grow into a Software Architect role... your channel is very helpful in my journey!
All the best to you!
Thank you! Glad it has been useful!
Nice Lego Town Hall set in the background! ;)
Haha thanks!
Do you know where I can find an Architecture Design template (just to serve as a reference) for very early-stage startups? Just so it can develop and deploy the MVP. Thanks!
What do you mean by it? Like word documents templates or sample architectures for similar startups?
@@ADevStory Sample architectures for similar startups. Basically what type of infrastructure do startups usually use just to build and deploy the MVP? (Let's say... Browser -> Router 53 -> Load Balander -> ECS ... ? )
Oh but you are looking for typical setups if aws/cloud infrastructure. Hard to tell. There are probably other resources on the internet, I'm sorry I don't have them at hand.
In terms of attitude, my approach would be the same as in this video. If you don't know anything about cloud start with something very basic and the start building more stuff. For example, how would you do it without cloud? Then try to find the equivalent approach in cloud.
I can think of using a server where I'll deploy my code, so probably EC2 would be the first thing. As you get more knowledge then you can optimize (maybe use lambda) and so on
@@ADevStory Thanks for the detailed reply! I'm thinking about Heroku (for Front, Back and Database). I don't know if you have any thoughts on Heroku, but I don't want to take more of your time asking questions, but thank you so much for spending the time to answer my last question.
@@DanBP21 I haven't personally used Heroku but I've heard good things. It also depends on what you are trying to do in your startup. If you have too many unknowns, try to choose "boring technology" to reduce risks (boringtechnology.club/). With this I mean try to use what you know the most, what you can get more support of or can hire more easily.
Very good intro, neat and clear. Thank you for your effort!
Thanks! Glad you enjoyed it!
Do you think it's fair to have a software architecture interview step for a senior level position?
Good question! I would say yes, it's fair. A senior developer must have already worked in multiple systems and it's typically a reference in the team on the technical side.
What do you think?
Good vid mate. Thumbs up.
Thank you!
Super Good Video! thank you!
Glad you liked it!
Very nice thanks for sharing 👌🙏 Interviewdot
Glad you liked it!
Thank you for your video, it is very useful!!! In what moment in time should I decide the architecture to use: layered, microservices, monolithic, micro kernel, etc? and what diagram should I use to describe that?
Also when should I start to design the visual pages, like in Figma, UML diagrams are too abstract. Also in what diagrams can I put the borders between front-end and back-end, I’ve seen examples when this isn’t portrayed and will be confusing to developers, like in sequence diagrams, it starts with the actor clicking a button and doing something up till the database, but it doesn’t show the borders between UI, app layer, logic layer and database layer, how can a developer know how to organize their code? Still a sequence diagram doesn’t show what fields or tables will be affected, so where do I put all the details. I’m trying to use UML but is too abstract and not enough detailed for a developer, it’s too general, like the Use Case diagrams. Any help? Thanks.
So in terms of what type of architecture to use is always tricky, hard and sometimes you may find that the architecture wasn't the best later and need to pivot. In some domains there's a "dominant" or "default" architecture. For example, in web applications typically a layered architecture works well. In high traffic/data driven applications, event driven architecture is commonly used. So in terms of being super practical, unless you have a very clear vision of the things that are different is good to start with the "default architecture" for that domain. You can find similar examples of the type of system you want to build on the internet and start with that base type of architecture. Of course, as you gain more experience, you would have seen more and more systems (some successful and other failures), maybe some built by you that allows you to get a clearer vision.
There are different views to visualize architecture. One of the most famous/older ones is the 4+1 View Model, that includes different views: en.wikipedia.org/wiki/4%2B1_architectural_view_model. You can of course go with UML but the most important thing is not the type of diagrams you use but the message you want to communicate to others (and yourself!) about the system you are building. So as long as everyone involved in the project can understand all the moving parts feel free to use any type of diagram.
Hope is clear, let me know if you have more doubts :)
Hi...good job !
Can you please make video series on how to secure distributed(micro) services?
I can give it a try! Will add it to my list of topics :) thanks for the suggestion
Thank you very much for this video! Very simple and very clear!!!
Glad you enjoyed it!
really like the content, way of delivering, everything smooth and brilliant 👍
Thanks! :)
Nice video. Thanks a lot
You're welcome! Glad you enjoyed it!
Thank you for this beautiful explanation. ❤
Thank you for watching and the feedback!
I have a question, ins't client-server a type of architecture too ? because they don't talk about it in the book you showed
It's a good question. I'm guessing since all application would have some type client/rendering aspect to it when access by users, so the book is focused on how is that application built instead of how do clients access it. Of course, i recommended the book because: it's short and concise, it's free and it's good, but by no means is exhaustive :)
Also, keep in mind that some people differentiate between patterns and styles. The book talks about patterns, while client-server can be a style. More on that here: stackoverflow.com/questions/3958316/whats-the-difference-between-architectural-patterns-and-architectural-styles#:~:text=Styles%20generally%20provide%20guidance%20and,(or%20perhaps%20multiple%20styles).
The Book od O'Reilley is not available anymore. Could you please write a new working link? Thank you
Oh it seems it's not longer available from that link in O'Reilly. I can't find a new link right now, so maybe by googling for the name you are able to find a new link.
I can try and check again in the future if O'Reilly fixes/add a new link.
Thanks for reporting it, though
Here is a link to the pdf, hope it helps
github.com/gg-daddy/ebooks/blob/master/software-architecture-patterns.pdf
excellent!
Great video, I’m new to the field and it’s really an eye opener for me. Thank you
Glad it was useful!
Thanks brother, this really helps!
You're welcome! Glad you liked it!
Thank you for sharing! Also, can you recommend some more formal sources for me and others to learn about building a software (preferably books)
Sorry it took me so long to reply! Yeah, there are some resources in the description of the video. There are a few, but some of my favorites are:
- Fundamentals of Software Architecture: An Engineering Approach amzn.to/48mnsyL
- System Design Interview - An Insider's Guide: Volume 2 amzn.to/460ynwM
On the free side, I really like GOTO Conferences RUclips channel: www.youtube.com/@GOTO-, Martin Fowler's Blog : martinfowler.com/ or Chris Richardson's blog on Microservices: microservices.io/
Please let me know if you'd like more resources.
Amazing video and awesome quality love the production. so Helpful!
Thank you!
Hey, just want to point out that this is the most comprehensive Software Product Design overview on youtube! Can you share some insight on what is the responsibility of the Product Manager Vs Software Devs?
Glad to hear that!
In my experience Product Managers should focus on the what and devs on the how. Of course there's collaboration and from my point of view better devs should also get more on to product, and better product mangers should also improve the understanding of the how, but the focus should be the same.
Great video, for me this is very helpful...
Glad you enjoyed it!
Great explanation!! Thank you for share this book :)
Thanks!
excellent video! thank you for making it. off to the next one~
Thanks!
But I am a french guy and i really want to have that pdf of software architecture patterns. What can I do ?😟😟
Sadly not possible anymore. O'Reilly made it paid.
Oh no ese libro de patrones de arquitectura de software se ve buenísimo! Pero al entrar me aparece un error :( podrías darme el link directo? o sabes que paso con el libro?
El libro lamentablemente ya no está gratis en la página de O'Reilly. El link en la descripción te lleva a una versión en HTML que permite ojearlo, pero lamentablemente el PDF ya no se encuentra en la página oficial :s
Excellent .... Classic. I liked it so much and was exactly looking for this
Well done.
Thanks!
Thanks alot!!! Exactly what I needed.
Glad you liked it!
Its pretty straight forward way to define the roles of architect along with the way to accomplish it ... best tutorial in youtube .. expecting a continuous series on this.... can not miss such valuable things so subscribed immediately thanks n Kudos !!
Glad you found it useful!
It was a really nice explaination. Can u suggest any book to start with.
Thank you!
And yes of course. In the description are my top recommendations and all the links. I would start with the free one I mentioned: Software Architecture Patterns since it's the shortest and very practical for reference. Let me know if it helps you!
@@ADevStory it'll be useful for me. Thanks!
Precise and clear! Like it... keep doing :)
Thanks for the explanation, it is easy to understand. Subscribed
Awesome! :)
Great initiative and all videos explain core concepts very well, looking for more videos in this series
Thank you! Any specific topic?
Thanks. Was clear!
Software's like editing softwares (E.g, adobe, autoCAD, and the likes) Do they still follow, the Business, Logic, Data Layers? Or the MVC?
Hard to say because I haven't seen their code but probably yes 😅
this video is really helpful!
Glad you enjoyed it!
Hello, This is so much cooler, I appreciate what you just did here. please can you share the book with me, tried downloading but wasn't possible.
Glad you liked it! Link is in he description. Sadly the pdf is not longer available for free.
@@ADevStory What are your consideration while choosing an architectural pattern to work with?
Usually what I mentioned in the video: it depends. Most enterprise project have a "default architecture" (or how George Fairbanks calls it in "Just Enough Architecture": "presumptive architecture). That means that most projects in certain domains will have similar needs. When I face something new I try to look for similar projects online/books and how they were solved, and if by any chance I can't find the information, try to build something stable but cheap, so I can pivot later more esaily in case the design fails.
@@ADevStory Thank you
Anytime!
Hi - just one criticism, when talking about your "ilities" for NFR, you include "functionality". "Functionality" is not a non-functional requirement.
Yep you are totally right. Not sure how I missed it and how no one mentioned it until now 😅
Heyy can you please share the PDF of "Software Architecture Patterns" on google drive or somewhere and share the link pleaseeee I will really appreciate it. As it is my course book and I need it right now.
I updated the official link in the description (no pdf though) but the pdf is not longer available. There are ways to find it online, but sadly I cannot share it. :(
The book do you have PDF file? Can you share?
Sorry I can't share it. It seems O'Reilly has now put the book only for sale. You can get it from their site.
Could you explain difference between system architecture and software architecture?
Sure! Someone already asked it in the comments, but RUclips doesn't allow to link to the comment, so I'll paste the same answer:
Some people tend to use them without paying too much attention to the difference (like me :S), but Systems Design is more tilted towards the implementation details while Software Architecture it's more about the "big picture". As I see it, for example, in Software Architecture you would say: "I'll have a 3 layer application with one layer being the persistence layer/database", and when you start designing the system you decide how to actually setup the tables, which indexes you want to create on the data, etc.
You are not alone in the confusion, I'll leave you with a couple of links with discussions/explanations on the differences. Hopefully they are clearer:
- stackoverflow.com/questions/704855/software-design-vs-software-architecture
- medium.com/@concisesoftware/whats-the-difference-between-software-architecture-and-design-b705c2584631
@@ADevStory , the application architecture is the same meaning with the software architecture, right?
Yes
are erp's like sap layered architecture ?
I'm not familiar with SAP's architecture sorry :( layered architecture is the most common type of architecture so it's possible. But it can also be a more modular one (microkernel architecture for example).
Also you can have a mix. You can a have a microservices architecture with also layered systems inside.
great video
Thanks!
Nice video!
Thank you!
Great video !!! I subscribed because we have same name
Haha nice!
Super helpful
Buen video amigo
¡Gracias! ¡Qué bueno que te gustó!
Volume is a bit low. I needed to increase the volume to hear it better.
Yeah. It has been improving in newEr videos but apparently there are some issues still. Glad you made it work! Thanks for watching!
Amazing :)
Thanks for advices!
Some of those white words on the white background were hard to read. I would prefer a bit more of a contrast.
Thanks for the feedback! In newer videos I try adding shadows, but will consider adding even more contrast. Thanks!
As clean as his shimmering head! ❤
Glad it was THAT clear🤣
@@ADevStory 🤣
Great video! Thanks for sharing :)
Thank you!
awesome content.. Thanks for your efforts to educate others..
Thanks for watching and the feedback! :)
Hey!! someone could find the pdf ebook? The link posted on description of this video doesn't work.
The link in the description should take you to O'Reilly's page of the book. Sadly the ebook is not longer free 😓
If i talk about Logs . If a system has logs. Does it fit to System Architecture or System Design ?
I would say neither, unless the logging system has an architecture by itself. But for a given system, logging would be an implementation detail or at best a non-functional requirement (say, part of observability) similar to others like having tests.
@@ADevStory Thanks for your time !
Very helpful ❤
Glad you liked it!
thank you so much legend
Thank you!!
I still disagree with the term "non-functional"... because "non-functional" means "broken".
I'd prefer the other alternatives: architecture characteristics, quality attributes