Nest.js Microservices Tutorial in 20 Minutes

Sdílet
Vložit
  • čas přidán 6. 01. 2022
  • In this short tutorial, I show you how to create a Nest.js project with Microservices along with an API Gateway.
    Github Repo: github.com/mguay22/nestjs-mic...
    Nest.js Documentation: docs.nestjs.com/microservices...
    Get my highly-rated Udemy courses at a discount here: michaelguay.dev/udemy/
  • Věda a technologie

Komentáře • 111

  • @Jasonjk74
    @Jasonjk74 Před rokem +10

    Great video and an amazing amount of practical info/learning packed into 18 minutes

  • @rafaelfranco7643
    @rafaelfranco7643 Před 2 lety +13

    Finally a good example of microservices using nestjs! Thank you very much.

  • @ChromaDotNova
    @ChromaDotNova Před 8 měsíci +5

    First time stepping into the realm of microservices - I still had some questions after reading the NestJS documentation so I went to CZcams, found your video, and after watching I understand the fundamentals a lot better. Thanks so much for taking the time to make this!

  • @danielborges8857
    @danielborges8857 Před 2 lety +1

    Your examples communicated some key concepts and clarified nest js implementation options. Thanks

  • @progressnwimuelekara2167

    Wow! Great video. Really commendable! I mean, in literally 20 minutes I've gotten a detailed, conceptual image of the entire NestJS Microservice technique

  • @Alex-bc3xe
    @Alex-bc3xe Před 6 měsíci +2

    Hmm I really didn't expect that it will be so easy explained. Great Job, a great developer understands he needs only to get the principles and basics right, the rest is his job and you delivered exactly that.

  • @chrismantonuk
    @chrismantonuk Před 2 lety +5

    Great, thank you - a lot clearer to me now! You covered everything

  • @hollynderisse645
    @hollynderisse645 Před 2 lety +1

    Thank you very much for sharing this tutorial. It's well explained and very helpful

  • @illia_mikhow
    @illia_mikhow Před 2 lety +5

    Loved the pace of a video. Short and filled with information. 10/10

    • @itmax77
      @itmax77 Před 2 lety +1

      I think I've seen you somewhere

  • @vinimaciel
    @vinimaciel Před 7 měsíci

    Awesome video, you made it so easy to understand

  • @malkasoft
    @malkasoft Před rokem

    Amazing tutorial! Thanks for sharing

  • @maksymbaranovskyi8362
    @maksymbaranovskyi8362 Před 2 měsíci

    Thank you so much! Such a simple yet clear example.

  • @avimehenwal
    @avimehenwal Před 10 měsíci

    Excellent vide Michael, love your content and way of explaining things. Keep it up

    • @mguay
      @mguay  Před 10 měsíci +1

      Thank you!

  • @ayoubguismi4558
    @ayoubguismi4558 Před 2 lety +2

    As always simple and clear explanation, thank you michael !

    • @mguay
      @mguay  Před 2 lety +1

      Thank you as always, Ayoub!

  • @EstebanHelgueroCardiff
    @EstebanHelgueroCardiff Před 11 měsíci

    Awesome video!

  • @nnu5510
    @nnu5510 Před rokem

    Great video, thank you.

  • @ikr0525
    @ikr0525 Před 11 měsíci +1

    Thank you! Awesome video! In our company, someone was assigned to setup the microservices and I really did not mind to understand because I believed it was too complex for me. As long as the microservices were all set up, i just continued coding as usual.
    This video made it very easy to understand and I can now see why the dev who setup the microservices decided to go with certain approach.
    I'm curious about the authentication across different microservices, though. Can you make a video for that if possible? That would be amazing!

  • @jasonryu4495
    @jasonryu4495 Před rokem

    Thank you! Very good for me.

  • @romeobetances7964
    @romeobetances7964 Před 2 lety

    Great job!

  • @PeterAkaliro
    @PeterAkaliro Před 2 lety

    wow! so simple lol.... You are a life saver bruh

  • @LasparkOficial
    @LasparkOficial Před rokem

    Nice work!!

  • @mahmoudfathy6332
    @mahmoudfathy6332 Před rokem

    Amazing man 👌

  • @talhacoder5084
    @talhacoder5084 Před 9 měsíci

    that was so beautiful 🤯

  • @yousoffatomi
    @yousoffatomi Před rokem

    thank you for record this video ♥

  • @imranabdulmalik3591
    @imranabdulmalik3591 Před 15 dny

    You're the best!

  • @homelander973
    @homelander973 Před 10 měsíci

    thank you a lot bro, it was really helpfull

  • @siamak.hatami
    @siamak.hatami Před 4 měsíci

    Great, thanks.

  • @danilopootaren4512
    @danilopootaren4512 Před rokem

    I loved it !! Quick question, would this work the same with docker container?

  • @shalandichannel
    @shalandichannel Před rokem

    Is there a way to use the TCP transport pattern with external apis that are not written with nestjs? And is it possible to use other TCP ports that are private to the microservices when dealing with TCP communication? Or must the traffic all go through the single "3000" port?

  • @Thikondrius
    @Thikondrius Před 8 měsíci

    Great tutorial simple, and clear. Good job.
    Btw can I ask what your vscode theme is ?

  • @larswolter669
    @larswolter669 Před rokem +1

    How do you effectively test automate these event / message based applications?

  • @mguay
    @mguay  Před rokem

    Get my highly-rated Udemy courses at a discount here: michaelguay.dev/udemy/

  • @muratasarslan2359
    @muratasarslan2359 Před rokem +1

    thanks a lot. very helpful. is there a way to avoid duplicating CreateUserEvent in all microservices?

  • @sg0101010
    @sg0101010 Před rokem

    Great video. Question: I'm getting a "no elements in sequence" from the getAnalytics call ? I'm on version 9.x.x

  • @ericww32
    @ericww32 Před 2 lety

    Is there a way to grab any message pattern and put it into a variable?

  • @cholasimmons
    @cholasimmons Před 10 měsíci

    Subscribed!

  • @jithinjacob2181
    @jithinjacob2181 Před 2 lety

    How can it handle parallel processing of requests in the backend, mostly i have seen people use Java /Python to work out the backend

  • @tesla1772
    @tesla1772 Před 2 lety +1

    i didn't understand how microservices get the event. http based api it is understood that port and ip is given but how does microservice listen to event

  • @lialia3293
    @lialia3293 Před 2 měsíci

    Great !

  • @eihsan94
    @eihsan94 Před 2 lety +4

    Would like seeing this deploy using severless framework and lambda

  • @hariharamoorthis3488
    @hariharamoorthis3488 Před rokem

    Hi... Thanks for your tutorial... Can you please clear my doubt?.. can we call api endpoint of communication or analytics microservices?

  • @sabinshrestha267
    @sabinshrestha267 Před 11 měsíci

    amazing

  • @sumitpatil7084
    @sumitpatil7084 Před 2 lety

    Hello Michael how can i use typescript in nestjs

  • @deliomarcosdacostajunior3036

    Thanks from Brasil ! õ/

  • @maximcoding2667
    @maximcoding2667 Před rokem

    How is it different from with gateway api + createProxyMiddleware ?

  • @temidayomichael4646
    @temidayomichael4646 Před 2 lety

    Which one would you recommend between this pattern and the monorepo micro services pattern in your latest video and what’s the best practice in deployment and repo management? I think I like the monorepo more cos my team is small but I have no idea on the deployment. Thanks a lot!

    • @mguay
      @mguay  Před 2 lety

      Really it depends on the differences between Kafka and RabbitMQ. I would also recommend a monorepo for smaller teams as it is easier to work with, but it is also makes deployment easier.

  • @diegoalonso2832
    @diegoalonso2832 Před rokem

    I have a doubt
    Is there another way to consume mi grpc service without an api gateway?

  • @millerbyte5579
    @millerbyte5579 Před 2 lety +9

    What's the point in using the event-based communication pattern if we have to declare / inject all the subscriber microservices (sample-analytics, sample-communication) within the publisher microservice (sample-backend)? Isn't one of the primary advantages of event-based communication the fact that the service publishing the event doesn't know / care about any downstream services that may subscribe to it? This seems like there's still tight coupling between services. For example, what happens if I want to add another service that cares about the user_created event -- will I have to modify the sample-backend to allow this? Seems like an antipattern. This isn't a criticism of you or the tutorial -- thank you for sharing! It's more a criticism of NestJS if this is how the expect you to handle event-based communication.

    • @mguay
      @mguay  Před 2 lety +5

      This is a great criticism and I wholly agree. I’m making a new Microservices video that uses RabitMQ as the messaging broker which allows us to remedy a lot of these concerns around tight coupling. Thanks for watching!

    • @millerbyte5579
      @millerbyte5579 Před 2 lety +1

      @@mguay Thanks for the reply, looking forward to the updated video!

    • @abdelhalim731
      @abdelhalim731 Před rokem

      but this is good for communication between servers no?

  • @zackinfos5933
    @zackinfos5933 Před 5 měsíci

    thank you Michael for everything,
    well how do you compare this approach adopted by you, where you have added multiple nestjs projects to one aorkspace, which i found flexible, VS or compared to the one adopted by nestjs monorepo (apps)?
    well honestly i find this approach more flexible as i have said above for many reasons:
    - Scalability.
    - Teams and colaboration.
    - Multi-lang dev environment.
    - Database per microservice and the hustle of dealing with monorepos setup and configs for shared files and packages like prisma for example.
    - Avoiding limitations by any given framework, which makes you finding yourself dealing with solving problems by the same language often with the help of the same tools which results at the end of the same results, thats what stand agains the microservices principle and patterns.

  • @raneanish21
    @raneanish21 Před rokem

    How to implement multiple messagepatterns?

  • @xixayyumiko6766
    @xixayyumiko6766 Před rokem

    how do I do if I made the microservice apart

  • @user-kh5bk6ld5d
    @user-kh5bk6ld5d Před rokem +1

    What is that theme? pllz

  • @Olixis
    @Olixis Před 2 lety +4

    How does the "sample-backend" knows that "COMMUNICATION" refers to the "sample-communication" microservice? As far as I saw the "COMMUNICATION" token is only at the "sample-communication" microsservice

    • @muhammadsalikin3886
      @muhammadsalikin3886 Před rokem +1

      by using ClientProxy, sample-backend which acts as gateway is basically the one who reach out to the other services.

  • @alexsapon8769
    @alexsapon8769 Před 2 lety +3

    Nice example
    I would suggest you to use monorepos feature that Nestjs provides, quite smooth microservices architecture at the end, plus gives you ability to clean your codebase from code duplication such as dto's you're using across the services
    best regards

    • @uchihaashura5021
      @uchihaashura5021 Před 2 lety

      Hi but I'm quite struggle to exclude unnecessary dependency for each app, for example we add a new dependency for ervice A, but we don't need it in service B, when building docker image we are include all this dependencies, how we can exclude them to reduce docker image size ?

    • @mcc12000
      @mcc12000 Před rokem

      @@uchihaashura5021 having a monorepo doesn't mean that you have a single docker image i guess.

    • @sndro1
      @sndro1 Před rokem

      Does this mean that I can share models across services? Do you have any recommendations for tutorials about this?

    • @aungmyatmoemakescodework
      @aungmyatmoemakescodework Před rokem

      @@sndro1 Model should not be shared to the others services. They should be domain specific to their own service. So that you have to attach service related domain object to your service

    • @sndro1
      @sndro1 Před rokem

      @@aungmyatmoemakescodework I do understand that but how do I share typescript types for these models/services (so that the consuming service knows what it gets)?

  • @jafar1607
    @jafar1607 Před 6 měsíci

    Brother. Can we have a multi tenant example with nest js ?

  • @manorinfinity
    @manorinfinity Před rokem +1

    Thanks for the video. Loved it. It would be good if you could do a video on microservices and monorepo in nestjs. I mean how do you create a monorepo microservices project in nestjs where we have one API gateway for http requests and all the other microservices listens to events sent by API gateway without allowing http requests on their own.

    • @mguay
      @mguay  Před rokem +1

      My new Ultimate Nest.js Microservices course will cover this! Stay tuned for its release in May.

  • @alvin3171997
    @alvin3171997 Před 2 lety +3

    Hi Micheal, have you used any backend framework in the past? Like Fastapi etc.
    Just wondering what’s the pros and cons of using Nestjs.
    Thank you so much for the video!

    • @mguay
      @mguay  Před 2 lety

      Good idea for a future video!

  • @verrymariyanto8377
    @verrymariyanto8377 Před rokem

    i learn a lota from this tutorial,, can you give litle bit explanation about how to get some return result about using this method,, if we using try catch in controller,, thx

  • @HarikrishnanM0
    @HarikrishnanM0 Před 2 lety

    At what situations we should go for a microservice architecture ? I am basically developing rest apis .So how can we make a decision on building a micro service ?

    • @mguay
      @mguay  Před 2 lety +1

      Microservices help you manage complexity as the size of your application + team grows. For simple projects with one developer, they're not as necessary in my opinion.

    • @HarikrishnanM0
      @HarikrishnanM0 Před 2 lety

      @@mguay ok got it

  • @user-qn7gq1xp2s
    @user-qn7gq1xp2s Před rokem +1

    When i run 'sample-communication' app (after 'sample-backend' is running) - i got an error that port 3000 already in use...Could anyone give me an idea?

    • @navinmishra6038
      @navinmishra6038 Před 5 měsíci

      As the communication microservice by default listens to 3000 port, we need to make backend server listen to another port(eg: 3001). Then we can run both service

  • @yadneshkhode3091
    @yadneshkhode3091 Před 2 lety

    How to use request body in services? without passing the body in functions in controllers

    • @mguay
      @mguay  Před 2 lety

      I may make a video on it in the future, but check out github.com/nestjs-steroids/async-context

  • @jazzdestructor
    @jazzdestructor Před 2 lety

    Hey guys, What is the difference between emit and send methods?

    • @sarunmrzn
      @sarunmrzn Před rokem

      I believe emit actually sends a request to the ms but send just proxies the entire request to ms, correct me if im wrong

  • @lardosian
    @lardosian Před 2 lety

    Could all these services be split into their own repo?

    • @mguay
      @mguay  Před 2 lety

      Sure you could but I’d say that typically doesn’t follow the standard practice of micro services. At the end of the day though do what best fits your needs.

  • @saurabhtalele1537
    @saurabhtalele1537 Před měsícem

    🎉🎉🎉cool

  • @minhazahmed128
    @minhazahmed128 Před 11 měsíci

    This is good but this is gonna take a lot spaces, why not using nestjs workspaces?

  • @martinavalos1626
    @martinavalos1626 Před rokem

    what do you think about using prisma package for handling databases queries? did you ever use it ?

  • @nanonkay5669
    @nanonkay5669 Před 2 lety

    Next, you show how to do it using a message broker

  • @narrajayasri94
    @narrajayasri94 Před rokem

    I am unable to get the output can u guide me or respond to my comment. Plz

  • @miguecast
    @miguecast Před rokem

    Do you know that Guay is a very common 80's spanish expresión that means "cool"?

  • @ninjatikeidu
    @ninjatikeidu Před rokem

    At first it didn't work for me, after a while I understood that I needed to establish the host and port when registering the ClientsModule, after that it worked correctly, tks

  • @Varshakumari-uz8uo
    @Varshakumari-uz8uo Před rokem

    Why I am getting listen EADDRINUSE : address already in use error.

    • @foued619
      @foued619 Před rokem

      same problem, that's because both servers are trying to run on the same port (3000)

    • @navinmishra6038
      @navinmishra6038 Před 5 měsíci

      @@foued619 As the communication microservice by default listens to 3000 port, we need to make backend server listen to another port(eg: 3001). Then we can run both service

  • @SRPPixels
    @SRPPixels Před 2 lety

    when starting the communication server after running sample-backend. it is giving error that port 3000 already in use

    • @SRPPixels
      @SRPPixels Před 2 lety

      I also cloned your github project. it is still giving the same error

    • @cess_uyi
      @cess_uyi Před 2 lety

      Me too!
      Please how did you resolve this?

    • @hakeemullahjan
      @hakeemullahjan Před 2 lety

      Still facing the issue after changing the PORTs.

    • @akhil0227
      @akhil0227 Před 2 lety +2

      on sample-backend in main.ts file . await app.listen(3001) and on sample-communication main.ts file - Transport.TCP, options:{port:3000} . use postman to send request in localhost:3001

    • @thaingocnguyen1015
      @thaingocnguyen1015 Před 2 lety

      me too, i don't know why it can work on his machine @@

  • @umer.on.youtube
    @umer.on.youtube Před rokem

    Do not use a stupid max. Get on Windows.

  • @hakanaki
    @hakanaki Před rokem +1

    Please some question.
    - Why did you choose use TCP instead of GRPC and what are the benefits?
    - How do you host something like this 🥲🥲
    - Is it possible to share code between services, like types or DTOs?
    Thank you for this video BTW, I've been struggling with this concept and you just simplified it in one short video. 👏🏽👏🏽

  • @nditahsamweld346
    @nditahsamweld346 Před 2 lety

    Hi Michael Guay, what's your twitter handle. Nice job!

    • @mguay
      @mguay  Před 2 lety

      Thank you! I don't have a Twitter though.