ข้ามไปยังเนื้อหา

Feature Flags: ภาพรวม

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 Typesvalue type แบบ boolean, string, number และ JSON — ควรใช้แบบไหนเมื่อไร
EnvironmentsDev / staging / production — สถานะ flag และ SDK key ที่แยกอิสระจากกัน
Default Valuesค่าที่ SDK คืนกลับมาเมื่อไม่มี rule ตรงเงื่อนไข และทำไม fallback ที่ปลอดภัยจึงสำคัญ

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
}
Feature key ใน GrowthBook ใช้ทำอะไร?
gb.isOn("flag-name") คืนค่าอะไรเมื่อไม่มี rule ตรงเงื่อนไข และ default value เป็น false?
คอมโพเนนต์ไหนที่แสดงข้อความเตือนเรื่องการตั้งค่า Docker Compose ในคอร์สนี้?