Have you ever wondered how Google can handle so much requests per minute convincingly without any lag or downtime and that too at Godspeed?
The answer lies in it's Data Center
What is a Datacenter?
A Datacenter is a place where thousands of Linux Servers(mostly) are racked (aka rack servers) working down the clock for serving each requests at a scale larger than anyone can imagine.
Imagine a whole football ground with Servers
Pic Courtesy : Google Data Center Gallery
This is the map of the Google Data Centers around the Globe
You can get a quick snapshot of what a Datacenter is at the moment.
What is a Cluster?
As the name suggests Clusters are group of anything, in this case a group of Servers. The following illustration somehow details it
Pic Courtesy : Google Datacenter
You just got to know about cluster in the Datacenter. Let's take dig deeper.
Kubernetes
What if we want to build or emulate a data center of our own. Here Comes Kubernetes. Kubernetes or K8s as is commonly helps Containerized applications run with resources they need to run. Kubernetes is actually a result of Google's own Cluster Brainchild operating system called Borg.
Kubernetes Cluster Architecture
The basic Kubernetes cluster consists of a Control Pane and a Node
https://www.linkedin.com/pulse/step-by-step-guide-setting-up-kubernetes-cluster-md-rezaul-karim-1fpuc/
The kubelet is the primary "node agent" that runs on each node
What is Containerization?
Containerization as the name suggests helps contain an application with the tools they need to run such as environment variables, packages etc..
Think of it like a Sandbox or Delivery Container where everything you need is kept so that it can run as a single isolated units
How to Containerize an Application?
Well we usually containerize an application with Docker. Docker can package an application and its dependencies in a virtual container that can run on any Linux, Windows, or macOS computer. This enables the application to run in a variety of locations, such as on-premises, in public (see decentralized computing, distributed computing, and cloud computing) or private cloud.
Normally to Containerize an Application you need your application and a Docker File. That's it. A Docker File is a simple YAML File that will have the necessary details like:
- Base Image
- Working Directory
- COPY
- RUN Command
- PORT
This is more like the build, run command and env variables needed when running an application in production. Think of it like Deploying our application to Vercel or Netlify. We are Deploying our application to Docker Container in this case. The Dockerfile will create a Docker Image first and the Docker Image will be Containerized.
https://www.theserverside.com/blog/Coffee-Talk-Java-News-Stories-and-Opinions/compare-Docker-image-vs-container-difference-compare
Because Docker containers are lightweight, a single server or virtual machine can run several containers simultaneously.
Think of this ship. Each Container hosts an individual application or file. You can literally containerize anything from Google Colab notebook to a single image file or an entire application. The Choice is yours.
Docker Hub
You might have probably heard Github by now. Similar to Github, which hosts the source code of our applications, we have Docker Hub which hosts the Docker Image of our applications at https://hub.docker.com/.
Minikube
Now that you have a basic understanding of Kubernetes and Docker, let's focus on Minikube.
Minikube is a lightweight and simplified version of Kubernetes, primarily used for local development and testing purposes.While Kubernetes are multi nodes in real world scenario, Minikube allows you to run a single-node Kubernetes cluster locally on your machine. So this will be ideal for playing with it.
That's it we have learnt all the basics, now we can focus on Cyclops UI
Cyclops UI
Cyclops is an user interface for managing and interacting with Kubernetes clusters. This is more like a browser for Kubernetes Cluster without which we have to rely on Command line Terminals for managing clusters.
Cyclops UI Demo
Click the below image to watch Cyclops UI Demo