Flag และชนิด
Flag คือการตัดสินใจที่มีชื่อ ซึ่งแอปของคุณขอให้ FortressFlag ตัดสินให้ อุปกรณ์นี้ควรเห็นหน้าชำระเงินใหม่ไหม ปุ่มซื้อควรใช้ข้อความไหน ลองใหม่กี่ครั้งก่อนจะยอมแพ้ หน้านี้ให้คำศัพท์ที่เอกสารส่วนที่เหลือสร้างต่อยอด
Flag อยู่ในโปรเจกต์ และมีค่าต่อสภาพแวดล้อม
หัวข้อที่มีชื่อว่า “Flag อยู่ในโปรเจกต์ และมีค่าต่อสภาพแวดล้อม”Flag ทุกตัวเป็นของโปรเจกต์หนึ่ง และระบุด้วย คีย์ — ชื่อสั้น ๆ ตัวพิมพ์เล็กอย่าง new-checkout คีย์คือสิ่งที่โค้ดของคุณเรียกหา และมัน เปลี่ยนไม่ได้หลังสร้าง แอปที่คุณปล่อยไปแล้วมีคีย์ฝังอยู่ในโค้ด การเปลี่ยนชื่อคีย์จึงทำให้แอปพัง คุณเปลี่ยนชื่อที่แสดงของ flag ได้ทุกเมื่อ แต่คีย์อยู่ถาวร
Flag ไม่ได้มีค่า เดียว — มันมีค่า ต่อสภาพแวดล้อม new-checkout เปิดอยู่ใน dev กำลัง rollout ใน staging และปิดใน production ได้พร้อมกันทั้งหมด คุณสลับและเจาะกลุ่มแต่ละสภาพแวดล้อมได้อย่างอิสระต่อกัน
ชนิดทั้งสาม
หัวข้อที่มีชื่อว่า “ชนิดทั้งสาม”Flag ทุกตัวมี ชนิด ที่เลือกตอนสร้างและเปลี่ยนไม่ได้หลังจากนั้น
| ชนิด | ค่า | เหมาะกับ |
|---|---|---|
| บูลีน | true / false |
สวิตช์ฉุกเฉิน ประตูเปิดปิดฟีเจอร์ การ rollout |
| สตริง | variant ข้อความที่ตั้งชื่อไว้ | การทดลองข้อความ การเลือกอัลกอริทึม ธีม |
| ตัวเลข | variant ตัวเลขที่ตั้งชื่อไว้ | ขีดจำกัด เวลาหมดอายุ เกณฑ์ |
ชนิดเปลี่ยนไม่ได้ด้วยเหตุผลเดียวกับคีย์ โค้ดของคุณอ่าน flag ผ่านการเรียกที่มีชนิดกำกับ (isEnabled stringValue numberValue) และ flag ที่เปลี่ยนชนิดใต้แอปที่ปล่อยไปแล้วจะไม่มีความหมายสำหรับแอปนั้นอีกต่อไป
Variant
หัวข้อที่มีชื่อว่า “Variant”Flag แบบสตริงและตัวเลขให้บริการ variant — ค่าที่ตั้งชื่อไว้ อย่าง control → "buy-now" และ treatment → "start-free" ชื่อมีไว้สำหรับคุณและแดชบอร์ดของคุณ อุปกรณ์ของผู้ใช้ของคุณได้รับแค่ ค่า เท่านั้น ชื่อ variant ไม่เคยออกจาก management plane
ค่าเริ่มต้น และค่าเริ่มต้นที่อยู่หลังค่าเริ่มต้น
หัวข้อที่มีชื่อว่า “ค่าเริ่มต้น และค่าเริ่มต้นที่อยู่หลังค่าเริ่มต้น”มีสองสิ่งที่ต่างกันซึ่งถูกเรียกว่าค่าเริ่มต้น และควรแยกให้ออก
- ค่าเริ่มต้นของ flag คือสิ่งที่สภาพแวดล้อมให้บริการเมื่อไม่มีกฎการเจาะกลุ่มใดตรง สำหรับ flag แบบบูลีนคือสถานะเปิด/ปิด สำหรับ flag แบบหลายตัวแปรคือ variant ที่คุณเลือกเป็นค่าเริ่มต้น
- ค่าเริ่มต้นของโค้ดคุณ คือค่าที่คุณส่งไป ณ จุดเรียก —
isEnabled("new-checkout", default: false)นี่คือปลายสุดของสายโซ่ fallback มันคือสิ่งที่แอปของคุณใช้เมื่อไม่เคยติดต่อ FortressFlag ได้เลย หรือเมื่อ flag ไม่มีอยู่ (หรือไม่มีค่าให้บริการ) ในสภาพแวดล้อมนั้น
Flag แบบหลายตัวแปรที่เพิ่งสร้างและยังไม่ได้เลือก variant เริ่มต้นจะไม่ให้บริการอะไรเลย — ค่าเริ่มต้นของโค้ดคุณตอบแทนจนกว่าคุณจะตัดสินใจ นี่ตั้งใจให้เป็นแบบนั้น flag ที่คุณยังตั้งค่าไม่เสร็จควรทำตัวเหมือน flag ที่ไม่มีอยู่
วงจรชีวิต เก็บถาวร กู้คืน ลบถาวร
หัวข้อที่มีชื่อว่า “วงจรชีวิต เก็บถาวร กู้คืน ลบถาวร”การลบ flag ย้อนกลับได้ — ถึงจุดหนึ่ง การเก็บถาวร เอา flag ออกจากแอปของคุณ บนอุปกรณ์ออนไลน์ทุกเครื่อง flag จะหยุด resolve ภายในราวหนึ่งนาที และค่าเริ่มต้นของโค้ดคุณเข้ามาแทน flag ที่เก็บถาวรแล้ว กู้คืน ได้ครบถ้วนภายในช่วงเวลาเก็บรักษา หรือ ลบถาวร หลังจากนั้น รายการเก็บถาวรอยู่ในแต่ละโปรเจกต์ ข้าง ๆ flag ที่โปรเจกต์นั้นมี
ถ้า flag ถูกทิ้งไว้โดยไม่แตะต้องนาน 90 วัน แดชบอร์ดจะติดป้ายว่า ไม่เคลื่อนไหว — เป็นการสะกิดให้เก็บถาวร ไม่ใช่การเก็บถาวรอัตโนมัติ flag ที่คุณลืมไปแล้วคือความซับซ้อนที่โค้ดเบสของคุณยังจ่ายอยู่
ไปต่อที่ไหนดี
หัวข้อที่มีชื่อว่า “ไปต่อที่ไหนดี”- การเจาะกลุ่ม — กฎ เซกเมนต์ และการ rollout ตามเปอร์เซ็นต์
- สภาพแวดล้อมและโปรเจกต์ — ที่ที่ flag อาศัยอยู่
- Flag ไปถึงแอปของคุณอย่างไร — อุปกรณ์ได้รับอะไรกันแน่