DevOps seems to get a lot of heart in the tech world lately, but few people really understand the meaning of it and it’s optimization capacity it holds. According to a CA Technologies survey, 45% of respondents didn’t know what DevOps is, and 17% think it’s just hype. Let’s take a closer look what DevOps really means and what’s the concept behind it;
What is DevOps?
DevOps literally means developers and operations. It’s a software development method that stresses communication, collaboration and integration between software developers and IT professionals. It’s a response to the interdependence of software development and IT operations. The concept behind it is getting developers and operations folk to work closely together to benefit the business; reduce friction and increase velocity. Continuous integration and continuous deployment, using configuration management, metrics and monitoring schemes, a toolchain approach to tooling…
Even using virtualization and cloud computing is a common practice used to accelerate change in the modern infrastructure world. Many businesses hire a DevOps specialist to boost communication between developers and operations while getting a deep understanding of the problems and limitations faced by each.
How does it work?
Applications still have to run on physical hardware, but where and what that physical hardware actually is becomes irrelevant to the developer and end-user alike. This is where the DevOps comes to shine. Google and Facebook are mostly using the same hardware as everybody else, but the the question is how they deliver their scale and innovation in code to customers? DevOps.
Automation solutions like SaltStack, Chef, Ansible, and Puppet are engines for massively pushing out changes to a computing infrastructure. All of them let programmers describe what they want their infrastructure to look like by way of common programming languages. The end result is making development cycles faster, which speeds up business. Thanks to the cloud, every company is in the technology business now, and the new role of the CIO is increasingly to provide value and keep the company at the top level. The end goal is for greater harmony between developers and operations to be the standard operating procedure.
In the DevOps world there’s been an explosion of tools in release (jenkins, travis, teamcity), configuration management (puppet, chef, ansible, cfengine), orchestration (zookeeper, noah, mesos), monitoring, virtualization and containerization (AWS, OpenStack, vagrant, docker) and many more. It’s incorrect to say a tool is “a DevOps tool” in the sense that it will bring you DevOps, there are certainly specific tools being developed with the express goal of facilitating the principles, methods, and practices, and a holistic understanding of DevOps should incorporate this layer.
Tools for application testing
Bamboo – Bamboo not only runs build and tests, it connects issues, commits, test results, and deploys so the whole picture is available to the product team, from project managers to devs and testers and sys admins. Deployment projects automate the tedium right out of releasing into each environment, while letting the user control the flow with per-environment permissions. It’s suitable for any language and other popular technologies.
Stash – Stash’s interface makes administration and management tasks way more simple. Stash supports growing Git repositories within the safety of one’s firewall. It helps create and manage repositories with Stash’s project structure and allows the uset to stay up to date with all the team’s branches with the branch listing page – within seconds.
Tool for test automation
Puppet – Puppet is an open source IT automation tool that allows IT organizations to encode the configuration of services as a policy, which the framework then audits and enforces. It allows you to define the state of your IT infrastructure, then automatically enforces the correct state. It works in 5 steps:
- Fact collection – the Puppet agent on each node sends facts about the node’s configuration – detailing the hardware, operating system, package versions and other information – to the Puppet master.
- Catalog compilation – the Puppet master uses the facts provided to compile data about how each node should be configured (the Catalog) and sends it back to the agent.
- Enforcement – the agent makes any needed changes to enforce the node’s desired state.
- Report – each Puppet agent sends a report back to the Puppet master, indicating any changes that have been made to its node’s configuration.
- Report sharing – Puppet’s open API can send data to third-party tools, so you can share infrastructure information with other teams.
Configuration management tools
Chef – Chef is a Ruby DSL (domain specific language) for configuring GNU/Linux (or BSD) machines (Windows is not well supported), it has 2 flavors, “Chef Server” and “Chef Solo”. It’s a Ruby script that uses “recipes” to install software and run scripts on GNU/Linux servers. You can run Chef over and over again safely because most recipes know not to, for example, reinstall something that already exists. The server uses Solr to index these attributes and provides an API for clients to query this information. Chef recipes can query these attributes and use the resulting data to help configure the node. Traditionally, Chef is used to manage Linux but later versions support Microsoft Windows as well.
Saltstack – SaltStack takes a new approach to infrastructure management by developing software that is easy enough to get running in seconds, scalable enough to manage tens of thousands of servers, and fast enough to control and communicate with them in milliseconds. SaltStack delivers a dynamic infrastructure communication bus used for orchestration, remote execution, configuration management and much more. The Salt open source project was launched in 2011 and is a fast-growing configuration management / systems management project.
The Devops movement is built around a group of people who believe that the application of a combination of appropriate technology and attitude can revolutionize the world of software development and delivery. In general, it has a positive effect – reliability, better user experience, availibility, speed and the focus gained to the core business rather than firefighting and administration issues.