Penandaan Fitur vs Otorisasi

Saya baru saja menemukan konsep pelaporan fitur, dan lib Java open source yang populer untuk ini disebut Togglz, yang mengutip postingan blog Martin Fowler:

Ide dasarnya adalah memiliki file konfigurasi yang mendefinisikan sekumpulan tombol untuk berbagai fitur yang Anda tunggu. Aplikasi yang berjalan kemudian menggunakan tombol ini untuk memutuskan apakah akan menampilkan fitur baru atau tidak.

Namun bagi saya, ini terdengar seperti otorisasi: Apakah pengguna diizinkan untuk melihat konten ini?

Misalnya, Haruskah pengguna dapat melihat menu FizzBuzz atau tidak?

Di Togglz saya mungkin menerapkan pemeriksaan ini seperti:

if(MyFeatures.ShowFizzBuzz.isActive()) {
    // Show the FizzBuzz menu.
}

Misalnya, di Apache Shiro, saya bisa melakukan hal yang persis sama:

ShowFizzBuzzPermission showFizzBuzz = new ShowFizzBuzzPermission();
if(currentUser.isPermitted(showFizzBuzz) {
    // Show the FizzBuzz menu.
}

Sekali lagi, penandaan fitur terasa sama persis dengan masalah pemeriksaan peran atau izin.

Saya yakin saya salah, tapi saya tidak tahu caranya. Jadi saya bertanya: Apa perbedaan penandaan fitur dengan otorisasi dan pemeriksaan peran/izin, dan jenis kasus penggunaan konkret apa yang menunjukkan perbedaan ini? Dengan kata lain: Kapan saya harus menggunakan pemeriksaan otorisasi/peran/izin, dan kapan saya harus menggunakan tanda fitur?


person smeeb    schedule 21.11.2014    source sumber


Jawaban (2)


Saya akan menggunakan Tuan. Terminologi Fowler untuk dua jenis Feature Toggles:

  • Business Toggle: akan menjadi fitur yang konfigurasinya berumur panjang dan didukung oleh semua negara bagian.
  • Release Toggle: Dimaksudkan untuk membantu transisi dari implementasi yang lama atau tidak ada ke implementasi yang 'baru'. Tujuannya adalah untuk menghentikan cara kerja yang lama setelah pekerjaan selesai. Hal ini memungkinkan Anda ketika Anda ingin mempertahankan cara kerja saat ini sementara cara 'baru' belum selesai. Kebanyakan orang setuju bahwa hal ini harus dihindari sebisa mungkin.

Apa perbedaan penandaan fitur dengan otorisasi dan pemeriksaan peran/izin, dan jenis kasus penggunaan konkret apa yang menunjukkan perbedaan ini?

Saya pikir otorisasi dan pemeriksaan peran/izin adalah konfigurasi di bawah penerapan Business Toggle. Otentikasi adalah fitur Toggle Bisnis Anda, Shiro akan menjadi alat yang membantu Anda mengonfigurasi dan menerapkan fitur otentikasi Anda. Togglz adalah kerangka implementasi Business Toggles atau Version Toggles. Ini dapat digunakan untuk fitur autentikasi

Jika Anda menggunakan Togglz untuk mengaktifkan/menonaktifkan autentikasi, lalu Shiro untuk menerapkan konfigurasi pengguna, kode Anda akan terlihat seperti ini:

if(MyFeatures.ShowFizzBuzz.isActive()) {
  ShowFizzBuzzPermission showFizzBuzz = new ShowFizzBuzzPermission();
  if(currentUser.isPermitted(showFizzBuzz) {
    // Show the FizzBuzz menu.
  }
}

Anda dapat memilih untuk melupakan Fitur Toggle, karena Anda selalu ingin otentikasi AKTIF. Peralihannya hanyalah memperkenalkan cek tambahan dan utang teknis.

Kapan saya harus menggunakan pemeriksaan otorisasi/peran/izin, dan kapan saya harus menggunakan tanda fitur?

Saya pikir keputusan ini terserah Anda. Menurut saya otorisasi adalah sebuah fitur, dan Anda dapat menggunakan Shiro untuk mengimplementasikannya. Aplikasi Anda mungkin memiliki banyak fitur lain yang melampaui cakupan Shiro, dan membuat Anda ingin menggunakan Togglz untuk mengaktifkan dan menonaktifkannya. Saya berpendapat bahwa fitur kompleks apa pun masih memerlukan konfigurasi untuk menggerakkan logika bisnis Anda.

person ajk    schedule 02.02.2015

Saya tidak akan menjawab logika di balik Togglz. Dalam dokumentasi FF4J (fitur membalik untuk Java), Anda dapat menemukan skema yang sangat jelas yang menjelaskan perbedaannya.

Fitur Beralih vs Otorisasi

Fitur adalah perawatan, sebuah fungsi yang dapat diaktifkan dan dinonaktifkan saat runtime melalui konsol web khusus. Ini seharusnya menjadi driver utama untuk mengubah kode Anda: Apakah saya perlu mengaktifkan/menonaktifkan melalui konfigurasi?

Setelah Anda mengidentifikasi mekanisme Feature Toggle akan memiliki nilai yang besar (Anda dapat mengambil beberapa kasus penggunaan di bagian bawah halaman ff4J.org), Anda dapat memeriksa izin.

Memeriksa izin dalam konteks Pengalihan Fitur dimaksudkan untuk melakukan "Rilis Canary": membuka fitur baru untuk sebagian pengguna terbatas sebelum dibuka untuk semua orang.

person Cédrick Lunven    schedule 01.11.2015