Cara menggelar fitur hanya untuk beberapa pengguna tertentu


11

Contoh yang baik dari apa yang saya coba tanyakan adalah fitur Timeline baru Facebook. Pada awalnya, hanya beberapa orang terpilih yang diizinkan mengakses garis waktu. Ketika fitur menjadi lebih solid dalam cara kerjanya dan bug diperbaiki di dalamnya, pengguna tambahan diizinkan mengakses fitur tersebut. Di kemudian hari, sekelompok besar pengguna diizinkan mengakses fitur ini dan sekarang, fitur umum untuk semua pengguna. Bagaimana cara tim pengembangan mengelola fitur jenis ini diluncurkan?

Saya telah bermain dengan gagasan untuk menggunakan pengaturan konfigurasi untuk secara selektif mengontrol akses jika ada sesuatu yang sedang dalam pengujian atau dalam produksi melalui file konfigurasi dan pernyataan kondisi jika dalam kode. Sekarang sementara ini oke untuk fitur-fitur sederhana, saya percaya bahwa jika kita mencoba mengimplementasikan ini dalam set fitur yang lebih besar itu akan menjadi tidak terkelola.

Apa cara terbaik untuk mengelola peluncuran fitur dengan cara ini?


3
ACL & RBAC adalah dua (sangat mirip) cara untuk melakukan apa yang Anda cari.
yannis

@YannisRizos: Memang, itu jawaban kecil / pendek, tapi saya pikir itu bermanfaat secara sah. Anda harus mempostingnya sebagai jawaban.
Steven Evers

Bukankah ini pada dasarnya sama untuk semua fitur bukan hanya baru? Bergantung pada kredensial, pengguna memiliki akses ke x jumlah opsi? Misalnya tingkat admin dapat mengubah pengaturan dan tingkat kasar hanya dapat mengetik data?
Pieter B

Jawaban:


2

Bagaimana cara tim pengembangan mengelola fitur jenis ini diluncurkan?

Mudah ditebak bahwa sistem seperti Facebook sebagian besar didorong oleh basis data. Semua data pengguna jelas disimpan dalam basis data, dan itu kemungkinan mencakup informasi tentang cara merender data pengguna. Mustahil untuk mengetahui dengan tepat bagaimana basis data Facebook diatur, tetapi harus menjadi kasus bahwa fitur seperti Timeline diluncurkan ke pengguna secara bertahap dengan secara berkala memilih pengguna dalam database, berdasarkan pada beberapa kriteria, dan mengubah nilainya ( s) dari beberapa bidang.

Sebagai contoh, mungkin mereka memiliki lapangan dalam tabel user seperti timeline_statusyang memiliki nilai-nilai seperti not offered, offered, preview, dan public. Berdasarkan itu saja, sistem Facebook dapat memutuskan bagaimana merender halaman info pengguna. Tim FB kemudian dapat mencoba fitur Timeline dengan memilih beberapa kelompok pengguna dan mengubah nilai bidang itu.

Dalam praktiknya, saya yakin ini sedikit lebih rumit dari itu, tetapi gagasan intinya adalah bahwa akun pengguna hanyalah data, dan sebagian dari data itu dapat menentukan fitur mana yang tersedia. Meluncurkan fitur baru kemudian hanya masalah memperbarui catatan pengguna dalam database.


9

... dan pernyataan kondisi jika dalam kode.

Ya, itu cara yang salah untuk melakukannya. Apa pun fitur X jika dapat dikonfigurasi maka ia harus memperluas atau mengganti sesuatu. Lakukan ITU dalam kode. Misalnya, hal FB mungkin memiliki sesuatu seperti:

class UserPageView;
class HatedTimelineView : UserPageView;
class OldViewEveryoneLikes : UserPageView;

Maka Anda akan membangun pabrik yang membuat objek UserPageView ketika mengunjungi halaman pengguna berdasarkan konfigurasi. Anda akan mengaktifkan tampilan itu. Tidak ada cabang konyol.

Anda ingin melakukannya dengan cara ini karena jika seseorang meminta Anda untuk mengubahnya sekali, mereka akan memintanya lagi. Selanjutnya mereka akan meminta untuk mengubah hal lain. Teka-teki arsitektur Anda dengan kasing khusus dan jika ada di mana-mana dan Anda akan memiliki semangkok besar spaghetti berjamur yang tidak dapat dipelihara daripada produk yang kaya fitur dan matang.


Anda perlu menggunakan pernyataan conditional if. Kalau tidak, bagaimana pabrik Anda tahu UserPageView mana yang akan dikembalikan? Yang mengatakan, saya setuju bahwa menempatkan jika pernyataan di seluruh kode adalah ide yang buruk, Anda ingin memusatkannya.
pengantin

1

Pikirkan fitur yang sama dengan yang Anda pikirkan tentang fitur administrasi di situs web.

Ketika sebuah halaman memuat periksa apakah pengguna memiliki hak yang tepat untuk fitur jika memuatnya.

Facebook tampaknya menggunakan pendekatan berbasis lokasi ketika meluncurkan fitur baru. Ini mungkin sesederhana melihat alamat IP pengguna untuk menemukan lokasi mereka.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.