Monolithic Applications
A monolithic application is built as a single unit. They're typically complex applications that encompass several tightly coupled functions. If an application needs to scale just one component, all of the components must be scaled because they are tightly packed and impossible to separate.
Microservices
Microservices are an architectural and organizational approach to software development where software is composed of small independent services that communicate over well-defined APIs. Microservices are distributed and loosely coupled.
The transformation from a monolithic to a microservices
It's not that microservices are from the start of the tech era. Companies that find uses for microservices want to make the transition from monolithic to microservices. The enterprise faces a refactoring approach dilemma: a "big bang" approach or an incremental refactoring. Even after refactoring, there are several other challenges to face, like finding suitable tools to keep the project alive, choosing a runtime etc.
AppDirect
box
Pinterest etc.
are the companies that can succeed in the transformation.
Container Orchestrator
Orchestration is often associated with orchestration platforms that allow you to create a scripted interaction among services to automate workflows. Since microservices are autonomous in nature, it will be challenging for them to communicate with one another in an application. Here, the orchestrator aids in establishing microservices' inter-microservice communication.
Fault-tolerance
On-demand scalability
Optimal resource usage
Auto-discovery to automatically discover and communicate with each other
Accessibility from the outside world
Seamless updates/rollbacks without any downtime.
are the some sepcific requirements that meet by applications and services using container Orchestrators
K8S
"Kubernetes is an open-source system for automating deployment, scaling, and management of containerized applications".
Kubernetes acts as an orchestrator. But K8S is much more than a container orchestrator
With Kubernetes you don't need to modify your application to use an unfamiliar service discovery mechanism. Kubernetes gives Pods their IP addresses and a single DNS name for a set of Pods and can load-balance across them.
Kubernetes clusters allow containers to run across multiple machines and environments: virtual, physical, cloud-based, and on-premises
Kubernetes store secrets
A Kubernetes volume is a directory that contains data accessible to containers in a given Pod in the orchestration and scheduling platform
Kubernetes Architecture
A Kubernetes cluster is a collection of control plane nodes and worker nodes.
Control plane node
Control plane agents are in charge of managing the Kubernetes cluster. It is the brain of the cluster. At any cost, it is important to keep the control plane running. The loss of the control plane leads to downtime of the application and a huge loss in business. To ensure the control plane's fault tolerance, control plane node replicas can be added to the cluster, configured in High-Availability (HA) mode. The following are control plane components:
API server
control manager
Scheduler
etcd
Worker nodes
A worker node provides a running environment for client applications. The containerized microservices are encapsulated in pods and controlled by the control plane agents. Pods are scheduled on worker nodes, where they find the computing, memory, and storage resources they need to run, as well as networking to communicate with one another and the outside world. Pods are the smallest scheduling units. The following are Worker node components:
Container Runtime
Kubelet
Kube-Proxy
User interfaces