Man, Absolutely brillaint. really looking for more videos like this. also. if you can create a project starting from this high level system design until deployment it would be massive
Why don't we have full-fledge microservices course for building a real life microserivces using NestJS / Nodejs, Kafka, SQL databases and all other required tech stuff. I am sure this will rock. You can consider this as a request from my side.
Probably would have been worth going over data exchange between services a bit more - yes it is guaranteed delivery but, most likely, it's at least once delivery, so the services need to be able to handle duplicate events. Also probably worth discussing the web server and e.g. loadbalancing
This was awesome, if it is not too much to ask would it be possible to create a small application where you show us how we can configure all these together? Thank you
Sorry for the stupid question but, in this case the VPC would be a docker swarm cluster or a kubernetes cluster, or am I misunderstanding it? (keep in mind I'm going kinda blind into this and have been working with monolithic apps for 2y in school without putting much in practice)
why user service should send message to products service? if application must get information about products of the user, where and how this relationsheep will be processed? where the user-products many to many relationsheeps is being?
Why wouldn't you just log (info, err, debug etc) in the services, and hook up something like prometheus to cloudwatch logs? Feels weird having a /metrics endpoint in each service?
You're also logging a bunch of other stuff, so would be difficult for prometheus to know what it should ingest and what to ignore. The metrics endpoint is much easier and cheaper.
Massive thanks for sharing your knowledge and delivering it in your beautifully unique way! Quick question: What drawing tool are you using in this video? Anyone who knows is welcome to answer incase I missed it somewhere.
Im a little bit confuse on the connection between the BFF and the Webserver. When request comes in does the BFF calls the Web Server and for the response I assume the services like Product service will directly call the BFF for the response?
The BFF will make requests to the downstream services. All requests to those services go through the web server. All requests from the UI to the BFF also go through the web server because it's just a service like the others and it's the only way you can reach it from the internet
Nice video Tom! I did have some questions: You mention having a single load balancer for all services but I have usually seen it done with multiple load balancers allowing for ssl termination at each and thus zero trust. Is there a reason to go with a single LB other then reduced complexity? Also, why not use a daemon to export metrics and logs such as a data dog agent? I feel like having to setup metrics endpoints itsa lot of work, what are the benefits over the daemon?
any chance you can resurrect your expressjs tutorial from a couple of years ago and apply it to this? also what diagramming app is that? it's super cool
A caching layer is missing (Maybe more import than a BFF?) and from the scheme it's really hard to understand how horizontal scaling comes into play, but I love the video
I didn't add a caching layer because caches should only be used to solve a specific problem. I don't think it's a good idea to be shoving caches in just because they exist. But yeh, most implementations would have a cache somewhere
@@TomDoesTech I see your point but I have a hard time to share it, caching, in a way or another (it can happen on so many levels of your infrastructure sometimes you don’t even know it’s there), is always required in ‘Large Scale Applications’: it brings down costs so badly you can’t afford not to have it
I have a question: How would authentication and authorization work here? Would this be the job of the BFF? And also how do you test the Microservices/ How can you run them locally, if the have dependencies of let's say to an Auth and Permission Service and also to Kafka for sending and receiving events?
Auth would be handled by one of the microservices, in this case, probably the user api. There's different strategies for developing locally and testing. Mostly you develop on one service at a time and connect to the other services that are running in a staging/dev environment. You can also run services like Kafka locally, it's easy with Docker.
Better terminology for the BFF is API Gateway, "API Gateway" will be aware of where each service is located and automatically route requests to the service/server and back to the User Interface. I hope this is clear.
@@TomDoesTech To be honest, it was a bit hard to predict that as you didn't mention it at all. I do really appreciate your work, but those missing points can lead to someone implementing architecture in the wrong way. Thanks for your great work!
@@TomDoesTech : In the interviews i attend, I often get questions like, what are the tools you have used for HLD & LLD. Can you please help me with the answer for this?
Hey Tom and everyone, I'm new to microservice system design, and I'm wondering, we've accounted for a request which will hit our web server and will load balance/route our traffic to the necessary service, So, why do we need BFFs and why do they go from the user interfaces direct to the services and not as requests or considered requests? Also, if possible, recommend for me a resource i can use to understand this concepts better. Thanks
The BFF makes the UI simpler to develop. The BFF request do go through the web server, all requests going to the services, including the BFF go through the web server
hello sir, i watch all your videos i learn a lot. would you please make application based on the above technologies that you discuss above .it will be very beneficial for us
This design requires lots of CPUs and RAMs. It will cost a lot of money. This is a nice summary of microservices but most of them can be handled without any of this. Nevertheless, I liked your content. Thanks.
At this point you should have a separate playlist on system design, great content man!
Man, Absolutely brillaint. really looking for more videos like this.
also. if you can create a project starting from this high level system design until deployment it would be massive
that would be so valuable
I would definitely buy it
for sure, i'd buy it too@@tonskreee6213
Why don't we have full-fledge microservices course for building a real life microserivces using NestJS / Nodejs, Kafka, SQL databases and all other required tech stuff.
I am sure this will rock. You can consider this as a request from my side.
I went in blind into microservices and i learned alot
I used docker and kubernetes and nginx for routing and loadbalancing
best youtube channel to learn
Probably would have been worth going over data exchange between services a bit more - yes it is guaranteed delivery but, most likely, it's at least once delivery, so the services need to be able to handle duplicate events. Also probably worth discussing the web server and e.g. loadbalancing
I think that's a whole other video tbh. I just wanted to mention that the component would exist in the architecture
What's your opinion on microservices vs. the modular monolithic architecture?
Please make implementation series from this architecture
Thanks Tom!
Could I ask what software you're using to map all of this out? Looks handy for planning.
eraser.io
@@TomDoesTech Thank you!
Hey Tom, thanks, really appreciate. Cheers!
Great video, please create more videos like this.
more, more, more ! this is really cool. can you recommend any good resources for exactly this ?
Found what I was looking for in this video after going through a lot of videos. Thanks man! you earned my subscription
This is what I am looking for thanks alot !
Thanks, Tom
This was awesome, if it is not too much to ask would it be possible to create a small application where you show us how we can configure all these together?
Thank you
Yeah, that would be cool. Could also include Terraform and Docker
Thank you
@@TomDoesTech That would be great, Tom! Thank you.
Would love to see this, man! :)
I like the video but i dont see can we do one including load balancing , as well as gateway usage
Thanks for the video! What is the name of the white board tool you have used here?
Are you not essentially enhancing coupling and fault tolerance with BFF interface servers?
Great video! Please add more!
Tim is a veteran in passing knowledge. Thank you for your service. It would be great if you do a playlist or course on how these tools work together.
Who's Tim?
@@TomDoesTech sorry typo error, Tom
It was soooooooooooooo good, thank you so much, please make more contents about this kind of things (System Design, Infrastructure, etc)
this is from the starting or it is just casual project not us to build??
would love to see actual implementation
Sorry for the stupid question but, in this case the VPC would be a docker swarm cluster or a kubernetes cluster, or am I misunderstanding it? (keep in mind I'm going kinda blind into this and have been working with monolithic apps for 2y in school without putting much in practice)
why user service should send message to products service?
if application must get information about products of the user, where and how this relationsheep will be processed? where the user-products many to many relationsheeps is being?
Do you have any plan to implement the architecture, at least in a bare minimum level? Please do plan. Would be very helpful.
what is the softwere use to design this large microservice
Why does the BFF communicate directly with the services and not via web server?
Yeah, it would go through the web server. I was just showing where the request would end up
Why wouldn't you just log (info, err, debug etc) in the services, and hook up something like prometheus to cloudwatch logs? Feels weird having a /metrics endpoint in each service?
You're also logging a bunch of other stuff, so would be difficult for prometheus to know what it should ingest and what to ignore. The metrics endpoint is much easier and cheaper.
shouldn't the request go through the web server and then through an API gateway that sends the request to other microservices?
also the frontend can also retrieve the data from the gateway so we don't need multiple BFFs, am i right?
Massive thanks for sharing your knowledge and delivering it in your beautifully unique way!
Quick question: What drawing tool are you using in this video? Anyone who knows is welcome to answer incase I missed it somewhere.
app.eraser.io
Awesome video
Im a little bit confuse on the connection between the BFF and the Webserver. When request comes in does the BFF calls the Web Server and for the response I assume the services like Product service will directly call the BFF for the response?
The BFF will make requests to the downstream services. All requests to those services go through the web server. All requests from the UI to the BFF also go through the web server because it's just a service like the others and it's the only way you can reach it from the internet
Nice video Tom! I did have some questions: You mention having a single load balancer for all services but I have usually seen it done with multiple load balancers allowing for ssl termination at each and thus zero trust. Is there a reason to go with a single LB other then reduced complexity? Also, why not use a daemon to export metrics and logs such as a data dog agent? I feel like having to setup metrics endpoints itsa lot of work, what are the benefits over the daemon?
I've never seen it done with a daemon, but the endpoint are super simple to setup. You install a module and expose it's data to an endpoint.
any chance you can resurrect your expressjs tutorial from a couple of years ago and apply it to this? also what diagramming app is that? it's super cool
which draw tool are you using? I need to document my microservices but never find with nice icons like these
eraser.io
A caching layer is missing (Maybe more import than a BFF?) and from the scheme it's really hard to understand how horizontal scaling comes into play, but I love the video
I didn't add a caching layer because caches should only be used to solve a specific problem. I don't think it's a good idea to be shoving caches in just because they exist. But yeh, most implementations would have a cache somewhere
@@TomDoesTech I see your point but I have a hard time to share it, caching, in a way or another (it can happen on so many levels of your infrastructure sometimes you don’t even know it’s there), is always required in ‘Large Scale Applications’: it brings down costs so badly you can’t afford not to have it
Either way, we both know there is no right or wrong way of doing things here, so take it with a pinch of salt :)
I have a question: How would authentication and authorization work here? Would this be the job of the BFF?
And also how do you test the Microservices/ How can you run them locally, if the have dependencies of let's say to an Auth and Permission Service and also to Kafka for sending and receiving events?
Auth would be handled by one of the microservices, in this case, probably the user api.
There's different strategies for developing locally and testing. Mostly you develop on one service at a time and connect to the other services that are running in a staging/dev environment.
You can also run services like Kafka locally, it's easy with Docker.
@@TomDoesTech That makes so much sense, thank you
BFF part was a bit over the top. It make sense but find it hard to understand probably need a working example to understand it.
Better terminology for the BFF is API Gateway, "API Gateway" will be aware of where each service is located and automatically route requests to the service/server and back to the User Interface. I hope this is clear.
Nice video. what did you use for diagram? ?
Eraser.io
@@TomDoesTech thanks
ur too very awesome .......... in 10 minutes u made ms design simple
I don't understand why you didn't go over, the so-called , which servers a for all requests coming from to -service? Thanks
Sorry I don't understand your question
@@TomDoesTech Why isn't BFF service hidden behind gateway/load balancer (you named it webserver)?
@@VLADICA94KG It would be behind the web server, I was just explaining the flow between the UI and the BFF
@@TomDoesTech To be honest, it was a bit hard to predict that as you didn't mention it at all.
I do really appreciate your work, but those missing points can lead to someone implementing architecture in the wrong way.
Thanks for your great work!
What is that website you use for making these charts?
eraser.io
Nice explanation,Are you from Australia??
Yes
@@TomDoesTech Thanks mate!!! ,finally I am getting to know English accents of different regions. :)
what is that website your using to draw this out? how were you able to search for ec2 img
eraser.io
@@TomDoesTech ty sir
Hey Tom was looking for much more... Very short video
What's the tool you are using?
Erasor.io
@@TomDoesTech : In the interviews i attend, I often get questions like, what are the tools you have used for HLD & LLD. Can you please help me with the answer for this?
is this the short video or we do game the implementation code as well or video?
huh?
@@TomDoesTech i got the typo, I mean do you have long practical examples of this architecture or github repo for the code?
Excellent!!!!
Hey Tom and everyone,
I'm new to microservice system design, and I'm wondering, we've accounted for a request which will hit our web server and will load balance/route our traffic to the necessary service,
So, why do we need BFFs and why do they go from the user interfaces direct to the services and not as requests or considered requests?
Also, if possible, recommend for me a resource i can use to understand this concepts better. Thanks
The BFF makes the UI simpler to develop. The BFF request do go through the web server, all requests going to the services, including the BFF go through the web server
@@TomDoesTech alright, thank you for the clarification
good content
hello sir, i watch all your videos i learn a lot. would you please make application based on the above technologies that you discuss above .it will be very beneficial for us
Separate databases?👀
yes
Create full practical videos on large scale system micro-services using python would be better.
I've written about 4 lines of python in my life so I can guarantee it wouldn't be better
if all frontend is handled by BFF then who is calling the APIs. given that each interface have their own BFF
The BFF calls the APIs
@@TomDoesTech are they calling directly or through web server ?
@@AmansLab through the web server
@@TomDoesTech oh thanks i was confused
yes, products service goes down and you can still have orders 😂 … and whats this “go down” issue? … what junk hardware and o/s is this running on 😂😂
This design requires lots of CPUs and RAMs. It will cost a lot of money. This is a nice summary of microservices but most of them can be handled without any of this. Nevertheless, I liked your content. Thanks.
What architecture would you recommend in this case?
You just make a lot of noise without telling us which one people should go for
Tom knows how to build large scale application, but doesn't know how to use button delete instead of backspace 😂 (editing "products API" label)
lol
You could shorted these videos by 90% if you just used the final pic from the start. The thumbnail already says everything.
Right, but then people would be complaining that I should have started from the beginning.