What is service discovery?
Last updated
Last updated
A key problem in deployment is getting services to be able to find each-other
A database might be at 10.1.1.1:6543 while the webserver is at 10.1.1.2:8080
Everything is manually configured
You'll know you should start caring about service discovery when you start seeing one of the following:
You want "zero downtime deployments" or to use other, more complex deploy strategies
You have more than a couple of microservices
You are deploying to several environments (dev, staging, prod) and it's getting unwieldy
A straightforward approach: Store the service IPs in a hash table
The hash table in question in the config is here:
In simple term:
All you need to do is update your frontend to set the keys in the hash table to be the forntend's IP
Then make the backend do the same for the backend
It's complex
It's error prone
It requires to write custom config files
The idea for DNS is just to map hostnames to IPs. This is the industry standard
It would be ideal if we could connect to "http://frontend" from our reverse proxy and having DNS respond with the IP for the correct versions of the frontend
So instead of the first example where you use the IP
You would use mongo
where mongo
is a key in the key:value pairs