Monolithic vs Microservice Architecture: Which To Use and When?

Поделиться
HTML-код
  • Опубликовано: 24 ноя 2024

Комментарии • 103

  • @thabangmotaung9637
    @thabangmotaung9637 Год назад +18

    The structure of your content delivery makes it easy for me to understand these concepts in a snap.

    • @alexhyettdev
      @alexhyettdev  Год назад +3

      That's awesome, I am glad to hear it!

  • @olter1000
    @olter1000 7 месяцев назад +20

    Thank you very much. You stopped me from overengineering and solving problems which doesn't exist for now in my startup.

    • @dreamsachiever212
      @dreamsachiever212 3 месяца назад +1

      me too lol

    • @guyrandalf711
      @guyrandalf711 3 месяца назад

      What did you decide to do then? Please, share

    • @olter1000
      @olter1000 3 месяца назад +1

      @@guyrandalf711 I just started coding monolithic application and trying to focus on a quick implementation rather than perfect architecture and code style (it was not easy since I always want to build something in a best possible way, but reality is your first alpha/beta release won’t be ideal in any case).

    • @muhammedkhaled8128
      @muhammedkhaled8128 2 месяца назад

      @@olter1000 The good thing is that you will be able to pinpoint the issues coming from a monolithic initial version and if you need to go for micro-services, that's even better than trying to have the best architecture from the start which is practically impossible.

  • @codewitgabi
    @codewitgabi 5 месяцев назад +2

    I love how you explained when to use http calls instead of message brokers for service communication.
    HTTP calls for synchronous requests and AMQP for asynchronous calls

  • @MaximePoulain
    @MaximePoulain Год назад +12

    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.

    • @hyper_channel
      @hyper_channel Год назад

      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.

    • @cflowlastname548
      @cflowlastname548 Год назад +3

      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.

    • @masickboi
      @masickboi 4 месяца назад

      ruclips.net/user/shortsBZxSDkVcwhU?si=HkQ2Ly-GnzI66pnE

  • @purdysanchez
    @purdysanchez Месяц назад +1

    Before microservices a lot of systems were just separated into normal sized services as web APIs. Microservices IMO advocated building everything with FaaS for dubious scalability reasons. Most systems weren't monoliths before the advent of microservices.

  • @PieterWigboldus
    @PieterWigboldus 5 месяцев назад +1

    If microservices are ride coupled, you have monolith microservices. It runs a monolith just on multiple services/processes.
    Microservices are very nice if you can break the most lines between the different parts, and you have the most benefit. But it takes a lot of time to learn how to do.
    And be aware that you dont have more microservices than active users 😊

  • @resistance_tn
    @resistance_tn Год назад +14

    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 :)

    • @alexhyettdev
      @alexhyettdev  Год назад +2

      Thank you! Yes I will be definitely be covering more backend topics.

  • @puliranjit
    @puliranjit Год назад +3

    Love your learning videos ..well-structured , short and to the point

    • @alexhyettdev
      @alexhyettdev  Год назад +2

      Thank you! I am glad you like them!

  • @xiiEJRAM
    @xiiEJRAM Год назад +5

    Your videos quality and the content you made are epic , I really love your channel 👌🏻

  • @mishamovdivar
    @mishamovdivar 2 месяца назад +1

    Scaling is not an issue for Monolithic application and it's not gonna cost you fortune. Look at the Path Based Load Balancing which results in the similar flexibility when it comes to scalability for monoliths as for microservices.
    "When deploying one microservice, other microservices are not affected" - well, no, more often than not, they are affected

  • @adp8704
    @adp8704 Месяц назад

    this is beautifully explained - thanks for this.

  • @bvreddy1074
    @bvreddy1074 6 месяцев назад

    content and delivery at it's best, Thank you so much for your time and efforts, keep inspiring and educating 😊.

  • @eleojoadegbe
    @eleojoadegbe Месяц назад

    Thank you @Alex great video answered all my questions and more

  • @muhammadwaqasiqbal8243
    @muhammadwaqasiqbal8243 11 месяцев назад +1

    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

  • @vijayas8007
    @vijayas8007 11 месяцев назад

    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

  • @vktop2
    @vktop2 Год назад +3

    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

    • @alexhyettdev
      @alexhyettdev  Год назад +4

      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.

  • @somevids6230
    @somevids6230 Месяц назад

    For most business processing, you can get A LOT of mileage out of specific purpose built monoliths, and all of their inherent advantages. Spreading function calls out over vast networks should almost always be a last resort.

  • @yourownazog8069
    @yourownazog8069 7 месяцев назад

    amazing content and the level of my production. Thanks for what your doing

  • @Ramin_Esfandiari
    @Ramin_Esfandiari Год назад +1

    Very well done and concise video. Thank you.

  • @Jabali04
    @Jabali04 12 дней назад

    **Summary: Monolithic vs Microservice Architectures**
    1. Monolithic Architecture
    - All functionalities reside within a single codebase or project.
    - Simpler to develop and maintain initially, as it involves managing just one "component."
    - Internal communication is seamless, eliminating performance concerns between functionalities.
    - Challenges arise as the application grows:
    - Larger, more complex deployments.
    - Scaling issues: the entire application must scale, even if only one feature demands it.
    - Longer development and release cycles due to tightly coupled components.
    2. Microservice Architecture
    - The application is divided into independent, smaller services, each focusing on specific functionalities.
    - Advantages:
    - Independent maintenance, development, and scalability of components.
    - Greater flexibility to scale individual services based on demand.
    - Challenges:
    - Increased complexity in development, testing, and debugging, especially for multi-service environments.
    - Difficult to simulate the entire application locally.
    - Higher infrastructure costs for small-scale applications.
    Communication Between Microservices:
    1. API (Synchronous): Direct communication between components, often via REST or GraphQL.
    2. Message Broker (Asynchronous): Tools like RabbitMQ enable decoupled communication by passing messages between services.
    3. **Service Mesh:** Ensures service discoverability, communication reliability, and monitoring across microservices.

  • @fahadaslamtanoli
    @fahadaslamtanoli Год назад

    very good explanation can you explain when to use service endpoint or service bus

  • @expirationstrategist
    @expirationstrategist Год назад +2

    Very informational, thanks

    • @alexhyettdev
      @alexhyettdev  Год назад +3

      Thanks Marcin, I am glad you liked it!

  • @Pankecal-v4k
    @Pankecal-v4k Год назад

    this is such a gold content. Thank you so much Alex

    • @alexhyettdev
      @alexhyettdev  Год назад +1

      You're welcome, thank you for commenting!

  • @gangstaberry2496
    @gangstaberry2496 5 месяцев назад

    I love your videos ❤ I recommend them to everyone

  • @brayanjpm
    @brayanjpm 8 месяцев назад

    What do you think about tools like TurboRepo ? I mean, we can use that tool for our apps minimizing the disadvantages of monoliths ?

  • @gabrielnzete8913
    @gabrielnzete8913 6 месяцев назад

    Fantastically explained

  • @halooshka1904
    @halooshka1904 Год назад

    love the explanation! Very easy to understand :)
    Thank you

    • @alexhyettdev
      @alexhyettdev  Год назад +2

      I am glad you liked it! Thanks for commenting.

  • @Nicetrycutiepie
    @Nicetrycutiepie 7 месяцев назад

    great in detail explanation. thank you so much Alex.

  • @eugenek777
    @eugenek777 4 месяца назад

    Thanks for a very useful overview

  • @amitev
    @amitev Год назад +1

    Great content and great video quality! What microphone are you using?

    • @alexhyettdev
      @alexhyettdev  Год назад +1

      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.

    • @amitev
      @amitev Год назад +1

      @@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.

    • @alexhyettdev
      @alexhyettdev  Год назад +1

      Thanks for the ideas, I will add them to my backlog!

  • @Venkatesh-vm4ll
    @Venkatesh-vm4ll Год назад

    Really thank you for the word , start business with monolithic, i am confused in that

    • @alexhyettdev
      @alexhyettdev  Год назад +1

      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.

  • @elifantshoos708
    @elifantshoos708 7 месяцев назад

    Dying. The stock footage of code magically getting manifested on the scenes as the person is waving around their finger. LOL

  • @abelmillion4341
    @abelmillion4341 Год назад

    Good Job man, am grateful for your videos

    • @alexhyettdev
      @alexhyettdev  Год назад +1

      Thank you! I am glad they are useful for you.

  • @korniszon68
    @korniszon68 Год назад

    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 :(

    • @alexhyettdev
      @alexhyettdev  Год назад +1

      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!

  • @celsoguerra2234
    @celsoguerra2234 5 месяцев назад

    Many thanks. This information is super informative

  • @hmatpin
    @hmatpin Месяц назад

    In the case of Netflix, will different UI components talk to the same API and share the same authentication? If the JS talks to different APIs, how are the cross domain requests authenticated? Or is it that only one API talks to all microservices on the backend, and only one API returns the UI data?

  • @sosyalant
    @sosyalant Год назад

    you deserve more subs. Fantastic job

  • @nikoman71326
    @nikoman71326 4 месяца назад

    great video content and production!

  • @blakeacheson9387
    @blakeacheson9387 2 месяца назад

    The scale argument against a monolith doesn’t hold any water … if a certain part of your application is getting accessed more frequently it doesn’t matter … the other dormant areas of the system are just taking up a relatively small amount of disk … there is almost zero penalty to scaling replicas of everything

  • @yankluf
    @yankluf Год назад

    Sooo clear!! Thanks a lot! 😁

  • @imanshirkhodaee1704
    @imanshirkhodaee1704 Год назад

    This is a very helpful content. thanks a lot.

  • @faizanahmed9304
    @faizanahmed9304 Год назад +4

    amazing video

  • @rmanjit
    @rmanjit Год назад

    Great work !! This is high quality content !!

  • @marcocoratella1556
    @marcocoratella1556 8 месяцев назад

    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

  • @mumasmusic
    @mumasmusic Год назад

    Great work!
    One small suggestion tho. The constant bg music is quite distracting.

    • @alexhyettdev
      @alexhyettdev  Год назад +2

      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.

  • @geybriyel2416
    @geybriyel2416 7 месяцев назад

    this is very clear. thank you

  • @k.alipardhan6957
    @k.alipardhan6957 5 месяцев назад

    why is scaling a monolith considered hard/inefficient? 3:33
    if you're getting high CPU usage, just add more hosts to the cluster. isn't it that simple? it doesn't matter if 20% of code gets 80% of traffic.
    maybe problematic if some code is memory intensive while the highly used code is not

  • @MalkiNawal-u1u
    @MalkiNawal-u1u 6 месяцев назад

    This is just perfect

  • @vishalkarthik.v7209
    @vishalkarthik.v7209 Год назад

    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 !

    • @alexhyettdev
      @alexhyettdev  Год назад

      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.

  • @Munchopen
    @Munchopen 2 месяца назад

    Defining a monolith around how you code is organised in repositories is a complete misunderstanding of what it means to have a monolith. It’s is completely possible to have a monolith split across multiple repositories. It doesn’t make it a microservice either just because it’s a small amount of code in a single repository.

  • @vrjb100
    @vrjb100 Месяц назад

    When you cannot write a clean monolith, what make you think you can write clean microservices? When you cannot do the ops part of a monolith, you can do the orchestration of microservices?

    • @mfachrizal
      @mfachrizal Месяц назад

      Is right, the microservice just become giant monolith

  • @BenRangel
    @BenRangel 8 месяцев назад

    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

  • @tk7577
    @tk7577 2 месяца назад

    Awesome super helpful

  • @anjanigente4538
    @anjanigente4538 9 месяцев назад

    can one microservice depend on the other? and also is it necessary to have separate database for each microservice?

    • @mfachrizal
      @mfachrizal Месяц назад

      Definitely will have. Depend microservice to each other is something can't be avoided

  • @david2am
    @david2am Год назад

    thanks!

  • @joeddo
    @joeddo 9 месяцев назад

    great video. ty

  • @thisiskartik
    @thisiskartik 4 месяца назад

    Your video is awesome

  • @bramburn
    @bramburn Месяц назад

    Monolith 🌱🌱 done let's move on 😁

  • @ITSolutions-bl3dp
    @ITSolutions-bl3dp 7 месяцев назад

    Thanks ❤sir

  • @aminzuar5767
    @aminzuar5767 Год назад

    Thank uuuuu 🙏🙏🙏

    • @alexhyettdev
      @alexhyettdev  Год назад +1

      You’re welcome, I am glad it was helpful.

  • @kasparsr
    @kasparsr 9 месяцев назад

    modular modulyth

  • @kimberlyjacobsen4148
    @kimberlyjacobsen4148 Год назад

    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

    • @alexhyettdev
      @alexhyettdev  Год назад +1

      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.

  • @jonny.rubber
    @jonny.rubber 9 месяцев назад

    I feel the ping is unaccairy

  • @giorgikhachidze64
    @giorgikhachidze64 7 месяцев назад

    Service mesh wasn't explained clearly at all. Too vague.

  • @xConundrumx
    @xConundrumx Год назад +8

    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.

    • @alexhyettdev
      @alexhyettdev  Год назад +13

      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.