Tuesday, November 1, 2016

2. Ease Pressures on Your DevOps Environment


By Rod Knowles


DevOps is the transformational effort to create harmony and productivity between development and IT operations teams, a topic we started to explore in our last post. 

The adaption in creating DevOps does not come without its own challenges. The lack of agility/portability and a plethora of operational inefficiencies usually leads to oppressed productivity, a loss of the competitive edge and, more importantly, unhappy developers. Nobody – and I mean nobody – wants unhappy developers. (It’s almost as bad as taking away their beer and Xbox controller.)

Server virtualization is the ability to run multiple operating system images – at the same time, on the same hardware. Server virtualization utilizes a software layer called the hypervisor. It is this hypervisor that emulates the underlying hardware, which includes (but is not limited to) the CPU, memory, network and I/O. While the performance of this virtual operating system usually isn’t equal to the performance of running on true hardware (though I have seen some applications and systems perform better when virtualized), this does allow for greater flexibility, control and reduced operating costs. 

You’ll find two types of hypervisors in use today:
  •  Type 1 hypervisors run on the host system hardware.They control the hardware resources and manage the guest operating system. Those include VMWare ESXi, Citrix XenServer and Micrsoft Hyper-V.
  • Type 2 hypervisors run within a formal operating system, usually LINUX, Windows or MacOS. This type of hypervisor runs as a distinct second layer while the operating system runs as a third layer just above the hardware. Some of those VMWare Fusion, Virtual Box and Parallels.
Containerization is the ability to encapsulate an application in a container within its own operating system. Containers are more streamlined and lightweight than VMs so you may be able to run six to eight times as many containers as VMs on the exact same hardware – which can help you reduce capital and operational costs. 

Containers include the application and all its dependencies - but they share the OS kernel with other containers. They run as an isolated process in user space on the host operating system. Virtual machines include the application and all of its dependencies, as well as an entire guest operating system ­­­– which could be hundreds of GBs in size. 

You’ll find several distinct advantages to using both containers and/or virtual machines. Containers are maintained at the application level, use less storage, memory and compute, have a considerable faster boot time, run on any infrastructure (cloud, physical and virtual) and require fewer OS instances to maintain so you’ll find lower OPEX and CAPEX costs. Virtualization allows for a single physical server to run and behave like many virtual servers and encompasses everything that is on a physical machine, allowing it to be flexible. It’s mature and established, resulting in a vast knowledge base of use cases, solutions and support, can run a wider range of operating systems and results in lower infrastructure costs. 

Using containers comes with disadvantages as well. Container technologies are advancing extremely fast. At times, it’s hard to know which technology you should us and you might end up purchasing from a less-established vendor. In addition, there are some perceived security concerns with running applications in containers - specifically around kernel exploits, DoS attacks from other containers, container breakouts and poisoned images downloaded from the internet. Virtual machines are not free from having their own set of drawbacks as well. They are much slower to share, require more OS licenses to purchase, are hard at times to size appropriately and require more OS patching and time to maintain. 

Containerization is moving forward fast. More applications are becoming containerized, which creates thousands of container images to validate, scan for vulnerabilities and deploy.Orchestration mechanisms like Docker Swarm, which allows for a pool of Docker hosts to be turned into a virtual Docker host, are becoming more available as well. Cloud-native development platforms like Docker Datacenter and HPE Helion Cloud Native Application Platform are becoming increasingly popular. They allow for developers and IT operations to collaborate more efficiently bringing security, policy, and controls to the application life cycle without sacrificing agility or portability.

Next time, we'll dig a little deeper into one of the hottest container resources in the market today.

Rod Knowles is a solution architect with Convergent Technologies Group.

No comments:

Post a Comment