Developing software at Bizzkit
At Bizzkit, our software development process is designed to be agile, efficient, and responsive to the needs of our clients. To achieve this, we continuously assess our performance against the software delivery performance benchmarks published by DORA (DevOps Research and Assessment) and use that to drive our DevOps development practices. DORA provides a framework that focuses on key metrics like deployment frequency, lead time for changes, mean time to recovery, and change failure rate. By adopting these metrics, we ensure that our development process is not only optimized for speed but also for reliability and continuous improvement.
DORA Metrics Explained
-
Deployment Frequency: This metric measures how often code is deployed to production. High deployment frequency is an indicator of a mature and efficient development process, where new features, updates, and fixes are released frequently.
-
Lead Time for Changes: Lead time refers to the amount of time it takes for a code change to go from development to production. This metric is crucial because it reflects how quickly we can respond to customer needs, implement new features, or address issues. Shorter lead times indicate a more agile and responsive development process.
-
Mean Time to Recovery (MTTR): MTTR measures the average time it takes to recover from a failure in production. In a high-performing development environment, failures are inevitable, but what matters is how quickly and effectively we can recover.
-
Change Failure Rate: This metric tracks the percentage of changes that result in a failure in production, such as a bug or an issue that requires a rollback. A low change failure rate indicates that our development process includes thorough testing and validation, reducing the likelihood of problems when deploying new changes.
How Bizzkit supports DORA
At Bizzkit, we have deeply integrated the findings of DORA into our software development lifecycle to ensure that we not only meet but exceed industry standards for speed, reliability, and resilience in software delivery. Our development process is structured around continuous integration, automated testing, and rapid deployment, all of which are essential components in boosting DORA key metrics.
We have invested in a Software Engineering Intelligence Platform (SEIP) that provides continuous insights into bottlenecks right at the developer level. This platform not only allows us to report on DORA metrics but also helps us identify areas for improvement. Our approach is focused on optimizing processes and tools, not people. Instead of asking developers to deploy more frequently, we inquire about what obstacles are preventing them from doing so. This way, we can adjust processes or tooling accordingly, ensuring that progress in DORA metrics happens naturally and in a healthy manner.
Metrics support
We maintain a high deployment frequency by utilizing trunk-based development, where code is continuously integrated into a shared repository. This approach minimizes code divergence and allows for frequent and reliable releases to production. Additionally, Bizzkit's infrastructure supports independent on-demand deployment for all products, meaning there are no limitations on how often we can deploy. Our automated pipelines are designed to quickly and efficiently handle the build, testing, and deployment processes, ensuring that every change can be safely and rapidly deployed.
To reduce the lead time for changes, Bizzkit has streamlined the path from code commit to production. This is supported by our pipeline setup and the capability for independent on-demand deployment of our products, meaning commits do not have to wait for the next scheduled release but can be deployed on-demand. Additionally, our approach to trunk-based development, where all development is done in small, manageable increments that are always deployable (even if initially in a deactivated state), further accelerates the process. By combining automated testing, a robust CI/CD pipeline, and cloud-based environments, we ensure that changes move swiftly and smoothly from development to production.
We prioritize minimizing the mean time to recovery (MTTR) by implementing comprehensive monitoring and alerting systems. In the event of a failure, our teams are equipped to quickly diagnose and resolve issues, thanks to automated deactivation procedures and a well-established incident management process. This setup enables us to push a new release or hotfix very fast, ensuring that disruptions are minimized and our systems recover quickly to maintain service continuity.
Lastly, we keep the change failure rate low by employing rigorous testing protocols, including unit tests, integration tests, and performance testing in staging environments that closely mirror production. The quality of our test pipelines plays a crucial role in catching potential issues early in the development cycle, reducing the likelihood of deploying problematic changes. Additionally, the quality of our code reviews is enhanced by our practice of creating small pull requests, which makes it easier to conduct thorough and effective reviews. Together, these practices help maintain a high level of reliability in our production environments.
Through these practices, Bizzkit not only supports but actively enhances the DORA metrics, ensuring that we deliver high-quality software that is both agile and resilient.