In this post, we take a high level look at DevOps and DevSecOps and see where Chef comes into play.

If you’ve been paying close attention, Progress (the company behind your favorite Telerik UI components) recently completed its acquisition of Chef.

Chef has been around since 2008 and is a well-established DevOps/DevSecOps company (more on those terms in a bit). Adding Chef to the Progress portfolio helps to round out a comprehensive offering of app development, management, and deployment tools and services.

So what does this mean for you, an app developer who just wants to write and ship code?

Traditionally, folks in IT operations weren’t the same people who wrote application code. In fact, they (again, traditionally) might not write code at all. This is part of what sets Chef apart: IT infrastructure and application delivery is initiated and managed as code. This invites developers to directly collaborate with IT operations and cooperate on infrastructure management and delivery of apps.

Before we continue, let’s make sure we are all on the same page regarding these “DevOps” and “DevSecOps” terms.

So What Exactly is DevOps?

Let me save you a trip to Wikipedia:

DevOps is a set of practices that combines software development (Dev) and IT operations (Ops).

DevOps is a fundamental aspect of collaboration between engineering and IT operations to deploy better code, faster, in an automated manner. DevOps helps to improve an organization’s velocity to deliver apps and services. It’s all about alignment: alignment of engineering and IT ops via improved collaboration and communication.

Maybe some examples would be useful?

In the old model of infrastructure allocation, you either allocate existing server space or purchase new servers. The dev team finishes building their app and transitions to testing. Ops works on provisioning servers and the extensive procedures required to deploy this new infrastructure. Under the DevOps model of infrastructure allocation, engineering and ops work together to allocate and provision access to cloud, on-premises, or hybrid infrastructures.

Likewise, the lack of transparency in infrastructure transparency led to engineering teams experiencing issues with failover, redundancy, unknown data center locations, and opaque storage. This is ironic as they are the ones with deep knowledge of the apps they are deploying! With a proper DevOps model, all of these issues can be resolved easily at least partially due to newfound collaboration between engineering and ops.

Another example is with load testing. Before going to production, load testing could crash the app in a staging environment. Releases would then be delayed, which infuriates stakeholders and requires other groups like marketing and sales to adjust their timelines. With DevOps, well before production load testing is done on pre-provisioned servers, identifying issues early. This allows plans to be adjusted earlier and expectations to be better managed.

DevOps Practices Improve Communication

So a lot of what DevOps delivers is improved collaboration and improved communication. You are also likely intimately familiar with continuous integration or continuous delivery (CI/CD). Those concepts dovetail nicely into the DevOps conversation as well. As again, these speak to launching products faster with higher quality into the market.

A typical IT process involves customers/stakeholders, developers, and operations. I think we can all basically agree on that. 👇

communication gaps in development

Agile is extremely important and addresses gaps in communication between customers and developers. 👇

communication gap addressed by agile

Whereas DevOps addresses these communication gaps that can exist between developers and IT operations. So DevOps addresses a fundamentally different part of development and deployment communication. 👇

communication gap addressed by devops

The DevOps Life Cycle

By now I hope you get my point that DevOps equates to a deep integration between engineering and IT operations. But you can’t truly understand (and appreciate) DevOps without visualizing the software development life cycle:

devops life cycle

  1. Development: Development is now a constant, right? In this phase the entire dev process is separated into small cycles. This enables the DevOps team to speed up both development and delivery processes.
  2. Testing: QA teams use tools like Selenium and Telerik Test Studio to identify and fix bugs in new code, and to perform regression testing on old code.
  3. Integration: In the integration stage, new functionality is integrated with legacy code and the aforementioned regression testing can take place. Continuous development is only possible with continuous integration and continuous testing!
  4. Deployment: Deployment also takes place in a continuous manner. Any time the code changes it shouldn’t impact the functioning of a highly used app or website.
  5. Monitoring: In the monitoring phase, the operations team will take care of any inappropriate system behaviors or bugs which are (inevitably) discovered in production.

#devops #programming

DevOps, DevSecOps, and the Telerik App Developer
1.70 GEEK