Ask two people the definition of DevOps these days and if you get fewer than five answers, you are doing well. My casual definition of DevOps is “a culture around how software is developed and delivered into production operations.” That does not mean everyone does it the same way. One primary and fundamental characteristic of this is continuous movement (hopefully progress). This means continuous development, testing, deployment, and monitoring for quality.
Where did quality (i.e. Quality Assurance) go?
It’s assumed that this is fully embraced within development, but many have not seen it executed as such. Even so, the path forward is clear: Quality practices must adapt to a continuous model, or find themselves left behind. We need to start talking about “Built-in Quality” (BiQ) rather than Quality Assurance (QA). QA is a verification step after the software has been developed. When traditional quality teams start to embrace BiQ as their standard bearer, they will start to see that their traditional function no longer attempts to test quality in, but looks to ensure it is built in all along the development stream.
I have heard about the term EnterpriseOps, and I personally like this. EnterpriseOps, (short for Enterprise Operations), is a comprehensive set of activities and processes within an organization that are focused on efficiently and effectively managing its day-to-day operations, infrastructure, and resources to support its business objectives and ensure smooth functioning systems. Even if you are a startup, you can operate like an Enterprise by using the same sound guiding principles of DevOps. It involves a combination of strategic planning, process optimization, technology adoption, and ongoing monitoring and improvement efforts. Hence the more complex the organization is, the more I think this definition works.
How does built-in quality work within the EnterpriseOps model? 🧐
Is it compatible with Agile software delivery methods & a DevOps culture? Yes! ✅
Below is a list of common traits and how it fits:
-
Establishing quality standards: Agile teams define quality through “Definition of Done” (DoD) or acceptance criteria for user stories and features, ensuring everyone understands what constitutes a completed and high-quality product increment. DevOps teams set quality requirements as service-level objectives (SLOs) or service-level indicators (SLIs) to meet performance and reliability expectations.
-
Process documentation: Agile approaches prioritize functioning software over detailed documentation but advocate lightweight process documentation for consistent task execution. DevOps emphasizes automation and code-driven infrastructure, yet documentation remains essential for understanding and maintaining infrastructure-as-code (IaC) and configuration management scripts.
-
Quality metrics and KPIs: Agile teams track progress and product quality using metrics like velocity, burn-down charts, and lead time to evaluate performance and identify improvement opportunities. DevOps teams monitor system performance and stability using metrics such as uptime, response time, and error rates.
-
Continuous monitoring: Agile teams regularly inspect and adapt their work through ceremonies like Sprint Reviews and Daily Stand-ups to track progress and address issues. DevOps constantly monitors apps and infrastructure to detect and respond to problems in real-time, using critical monitoring tools and techniques.
-
Issue identification: Agile teams use Sprint Retrospectives to openly identify and discuss concerns, focusing on what worked well, what didn’t, and how to improve in the next iteration. DevOps promotes a “blame-free culture,” viewing problems as opportunities for improvement, with incident reviews and post-mortems as common techniques.
-
Corrective and preventive actions (CAPA): Agile teams embrace continuous improvement, prioritizing issue resolution and process enhancement during each Sprint or work cycle. DevOps teams adopt a “fail fast, learn fast” approach, quickly resolving problems and implementing preventive measures to avoid recurrence.
-
Process improvement: Agile’s iterative and incremental methodology inherently promotes process improvement, with teams constantly refining methods based on feedback and lessons learned from each Sprint or iteration. DevOps fosters a culture of continuous improvement, regularly evaluating procedures and tools to streamline and enhance the delivery pipeline.
-
Training and development: Agile teams encourage cross-functional communication and skill development, often rotating roles to expand skill sets and incorporating training into the Agile process. DevOps teams invest in cross-training members to broaden their skill sets, aiding in automation, infrastructure management, and other DevOps tasks.
-
Compliance and regulatory adherence: Agile teams adapt methods to meet compliance and regulatory constraints, including compliance-related user stories or tasks in their backlogs. DevOps integrates compliance checks and automated testing to ensure software and infrastructure meet regulatory standards.
-
Feedback loop: Agile principles emphasize the importance of client input, prioritizing user feedback to guide product development and ensure the end product meets client needs. DevOps promotes regular feedback loops with stakeholders and operational teams to improve both the product and delivery method.
-
Automation and technology: Agile teams use automation tools for testing, continuous integration, and delivery to enhance product quality and reduce manual errors, aligning with quality assurance initiatives. DevOps teams rely on automation for infrastructure provisioning, testing, deployment, and monitoring, supporting quality assurance efforts.
-
Reporting and communication: Agile techniques value transparency and communication, with rituals like Sprint Reviews ensuring teams regularly report progress, impediments, and quality indicators to stakeholders. DevOps encourages openness and collaboration, with teams communicating about their work, progress, and challenges through channels like chatops, dashboards, and regular meetings.
Summary
Above all, EnterpriseOps is the approach that lays out ways of improving operational efficiency, customer happiness, and overall organizational performance. It does not disregard built-in quality, performance, security, or any other aspect that may have been regarded as less important from a developer-centric standpoint. Quality assurance should be integrated into every stage of the software delivery pipeline, from development through deployment and operations, in a DevOps culture. EnterpriseOps allows for this every step of the way.