LaunchDarkly คือแพลตฟอร์มจัดการแฟล็กฟีเจอร์ที่ช่วยให้นักพัฒนาแอปมือถือสามารถเปิดและปิดฟีเจอร์ได้โดยไม่ต้องดีพลอยใหม่ จากข้อมูลของ LaunchDarkly, 2024 กว่า 4,000 บริษัท ใช้บริการนี้เพื่อการเปิดตัวฟีเจอร์อย่างปลอดภัย การทดสอบ A/B และการทยอยเปิดตัวแบบเรียลไทม์
ประเด็นสำคัญ
LaunchDarkly คือแพลตฟอร์มจัดการแฟล็กฟีเจอร์ที่ก่อตั้งขึ้นในปี 2014 โดย Catamorphic Corp. วัตถุประสงค์หลักของบริการคือการให้ทีมพัฒนาสามารถเปิด ปิด และกำหนดค่าฟีเจอร์ของแอปพลิเคชันแบบเรียลไทม์โดยไม่ต้องดีพลอยโค้ดใหม่
แตกต่างจากวิธีดั้งเดิมที่การเปิดตัวฟังก์ชันใหม่ต้องเผยแพร่เวอร์ชันในร้านค้าแอป LaunchDarkly อนุญาตให้เปลี่ยนพฤติกรรมจากระยะไกล สำหรับการพัฒนาโมบายนี่สำคัญเป็นพิเศษ — การตรวจสอบใน App Store และ Google Play ใช้เวลาหลายชั่วโมงถึงหนึ่งวัน ในขณะที่แฟล็กสามารถสลับได้ในไม่กี่วินาที
สถาปัตยกรรมของ LaunchDarkly ประกอบด้วยสามองค์ประกอบ: เซิร์ฟเวอร์แฟล็ก, SDK ของไคลเอ็นต์ และแดชบอร์ด เซิร์ฟเวอร์จัดเก็บการกำหนดค่าแฟล็ก กฎการกำหนดเป้าหมาย และกลุ่มผู้ใช้ SDK รักษาการเชื่อมต่อ SSE แบบถาวรกับเซิร์ฟเวอร์เพื่อรับการอัปเดตแบบเรียลไทม์
เมื่อแฟล็กถูกเปลี่ยนในแดชบอร์ด เซิร์ฟเวอร์จะส่งการอัปเดตไปยัง SDK ที่เชื่อมต่อทั้งหมด ความล่าช้าอยู่ที่ 200–500 มิลลิวินาที เมื่อการเชื่อมต่อขาดหาย SDK จะใช้สถานะที่แคชไว้ล่าสุดจนกว่าช่องสัญญาณจะถูกกู้คืน ซึ่งรับประกันว่าแอปพลิเคชันจะทำงานต่อด้วยการตั้งค่าล่าสุดที่มีอยู่ ณ เวลาที่ขาดการเชื่อมต่อ
แดชบอร์ดของ LaunchDarkly มีอินเทอร์เฟซภาพสำหรับสร้างและจัดการแฟล็ก แดชบอร์ดแสดง สถานะปัจจุบันของแต่ละแฟล็ก ประวัติการเปลี่ยนแปลงพร้อมบันทึกการตรวจสอบว่าใครเปลี่ยนแปลงการกำหนดค่าและเมื่อใด รวมถึงเมตริกการใช้งาน สามารถกำหนดกฎแยกต่างหากสำหรับแต่ละสภาพแวดล้อม — แฟล็กสามารถเปิด 100% ใน staging และ 5% ในโปรดักชัน
Feature flag คือสวิตช์ที่มีชื่อพร้อมกฎและเป้าหมาย แฟล็กสามารถเป็นแบบบูลีน หลายตัวแปร และ JSON Rules กำหนดเงื่อนไขการเปิดใช้งาน: ตัวอย่างเช่น “เปิดสำหรับ 10% ของผู้ใช้ Android 12 จากเยอรมนี” Segments จัดกลุ่มผู้ใช้ตามเวอร์ชัน OS ภูมิภาค รุ่นอุปกรณ์ และแอตทริบิวต์ที่กำหนดเอง
แต่ละแฟล็กมีสภาพแวดล้อม: การพัฒนา staging และโปรดักชัน ซึ่งช่วยให้ทดสอบฟีเจอร์ใหม่ในสภาพแวดล้อมที่แยกออกมาก่อนเปิดใช้งานสำหรับผู้ใช้จริง กฎสภาพแวดล้อม ถูกกำหนดค่าอย่างอิสระ — แฟล็กสามารถเปิดใน staging และปิดในโปรดักชัน
LaunchDarkly มี SDK ดั้งเดิมสำหรับ Android, iOS, React Native และ Flutter แต่ละ SDK ต้องการการตั้งค่าเพียงเล็กน้อย: คีย์ SDK และตัวระบุผู้ใช้ ไลบรารีจัดการการเชื่อมต่อ การแคช และการจัดการข้อผิดพลาดโดยอัตโนมัติ
ในการเชื่อมต่อ ให้สร้างอินสแตนซ์ LDClient ใน Application.onCreate ไคลเอ็นต์ยอมรับการกำหนดค่าด้วยคีย์มือถือและบริบทผู้ใช้ หลังจากการเริ่มต้น แอปพลิเคชันเรียกใช้รูปแบบแฟล็กที่ใดก็ได้ในโค้ดด้วยเมธอด boolVariation
class MyApplication : Application() {
private lateinit var ldClient: LDClient
override fun onCreate() {
super.onCreate()
val config = LDConfig.Builder("mobile-key-abc123")
.build()
val user = LDUser.Builder("user-unique-id")
.build()
ldClient = LDClient.init(this, config, user)
}
}
หลังจากการเริ่มต้น การตรวจสอบแฟล็กทำได้ด้วยเมธอดเดียว BoolVariation ส่งค่าตามกฎของแฟล็ก ค่าเริ่มต้นจะใช้หาก SDK ไม่สามารถรับการกำหนดค่าได้ เมธอด boolVariationDetail ส่งคืนเพิ่มเติมว่าเหตุใดแฟล็กจึงรับค่านั้น
val ldClient = LDClient.get()
val showNewFeature = ldClient.boolVariation(
"new-checkout-flow",
false
)
if (showNewFeature) {
showNewCheckoutScreen()
} else {
showLegacyCheckoutScreen()
}
การทดสอบ A/B ใน LaunchDarkly ถูกนำไปใช้ผ่านแฟล็กหลายตัวแปร แต่ละรูปแบบได้รับเปอร์เซ็นต์ทราฟฟิก — ตัวอย่างเช่น 50% ของผู้ใช้เห็นหน้าจอเก่า (รูปแบบ A) และ 50% เห็นหน้าจอใหม่ (รูปแบบ B) แพลตฟอร์มยึดผู้ใช้ให้อยู่ในกลุ่มเดิมเสมอ
การทยอยเปิดตัวจะเพิ่มเปอร์เซ็นต์ผู้ใช้ที่เข้าถึงฟีเจอร์อย่างค่อยเป็นค่อยไป กำหนดการทั่วไป: 1% — วันแรก, 5% — วันที่สอง, 25% — วันที่สาม, 100% — หลังจากหนึ่งสัปดาห์ เมื่อตรวจพบข้อผิดพลาด แฟล็กจะถูกปิดทันทีสำหรับทุกคน LaunchDarkly ผสานรวมกับ Amplitude, Mixpanel และ Google Analytics เพื่อติดตามเมตริกของแต่ละรูปแบบ
แพลตฟอร์มมีระบบการทดลองในตัวที่คำนวณนัยสำคัญทางสถิติของความแตกต่างระหว่างรูปแบบโดยอัตโนมัติ เมตริกที่มี: การแปลง การคงอยู่ จำนวนเซสชัน ข้อผิดพลาด และเหตุการณ์ที่กำหนดเอง ผลลัพธ์แสดงในแดชบอร์ดพร้อมการแสดงภาพช่วงความเชื่อมั่น การทดลองสามารถทำงานบนทราฟฟิกโปรดักชันและกลุ่มผู้ใช้ที่กำหนด
การผสานรวม LaunchDarkly กับแพลตฟอร์มการวิเคราะห์เป็นข้อดีอีกประการ ข้อมูลแฟล็ก จะถูกส่งไปยัง Amplitude, Mixpanel, Google Analytics หรือไปป์ไลน์ข้อมูลที่กำหนดเองผ่าน Data Export API โดยอัตโนมัติ ซึ่งช่วยให้สร้างรายงานเกี่ยวกับผลกระทบของแต่ละฟีเจอร์ต่อเมตริกหลักของแอปพลิเคชัน LaunchDarkly ยังรองรับ webhooks สำหรับแจ้งระบบภายนอกเกี่ยวกับการเปลี่ยนแปลงสถานะแฟล็ก
มาดูวงจรทั้งหมด: การเพิ่ม dependencies การเริ่มต้น และการตรวจสอบแฟล็กสำหรับ การวัดและเก็บข้อมูลข้อขัดข้อง ฟีเจอร์นี้ควรทำงานเฉพาะสำหรับผู้ทดสอบ ไม่ใช่ผู้ใช้จริง SDK ของ LaunchDarkly สำหรับ Android มีให้ผ่าน Maven Central เวอร์ชัน 5.x รองรับ Kotlin Coroutines และ Jetpack Compose สำหรับการรับการอัปเดตแฟล็กแบบรีแอกทีฟ
สำหรับแอปพลิเคชัน iOS LaunchDarkly รองรับ Swift Package Manager และ CocoaPods Swift SDK ใช้ async/await สำหรับการเริ่มต้นแบบอะซิงโครนัสและเฟรมเวิร์ก Combine สำหรับสมัครรับการเปลี่ยนแปลง ทั้งสอง SDK (Android และ iOS) รองรับการซิงโครไนซ์พื้นหลังและการแคชในที่จัดเก็บในเครื่องสำหรับการทำงานแบบออฟไลน์
// app/build.gradle
dependencies {
implementation "com.launchdarkly:launchdarkly-android-sdk:5.2.0"
}
ในคลาส CrashReporter เราตรวจสอบแฟล็ก crash-reporting-enabled หากแฟล็กถูกเปิด สำหรับผู้ใช้ปัจจุบัน เราจะเริ่มส่งรายงานข้อขัดข้อง SDK จะรับสถานะใหม่โดยอัตโนมัติเมื่อมีการเปลี่ยนแปลงบนเซิร์ฟเวอร์ แต่การตรวจสอบครั้งเดียวก็เพียงพอสำหรับการเริ่มต้น
class CrashReporter {
fun init() {
val client = LDClient.get()
if (client.boolVariation("crash-reporting-enabled", false)) {
Crashlytics.start()
}
}
}
สถานการณ์ที่ประสบความสำเร็จ: การจัดการขั้นตอนการชำระเงินด้วยการปิดทันทีเมื่อผู้ให้บริการล้มเหลว การทยอยเปิดตัวการเปลี่ยนแปลง UI พร้อมการติดตามเมตริก การปรับแต่งเนื้อหาตามกลุ่ม ตามบล็อกอย่างเป็นทางการของ LaunchDarkly ทีมต่างๆ ลดเวลาในการกู้คืนข้อผิดพลาดจากชั่วโมงเป็นนาที
แอนตี้แพทเทิร์น: การใช้แฟล็กสำหรับลอจิกแบบมีเงื่อนไขถาวร (แฟล็กเป็นแบบชั่วคราว) การเก็บความลับในแอตทริบิวต์ของแฟล็ก การสร้างกฎที่ทับซ้อนกัน คำแนะนำ: ลบแฟล็กออกจากโค้ดหลังจากเสร็จสิ้นการเปิดตัว — ซึ่งป้องกันหนี้ทางเทคนิคและความซับซ้อนของโค้ดเบส ข้อผิดพลาดทั่วไปอีกประการคือการใช้แฟล็กเป็นสวิตช์ระยะยาวที่ไม่ถูกลบออกจากโค้ดหลังจากฟีเจอร์เสถียรแล้ว
กลยุทธ์การจัดการแฟล็กที่เหมาะสมรวมถึงแผนการลบสำหรับแต่ละแฟล็กใหม่ LaunchDarkly มีเครื่องมือในตัวสำหรับตรวจจับแฟล็กที่ไม่ได้ใช้ — แฟล็กถือว่าไม่ได้ใช้หาก SDK ไม่ได้ตรวจสอบค่าของมันมากกว่า 30 วัน แฟล็กเหล่านี้จะถูกทำเครื่องหมายในแดชบอร์ดและสามารถลบออกจากโค้ดได้อย่างปลอดภัย
สำหรับโปรเจกต์ขนาดเล็กที่มีทีมเดียว LaunchDarkly อาจมากเกินไป — เงื่อนไขง่ายๆ ในโค้ดหรือ Firebase Remote Config ก็เพียงพอ เลือกแพลตฟอร์ม เมื่อคุณต้องการการแบ่งกลุ่มที่ซับซ้อน การตรวจสอบการเปลี่ยนแปลง การทดลอง A/B หรือการจัดการแฟล็กแบบหลายทีม สำหรับสตาร์ทอัพและโปรเจกต์ MVP LaunchDarkly มีแผน Starter ฟรีพร้อมข้อจำกัดด้านจำนวนแฟล็กและ MAU
ความเข้ากันได้ของ LaunchDarkly กับเครื่องมือที่มีอยู่เป็นเกณฑ์การเลือกที่สำคัญ แพลตฟอร์มผสานรวม กับ Jira, Slack, PagerDuty, Datadog และบริการอื่นๆ ผ่าน webhooks และ API ทีมที่ใช้เครื่องมือเหล่านี้อยู่แล้วจะได้รับการผสานรวมที่ราบรื่นโดยไม่ต้องมีโครงสร้างพื้นฐานเพิ่มเติมสำหรับการตรวจสอบและแจ้งเตือนเมื่อสถานะแฟล็กเปลี่ยนแปลง LaunchDarkly ยังรองรับ Terraform provider สำหรับการจัดการแฟล็กเป็นโค้ด (Flags as Code) — ซึ่งช่วยให้จัดเก็บการกำหนดค่าแฟล็กใน Git และผ่านการตรวจสอบโค้ดก่อนนำไปใช้
คำถามที่พบบ่อย
LaunchDarkly มี แผน Freemium พร้อมข้อจำกัดด้านจำนวนแฟล็กและ MAU แผนเชิงพาณิชย์สำหรับทีมเริ่มต้นที่ $150 ต่อเดือน รวมถึงแฟล็กไม่จำกัด การตรวจสอบการเปลี่ยนแปลง และการผสานรวมกับ Jira และ Slack
แพลตฟอร์มรองรับ กว่า 40 SDK รวมถึง Android ดั้งเดิม (Kotlin/Java), iOS (Swift/Objective-C), React Native และ Flutter SDK มือถือทั้งหมดทำงานผ่าน Streaming API พร้อมการแคชในที่จัดเก็บในเครื่อง
ได้ LaunchDarkly มี ระบบการทดลองในตัว พร้อมแฟล็กหลายตัวแปร การกระจายทราฟฟิก และการคำนวณนัยสำคัญทางสถิติอัตโนมัติ รองรับการผสานรวมกับ Amplitude, Mixpanel และ Google Analytics
เมื่อการเชื่อมต่อขาดหาย SDK ใช้ค่าแฟล็กที่แคชไว้ จากที่จัดเก็บในเครื่อง หลังจากกู้คืนการเชื่อมต่อ SDK จะซิงโครไนซ์กับเซิร์ฟเวอร์และใช้สถานะแฟล็กปัจจุบัน
LaunchDarkly มี การทดสอบ A/B, แฟล็กหลายตัวแปร, การแบ่งกลุ่มขั้นสูง, การตรวจสอบการเปลี่ยนแปลง และ SDK สำหรับภาษาฝั่งเซิร์ฟเวอร์ Firebase Remote Config ง่ายกว่าและฟรี แต่ไม่รองรับการทดลองหลายตัวแปรหรือการตรวจสอบโดยละเอียด
สรุป
เราจะพัฒนาแอปพลิเคชันบนมือถือแบบครบวงจร
IT Sectr สร้างแอปพลิเคชัน iOS และ Android สำหรับสตาร์ทอัพและธุรกิจตั้งแต่ปี 2017 เราจะให้คำแนะนำและเสนอวิธีแก้ปัญหาที่ดีที่สุดแก่คุณ
อ่านเพิ่มเติม