DevOps 101: A Q&A with Bateman Group’s Experts

If you’re at all connected to the tech industry, you’ve probably heard of DevOps at one point or another. Many of us (guilty) smile and nod when it comes up but we wouldn’t be able to describe exactly what it is. So…what’s the deal with DevOps? I sat down with two of Bateman Group’s resident experts, James Niccolai and Francesca DeAnda, to break it down.

Can you explain DevOps in 100 words or less?

Companies are under pressure to deliver new products and services faster than their competitors. DevOps is a way of organizing teams that integrates developer (dev) and IT operations (ops) to increase collaboration and speed to market. Historically, these teams worked separately. By working together, they can identify potential problems before code goes into production and improve the performance and reliability of applications when they’re deployed.

How did DevOps come about?

DevOps was born to increase the pace of software deployment while improving performance and reducing errors in production.

Developers write code for new products and features. All new code has bugs; it’s the nature of software. Before DevOps, the wait time to push new code into production was often months or years. Code is now getting shipped faster, which means there is less time to test it. Meanwhile, the cloud has made applications more complex, which makes it harder to anticipate the impact of code on systems.

IT administrators (ops) are responsible for deploying the code and maintaining performance and uptime. As the number of servers they administer has grown exponentially, existing management tools have become ineffective at scale. Ops has to understand an application’s requirements and quickly diagnose errors, and they realized a lot of these errors could be avoided before code was sent to production.

What does DevOps do differently?

With DevOps, developers and ops teams often sit together and collaborate earlier in the development process. They automate parts of testing, deployment and other workflows, reducing time and errors by eliminating manual steps. In addition, new code is often written and tested in smaller chunks, further accelerating deployment times. That makes it easier to identify and roll back changes if anything goes wrong.

What are the benefits?

DevOps increases the pace of software delivery from months to days or hours. It also reduces bugs and other errors in production and allows teams to do less repetitive manual work and spend more time on rewarding tasks that benefit the business. Ultimately, when a company builds better products faster, you have happier customers and happier developer and ops teams.

So how does a company implement DevOps?

DevOps requires closer collaboration between departments, and there needs to be a shift in culture and processes for this to come about. It also requires the right tools. These include a tool to build and test code continuously (such as Jenkins), and a tool for source control– to manage, track and document changes to applications and configuration files (like GitHub). Tools for configuration management (like Puppet or Chef) are used to deploy applications in an automated way across hundreds or thousands of servers across different locations. Lastly, software from companies like AppDynamics or New Relic continuously measure the performance of an environment and applications.

Can you translate some DevOps jargon?

• Agile – A methodology that enables collaborative and cross-functional teams to move quickly. DevOps is inherently agile.

• CI/CD – Continuous integration (CI) involves merging code into a shared repository as it’s developed to ensure it will function properly. Continuous deployment (CD) involves shipping code as soon as it’s developed, often using automation.

• Infrastructure-as-code – Managing and configuring servers, virtual machines and other infrastructure using code rather than traditional management tools.

• Microservices – An approach to software development that involves building applications from smaller, discrete services that can be managed and updated independently of the larger application.  

• Containers – A technology that makes it easier to scale applications and move them between different environments. Think about the container as a wrapper that contains everything the target system needs to know about the application (code, runtime, system tools, system libraries and settings).

• Serverless – Serverless computing makes it possible to build and run applications and services without needing to worry about configuring and managing the underlying hardware.

Are you interested in DevOps and other trends shaping tech? We’re hiring in our Brooklyn, San Francisco and Portland offices.