Back

Selasa, 26 Maret 2024 | 17:05 | Author by Hasbi Kholifatul Ashshidiq

Software Delivery Performance Metrics: Solusi Untuk Menghasilkan Software yang Lebih Cepat, Aman, dan Lebih Baik

Di tahun 2023 ini Radya Digital khususnya tim Engineering mempunyai goals untuk memperbaiki proses dan produktivitas. Untuk mengukur dan membantu tercapainya goals tersebut, maka kita menggunakan metrik yang dinamakan Software Delivery Performance.


Mengenal Software Delivery Performance (SDP)

Software Delivery Performance adalah kemampuan dari suatu perusahaan/organisasi untuk menghasilkan produk software dan layanan kepada customer dengan cepat, stabil, dan efisien.

Karena pengembangan software adalah suatu hal yang kompleks, perlu suatu framework yang jelas untuk mendefinisikan, mengukur, dan memperbaiki Software Delivery Performance. Salah satu framework tersebut adalah 4 metrik kunci yang diusulkan oleh tim DevOps Research and Assessment (DORA) berdasarkan riset dan analisis terhadap ribuan organisasi pengembang software.

Keempat metric tersebut adalah:

  • Lead Time
    Berapa lama waktu yang dibutuhkan dari development hingga deployment ke production
  • Deployment Frequency
    Seberapa sering sebuah organisasi melakukan deployment
  • Change Failure Rate
    Seberapa sering hasil sebuah deployment menghasilkan kesalahan ataupun kegagalan pada production yang membutuhkan rollback ataupun hotfix
  • Mean Time to Restore (MTTR)
    Berapa lama waktu untuk menanggulangi masalah pada production


Target Time: Hitting the Bullseye with Purpose

Untuk mencapai goals diatas, maka Radya Digital menetapkan target untuk Software Delivery Performance berdasarkan keempat metrik diatas. Target yang ditetapkan oleh Radya Digital terhadap tim Engineering adalah sebagai berikut: 

  • Lead Time → 150%
  • Deployment Frequency → Minimal 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

Jadi, langkah apa yang dilakukan tim Engineering khususnya divisi Frontend untuk mencapai target-target diatas?

Tim Engineering merancang program-program yang kemudian akan dikembangkan oleh divisi Frontend. Mapping program-program terhadap metrik yang berusaha dicapainya adalah sebagai berikut:


Mapping Frontend Programs to Metrics


The Base Project: Your Launchpad to Greatness!

Pertama-tama, Base Project. Untuk mencapai Lead Time yang cepat maka dibutuhkan base project yang mengakomodir kebutuhan-kebutuhan yang biasanya ada di setiap project. Maka dibutuhkan pengembangan Base Project yang fleksibel, efisien, dan mudah dalam implementasinya.

Fitur base Project Next.js saat ini adalah sebagai berikut:

  1. Components
    - Banyaknya ready-to-use base component, yang bisa langsung diimplementasikan ke project beserta dokumentasinya agar developer bisa mudah beradaptasi.

    Dokumen komponen UI

    - CMS Layout, untuk mempercepat proses layouting di awal project. Developer hanya perlu mengkostumisasi beberapa aspek dari layout yang ada.

    CMS Layout

    - Script untuk transform icon svg menjadi react component, sehingga developer tidak perlu membuat komponen secara manual.

    Script Icon Builder

    - Dan beberapa komponen UI tambahan lainnya seperti Datatable yang dipakai di hampir semua halaman di setiap project.

    Other UI Components 

  2. Config eslint yang disesuaikan dengan convention dan rules lainnya untuk standarisasi dan mengurangi terjadinya bug
  3. Config docker untuk berbagai environment
  4. Custom hooks untuk Http Client beserta global error handling, authorization handling, dan global config dengan basisnya adalah TanStack Query
  5. Contoh fitur CRUD beserta contoh form validation sebagai panduan developer disaat mengerjakan project


Salah satu produk Radya Digital yang sudah menggunakan base project ini adalah Radya OCR Receipt Reader. Radya OCR Receipt Reader adalah solusi yang memudahkan pengguna dalam menangani dan memproses tanda terima (receipts). 

Radya OCR Receipt


Teknologi OCR Radya Digital mengotomatiskan ekstraksi informasi penting dari tanda terima, menghilangkan entri data manual dan mengurangi risiko kesalahan. Dengan kemampuan Optical Character Recognition akurasi tinggi, memastikan pengambilan data yang tepat seperti tanggal, jumlah, hingga informasi vendor.

Teks yang dihasilkan dari tanda terima


From Chaos to Cohesive: The Design System to Rule Them All!

Divisi Frontend juga melakukan riset dan pengembangan Design System/UI kit untuk membantu mencapai target dari Lead Time. Untuk program ini masih berlanjut hingga ke tahun depan, dikarenakan dalam pengerjaannya developer banyak mengerjakan project lainnya. 

Dokumentasi UI Kit


Code Crusaders: Keeping the Quality Bug-Free!

Untuk program Maintain Quality of Code, divisi Frontend mempunyai 2 program: Code Review dan Branch Deployment.

Code Review adalah program Engineering yang sudah ada dari tahun-tahun sebelumnya dimana pada saat developer akan merge ke branch main maupun production maka perlu ada pengecekan code oleh Senior Developer, Lead Project, ataupun Engineering Lead pada pull request developer tersebut.

Hal ini dilakukan agar code yang di push oleh developer adalah code yang sudah sesuai standar dari divisi Engineering yang mana tentu saja dapat membantu mengurangi bug yang tidak perlu pada saat akan melakukan deployment ke environment development maupun production.

Program kedua dari Maintain Quality of Code yang baru diterapkan di tahun ini adalah Branch Deployment yang mana memanfaatkan fitur preview deployment dari Vercel. Branch Deployment adalah suatu metode dimana sebuah fitur yang sedang dikembangkan dapat di deploy tanpa harus merge ke branch main terlebih dahulu.


Contoh branch active yang mempunyai link deployment


Hal ini membantu developer untuk deploy dan mendapat feedback dari QA lebih cepat, karena biasanya sebelum deploy perlu membuat pull request dan code review terlebih dahulu namun dengan ini developer bisa langsung push code untuk mendapatkan link deployment dan langsung di test oleh QA.

Berikut perbandingan waktu QA dapat tes sebuah fitur sebelum dan sesudah implementasi branch deployment:

Time before QA able to test Feature


Program ini membantu mencapai metrics Deployment Frequency, Change to Failure Rate, dan MTTR dengan cara:

  1. Ratio Number of Build

    Number of Build Error Ratio

    - Dengan konfigurasi dimana developer tidak bisa commit sebelum pass lint, maka dapat mengurangi tingkat error pada deployment (Change to Failure Rate)
    - Dari 480 build ada 44 (8.4%) error rate pada deployment yang mana dapat membantu mencapai target maksimal 16-30% Failure Rate

  2. Number of Build per Projects

    Number of Build per Project

    - Hampir setiap projek dapat deploy setiap hari. Ini dapat mempercepat proses development karena QA dapat lebih cepat untuk melakukan tes pada sebuah fitur
    - Membantu mencapai metrics Deployment frequency dimana minimal ada 1 deployment/project/hari

  3. Instant Rollback

    Fitur Instant Rollback

    - Dapat melakukan instant rollback ke build sebelumnya jika ternyata build yang di deploy terdapat issue, ini membantu mencapai metrics MTTR dimana kita harus dapat restore jika ada issue dalam waktu kurang dari 1 jam.


Beyond the Finish Line: Charting Your Course for Continuous Improvement

Program-program diatas tadi adalah program yang dilakukan oleh tim divisi Frontend untuk mencapai goals Radya Digital untuk memperbaiki proses dan produktivitas. Tentu saja program-program tadi masih jauh dari kesempurnaan dan masih banyak room for improvement yang dapat dilakukan di tahun depan sebagai cara untuk mencapai goals lainnya di tahun 2024 dan seterusnya nanti.

Program diatas tidak bisa terlaksana tanpa bantuan dari teman-teman Engineering Manager dan teman-teman divisi Frontend. Semoga program-program tersebut dapat membantu meningkatkan bukan hanya kualitas perusahaan namun juga kualitas kita sebagai Software Engineer.

Jika ada feedback maupun saran silahkan comment ya guys!