Thursday, June 15, 2017

Skinny dipping in the Cloud

On a recent trip to the beach with my family, I noticed something very interesting. Not everyone was wearing the same swim suit. I saw every size, shape and color: itsy bitsy bikinis, wetsuits, boardshorts, and sun suits.

Every time you jump into a pool or ocean you have several decisions you need to make, but the most
important decision is what to wear. If you live in Northern California, like I do, you would be crazy to get in the water without a wetsuit. It is just too cold. But on the beaches in Hawaii in the summer wearing a wetsuit you would over heat not to mention be laughed off the beach from the locals. Then can you imagine what would happen if you showed up to a nudest beach in a wetsuit. You might even get arrested. :)

It is important to pick the right apparel for the right location, weather and occasion.  Not doing so could be embarrassing or land you jail. The same might be true of building out infrastructure in your Data Center. Many technologies claim theirs is the best and that is all you need. I would say it completely depends. It is naive  to think that containers or VMs should be the only technology in your data center. Just like the person that shows up to a nudist beach in a wetsuit.

So why are Private and Public Cloud vendors pushing Virtualization or Containers everywhere? There isn't one technology that solves all of your problems. It is important to understand the benefits of each of the technologies and how best to use them. With a large number of technologies I will  focus on compute technologies: Virtual Machines(VMs), Containers, and Bare Metal.

Virtual Machines - VMs (Wetsuits) 

Virtual Machines have been around since the 2000s. The largest vendor being VMWare. The technology has a rich ecosystem that has been established over the last 20-30 years. Most organizations have years of experience using VMWare in parts of their data center infrastructure. Here are some of the benefits of using VMs in your data center:

  • Isolation - The complete stack for the application is installed on the virtual machine. OS, Bin/Libs/Data, and applications. 
  • Compaction - Multiple VMs can run on the same machine at the same time, increasing utilization and efficiency in the data center.
  • Portability - Ability to move VMs from machine to another even on different underlying hardware architectures.
  • Migration - Ability to move running VMs from machine to machine to have fault tolerances and disaster recovery.
  • Management Infrastructure - There is a rich ecosystem that has been built over decades to manage, monitor and secure VMs across data centers.
Basically VMs give you protection and the ability to move applications quickly. Just like a wetsuit that protects against cold and rocks and coral at the beach, VMs can be flexible, give you security, isolation and protection.

Containers (Speedo)

Container technology has been around for about the same time as VMs. But they have really not taken off until the 2013 when Docker made using container easier to use. Docker made containers easier for developers to "spin up" new containers to service applications. Not only did they make them easier to use, but they made them "spin up" faster and consume fewer resources. The key behind the technology is sharing an operating system, at the same time giving some sort of process group isolation.
Some of the benefits of Containers are:
  • Process Isolation - Containers are created by creating process groups in the Operating System. Isolating process spaces from each other.
  • Compaction - 100s of containers can run on a single machine depending on the size of the application. Because they share the OS they don't care about the OS overhead.
  • Application Deployment - Docker has made it easy to deploy applications in containers. It has made it easy to repeatably deploy applications over and over again.
  • Spin up speed - Containers can spin up new instances in a matter of seconds, in some cases milliseconds.

The two most visible benefits of containers is speed of spin up, and the small memory footprint for each container giving the ability to put more compute instances on the same machine. In many cases 100s of containers can be put on a single machine where 10s VMs can be put on a machine. Container are just like a speedo. If you are in a swim meet you want the least amount of drag and you want to be fast. So you pick a speedo to where not a pair of board shorts. Containers are great when you need quick spin up and a smaller memory footprint.

Bare Metal (Skinny Dipping) 

Bare Metal means a computer without an intervening abstraction layer. Basically you are running your application on the hardware. Many times the Operating System is chosen based on the type benefits of the operating system and the application working together for optimizations for the application. Latency or speed sensitivity applications typically run on Bare Metal.
The benefits of Bare metal applications are:
  • Optimization  - Applications can be optimized to run on specific Si features (CPUs, or Chip Sets).  The same can be true for the Operating Systems.
  • No overhead - Since there is no abstraction layer or virtualization layer, there is no overhead layer using resources that are not being used for the application.
  • Custom Hardware - Ability to utilize custom hardware with the application is much easier than with containers and VMs.
  • Control - Because you are dealing with the hardware specifically you have complete control of the hardware and its components.
So with bare metal there is nothing between your application and the hardware. Much like skinny dipping in the ocean. You have total freedom. But you may lack protection from sun, sand and surf. These are things you have to take care of yourself. It is not built into the system.

Plan ahead

So why is it that when we talk to Private Cloud Vendors they are trying to sell us a wetsuit (Virtualization) for all of our computing needs. It is because that is how they grew to the size they are today. Virtualization and Containerization gave Cloud vendors the ability to overprovision their machines and get the most $$ for each machine. It is important for you to understand the benefits of each of the technologies and be smart about how you use them. 

In your datacenter you will see a mixture of these technologies. So you want to find a tool that helps you manage VMs, Containers and Bare Metal at the same time. We are starting to see many of the "Cloud Vendors" (OpenStack, VMWare, AWS, IBM Cloud, GCE) to offer management tools for all three. These tools are still in their infancy stage but it is a most welcome change in the industry.