preloader

DevOps

Overview

DevOps is a culture, not a title.

Like a lot of industry terms, every organisation defines DevOps differently.

Taking one definition;

DevOps is a set of practices that combines software development and IT operations. It aims to shorten the systems development lifecycle and provide continuous delivery with high quality software.

DevOps is often conflated with Agile but in truth, compliments it.

Are we DevOps yet?

Ask yourself the following questions to find out…

Tip

This checklist is an extended version based on the fine work over at DevOps Checklist and is intended to be used to gauge the maturity level of software delivery competency and form a baseline to be able to measure future improvements. It’s not meant to say that you’re failing DevOps but rather to surface the areas that need improvement.

Alignment

Unifying group and individual direction and goals around the singular vision of the organization.

QuestionAnswer
We prioritise according to business objectivesYES/NO
We volunteer for tasks rather than have them assignedYES/NO
Our team has clear objectives the correspond with our company visionYES/NO
Our product team is focused on sustainable velocity not than current speedYES/NO
We focus on time to repair rather than time between issuesYES/NO
DevOps is not isolated to a specific role in our organisationYES/NO
DevOps is not isolated to a specific team in our organisationYES/NO
Our operational functions are seen as a source of competitive advantageYES/NO

Learning

Empowering personal growth and fostering understanding through continuous improvement.

QuestionAnswer
We cultivate an environment of continuous learningYES/NO
We regularly celebrate our product team’s learnings and success internallyYES/NO
We identify skills needed to improve or address future objectivesYES/NO
We strive to examine how we complete our work effectivelyYES/NO
We estimate based on measurement and past experienceYES/NO
We provide security training to developersYES/NO

Lifecycle

Focus on software as a product deserving of care, attention and reflection, within and ever changing ecosystem.

QuestionAnswer
Our software development cycle is two weeks or lessYES/NO
Our software development cycle is defined by releasing into productionYES/NO
We stop development upon discovering a defect and prioritise it’s repairYES/NO
Developers or product owners are able to deploy our product to productionYES/NO
We have automated testing prior to automated production deploymentYES/NO
Our configuration of systems is automatedYES/NO
Our deployed system configuration is immutableYES/NO
Our release and deployment automation is environment agnosticYES/NO
We make security part of the entire development processYES/NO
We test security throughout the development lifecycleYES/NO
We automate as many processes as possibleYES/NO
We monitor processes, infrastructure and applicationsYES/NO
We generate actionable alerts when there are issuesYES/NO

Organisation

Providing structure for interaction and cohesion supporting collaboration and productivity.

QuestionAnswer
Our organisation is configured around cross-functional teamsYES/NO
Our teams are customer and product orientatedYES/NO
Our developers have access to production-like systems to work and test onYES/NO
Our developers have access to production-like data to work and test againstYES/NO
Our developers have access to dependencies required to build and testYES/NO
We encourage secure employee behaviourYES/NO
We check employee behaviourYES/NO
We do regular spear-phishing campaignsYES/NO

Process

Rituals crafted to foster consistency and confidence, providing a framework for continuous improvement.

QuestionAnswer
Our organisation follows agile development practices.YES/NO
We regularly examine constraints in our delivery processYES/NO
Our system configuration is committed into version controlYES/NO
We practice test or behaviour driven developmentYES/NO
We test our changes against a merge with our mainline codeYES/NO
We test out changes against production-equivalent load and use patternsYES/NO

Protection

Protecting resources before, during and after development.

QuestionAnswer
We use security best practices and toolsYES/NO
We detect and block unusual behaviorYES/NO
We automate security testing and protectionYES/NO
We automate data policy managementYES/NO
We complement automatic testing with creative manual testsYES/NO
We follow post-production protection best practicesYES/NO
We limit our attack surfaceYES/NO
We use security tools than continue to evolveYES/NO

Code

Securing the entire toolchain.

QuestionAnswer
We code security into our applicationsYES/NO
We continuously review code at every stageYES/NO
We introduce chaos into the comfort zoneYES/NO
We maintain inventory of all applications and componentsYES/NO
We scan and secure open source and third-party componentsYES/NO
We run security analytics programs against all codeYES/NO

APIs

Monitoring and securing APIs.

QuestionAnswer
We secure all APIsYES/NO
We authenticate and authorize all API usersYES/NO
We apply security policies to APIsYES/NO
All transmission paths are securedYES/NO
We validate all input data, responses and content typesYES/NO
We use RBAC to manage access to resources and operationsYES/NO
We prevent API parameter tampering, hijacks and attacksYES/NO

The Joel Test

The classic interview questionnaire is still relevant over 20+ years on.

QuestionAnswer
Do you use source control?YES/NO
Can you make a build in one step?YES/NO
Do you make daily builds?YES/NO
Do you have a bug database?YES/NO
Do you fix bugs before writing new code?YES/NO
Do you have an up-to-date schedule?YES/NO
Do you have spec?YES/NO
Do programmers have quiet working conditions?YES/NO
Do you use the best tools that money can buy?YES/NO
Do you have testers?YES/NO
Do new candidates write code during their interview?YES/NO
Do you do hallway usability testing?YES/NO

Quotes

Some of our favourite DevOps quotes.

  • quote,

    To me, the goal of DevOps is to automate your s**t to the point of boredom and then keep the infrastructure up-to date with new tech.

  • quote,

    DevOps is about getting away from monkeying around with servers with the goal of monkeying with systems that monkey with the servers for you.

  • quote,

    DevOps is about using these sexy toolchains to build testable, repeatable, automated infrastructure in such a way that you never have to actually touch a server again (ie you can disable SSH)

  • quote,

    DevOps is about being able to look at your infrastructure not as a fleet of servers but as a bunch of code in a repository.

  • quote,

    Tools come and go, but how you approach the work makes the difference. If your approach is “I want to learn DevOps, what tool do I need” you are doomed to disappointment, because you are asking the wrong question from the start.

Resources