Feature Flags: ภาพรวม
Feature Flag คืออะไร?
หัวข้อที่มีชื่อว่า “Feature Flag คืออะไร?”feature flag (หรือที่เรียกว่า feature toggle) คือจุดตัดสินใจในโค้ดของคุณ ที่ให้คุณเปิดหรือปิดพฤติกรรมบางอย่างได้โดยไม่ต้อง deploy โค้ดใหม่ แทนที่จะปล่อยฟีเจอร์ที่มีความเสี่ยงให้ผู้ใช้ทุกคนพร้อมกัน คุณจะห่อฟีเจอร์นั้นไว้ด้วย flag แล้วควบคุมจาก dashboard
ใน GrowthBook เราเรียก feature flag ว่า Feature ซึ่งทุก Feature จะมี:
- key — สตริงคงที่ที่โค้ดของคุณใช้ค้นหา flag (เช่น
new-checkout) - value type — boolean, string, number หรือ JSON
- default value — ค่าที่ SDK คืนกลับมาเมื่อไม่มี rule ใดตรงเงื่อนไข
- Rules ในแต่ละ environment — ใครเห็นค่าไหน และเมื่อไร
โมดูลนี้ครอบคลุมอะไรบ้าง
หัวข้อที่มีชื่อว่า “โมดูลนี้ครอบคลุมอะไรบ้าง”| บทเรียน | สิ่งที่คุณจะได้เรียนรู้ |
|---|---|
| Create a Flag | วิธีสร้าง Feature ใน GrowthBook UI และอ่านค่าผ่าน SDK |
| Flag Types | value type แบบ boolean, string, number และ JSON — ควรใช้แบบไหนเมื่อไร |
| Environments | Dev / staging / production — สถานะ flag และ SDK key ที่แยกอิสระจากกัน |
| Default Values | ค่าที่ SDK คืนกลับมาเมื่อไม่มี rule ตรงเงื่อนไข และทำไม fallback ที่ปลอดภัยจึงสำคัญ |
ตัวอย่างแรก: อ่านค่า flag ในโค้ด
หัวข้อที่มีชื่อว่า “ตัวอย่างแรก: อ่านค่า flag ในโค้ด”GrowthBook มี SDK ให้สำหรับทุกภาษาและเฟรมเวิร์กหลัก นี่คือ pattern ขั้นต่ำสุดสำหรับ Node.js:
import { GrowthBook } from '@growthbook/growthbook';
const gb = new GrowthBook({ apiHost: 'https://cdn.growthbook.io', clientKey: 'sdk-abc123',});
await gb.init({ timeout: 2000 });
if (gb.isOn('new-checkout')) { // show the new checkout flow} else { // show the current checkout flow}การเรียก gb.isOn('new-checkout') เป็นการถาม GrowthBook ว่า “flag ชื่อ new-checkout เปิดอยู่หรือไม่สำหรับ context ของผู้ใช้คนนี้?” คำตอบมาจาก rules ที่คุณตั้งค่าไว้ใน GrowthBook UI — โค้ดของคุณไม่ต้องฮาร์ดโค้ดค่านี้เลย
import { GrowthBook } from '@growthbook/growthbook';
const gb = new GrowthBook({
apiHost: 'https://cdn.growthbook.io',
clientKey: 'sdk-abc123',
});
await gb.init({ timeout: 2000 });
if (gb.isOn('new-checkout')) {
// new checkout flow
} else {
// current checkout flow
}