HOTLINE

(0275) 2974 127

CHAT WA 24/7
0859-60000-390 (Sales)
0852-8969-9009 (Support)
software

Feature Flag dalam DevOps: Solusi Rilis Fitur Tanpa Menunggu Deployment Sempurna

Dalam pengembangan software modern, tim developer dituntut untuk merilis perubahan dengan cepat tanpa mengorbankan stabilitas aplikasi. Masalahnya, fitur baru tidak selalu siap digunakan oleh seluruh pengguna ketika kode sudah selesai dikembangkan. Jika setiap perubahan harus menunggu sampai seluruh fitur benar-benar siap sebelum deployment, proses pengembangan dapat menjadi lebih lambat dan risiko deployment semakin besar. Salah satu pendekatan yang banyak digunakan untuk mengatasi kondisi tersebut adalah Feature Flag.

Feature Flag memungkinkan tim mengontrol apakah suatu fitur aktif atau tidak tanpa harus melakukan perubahan kode atau deployment ulang setiap kali status fitur ingin diubah. Pendekatan ini sangat berkaitan dengan praktik DevOps, Continuous Integration (CI), Continuous Delivery (CD), Continuous Deployment, progressive delivery, dan deployment berisiko rendah.

Dengan Feature Flag, kode untuk sebuah fitur dapat sudah berada di production, tetapi fitur tersebut belum tentu terlihat atau aktif bagi seluruh pengguna. Tim dapat mengaktifkannya secara bertahap, mengujinya pada kelompok pengguna tertentu, atau mematikannya kembali apabila ditemukan masalah.

Martin Fowler menjelaskan Feature Toggles atau Feature Flags sebagai teknik yang memungkinkan perilaku sistem diubah tanpa mengubah kode yang sedang berjalan. Teknik ini juga dapat membantu tim menerapkan Continuous Delivery dengan memisahkan proses deployment kode dari keputusan untuk merilis fitur kepada pengguna.

Apa Itu Feature Flag?

Feature Flag adalah mekanisme dalam software yang memungkinkan tim developer mengaktifkan atau menonaktifkan fitur tertentu melalui konfigurasi tanpa harus mengubah atau melakukan deployment ulang terhadap kode aplikasi.

Secara sederhana, Feature Flag dapat dianggap sebagai sakelar digital yang menentukan apakah suatu bagian dari aplikasi boleh dijalankan. Misalnya sebuah aplikasi sedang mengembangkan fitur baru bernama New Checkout.

Tanpa Feature Flag, alurnya mungkin seperti ini: Coding → Testing → Deployment → Fitur langsung tersedia
Dengan Feature Flag, alurnya dapat menjadi: Coding → Testing → Deployment → Feature Flag OFF → Verifikasi → Feature Flag ON → Fitur tersedia

Artinya, kode fitur dapat sudah dikirim ke production meskipun fitur tersebut masih dalam kondisi nonaktif. Contoh logika sederhananya:

IF feature_flag_new_checkout = ON
    tampilkan checkout baru
ELSE
    gunakan checkout lama

Pendekatan ini membuat deployment dan release menjadi dua hal yang berbeda.

Deployment berkaitan dengan memasukkan kode ke environment tertentu, sedangkan release berkaitan dengan membuat fungsi tersebut tersedia bagi pengguna. Pemisahan ini merupakan salah satu manfaat utama Feature Flag dalam Continuous Delivery.

Feature Flag dalam DevOps

Dalam DevOps, proses pengembangan tidak hanya berfokus pada menulis kode, tetapi juga bagaimana software dapat dibangun, diuji, dirilis, dipantau, dan diperbaiki secara cepat.

Feature Flag mendukung pola kerja tersebut dengan memberikan kontrol tambahan terhadap software yang sudah dideploy. Misalnya tim ingin merilis fitur baru tetapi masih khawatir terhadap kemungkinan bug. Tanpa Feature Flag, pilihan yang tersedia mungkin:

  • menunda deployment;
  • melakukan deployment dan langsung membuka fitur untuk semua pengguna;
  • membuat branch terpisah sampai fitur benar-benar selesai.

Dengan Feature Flag, tim memiliki pilihan tambahan: deploy kode terlebih dahulu, tetapi tetap menyembunyikan fitur dari pengguna.

Setelah tim yakin bahwa fitur sudah stabil, flag dapat diaktifkan. Feature Flag karena itu sering digunakan bersama praktik trunk-based development dan Continuous Delivery. Feature yang masih dalam pengembangan dapat digabungkan ke mainline sementara akses terhadap fitur tersebut dikontrol menggunakan flag.

Bagaimana Cara Kerja Feature Flag?

Secara umum, mekanisme Feature Flag terdiri dari beberapa komponen utama.

1. Feature Flag Dibuat

Developer membuat flag untuk fitur tertentu.
Contohnya: new_checkout = false

Nilai false berarti fitur belum aktif.

2. Aplikasi Membaca Status Flag

Ketika aplikasi berjalan, kode akan memeriksa status flag tersebut.

if new_checkout:
    gunakan checkout baru
else:
    gunakan checkout lama

3. Deployment Dilakukan

Kode yang mengandung fitur baru dapat dideploy ke production meskipun flag masih dalam kondisi false. Dengan demikian, fitur belum tentu terlihat oleh pengguna.

4. Flag Diubah

Setelah siap, tim dapat mengubah status: new_checkout = true

Fitur kemudian mulai aktif sesuai aturan yang telah ditentukan. Pada sistem Feature Flag yang lebih kompleks, perubahan tidak selalu berupa Boolean sederhana. Flag dapat memiliki aturan berdasarkan environment, user, kelompok pengguna, persentase traffic, region, atau atribut lainnya.

5. Monitoring Dilakukan

Setelah fitur aktif, tim dapat memantau:

  • error rate;
  • latency;
  • performa;
  • conversion rate;
  • penggunaan fitur;
  • crash;
  • feedback pengguna.

Jika muncul masalah, flag dapat dikembalikan ke kondisi OFF sehingga fitur baru tidak lagi digunakan.

Contoh Feature Flag Sederhana

Misalnya sebuah website e-commerce ingin menguji tampilan checkout baru. Kode aplikasi memiliki dua kemungkinan:

if new_checkout_enabled:
    show_new_checkout()
else:
    show_old_checkout()

Pada awal deployment: new_checkout_enabled = false

Pengguna masih menggunakan checkout lama.

Setelah developer melakukan testing: new_checkout_enabled = true

Checkout baru mulai digunakan.

Namun Feature Flag tidak harus langsung diaktifkan untuk semua pengguna.
Tim dapat membuat aturan seperti:

Internal User → ON
Beta User → ON
Other User → OFF

Dengan demikian, fitur baru dapat diuji secara bertahap.

Perbedaan Feature Flag dan Deployment

Feature Flag menjadi penting karena membantu memisahkan deployment dan release.

Aspek Deployment Release
Fokus Memasang kode ke environment Membuka fitur untuk pengguna
Pelaku utama Developer/DevOps Developer/Product/Operations
Waktu Saat kode dikirim Saat fitur diaktifkan
Bisa dilakukan tanpa Feature Flag Ya Terbatas
Bisa dipisahkan dengan Feature Flag Tidak selalu Ya
Risiko pengguna langsung terkena perubahan Lebih tinggi Dapat dikontrol

Dalam Continuous Delivery, kemampuan untuk menjaga software tetap dapat dirilis dan mengurangi risiko perubahan merupakan prinsip penting. Feature Flag membantu dengan memisahkan kapan kode dideploy dari kapan functionality tersebut benar-benar diperkenalkan kepada pengguna.

Jenis-Jenis Feature Flag

Feature Flag tidak hanya digunakan untuk mengaktifkan atau menonaktifkan fitur. Martin Fowler mengelompokkan Feature Toggles ke dalam beberapa kategori berdasarkan tujuan dan karakteristik penggunaannya.

1. Release Toggle

Release Toggle digunakan untuk mengontrol apakah fitur tertentu sudah boleh digunakan oleh pengguna. Contohnya:new_search = OFF
, Kode fitur sudah tersedia, tetapi pengguna masih menggunakan sistem pencarian lama. Setelah fitur dinyatakan siap: new_search = ON
, Release Toggle biasanya bersifat sementara dan sebaiknya dihapus setelah fitur sepenuhnya dirilis agar tidak menambah kompleksitas kode secara permanen.

2. Experiment Toggle

Experiment Toggle digunakan untuk melakukan eksperimen, misalnya A/B testing. Contohnya:

  • 50% pengguna mendapatkan desain A;
  • 50% pengguna mendapatkan desain B.

Tim kemudian membandingkan hasilnya.

Kelompok Tampilan Conversion
A Desain lama 4,8%
B Desain baru 5,6%

Jika hasil menunjukkan desain B lebih efektif, tim dapat memutuskan untuk menggunakan desain tersebut secara lebih luas. Experiment Toggle biasanya membutuhkan mekanisme penentuan cohort agar pengguna dapat secara konsisten berada pada kelompok eksperimen tertentu.

3. Ops Toggle

Ops Toggle digunakan untuk memberikan kontrol operasional terhadap perilaku sistem. Contohnya adalah aplikasi memiliki dua mekanisme pemrosesan: fast_processing = ON
, Jika terjadi masalah performa, tim operasi dapat menonaktifkan perilaku tertentu dan menggunakan mekanisme alternatif.

Jenis flag seperti ini dapat berguna ketika tim membutuhkan kemampuan untuk mengubah perilaku sistem dengan cepat sebagai bagian dari operasi production. Martin Fowler memasukkan Ops Toggles sebagai salah satu kategori Feature Toggles.

4. Permissioning Toggle

Permissioning Toggle digunakan untuk mengatur siapa yang boleh menggunakan sebuah fitur. Misalnya:

Admin → ON
Premium User → ON
Free User → OFF

Dengan pendekatan tersebut, perusahaan dapat memberikan fitur tertentu hanya kepada kelompok pengguna yang memenuhi kriteria.

Perbedaan Feature Flag dan Feature Branch

Feature Flag sering dibandingkan dengan Feature Branch karena keduanya dapat digunakan untuk mengelola fitur yang masih dalam pengembangan. Namun konsepnya berbeda.

Aspek Feature Branch Feature Flag
Mekanisme Branch pada version control Konfigurasi atau mekanisme runtime
Tujuan Memisahkan perubahan kode Mengontrol perilaku fitur
Fitur dapat dideploy sebelum aktif Bisa, tetapi tidak selalu Ya
Kontrol per pengguna Tidak secara langsung Bisa
Rollout bertahap Terbatas Sangat memungkinkan
Pengurangan branch jangka panjang Tidak Dapat mendukung trunk-based development
Kompleksitas Branch management Flag management

Feature Flag bukan berarti Feature Branch selalu buruk atau tidak diperlukan. Keduanya dapat digunakan sesuai kebutuhan. Namun, Feature Flag dapat membantu tim menjaga perubahan tetap berada di mainline sambil menahan fitur agar belum terlihat oleh pengguna.

Feature Flag dan CI/CD

Hubungan Feature Flag dengan CI/CD cukup erat. Dalam Continuous Integration, developer sering mengintegrasikan perubahan ke codebase secara rutin dan melakukan automated build serta testing. Continuous Delivery kemudian berusaha menjaga software tetap dalam kondisi yang dapat dirilis. Feature Flag membantu ketika perubahan kode sudah masuk ke pipeline, tetapi fitur belum ingin dirilis kepada pengguna.

Contohnya:

Developer
   ↓
Commit
   ↓
Build
   ↓
Automated Test
   ↓
Deploy
   ↓
Feature Flag OFF
   ↓
Production
   ↓
Feature Flag ON

Dengan pola tersebut, tim dapat melakukan deployment lebih sering tanpa harus selalu membuka semua fitur baru kepada seluruh pengguna.

Manfaat Feature Flag dalam DevOps

Feature Flag memberikan sejumlah manfaat bagi tim DevOps dan software engineering.

1. Mengurangi Risiko Deployment

Salah satu manfaat utama adalah mengurangi risiko ketika fitur baru masuk ke production. Kode dapat dideploy dalam keadaan OFF sehingga pengguna belum langsung menggunakan functionality baru.

Jika terjadi masalah setelah aktivasi, tim dapat menonaktifkan flag. Namun, Feature Flag bukan pengganti testing. Kode yang berada di balik flag tetap harus diuji karena flag justru dapat menciptakan beberapa code path yang perlu divalidasi.

2. Mendukung Continuous Delivery

Feature Flag membantu memisahkan deployment dari release. Tim dapat menjaga aplikasi tetap deployable tanpa harus membuka semua fitur yang masih dalam proses validasi. Hal ini sejalan dengan prinsip Continuous Delivery yang menekankan software selalu berada dalam kondisi siap dirilis.

3. Memungkinkan Rollout Bertahap

Fitur baru tidak harus langsung diberikan kepada seluruh pengguna. Misalnya:

Tahap 1: 1% pengguna
Tahap 2: 10% pengguna
Tahap 3: 25% pengguna
Tahap 4: 50% pengguna
Tahap 5: 100% pengguna

Jika performa tetap stabil, rollout dapat dilanjutkan.

4. Mempermudah Rollback Fitur

Dalam deployment tradisional, rollback sering berarti mengembalikan versi aplikasi ke versi sebelumnya. Dengan Feature Flag, masalah tertentu dapat ditangani dengan menonaktifkan functionality yang bermasalah tanpa harus selalu melakukan rollback seluruh deployment. Tetapi kemampuan ini bergantung pada desain sistem. Jika perubahan database atau dependency tidak kompatibel dengan versi sebelumnya, mematikan flag belum tentu cukup untuk melakukan rollback.

5. Mendukung Testing di Production

Feature Flag memungkinkan fitur baru diuji pada kelompok pengguna tertentu dalam kondisi production yang sebenarnya. Misalnya:

Developer → ON
QA → ON
Internal User → ON
Public User → OFF

Pendekatan tersebut dapat memberikan feedback lebih realistis dibandingkan hanya mengandalkan environment testing.

6. Mempermudah Eksperimen

Product team dapat menggunakan Feature Flag untuk menguji variasi fitur atau pengalaman pengguna. Contohnya:

  • desain halaman;
  • algoritma rekomendasi;
  • checkout;
  • navigasi;
  • harga atau penawaran tertentu.

Hasil eksperimen kemudian dapat digunakan untuk mengambil keputusan berbasis data.

7. Meningkatkan Kolaborasi Tim

Feature Flag dapat memberikan kontrol kepada pihak yang berbeda sesuai kebijakan organisasi. Developer dapat bertanggung jawab terhadap implementasi, sementara tim product atau operations dapat mengatur kapan fitur tertentu diperkenalkan. Namun, pemberian akses tetap perlu dikontrol agar perubahan konfigurasi tidak dilakukan secara sembarangan.

Feature Flag untuk Canary Release

Feature Flag juga dapat digunakan sebagai bagian dari progressive delivery dan canary release. Misalnya perusahaan memiliki satu juta pengguna. Daripada langsung mengaktifkan fitur baru untuk satu juta pengguna, perusahaan dapat mengaktifkannya untuk sebagian kecil pengguna terlebih dahulu.

1% → Monitoring
   ↓
5% → Monitoring
   ↓
10% → Monitoring
   ↓
25% → Monitoring
   ↓
50% → Monitoring
   ↓
100%

Jika error rate meningkat setelah rollout 10%, tim dapat menghentikan rollout atau mematikan flag. Dengan demikian, dampak masalah dapat dibatasi.

Feature Flag untuk A/B Testing

Feature Flag juga dapat menjadi bagian dari eksperimen produk. Misalnya sebuah website memiliki dua desain tombol:

Variant A: “Beli Sekarang”
Variant B: “Tambahkan ke Keranjang”

Pengguna dapat dibagi menjadi dua kelompok.

Kelompok Variant Tujuan
Group A A Baseline
Group B B Eksperimen

Setelah periode eksperimen selesai, tim dapat membandingkan metrik yang relevan. Penting untuk memastikan desain eksperimen, pembagian kelompok, periode pengukuran, dan metrik ditentukan dengan benar.

Feature Flag sendiri hanya menyediakan mekanisme pengendalian exposure; ia tidak otomatis membuat eksperimen menjadi valid secara statistik. Konsep penggunaan toggle untuk A/B testing juga dibahas dalam pola Experiment Toggle.

Apakah Feature Flag Hanya Berisi ON dan OFF?

Tidak selalu. Implementasi paling sederhana memang menggunakan Boolean: feature_enabled = true
. Namun sistem Feature Flag modern dapat menggunakan aturan yang lebih kompleks.

Misalnya:

IF user.role = "admin"
    ON

IF user.country = "Indonesia"
    ON

IF user.id IN beta_users
    ON

ELSE
    OFF

Sistem juga dapat menggunakan persentase rollout:

10% users → ON
90% users → OFF

Semakin kompleks aturan Feature Flag, semakin penting pengelolaan konfigurasi, dokumentasi, audit, dan observability.

Di Mana Feature Flag Disimpan?

Implementasi Feature Flag dapat dilakukan dengan beberapa pendekatan.

Metode Karakteristik Cocok untuk
Hardcoded Nilai berada langsung di kode Kasus sederhana
Configuration File Flag berada dalam file konfigurasi Sistem sederhana hingga menengah
Database Status flag disimpan di database Aplikasi yang membutuhkan perubahan dinamis
Distributed Configuration Konfigurasi dikelola secara terpusat Sistem terdistribusi
Feature Flag Platform Pengelolaan melalui layanan khusus Sistem dengan kebutuhan flag kompleks

Tidak ada satu metode yang selalu paling baik. Untuk flag yang tidak membutuhkan perubahan runtime, konfigurasi yang dikelola melalui source control dapat memberikan manfaat auditability dan reproducibility. Untuk flag yang membutuhkan perubahan dinamis, sistem konfigurasi terpusat atau platform Feature Flag dapat lebih sesuai. Martin Fowler juga menekankan bahwa jenis toggle sebaiknya menentukan bagaimana toggle tersebut dikelola.

Feature Flag dalam Microservices

Pada arsitektur microservices, Feature Flag dapat menjadi lebih kompleks karena satu fitur mungkin melibatkan beberapa service. Contohnya:

Frontend
   ↓
API Gateway
   ↓
Order Service
   ↓
Payment Service
   ↓
Notification Service

Jika fitur checkout baru membutuhkan perubahan pada beberapa service, tim harus memastikan status flag dan kompatibilitas antarservice dikelola dengan baik.

asalah yang perlu diperhatikan antara lain:

  • perbedaan versi konfigurasi;
  • sinkronisasi flag;
  • latency saat mengambil konfigurasi;
  • fallback ketika layanan Feature Flag tidak tersedia;
  • konsistensi keputusan antarservice.

Karena itu, Feature Flag pada distributed system perlu dirancang dengan mempertimbangkan reliability dan failure mode.

Feature Flag dan Database Migration

Salah satu hal yang sering terlewat adalah hubungan Feature Flag dengan perubahan database. Misalnya fitur baru membutuhkan kolom database: new_checkout_method .Jika kode baru dan kode lama masih mungkin berjalan secara bergantian, perubahan database harus dirancang agar keduanya tetap kompatibel. Pendekatan yang umum adalah melakukan perubahan secara bertahap:

1. Tambahkan struktur database baru
2. Deploy kode yang kompatibel
3. Isi atau migrasikan data
4. Aktifkan Feature Flag
5. Monitor
6. Hapus struktur lama setelah tidak diperlukan

Hal ini penting karena mematikan Feature Flag tidak otomatis membatalkan perubahan database.

Tantangan dan Kekurangan Feature Flag

Feature Flag memang membantu DevOps, tetapi penggunaannya juga menambah kompleksitas.

1. Flag Menjadi Technical Debt

Jika sebuah flag tidak pernah dihapus, kode akan terus memiliki conditional logic tambahan. Contohnya:

if old_feature_flag:
    ...
else:
    ...

Setelah fitur baru sudah stabil, branch lama mungkin sebenarnya sudah tidak diperlukan. Jika flag tetap dibiarkan, kompleksitas kode akan terus meningkat. Martin Fowler menyebut Feature Toggles memiliki carrying cost dan menyarankan tim secara aktif menghapus flag yang sudah tidak diperlukan.

2. Testing Menjadi Lebih Kompleks

Satu flag dapat menghasilkan minimal dua kondisi: ON
OFF

Jika terdapat beberapa flag, jumlah kemungkinan kombinasi dapat meningkat. Misalnya terdapat tiga flag: A
B
C

Secara teoritis terdapat: 2³ = 8 kombinasi
Jika terdapat sepuluh flag: 2¹⁰ = 1.024 kombinasi

Bukan berarti semua kombinasi tersebut harus diuji secara manual. Namun, semakin banyak flag yang saling berinteraksi, semakin besar kompleksitas validasi yang perlu dipertimbangkan. Martin Fowler juga memperingatkan bahwa Feature Toggles menambah validation complexity karena sistem dapat memiliki beberapa code path.

3. Konfigurasi yang Salah Dapat Menimbulkan Masalah

Feature Flag adalah bagian dari kontrol aplikasi. Jika seseorang salah mengaktifkan flag, fitur yang belum siap dapat langsung digunakan oleh pengguna. Karena itu, perubahan konfigurasi sebaiknya memiliki:

  • authentication;
  • authorization;
  • audit log;
  • approval untuk perubahan kritis;
  • monitoring.

4. Flag Bisa Menjadi Single Point of Failure

Pada sistem yang mengambil konfigurasi flag dari layanan eksternal, kegagalan layanan tersebut dapat memengaruhi aplikasi. Karena itu, aplikasi perlu memiliki strategi seperti:

  • cached configuration;
  • default value;
  • local fallback;
  • timeout;
  • circuit breaker;
  • graceful degradation.

Desain yang tepat bergantung pada tingkat kritikalitas aplikasi.

Best Practice Menggunakan Feature Flag dalam DevOps

Agar Feature Flag tidak berubah menjadi sumber technical debt, penerapannya perlu dikelola dengan disiplin.

1. Gunakan Nama Flag yang Jelas

Hindari:

flag1
test2
newfeature

Lebih baik:

enable_new_checkout
enable_new_search_algorithm
enable_dark_mode

Nama harus menjelaskan fungsi flag.

2. Dokumentasikan Tujuan Flag

Setiap flag sebaiknya memiliki informasi seperti:

  • tujuan;
  • pemilik;
  • tanggal dibuat;
  • jenis flag;
  • kondisi ON;
  • kondisi OFF;
  • tanggal evaluasi atau removal.

Dokumentasi semacam ini membantu tim memahami alasan flag masih berada di dalam sistem. Martin Fowler juga menyarankan metadata seperti deskripsi, tanggal pembuatan, developer yang bertanggung jawab, dan expiration date untuk toggle tertentu.

3. Tentukan Owner

Setiap flag sebaiknya memiliki pihak yang bertanggung jawab. Misalnya:

Flag: new_checkout
Owner: Checkout Team
Created: 2026-08-20
Type: Release Toggle
Status: Active
Removal Target: 2026-09-15

Dengan begitu, tidak ada flag yang “terlupakan”.

4. Tentukan Expiration Date

Flag sementara sebaiknya memiliki batas waktu. Contohnya:

Created: 1 September
Expiration: 30 September

Setelah fitur stabil, flag dievaluasi dan dihapus jika tidak diperlukan.

5. Jangan Membuat Flag untuk Semua Hal

Feature Flag memang mudah dibuat, tetapi bukan berarti setiap perubahan membutuhkan flag. Gunakan flag ketika memang ada kebutuhan untuk:

  • mengontrol release;
  • melakukan eksperimen;
  • progressive rollout;
  • operational control;
  • permissioning.

Terlalu banyak flag dapat meningkatkan kompleksitas dan beban testing.

6. Pantau Flag dengan Observability

Feature Flag sebaiknya dikaitkan dengan monitoring aplikasi. Ketika flag ON, perhatikan:

  • error;
  • latency;
  • CPU;
  • memory;
  • throughput;
  • conversion;
  • crash;
  • business metrics.

Dengan begitu, keputusan rollout dapat didasarkan pada data.

7. Siapkan Rollback atau Kill Switch

Untuk fitur yang memiliki risiko tinggi, tim sebaiknya memiliki mekanisme untuk mematikan fitur dengan cepat. Namun, kill switch bukan pengganti desain sistem yang baik. Perubahan yang menyentuh database, schema, external API, atau state yang tidak reversible tetap membutuhkan strategi rollback tersendiri.

8. Hapus Flag yang Sudah Tidak Diperlukan

Ini merupakan salah satu praktik paling penting. Setelah fitur baru sudah stabil dan perilaku lama tidak lagi diperlukan:

Feature Flag
     ↓
Evaluasi
     ↓
Fitur stabil
     ↓
Hapus code path lama
     ↓
Hapus Feature Flag

Dengan demikian, codebase tetap sederhana.

Feature Flag dan Observability

Feature Flag akan jauh lebih efektif jika dipadukan dengan observability. Misalnya sebuah tim mengaktifkan fitur baru untuk 10% pengguna. Setelah aktivasi, monitoring menunjukkan:

Error Rate:
0,5% → 3,8%

Tim dapat segera menyimpulkan bahwa rollout perlu dihentikan atau flag dimatikan sambil melakukan investigasi. Tanpa monitoring, Feature Flag hanya menjadi sakelar tanpa informasi mengenai dampak perubahan. Karena itu, Feature Flag sebaiknya dipertimbangkan bersama:

  • logging;
  • metrics;
  • tracing;
  • alerting;
  • application performance monitoring.

Feature Flag vs Canary Deployment

Feature Flag dan Canary Deployment sering dianggap sama karena keduanya dapat digunakan untuk rollout bertahap. Namun keduanya bekerja pada lapisan yang berbeda.

Aspek Feature Flag Canary Deployment
Fokus Mengontrol fitur Mengontrol versi deployment
Mekanisme Feature/configuration control Traffic atau instance routing
Kontrol per fitur Ya Tidak secara langsung
Rollout sebagian pengguna Bisa Bisa
Membutuhkan deployment baru untuk mengubah exposure Tidak selalu Biasanya berkaitan dengan deployment/traffic
Contoh 10% user memakai checkout baru 10% traffic diarahkan ke versi aplikasi baru

Keduanya juga dapat digunakan secara bersamaan.

Misalnya: Canary Deployment: 10% traffic diarahkan ke versi aplikasi baru.
Kemudian: Feature Flag: fitur tertentu pada versi tersebut hanya aktif untuk 5% pengguna.

Pendekatan seperti ini dapat memberikan kontrol rollout yang lebih granular.

Feature Flag vs Environment Variable

Feature Flag juga berbeda dari environment variable.

Aspek Feature Flag Environment Variable
Tujuan Mengontrol behavior atau fitur Menyediakan konfigurasi environment
Perubahan runtime Bisa, tergantung implementasi Umumnya membutuhkan restart/redeploy
Kontrol per user Bisa Biasanya tidak
A/B testing Bisa Tidak dirancang untuk itu
Progressive rollout Bisa Terbatas
Contoh new_checkout = ON DATABASE_HOST=localhost

Environment variable lebih cocok untuk konfigurasi seperti database host, API endpoint, port, atau credential reference. Feature Flag lebih cocok untuk mengendalikan perilaku aplikasi.

Kapan Sebaiknya Menggunakan Feature Flag?

Feature Flag sangat berguna ketika:

  • tim menerapkan Continuous Delivery;
  • deployment dilakukan secara rutin;
  • fitur membutuhkan rollout bertahap;
  • aplikasi memiliki banyak pengguna;
  • tim ingin melakukan A/B testing;
  • fitur berisiko tinggi;
  • tim membutuhkan kill switch;
  • beberapa tim bekerja pada codebase yang sama;
  • organisasi ingin memisahkan deployment dan release.

Sebaliknya, Feature Flag mungkin tidak diperlukan jika perubahan sangat kecil, tidak membutuhkan rollout khusus, dan dapat dirilis dengan aman melalui deployment biasa.

Contoh Implementasi Feature Flag dalam Alur DevOps

Berikut contoh alur sederhana:

Developer mengembangkan fitur
             ↓
      Feature Flag dibuat
             ↓
       Coding & Testing
             ↓
      Commit ke repository
             ↓
       CI Build & Test
             ↓
      Deploy ke Staging
             ↓
     Feature Flag = OFF
             ↓
       Deploy Production
             ↓
     Feature Flag = OFF
             ↓
   Internal User = ON
             ↓
        Monitoring
             ↓
       10% User = ON
             ↓
        Monitoring
             ↓
       50% User = ON
             ↓
        Monitoring
             ↓
      100% User = ON
             ↓
    Hapus Feature Flag

Pola tersebut menunjukkan bagaimana Feature Flag dapat menjadi bagian dari lifecycle software modern.

Apakah Feature Flag Sama dengan Kill Switch?

Tidak selalu. Kill switch dapat dianggap sebagai salah satu penggunaan Feature Flag, khususnya ketika flag digunakan untuk menonaktifkan functionality tertentu secara cepat. Namun, tidak semua Feature Flag merupakan kill switch. Feature Flag dapat digunakan untuk:

  • release;
  • experiment;
  • permission;
  • progressive rollout;
  • operational control.

Kill switch lebih spesifik pada kebutuhan untuk menghentikan functionality ketika kondisi tertentu terjadi.

Apakah Feature Flag Aman?

Feature Flag dapat membantu meningkatkan kontrol terhadap deployment, tetapi mekanisme ini tidak otomatis membuat aplikasi aman. Justru karena Feature Flag dapat mengubah perilaku aplikasi, sistem pengelolaannya harus diamankan. Beberapa hal yang perlu diperhatikan:

  • batasi siapa yang dapat mengubah flag;
  • gunakan role-based access control;
  • simpan audit log;
  • jangan menyimpan secret sebagai nilai Feature Flag;
  • gunakan HTTPS dan mekanisme autentikasi yang sesuai;
  • validasi perubahan konfigurasi;
  • monitor perubahan flag;
  • siapkan fallback.

Feature Flag juga tidak seharusnya digunakan sebagai pengganti authorization. Jika suatu fitur memang membutuhkan pembatasan akses berdasarkan hak pengguna, pemeriksaan permission tetap harus dilakukan secara benar di sisi aplikasi.

Masa Depan Feature Flag dalam DevOps

Feature Flag semakin berkaitan dengan konsep progressive delivery, automated rollout, observability, dan deployment automation. Dalam sistem yang semakin kompleks, keputusan rollout dapat dipadukan dengan metrik operasional. Contohnya:

Deploy Feature
      ↓
Enable 5%
      ↓
Monitor Error Rate
      ↓
Jika stabil → Enable 25%
      ↓
Monitor
      ↓
Jika stabil → Enable 50%
      ↓
Jika error meningkat → Stop/Rollback

Dengan pendekatan ini, proses release dapat menjadi lebih terkontrol dan berbasis data. Namun, otomatisasi rollout juga harus memiliki batasan dan guardrail yang jelas. Feature Flag tetap perlu dikelola sebagai bagian dari architecture dan software delivery lifecycle, bukan sekadar konfigurasi tambahan.

Kesimpulan

Feature Flag adalah mekanisme untuk mengontrol aktivasi fitur tanpa harus melakukan deployment ulang. Dalam DevOps, teknologi ini membantu memisahkan deployment dan release sehingga fitur dapat dirilis secara bertahap dengan risiko yang lebih terkontrol.

Feature Flag dapat digunakan untuk progressive rollout, A/B testing, permissioning, hingga kill switch. Namun, penggunaannya perlu dikelola dengan baik agar tidak menambah kompleksitas dan technical debt. Setiap flag sebaiknya memiliki tujuan, dokumentasi, monitoring, dan rencana penghapusan.

Jika dipadukan dengan CI/CD, automated testing, observability, dan deployment automation, Feature Flag dapat membantu tim merilis software lebih cepat sekaligus menjaga stabilitas aplikasi.

Untuk mempelajari lebih banyak tentang DevOps, hosting, server, website, dan teknologi digital lainnya, Anda juga dapat membaca berbagai panduan dan informasi terbaru di Blog Hosteko. Dukungan infrastruktur yang stabil dan tepat juga menjadi bagian penting dalam membangun proses software delivery yang aman dan konsisten.

5/5 - (1 vote)
Fitri Ana

Recent Posts

Cara Install Package di Termux dengan Perintah pkg dan apt

Salah satu keunggulan Termux adalah pengguna dapat menambahkan berbagai package sesuai kebutuhan. Package tersebut dapat…

2 hours ago

Perintah Dasar Termux untuk Pemula: Panduan Lengkap

Setelah memahami tampilan dan struktur Termux, langkah berikutnya adalah mengenal perintah dasar Termux. Berbeda dengan…

3 hours ago

Mengenal Multimodal AI: Pengertian, Teknologi, Manfaat, dan Contoh

Perkembangan Artificial Intelligence (AI) membuat komputer tidak lagi hanya mampu memproses teks atau angka. Saat…

5 hours ago

Apa Itu Data Profiling? Panduan Memahami Kualitas Data

Di era digital, perusahaan tidak hanya mengumpulkan data dalam jumlah besar, tetapi juga perlu memastikan…

8 hours ago

Cara Install Termux di Android dengan Aman dan Benar

Setelah mengetahui fungsi Termux, langkah berikutnya adalah memasangnya di perangkat Android. Sumber instalasi perlu diperhatikan,…

1 day ago

Apa Itu Secure by Design? Mengapa Keamanan Harus Dimulai Sejak Awal?

Keamanan perangkat lunak tidak seharusnya baru diperhatikan setelah aplikasi selesai dibuat. Jika keamanan baru ditambahkan…

1 day ago