Software Delivery Performance Metrics: A Solution for Faster, Safer, and Better Software Delivery
In 2023, Radya Digital, especially the Engineering team, has goals to improve processes and productivity. To measure and help achieve these goals, we use a metric called Software Delivery Performance.
Get to know Software Delivery Performance (SDP)
Software Delivery Performance is the ability of a company/organization to produce software products and services to customers quickly, stably, and efficiently. Because software development is a complex matter, a clear framework is needed to define, measure, and improve Software Delivery Performance.
One of these frameworks is the 4 key metrics proposed by the DevOps Research and Assessment (DORA) team based on research and analysis of thousands of software development organizations.
The four metrics are:
- Lead Time
How long does it take from development to deployment to production? - Deployment Frequency
How often an organization deploys - Change Failure Rate
How often does a deployment result in an error or failure in production that requires a rollback or hotfix? - Mean Time to Restore (MTTR)
How long does it take to resolve problems in production
Target Time: Hitting the Bullseye with Purpose
To achieve the goals above, Radya Digital sets targets for Software Delivery Performance based on the four metrics above. The targets set by Radya Digital for the Engineering team are as follows:
- Lead Time → 150%
- Deployment Frequency → Minimum 1 deployment per day per project
- Change Failure Rate → 16-30%
- Mean Time to Restore (MTTR) - Less than one hour
Mission Possible: Achieving the Impossible, One Small Step at a Time
So, what steps does the Engineering team, especially the Frontend division, take to achieve the targets above?
The Engineering team designs programs which will then be developed by the Frontend division. Mapping the programs against the metrics they are trying to achieve is as follows:
Mapping Frontend Programs to Metrics
The Base Project: Your Launchpad to Greatness!
First of all, Base Project. To achieve a fast Lead Time, a project base is needed that accommodates the needs that usually exist in each project. So it is necessary to develop a Base Project that is flexible, efficient, and easy to implement.
The current Next.js Project base features are as follows:
- Components
- There are many ready-to-use base components, which can be directly implemented into the project along with documentation so that developers can easily adapt.
UI component documentation
- CMS Layout, to speed up the layout process at the start of the project. Developers only need to customize several aspects of the existing layout.
CMS Layout
- Script to transform SVG icons into React components, so developers don't need to create components manually.
Script Icon Builder
- And several other additional UI components such as Datatable which is used on almost all pages in every project.
Other UI Components
- Eslint config adjusted to conventions and other rules to standardize and reduce the occurrence of bugs
- Docker config for various environments
- Custom hooks for HTTP Client along with global error handling, authorization handling, and global config based on TanStack Query
- Examples of CRUD features along with examples of validation forms as a guide for developers when working on projects
One of the Radya Digital products that has used this base project is the Radya OCR Receipt Reader. Radya OCR Receipt Reader is a solution that makes it easier for users to handle and process receipts.
Radya OCR Receipt
Radya Digital's OCR technology automates the extraction of critical information from receipts, eliminating manual data entry and reducing the risk of errors. With high-accuracy Optical Character Recognition capabilities, it ensures correct data retrieval such as date, quantity, and vendor information.