Dalam pengembangan aplikasi, menambahkan fitur baru merupakan hal yang biasa dilakukan. Developer dapat menambahkan fitur pembayaran baru, tampilan baru, sistem rekomendasi, atau berbagai fungsi lainnya.
Namun, tidak semua fitur yang sudah selesai dibuat harus langsung digunakan oleh seluruh pengguna.
Terkadang sebuah fitur masih perlu diuji terlebih dahulu. Developer mungkin ingin memberikan fitur tersebut hanya kepada sebagian pengguna atau ingin menonaktifkannya sementara apabila ditemukan masalah.
Untuk kebutuhan seperti ini, terdapat sebuah teknik yang disebut Feature Flags.
Apa Itu Feature Flags?
Feature Flags adalah mekanisme yang memungkinkan developer mengontrol apakah suatu fitur dalam aplikasi aktif atau tidak tanpa harus menghapus kode fitur tersebut.
Sebuah fitur dapat dibuat dalam kondisi nonaktif terlebih dahulu. Setelah developer yakin bahwa fitur tersebut sudah siap digunakan, fitur dapat diaktifkan melalui konfigurasi tertentu.
Pendekatan ini memberikan fleksibilitas dalam proses pengembangan dan peluncuran software.
Sebagai contoh, sebuah aplikasi sedang mengembangkan fitur mode gelap.
Fitur tersebut sudah selesai dibuat, tetapi tim belum ingin memberikannya kepada seluruh pengguna.
Developer dapat membuat feature flag untuk fitur tersebut dalam kondisi nonaktif. Setelah pengujian selesai, fitur dapat diaktifkan tanpa harus membuat ulang keseluruhan aplikasi.
Mengapa Feature Flags Dibutuhkan?
Dalam pengembangan software tradisional, sebuah fitur biasanya dibuat kemudian langsung dimasukkan ke dalam versi aplikasi yang akan dirilis.
Masalah dapat muncul ketika fitur tersebut ternyata belum stabil.
Jika fitur baru menyebabkan error, developer mungkin harus melakukan perbaikan dan merilis versi baru.
Feature Flags memberikan alternatif.
Fitur dapat berada di dalam kode tetapi tidak langsung terlihat atau digunakan oleh pengguna.
Dengan cara tersebut, proses pengembangan dapat dilakukan secara lebih bertahap.
Contoh Sederhana Feature Flags
Bayangkan sebuah aplikasi e-commerce sedang mengembangkan fitur pembayaran baru.
Developer telah menyelesaikan fitur tersebut, tetapi masih ingin melakukan pengujian.
Feature flag dapat digunakan untuk menentukan apakah fitur pembayaran baru tersebut aktif.
Ketika statusnya nonaktif, pengguna tetap menggunakan metode pembayaran lama.
Ketika statusnya diaktifkan, pengguna tertentu dapat menggunakan metode pembayaran baru.
Jika terjadi masalah, fitur tersebut dapat dinonaktifkan kembali tanpa harus menghapus implementasinya dari aplikasi.
Feature Flags dan Pengujian
Feature Flags dapat membantu proses pengujian software.
Developer dapat mengaktifkan fitur baru hanya pada lingkungan pengujian terlebih dahulu.
Setelah fitur dianggap stabil, fitur tersebut dapat diperkenalkan kepada pengguna secara bertahap.
Cara ini memungkinkan tim mendapatkan informasi mengenai performa dan pengalaman pengguna sebelum fitur diberikan kepada seluruh pengguna.
Penggunaan pada Sebagian Pengguna
Salah satu kemampuan menarik dari Feature Flags adalah mengaktifkan fitur hanya untuk kelompok pengguna tertentu.
Misalnya, sebuah aplikasi memiliki 10.000 pengguna.
Developer ingin menguji fitur baru kepada 500 pengguna terlebih dahulu.
Feature flag dapat dikonfigurasi sehingga fitur tersebut hanya tersedia bagi kelompok pengguna yang telah ditentukan.
Jika hasil pengujian menunjukkan bahwa fitur berjalan dengan baik, cakupan pengguna dapat diperluas secara bertahap.
Gradual Rollout
Pendekatan tersebut dikenal sebagai Gradual Rollout atau peluncuran secara bertahap.
Fitur baru tidak langsung diberikan kepada seluruh pengguna.
Tim dapat memulai dari kelompok kecil kemudian meningkatkan jumlah pengguna secara perlahan.
Pendekatan ini dapat mengurangi risiko apabila ternyata terdapat masalah yang belum ditemukan selama pengujian.
Jika terjadi masalah, dampaknya juga dapat dibatasi pada sebagian pengguna.
A/B Testing
Feature Flags juga dapat digunakan dalam A/B Testing.
Dalam A/B Testing, pengguna dapat dibagi ke dalam kelompok yang mendapatkan variasi fitur berbeda.
Misalnya, sebagian pengguna melihat desain halaman baru, sedangkan kelompok lainnya masih melihat desain lama.
Tim kemudian membandingkan hasil penggunaan kedua versi tersebut.
Data tersebut dapat membantu menentukan desain atau fitur mana yang memberikan hasil lebih baik.
Feature Flags dan Continuous Delivery
Feature Flags memiliki hubungan dengan praktik pengembangan software modern seperti Continuous Delivery.
Dalam proses pengembangan yang dilakukan secara berkelanjutan, perubahan kode dapat dikirim ke lingkungan tertentu tanpa harus langsung membuat seluruh fitur tersedia bagi pengguna.
Feature Flags membantu memisahkan proses deploy kode dari proses release fitur.
Kode dapat sudah berada di sistem, tetapi fitur belum tentu langsung diaktifkan.
Pemisahan tersebut memberikan fleksibilitas yang lebih besar kepada tim pengembang.
Deploy dan Release Tidak Selalu Sama
Perbedaan antara deploy dan release menjadi salah satu konsep penting dalam penggunaan Feature Flags.
Deploy berarti kode atau perubahan telah ditempatkan pada lingkungan aplikasi.
Sementara itu, release berarti fitur tersebut sudah diberikan kepada pengguna.
Dengan Feature Flags, sebuah fitur dapat di-deploy terlebih dahulu tetapi belum di-release kepada pengguna.
Hal ini memungkinkan tim melakukan persiapan dan pengujian sebelum fitur benar-benar digunakan secara luas.
Feature Flags sebagai Pengaman
Feature Flags juga dapat berfungsi sebagai mekanisme pengaman ketika fitur baru mengalami masalah.
Misalnya, sebuah fitur baru menyebabkan peningkatan error setelah digunakan oleh pengguna.
Daripada menunggu proses pengembangan dan deployment versi baru, tim dapat menonaktifkan feature flag tersebut jika sistem memang dirancang untuk mendukung tindakan tersebut.
Dengan demikian, fitur bermasalah dapat dihentikan penggunaannya dengan lebih cepat.
Feature Flags Tidak Hanya untuk Fitur Baru
Meskipun sering digunakan untuk fitur baru, Feature Flags juga dapat digunakan untuk berbagai kebutuhan lain.
Misalnya:
- Mengaktifkan fitur eksperimental.
- Menonaktifkan fitur tertentu sementara.
- Menguji tampilan baru.
- Mengatur fitur berdasarkan kelompok pengguna.
- Mengontrol fitur berdasarkan wilayah.
- Melakukan peluncuran bertahap.
- Menguji perubahan sistem secara terbatas.
Fleksibilitas tersebut membuat Feature Flags dapat menjadi bagian dari strategi pengembangan aplikasi.
Tantangan Menggunakan Feature Flags
Feature Flags memang memberikan banyak manfaat, tetapi penggunaannya juga memiliki tantangan.
Salah satunya adalah semakin banyaknya flag yang dibuat dalam sebuah aplikasi.
Jika flag lama tidak pernah dihapus, kode dapat menjadi semakin rumit.
Developer juga dapat mengalami kesulitan memahami fitur mana yang masih aktif dan fitur mana yang sudah tidak digunakan.
Karena itu, Feature Flags perlu dikelola secara teratur.
Technical Debt pada Feature Flags
Feature flag yang sudah tidak diperlukan tetapi tetap berada dalam kode dapat menjadi bentuk technical debt.
Misalnya, sebuah fitur awalnya hanya diuji menggunakan flag tertentu.
Setelah fitur tersebut sudah stabil dan digunakan oleh seluruh pengguna, flag tersebut sebenarnya sudah tidak diperlukan.
Jika developer tidak membersihkannya, kode akan memiliki kondisi tambahan yang sebenarnya tidak lagi dibutuhkan.
Semakin banyak flag yang tidak digunakan, semakin sulit kode dipelihara.
Best Practice dalam Menggunakan Feature Flags
Agar Feature Flags tidak membuat sistem menjadi terlalu rumit, developer dapat menerapkan beberapa kebiasaan.
Pertama, setiap flag sebaiknya memiliki tujuan yang jelas.
Kedua, developer perlu mengetahui siapa yang bertanggung jawab terhadap setiap flag.
Ketiga, flag yang sudah tidak diperlukan sebaiknya segera dihapus.
Keempat, konfigurasi flag perlu didokumentasikan agar anggota tim lain dapat memahami fungsinya.
Dengan pengelolaan yang baik, manfaat Feature Flags dapat diperoleh tanpa menambah kompleksitas secara berlebihan.
Feature Flags dalam Aplikasi Mobile
Aplikasi mobile merupakan salah satu contoh penggunaan Feature Flags yang menarik.
Pengguna aplikasi mobile tidak selalu memperbarui aplikasi pada waktu yang sama.
Dengan Feature Flags, beberapa pengaturan fitur dapat dikontrol dari sisi server selama arsitektur aplikasi mendukung mekanisme tersebut.
Sebagai contoh, sebuah perusahaan dapat mengembangkan fitur baru dalam aplikasi mobile dan mengaktifkannya secara bertahap kepada pengguna.
Hal tersebut dapat membantu tim mengamati perilaku aplikasi sebelum fitur digunakan secara luas.
Feature Flags dalam Proyek Mahasiswa
Mahasiswa Informatika juga dapat mempelajari konsep Feature Flags melalui proyek sederhana.
Misalnya mahasiswa membuat website sistem informasi dengan fitur dashboard baru.
Daripada langsung mengganti dashboard lama untuk semua pengguna, mahasiswa dapat membuat mekanisme konfigurasi yang menentukan dashboard mana yang ditampilkan.
Dengan latihan tersebut, mahasiswa dapat memahami bagaimana sebuah fitur dapat dikontrol tanpa harus mengubah keseluruhan aplikasi.
Mengapa Mahasiswa Informatika Perlu Mempelajarinya?
Feature Flags mengajarkan mahasiswa bahwa pengembangan software bukan hanya tentang menulis kode dan membuat fitur.
Developer juga perlu memikirkan bagaimana fitur tersebut diuji, diperkenalkan kepada pengguna, dipantau, dan dinonaktifkan ketika terjadi masalah.
Konsep ini memperkenalkan cara berpikir yang lebih dekat dengan pengembangan software di lingkungan profesional.
Mahasiswa juga dapat memahami pentingnya melakukan perubahan secara bertahap daripada selalu mengubah seluruh sistem sekaligus.
Hubungan Feature Flags dengan DevOps
Feature Flags sering digunakan bersama praktik DevOps karena membantu tim melakukan perubahan secara lebih fleksibel.
Developer dapat mengembangkan fitur, melakukan pengujian, dan menempatkan kode pada sistem tanpa harus langsung memberikan fitur tersebut kepada seluruh pengguna.
Tim operasional juga dapat memiliki mekanisme untuk mengontrol kondisi fitur sesuai dengan kebutuhan.
Kolaborasi antara pengembangan dan operasional dapat menjadi lebih fleksibel ketika proses release tidak sepenuhnya bergantung pada deployment baru.
Masa Depan Feature Flags
Seiring berkembangnya aplikasi digital, kebutuhan untuk melakukan perubahan secara cepat tetapi tetap aman akan semakin penting.
Perusahaan tidak hanya ingin merilis fitur dengan cepat, tetapi juga ingin mengurangi risiko ketika fitur tersebut digunakan oleh pengguna.
Feature Flags dapat menjadi salah satu pendekatan untuk mencapai tujuan tersebut.
Perkembangan sistem cloud, continuous delivery, dan pengembangan aplikasi berskala besar juga membuat kebutuhan terhadap mekanisme pengendalian fitur semakin relevan.
Peluang Karier
Pemahaman mengenai Feature Flags dapat mendukung berbagai profesi di bidang teknologi, seperti:
- Software Engineer.
- Backend Developer.
- Frontend Developer.
- DevOps Engineer.
- Mobile Developer.
- Site Reliability Engineer.
- Release Engineer.
Meskipun Feature Flags merupakan salah satu teknik dalam pengembangan software, pemahamannya dapat membantu developer melihat proses pengembangan aplikasi secara lebih menyeluruh.
Penutup
Feature Flags merupakan teknik yang memungkinkan developer mengontrol ketersediaan sebuah fitur tanpa harus selalu melakukan perubahan besar pada aplikasi.
Melalui Feature Flags, fitur baru dapat diuji secara bertahap, diberikan kepada kelompok pengguna tertentu, digunakan untuk A/B Testing, maupun dinonaktifkan ketika mengalami masalah.
Namun, Feature Flags juga perlu dikelola dengan baik. Flag yang sudah tidak diperlukan sebaiknya dihapus agar tidak membuat kode semakin rumit.
Bagi mahasiswa Program Studi Informatika, mempelajari Feature Flags dapat memberikan pemahaman bahwa pengembangan software modern tidak hanya berfokus pada bagaimana sebuah fitur dibuat.
Developer juga perlu memikirkan bagaimana fitur tersebut diperkenalkan, dikendalikan, diuji, dan dikelola setelah digunakan oleh pengguna.




