Daily Dev Tracker

A minimal and sleek daily developer productivity tracker.


Project maintained by devil-1964 Hosted on GitHub Pages — Theme by mattgraham

Networking

Essential Networking Concepts with examples

Think we are making a website.

How user can access our website from their browser?

Now IP address is in numbers, its hard to remember.

Now our website is sharing three different things - WebApp, Database, Backend Logic on the same IP address. How request know which application to go to?

Hosting everything on a single ip address, what if hacker wants to attack our website?

Now how do subnets communicate with each other?

We can’t open all ports to the public, how do we secure our application?

Now we need to scale our application to handle more users. We now had 50 backend servers in backend for security. These have private IP addresses. How do we route traffic to these servers?

Now we are handling hardware, so we decided to move to cloud.

As we grow, it is more complex to manage everything manually. We now have more dependencies, more services, more things to configure, we need to go microservices to make it scalable.

Now container introduce new networking challenges.

Now we have multiple containers running on multiple servers. How do we manage networking between them?

Now we have to manage hundred of containers. Managing networking manually is not possible.

We use automate all of this using Container Orchestration tools like Kubernetes.

Now we need to expose our application to the internet.