Monolithic vs Microservice Architecture: Which To Use and When?
When it comes to software architecture, there are generally 2 main types, monoliths, and microservices. In this video, I cover the differences between each of them and discuss which ones you should be using for your next project.
With microservices, you need to have a good understanding of cloud-based platforms. AWS is used by a lot of companies, and you can earn more if you have a certification such as AWS Certified Solutions Architect. Zero To Mastery covers everything you need to learn in one of their courses (use FRIENDS10 for 10% off) academy.zerotomastery.io/a/af...
☕️ I don’t accept paid sponsorships and I have turned off mid-video ads. You’re welcome! If you would like to support my channel see: ko-fi.com/alexhyett
📨 Join my free weekly newsletter for advice, technology and more: newsletter.alexhyett.com
🗺️ Backend Developer Roadmap: www.alexhyett.com/backend-dev...
📝 Related blog post: www.alexhyett.com/monolithic-...
🎓 RECOMMENDED COURSES (Use code FRIENDS10 for 10% off)
The Complete Web Developer Course - academy.zerotomastery.io/a/af...
The Complete Junior to Senior Web Developer Roadmap - academy.zerotomastery.io/a/af...
Complete SQL + Databases Bootcamp - academy.zerotomastery.io/a/af...
📚 RECOMMENDED BOOKS
Clean Code - geni.us/5AEwj2
Domain Driven Design - geni.us/WiR0Q0x
Design Patterns - geni.us/5ncUt
Developer Hegemony - geni.us/lAXy
Pragmatic Programmer - geni.us/GfNj9
Data Structures and Algorithms Made Easy - geni.us/sqg6kJ
Refactoring - geni.us/ufAP0mE
Pragmatic Thinking and Learning - geni.us/x81A
Microservices - geni.us/8vMA
🚀 MY FAVOURITE TOOLS
PIA VPN - piavpn.com/AlexHyett (83% off)
Visual Studio Code - code.visualstudio.com/
Obsidian - obsidian.md/
Notion - affiliate.notion.so/alexhyett
⏳ TIMESTAMPS
00:00 - Introduction
00:16 - What is a Monolith?
00:53 - Advantages of Monoliths
02:09 - Disadvantages of Monoliths
03:36 - Microservices
04:13 - Microservice Communication
05:29 - Advantages of Microservices
07:46 - Disadvantages of Microservices
09:17 - Which should you use?
You can check out more of my favourite tools on my website:
www.alexhyett.com/tech/
🔗 MY KEY LINKS
🌍 Blog - www.alexhyett.com/
🐘 Mastodon - social.alexhyett.com/@alex
🧑💻WHO AM I
I'm Alex, a Software Developer and KZhead working in the UK. I make videos about software development to help developers with the skills they need to be senior developers. As well as this KZhead Channel, I also write articles on my website (alexhyett.com) as well as write a regular newsletter that contains some thoughts to help aspiring developers.
‼️ DISCLAIMERS
Some of the links in this description are affiliate links, for which I get a small commission, at no extra cost to you 🙂. I appreciate you supporting my channel so I can continue providing you with free software development content!
#coding #programming #developer
Thank you very much. You stopped me from overengineering and solving problems which doesn't exist for now in my startup.
amazing content and the level of my production. Thanks for what your doing
The structure of your content delivery makes it easy for me to understand these concepts in a snap.
That's awesome, I am glad to hear it!
Very well done and concise video. Thank you.
Thank you 🙏
Love your learning videos ..well-structured , short and to the point
Thank you! I am glad you like them!
great in detail explanation. thank you so much Alex.
love the explanation! Very easy to understand :) Thank you
I am glad you liked it! Thanks for commenting.
A topic that could be interesting to delve further into is the Modular Monolith. In contrast to microservices where the boundary is just physical, modules in a monolith are logically isolated from each other. This brings benefits like faster deployment and helps avoid issues of creating 'spaghetti code' that could cause problems for others. However, designing a modular monolith can be challenging, as it requires expertise in the design of your domain and the identification of its sub-domains (bounded context in DDD terminology) but also with the communication when an operation span accross multiple modules. Overall, I believe this approach combines the pros and cons of both monolith and microservices architectures effectively for many use cases.
This right here is my go to. A monolith where the different services / features can be extracted as a microservice if needed, (usually those hurting for resources / performance). Microservices just have too much overhead and moving parts to make sense as the starting point without a very good reason.
Before the Microservice hype, these system were just called modular systems. I actually wrote one myself based on my own intuition and experience. It was not until a couple of years later when I saw the word "Modular monoliths" in my youtube feeds I realized there was an exact word for what I had done.
Good Job man, am grateful for your videos
Thank you! I am glad they are useful for you.
this is very clear. thank you
Wow Alex very well explained .. I went through many videos finally i got the difference as I come back from a break in my IT career. Thanks looking forward for more of such. Do you have anything on API manager
Sooo clear!! Thanks a lot! 😁
You're welcome 😊
Great work !! This is high quality content !!
Thank you!
this is such a gold content. Thank you so much Alex
You're welcome, thank you for commenting!
Very informational, thanks
Thanks Marcin, I am glad you liked it!
Your videos quality and the content you made are epic , I really love your channel 👌🏻
Thank you very much!
Ñ😊ñññ😊ññññ😊ññññññ😊😊😊😊
00pp0p00pppp0pp0ppppp0ppppp0pp0ppppppppppppppp0ppppppp
This is high quality work thank you ! Would love to see more advanced topics on networks or protocols or anything related to backed ! Keep up the great work :)
Thank you! Yes I will be definitely be covering more backend topics.
This is a very helpful content. thanks a lot.
You're very welcome!
Wow, can't belive you have that little views. It's very nice told, all the pros and cons. You really know this stuff well. I always ask this question on the interviews and it appears that it's not that clear to most of devs :(
Thank you! Yes unfortunately useful videos on software development don't always get as many views as other topics. Maybe I should do a series on topics to learn before going for an interview!
you deserve more subs. Fantastic job
Thank you! Hopefully one day!
Hi there Alex, Lovely video and It has cleared a lot of misconceptions regarding both architectures, I have a question however, Is there any metric value or any parameters defined based on which we could choose one or the other? I would really appreciate your take on this. Thanks
very good explanation can you explain when to use service endpoint or service bus
great video. ty
Really thank you for the word , start business with monolithic, i am confused in that
Microservices are usually a bit overkill if you are starting out with a new application with no traffic. In these cases one big application (monolith) is usually better until you have scaling problems and need to split it up.
amazing video
Thanks I am glad you though so!
Thank uuuuu 🙏🙏🙏
You’re welcome, I am glad it was helpful.
Thanks ❤sir
Great content and great video quality! What microphone are you using?
Thank you, I am using a Blue Yeti X. I have had the same microphone for all of my videos but the sound quality wasn't as good to start with. The key is to have the microphone as close as possible and to make sure you have lots of soft furnishings in your room to absorb any echos. I now have curtains, cushions, a rug and a fluffy blanket to absorb the sound. Video wise I am just using my iPhone XR with the OBS Camera app. My earlier videos used a Logitech Brio 4K but the colours were always a bit off.
@@alexhyettdev thank you very much for the comprehensive answer! Ideas for next videos - how to manage complexity; how to manage work/technical debt in a huge legacy code base, hope to cope with toxic cowerks/arrogant seniors.
Thanks for the ideas, I will add them to my backlog!
Nice video, I have a question, for example in a system I have a microservice customer and this service will have in its database a table with the types of customer document, in this system could also exist a microservice user and could also have in its database a table type of user document, in this case how to work these data that concern several microservices since the types of documents are common between both entities; should I create 2 tables document type 1 in each microservice? Thank you
Microservices should always have their own database. If you have data that is common between them, then you can have copies of the same data in each database. Not ideal, but it is quite common practice. Each domain only stores the data they are interested in. One option for you would be to have a document microservice that all the other microservices use for file storage. This is particular useful when you have strict requirements such as encryption or access restrictions that you need to adhere to. It can all be done in one place without needing the same logic in every microservice that needs to store documents.
thanks!
You’re welcome!
What do you think about tools like TurboRepo ? I mean, we can use that tool for our apps minimizing the disadvantages of monoliths ?
Dying. The stock footage of code magically getting manifested on the scenes as the person is waving around their finger. LOL
can one microservice depend on the other? and also is it necessary to have separate database for each microservice?
Hello Mr.Alex if there are multiple application and we use monolith then should we use one single piece of code or respective codes for respective application Thank you !
Generally with monoliths we are talking about one single application but in some cases you can have smaller supporting applications that go with it. I prefer to do one git repository per application but in the case of microservices that are closely related it can be easier to just have a mono repo.
Great work! One small suggestion tho. The constant bg music is quite distracting.
Sorry about that. I have turned it down a lot in my newer videos. I would get rid of it completely, but it seems to improve retention.
The distinction is too blunt for my taste: i view microservices as one team separating their work into more than one service despite not really having to. And monoliths being a big service used by multiple teams. But most use something in between: pretty much one service per team
modular modulyth
In fact the handsome developers, that want absolutely to show how handsome they are, they say that microservices is amazing. But indeed you need to be pragmatic and really understand what means working as a software developer sometimes first of all
I almost could not disagree more on these advantages you claim Monoliths have. Mostly because in reality nothing ever remains even remotely small enough for those advantages still hold up. Every single 'monolith' I have worked on in my 30 years turned out to be a massive app before it got to production. And that was with all the trimmings of those times. And you always, ALWAYS en up with a mess when multiple people have to work on it. Just my 2 cents.
It really does depend on the scope of the application. If you have a team of 8 working on big enterprise application that you know is going to end up quite large then just start with microservices or at least mini monoliths. If you are building your own startup with just 1 or 2 developers, and you are not building into an existing architecture then a monolith will always be quicker. It is a case of not solving for problems you are not even sure you will have.
No changes to Email service ? ? After changes to Azure and Outlook we now need To use 2-factor Auth.. thus Breaking the SMTP login. Add new Endpoints for MS and a Gui so we can authorize the Token. blah blah Point .. NO microservice is Imune to changes
Very true. You would hope something as simple as email would be immune but very much depends on the provider. I have a few very simple Lambda functions that haven't touched in 2 years, however I am now forced to update them as the version of node they are running on will not be support soon.
I feel the ping is unaccairy
Service mesh wasn't explained clearly at all. Too vague.