Development Operations (DevOps) is a new culture. It first appeared in 2008 during a Patrick Debois talk and several DevOpsDays later, DevOps engineers are key players in any software project.
First DevOpsDay Video
This culture brings together two worlds to create a multi-disciplinary approach to software development, trying to make it more efficient than before. Communications and collaboration between developers and operations was always an issue in any project (as least in my experience).
Now, with DevOps engineers as part of the development team, software is crafted in one continuous process.
Basically, DevOps deals with delivery times. If we deliver software faster, we will have a quality product faster. We do this by carrying out 5 main tasks:
These tasks can be achieved by doing what sysadmin does best:
A DevOps engineer must have a solid *nix, networking background and great scripting skills in the following: Ruby, Python and Shell script.
With low-cost hardware (computers and storage devices) and modern high-capacity networks, Internet-based computing led to a broad variety of services that are now called “Cloud computing”. Big players dominate this market today, making knowledge and hands-on experience fundamental for DevOps engineers.
Big players in the cloud computing business are:
Now let’s make a list of tools that are the foundation for DevOps.
Chef is an automation platform that allows the use of code to create your infrastructure. The main components are Chef DK, Chef server and clients.
Chef uses Ruby and Erlang to create cookbooks that groups recipes to describe how to manage applications and utilities in servers.
Puppet is a master/agent architecture that describes machine configurations in a declarative language. Like Chef, Puppet also uses Ruby to create those configurations.
Ansible is an automation engine that helps in most DevOps related tasks (provisioning, configuration management, deployment and orchestration).
It uses Python and YAML to describe reusable configurations for the systems involved.
Vagrant is a tool for development environments, it helps build easy to use VMs (virtual machines) that reduce setup times for developers.
Docker is a project that uses software containers to deploy applications. It is an additional layer of abstraction to the virtualization world.
It uses images based on the Linux kernel that allow running multiple “containers” in a single Linux instance.
Kubernetes is a container cluster manager designed by Google, it's architecture is based on nodes (single machine or vm) and a control plane.
In the next part of this article I’ll talk about the certifications needed for any DevOps engineer and really cool online courses that you should take to be a master in this field.