Gesaan dan skop
Penemu duga mungkin bertanya: "Terangkan bagaimana evaluation context, providers, dan hooks OpenFeature berfungsi bersama, termasuk sempadan kegagalan, jenis data, dan privasi."
Isyarat yang dinilai adalah sama ada anda memahami OpenFeature sebagai API penilaian aplikasi yang neutral vendor (vendor-neutral), dan bukannya konsol flag yang lengkap atau sistem kebenaran (authorization). Spesifikasi ini memisahkan flag key, nilai lalai (default value), evaluation context, provider, dan butiran penilaian (evaluation details). Hooks boleh mengesahkan, memperkaya konteks, memancarkan telemetri, atau mengendalikan ralat, tetapi ia tidak sepatutnya mengubah semantik kebenaran perniagaan secara senyap.
Perkara yang diuji oleh penemu duga
- Sama ada anda membezakan antara pemanggil aplikasi (caller), provider, evaluation context, dan metadata flag.
- Sama ada penilaian bertipe (typed evaluation) dan nilai lalai membentuk tingkah laku kegagalan yang boleh diramal.
- Sama ada anda menggunakan konteks transaksi dan hooks berbanding keadaan global boleh ubah (mutable global state) yang dikongsi.
- Sama ada anda mengendalikan tamat masa (timeout) provider, ketidakpadanan jenis, flag yang tiada, dan data privasi.
- Sama ada log penilaian dan audit kekal terpisah daripada kebenaran perniagaan.
Soalan penjelasan
- Adakah flag tersebut mengawal penghantaran berperingkat (gradual delivery), penetapan eksperimen, atau kebenaran keselamatan?
- Medan konteks manakah yang diperlukan, dan yang manakah mesti kekal dalam proses atau di luar log?
- Adakah provider berasaskan memori tempatan, perkhidmatan jauh, fail, atau gubahan provider?
- Adakah nilai lalai selamat apabila provider gagal, dan adakah dasarnya fail-open atau fail-closed?
- Berapa banyak butiran penilaian, versi peraturan, dan ralat provider yang perlu direkodkan?
Jawapan 30 saat
Anda boleh berkata:
API aplikasi OpenFeature meminta nilai flag bertipe, evaluation context membekalkan data penyasaran dan skop permintaan (request-scoped), provider menilai peraturannya, dan hooks berjalan di sekitar kitaran hayat untuk pengesahan, pengayaan konteks, atau telemetri. Pemanggil membekalkan nilai lalai yang selamat; kegagalan provider, ketidakpadanan jenis, atau flag yang tiada mengembalikan butiran yang boleh didiagnosis tanpa mengubah hook menjadi sistem kebenaran. Konteks hanya membawa medan yang diperlukan dengan kawalan privasi. Eksperimen dan metrik pelepasan boleh merekodkan versi peraturan, tetapi tidak sepatutnya merekodkan data peribadi ke dalam log.
Penaakulan langkah demi langkah
Asingkan tanggungjawab penilaian
Pemanggil meminta nilai bertipe, provider menyelesaikan peraturan, dan SDK menggabungkan hasilnya dengan nilai lalai, reason, variant, dan kod ralat:
application -> OpenFeature client -> provider -> flag result
| |
hooks evaluation detailsProvider memiliki sumber peraturan dan pelaksanaan penilaian. Jangan anggap setiap provider mempunyai tingkah laku caching, rangkaian, atau ketekalan yang sama; pemanggil masih mentakrifkan nilai lalai dan tindakan perniagaan selepas kegagalan.
Reka bentuk evaluation context
Konteks boleh merangkumi targeting key, atribut pengguna atau organisasi, dan medan yang disebarkan oleh transaksi. Hantar data yang diperlukan oleh peraturan sahaja; lakukan hash, pangkas, atau tinggalkan e-mel, IP, dan pengecam peranti. Sebarkan konteks transaksi bersama permintaan dan bukannya menggunakan objek boleh ubah yang dikongsi merentas permintaan.
Gunakan penilaian bertipe dan butiran penilaian
Gunakan API yang sepadan untuk boolean, rentetan, nombor, dan nilai berstruktur, dengan nilai lalai daripada jenis yang sama. Butiran penilaian (evaluation details) boleh membawa provider, reason, variant, kod ralat, dan metadata untuk diagnosis serta analisis eksperimen. Butiran bukan keputusan kebenaran; pemanggil harus membezakan antara "flag dimatikan" dengan "pengguna tidak dibenarkan".
Letakkan hooks dan dasar kegagalan
Hooks boleh mengesahkan nilai, menambah telemetri, merekodkan ralat, atau memperkaya konteks dalam peringkat before, after, error, dan finally. Ia mestilah idempoten, berkependaman rendah (low-latency), dan selamat dari segi privasi. Tamat masa provider jauh atau ralat jenis menggunakan nilai lalai yang selamat dan metrik degradasi. Fungsi berisiko tinggi mungkin menggunakan fail-closed, tetapi jelaskan impak pengguna dan pemulihan.
Model jawapan berkualiti tinggi
Saya menganggap OpenFeature sebagai kontrak penilaian aplikasi. Pemanggil menggunakan API bertipe dan membekalkan nilai lalai selamat yang sepadan dengan jenis; evaluation context hanya membawa targeting key dan atribut yang diperlukan oleh peraturan. Provider mengambil dan menilai peraturan daripada sistem flag yang konkrit, mengembalikan nilai, reason, variant, kod ralat, dan metadata. Hooks boleh mengesahkan, memperkaya konteks, dan memancarkan telemetri di sekitar kitaran hayat, tetapi ia tidak menggantikan kebenaran atau menulis semula hasil secara senyap. Tamat masa provider, flag yang tiada, atau ketidakpadanan jenis mengikut nilai lalai yang ditetapkan dan memancarkan metrik ralat. Log merekodkan targeting key yang dianonimkan, flag key, variant, dan versi peraturan dan bukannya e-mel atau konteks permintaan penuh. Pilih fail-open atau fail-closed bagi eksperimen pelepasan mengikut risiko, kemudian uji tamat tempoh cache, pemulihan provider, dan rollback.
Kesilapan lazim
- Memanggil OpenFeature sebagai konsol flag yang lengkap, pengedar konfigurasi, atau perkhidmatan kebenaran.
- Membiarkan hook menukar nilai tanpa merekodkan reason, menjadikan hasil tidak dapat dijelaskan.
- Menggunakan nilai lalai dengan jenis yang salah atau menganggap flag yang tiada sebagai berjaya.
- Menghantar objek pengguna penuh, e-mel, atau IP ke dalam evaluation context tanpa peminimuman data.
- Mencuba semula provider yang gagal tanpa henti atau meninggalkan dasar fail-open/fail-closed yang eksplisit.
- Menganggap butiran penilaian sebagai keputusan kebenaran muktamad.
Soalan susulan dan respons
1. Bolehkah targetingKey menjadi alamat e-mel?
Hanya apabila peraturan benar-benar memerlukannya dan semakan privasi membenarkannya. Pengecam pengguna atau organisasi yang stabil dan tidak boleh diterbalikkan (irreversible) biasanya lebih selamat. Log dan provider jauh masih memerlukan peminimuman data dan had pengekalan.
2. Apakah yang patut berlaku apabila provider mengembalikan ralat?
Pilih nilai lalai yang selamat mengikut risiko, kembalikan kod ralat yang boleh didiagnosis, dan pancarkan metrik degradasi. Flag pelepasan berisiko rendah mungkin kekal diaktifkan secara konservatif, manakala fungsi berisiko tinggi mungkin ditutup atau memerlukan pemulihan manual. Perkara yang penting ialah dasar yang eksplisit dan boleh diuji.
3. Bolehkah hooks melaksanakan pengauditan?
Ia boleh menjadi titik masuk telemetri untuk peristiwa penilaian, tetapi pengauditan juga memerlukan integriti bebas, kawalan akses, dan pengekalan. Kegagalan hook tidak sepatutnya menyekat setiap penilaian melainkan keperluan secara eksplisit menjadikan kejayaan audit sebagai syarat wajib (hard gate).