I heard this term Data Center operating system many times and tried to understand it from various websites and blogs but couldn’t get the basic idea of it.
What is DC/OS in simple terms and why do we need it?
Every-time the term pops-up and me:
So, I went through some tutorials and understood term like I explained below.
DC/OS (the DataCenter operating system) is an open-source, distributed operating system based on the Apache Mesos distributed kernel systems.
A system which runs over a cluster of different machines/processors.
In technical words, it includes a group of agent nodes that are coordinated by a group of master nodes. It uses the required resources from all the attached servers, as per requirement.
For Instance, we made a small cluster with 10 laptops/machines having powerful processors, big sized RAMs and storage and of course strong network connection. Now we can call this System a Distributed system and we can install an application/software which can run on a cluster.
Now we can install DC/OS on it and take the advantages of below explained features.
- DC/OS is an excellent open-source platform to run containers, micro-services and state-full Big Data applications.
- DC/OS manages multiple distributed systems ( i.e. Containers, Services etc. ), providing fast installation of those complex distributed systems, ready to run in production.
- On a simple process it takes much struggle to install Big Data applications like Cassandra, Jenkins, Kafka and many more. But on DC/OS installation is a click a button task.
- DC/OS has frameworks built-in for high availability and fault tolerance, so that we don’t need to reinvent the VM for every new application we build.
- DC/OS helps to simplify your Datacenter, e.g. it can turn 1000 machines into a single logical Computer. Provided a simple GUI, automated placement of tasks and intelligent workload scheduling, you can increase utilisation and drastically reduce costs hense the man power to operate your DC.
You can imagine the architecture by looking at the beautiful image below. It show how thing are getting managed at DC/OS.
Besides that DC/OS also provides a nice interface to manage and monitor your service and applications.
With everything about DC/OS there a word “Containers” you would have noticed. And I found that Container is an Idea which changed everything a few years ago in DevOps world.
Then, what’s a container?
So, the legacy system says we have virtual machines, we’ll install a server on it that may be Apache Tomcat, WebLogic or WebSphere etc. and the we’ll deploy our service on it given all integral resources like file system or data bases, as simple as that then why we need Containers? I’ll explain the difference here and then how did it changed the idea DevOps and how is it related to DC/OS?
A container ( if I say in very simple words ) is a sandbox for a process.
A sandbox that has a separate namespace for that process, that has cgroups (cgroups is a Linux kernel feature that limits, accounts for, and isolates the resource usage of a collection of processes ) that allows us to restrict what this process is able to do.
The life cycle of the process is tightly coupled with the life cycle of its container and it can only see the processes or resources which lies in the same container. It starts when the container is started and the container ends when the process exits. So, that is typically what a container supposed to be.
For instance, we have a processor having different processes running on it. These processes shares almost everything on this processor i.e. address namespace, process namespace etc.
Now let’s separate out these processes and containers for them, so the scene would be like this:
And every-time I say “container” I mean a container image. So, container image is something like a binary representation of some bits of a file system written somewhere on a disk, as the same way Virtual Machine Disk(VMDK) or Original Animation Video & Original Video Animation (OAV / OVA).
Every Image can have child image, grand-child image and so on, depending upon the layering requirements.
With that said an image can be drawn in a specific hierarchy much like the notion of binary snapshots, giving some more advantages to itself. For instance, it allows you to share images that is you can pull any binary state from the hierarchy and reuse the same state for some other things, and you don’t need to shift around the entire application stacks in single file system which is a disaster.
Another big advantage of this that it allows you to concentrate on specific things in specific places and keep track of where they are.
In 2013, a beautiful Linux based container was introduced called Docker by DotCloud which became Docker Inc. later. To understand Docker and have a good basic idea how to start you can visit Deploying Microservices on Docker.
So, as a conclusion, I hope, we can now relate thing and can differentiate previous system we were working on and the new DC/OS’s containerisation.