แฟล็กคุณลักษณะความสามารถในการปรับขยายได้สูงที่นี่
5 สิ่งที่เป็นพิษต่อ scalability , "5. ขาดคุณสมบัติธง"
แฟล็กฟีเจอร์คืออะไร?
แฟล็กคุณลักษณะความสามารถในการปรับขยายได้สูงที่นี่
5 สิ่งที่เป็นพิษต่อ scalability , "5. ขาดคุณสมบัติธง"
แฟล็กฟีเจอร์คืออะไร?
คำตอบ:
'feature flag' (หรือFeature Toggle ) คือความสามารถในการเปิด / ปิดคุณสมบัติ (ส่วนย่อย) ของแอปพลิเคชันของคุณได้อย่างง่ายดาย:
ฉันเดาว่าในตัวอย่างนั้นมีประโยชน์ที่จะมีการควบคุมเพื่อลดการตั้งค่าคุณลักษณะลงบ้างหากคุณต้องการเช่นลดการสืบค้นฐานข้อมูลหากโหลดสูงเกินไป
มีเหตุผลอื่น ๆ อีกมากมายที่คุณต้องการใช้สิ่งนี้ - หนึ่งในสาเหตุหลักในการเปิดใช้งานการจัดส่งแบบต่อเนื่อง : การผลักดันสิ่งต่าง ๆ เข้าสู่การผลิต / ใช้งานจริง แต่มีการปิดใช้งาน / สลับคุณลักษณะจนกว่าจะเสร็จสิ้น เรามักใช้สิ่งที่เราเรียกว่า 'คุกกี้นักพัฒนา' เพื่อแสดงคุณสมบัติที่ยังไม่สมบูรณ์ให้กับทีมนักพัฒนาเท่านั้น ด้วยวิธีนี้เราสามารถทดสอบงานที่เสร็จสมบูรณ์แล้วบางส่วนในการผลิต (โอ้ใช่! มีการผสานรวมที่ดีกว่านี้หรือไม่) ในการเผยแพร่ / การปรับใช้หลายรายการก่อนที่เราจะ 'ยกเลิกการสลับ' (เสร็จสมบูรณ์) และจะปรากฏต่อสาธารณะ
นี่คือแพ็คเกจง่ายๆที่ช่วยให้คุณทำสิ่งนี้ใน ASP.NET MVC land: https://github.com/cottsak/DevCookie (การเปิดเผยข้อมูลทั้งหมด: ฉันเป็นผู้เขียน)
Fowler ยังมีบทความที่ยาวกว่าบทความที่เชื่อมโยงด้านบนพร้อมรายละเอียดเพิ่มเติมมากมาย
โพสต์นี้ (สถานที่เดียวกันฟาวเลอร์ยัง) อธิบายประเภทต่างๆของกลยุทธ์การสลับ DevCookieสนับสนุนกลยุทธ์แบบ mainline / trunk-based และเรียกว่า " Release Toggle " ในบทความ
คำตอบของ Adilเน้นว่ามีคำศัพท์และเหตุผลมากมายที่คุณอาจต้องการโครงสร้างพื้นฐานนี้ โปรดทราบว่าคุณอาจต้องการเพียงบางสิ่งเหล่านี้ ตัวอย่างเช่นฉันอาจต้องการเปิดใช้งานขั้นตอนการปรับใช้ / การจัดส่งที่เรียบง่ายและคล่องตัวเท่านั้นดังนั้นโครงสร้างพื้นฐานที่เรียบง่ายก็เพียงพอแล้ว หากคุณเลือกที่จะย้ายไปสู่การทดลอง#leanstartupเต็มรูปแบบด้วย A / B การทดสอบตามกลุ่มและสิ่งต่างๆเช่นการเปิดตัวที่มีการควบคุมคุณควรพิจารณาเครื่องมือวิเคราะห์ (เช่นฮีป ) ซึ่งอำนวยความสะดวกให้กับวิธีการพัฒนาที่ขับเคลื่อนด้วยข้อมูลเหล่านั้นเป็นโซลูชันที่แตกต่างกัน . โครงสร้างพื้นฐานแบบสลับที่ทำทั้งหมดข้างต้นจะนำไปสู่การขยายตัวและความซับซ้อนที่ไม่จำเป็น
ถ้าคุณทำให้มันไกลขนาดนี้แล้วคุณอาจต้องการตรวจสอบบางส่วนของฉันคิดอื่น ๆ เกี่ยวกับการพ้นจากการพัฒนาคุณลักษณะที่สามารถเลือกและความคิดโง่อื่น ๆ เช่นการทดสอบ, QA, SIT ยืนหมอบ
ฟีเจอร์แฟล็กเป็นเทคนิคในการปิดฟังก์ชันการทำงานบางอย่างของแอปพลิเคชันของคุณผ่านการกำหนดค่าโดยไม่ต้องปรับใช้โค้ดใหม่
แฟล็กคุณลักษณะมีส่วนสำคัญในโครงร่าง CI ซึ่งคุณลักษณะต่างๆจะถูกปรับใช้อย่างต่อเนื่อง แต่ไม่จำเป็นต้อง "นำออกใช้" ในการใช้งานจริง
ข้อมูลเพิ่มเติมที่นี่:
- แก้ไข:
ฟีเจอร์แฟล็กการสลับฟีเจอร์การทดสอบและการเปิดตัวที่ควบคุมเป็นคำพ้องความหมายสำหรับแนวคิดที่เรียบง่าย แต่ทรงพลัง: โค้ดที่แยกใช้จากการเปิดตัวฟีเจอร์ พูดง่ายๆก็คือความสามารถในการผลักดันให้ฟีเจอร์ของคุณมุ่งมั่นในการผลิตในขณะที่เลือกว่าใครในกลุ่มลูกค้าของคุณ - ถ้าใครเลย - จะได้เห็นคุณลักษณะนั้น
พวกเขาได้รับความนิยมในส่วนของ Facebook ยาม LiX ของ LinkedIn เป็นอีกหนึ่งตัวอย่างที่ดี
การยอมรับแนวคิดง่ายๆนี้เป็นการวางรากฐานสำหรับแนวทางปฏิบัติที่ดีที่สุดหลายประการ ได้แก่ :
การปรับใช้ / การจัดส่งอย่างต่อเนื่อง - รหัสหลายตัวจะผลักดันไปสู่การผลิตในหนึ่งวัน
การพัฒนา Trunk / Mainline - สาขาคุณลักษณะควรถูกสร้างขึ้นสำหรับคำขอดึงเท่านั้นไม่ใช่สำหรับการพัฒนาคุณลักษณะที่มีอายุยาวนาน
ไม่มีการปล่อยรถไฟอีกต่อไปเพื่อขัดขวางสิ่งต่างๆ
การทดสอบ QA / Perf ในการผลิต - การทดสอบคุณภาพจริงและการทดสอบประสิทธิภาพอยู่บนโครงสร้างพื้นฐานการผลิตที่มีปริมาณการใช้งานในการผลิต อย่าเสียเวลาในการสร้างห้องปฏิบัติการประสิทธิภาพและสภาพแวดล้อมการจัดเตรียมที่กว้างขวาง
การทดลอง - รู้ว่าคุณลักษณะใหม่ทำให้ KPI ของคุณเป็นอย่างไร
การหลีกเลี่ยงโปรแกรมแก้ไขด่วนหรือการย้อนกลับของโค้ดเมื่อเกิดปัญหาขึ้น - ทั้งโปรแกรมแก้ไขด่วนและการย้อนกลับโค้ดเป็นเรื่องที่เครียดใช้เวลานานและทำให้เกิดปัญหาเกินความจำเป็น ให้ปิดคุณลักษณะนี้หรือลดระดับลง
คนอื่น ๆ ได้กล่าวถึงไลบรารีโอเพนซอร์ส เป็นตัวอย่างที่ดีของการแก้ปัญหาอย่างเต็มรูปแบบ - เหมือนยามและ LIX - เป็นสปลิต ฉันทำงานให้กับ Split
มีคำตอบที่ยอดเยี่ยมมากมายที่นี่ทั้งหมดนี้เป็นคำจำกัดความที่สำคัญและเป็นที่นิยมในโพสต์ของMartin Fowler :
เป็นโค้ดส่วนหนึ่งที่ "[อนุญาต] ให้ทีมแก้ไขพฤติกรรมของระบบโดยไม่ต้องเปลี่ยนโค้ด"
ดังนั้นในอดีตเราจึงคิดว่าสิ่งเหล่านี้แสดงโดยรหัสหลอก:
if(app_settings["beta-mode"] == "true")
showAwesomeNewGui();
else
sameOldSnoozeFeset();
นั่นเป็นวิธีคิดที่ถูกต้องโดยสิ้นเชิงและทั้ง Matt และ Adil ก็ขยายออกไปอย่างสวยงามด้วยกรณีการใช้งานทางยุทธวิธีที่หลากหลายสำหรับการตั้งค่าสถานะคุณลักษณะ
แต่ฉันต้องการเสนอคำจำกัดความที่ได้รับการแก้ไขซึ่งสะท้อนให้เห็นว่าความเป็นจริงมีวิวัฒนาการมาอย่างไรในช่วงหกปีที่ผ่านมาและการเปลี่ยนแปลงตั้งแต่ dotnetdev ถามคำถามเดิม ฉันทำงานให้กับRollout.ioซึ่งเป็นแพลตฟอร์มแฟล็กฟีเจอร์ดังนั้นฉันจึงมีที่นั่งแถวหน้าสำหรับวิวัฒนาการนี้
พูดง่ายๆก็คือแฟล็กฟีเจอร์ไม่ได้เป็นเพียงวิธีเปิดและปิดฟังก์ชันการทำงานในแอปพลิเคชันของคุณอีกต่อไป นั่นเหมือนกับการตอบว่า "รายการใบแจ้งหนี้คืออะไร" โดยพูดว่า "เป็นคำอธิบายและจำนวนสกุลเงิน" จริง แต่มันไม่ได้ขับเคลื่อนไปที่จุดที่กว้างขึ้นของใบแจ้งหนี้
แฟล็กคุณลักษณะเป็นส่วนสำคัญทางยุทธวิธีของโซลูชันเชิงกลยุทธ์ที่ครอบคลุมในซอฟต์แวร์สมัยใหม่ ซึ่งเป็นวิธีการที่คุณเลื่อนตรรกะการตัดสินใจที่สำคัญในโค้ดของคุณไปจนถึงรันไทม์เมื่อคุณมีข้อมูลเพิ่มเติม และที่สำคัญที่สุดคือพวกมันไม่ได้เกิดขึ้นอย่างโดดเดี่ยวอีกต่อไปด้วยการตรวจสอบเพียงครั้งเดียวเพื่อดูว่าหมายเลขเวอร์ชันมากกว่า 2.7 หรือไม่ โดยทั่วไปองค์กรที่ใช้องค์กรเหล่านี้จะรวมไว้เป็นส่วนหนึ่งของแนวทางผลิตภัณฑ์ที่ครอบคลุมทั้งระบบ
ดังที่คนอื่น ๆ กล่าวไว้ Facebook และ LinkedIn เป็นผู้บุกเบิกสิ่งนี้ แต่ในปี 2018 มีองค์กรจำนวนมากกำลังทำเช่นนี้ พวกเขากำลังเลื่อนคำถามตรรกะการตัดสินใจสำหรับรันไทม์เป็นส่วนหนึ่งของกลยุทธ์การพัฒนากลยุทธ์การดำเนินงาน (หรือกลยุทธ์ DevOps หากคุณต้องการ) และกลยุทธ์ผลิตภัณฑ์ นี่คือตัวอย่างของคำถามดังกล่าว
หากต้องการมีแอปพลิเคชันที่เลื่อนการตัดสินใจจำนวนมากดังกล่าวไปจนถึงรันไทม์คุณจะไม่สามารถโยนแฟล็กฟีเจอร์ลงในแอปพลิเคชันของคุณแบบเฉพาะกิจไม่เช่นนั้นคุณจะฝังตัวเองอยู่ในหนี้ทางเทคนิค วันนี้คุณต้องมีกลยุทธ์การจัดการแฟล็กฟีเจอร์ที่ครอบคลุมซึ่งรวมถึงองค์ประกอบต่างๆ
ในท้ายที่สุดแฟล็กคุณลักษณะคืออะไร?
นี่เป็นส่วนสำคัญของกลยุทธ์ที่กว้างขึ้นในการมีแอปพลิเคชันที่ปรับให้เข้ากับความต้องการทั้งด้านเทคนิคและตลาด
การตั้งค่าสถานะคุณลักษณะ (หรือที่เรียกว่าการพลิกคุณลักษณะหรือการสลับคุณลักษณะ ) คือสวิตช์เพื่อเปิดหรือปิดคุณลักษณะที่อาจมีราคาแพงตามความจำเป็น (เช่นเมื่อไซต์ถูกตอกด้วยการเข้าชมที่ไม่คาดคิด) สิ่งนี้จะซื้อเวลาให้คุณเล็กน้อยจนกว่าคุณจะขยายขนาดหรือจนกว่าน้ำหนักบรรทุกจะหายไป
นี่คือตัวอย่างจากเอกสาร SWIG
ที่ บริษัท ของฉันเราเคยมีทางออกสำหรับสิ่งนั้น เราได้สร้างบริการที่ให้ไฟล์ config ( .json
) ที่ดาวน์โหลดได้สำหรับทุกแอพ ในการกำหนดค่านั้นเราเก็บแฟล็กสำหรับคุณสมบัติ จากการกำหนดค่าดังกล่าวแอปสามารถแสดงหรือซ่อนคุณสมบัติปัจจุบันได้ (ตัวอย่างเช่นแสดงหรือซ่อนรายการเมนูบนแถบด้านข้าง)
นอกจากนี้เรายังสร้างหน้าผู้ดูแลระบบภายในที่เราสามารถกำหนดค่าแฟล็กคุณลักษณะ มันใช้งานได้ดีในระยะหนึ่ง แต่หลังจากนั้นเราก็อยากจะทำการทดสอบการกำหนดเป้าหมายผู้ใช้และการทดสอบ A / B ในการพัฒนาด้วยตัวเองดูเหมือนจะพยายามมากเกินไปเราจึงเลือกโซลูชันของบุคคลที่สาม ดังที่ได้กล่าวไปแล้วที่นี่มีวิธีแก้ปัญหามากมาย
เราเลือกConfigCatเนื่องจากรองรับกลุ่มเป้าหมายที่กำหนดเองและการเปิดตัวตามเปอร์เซ็นต์พร้อมกัน คุณสามารถตรวจสอบได้รับการสนับสนุน SDK ของโอเพนซอร์สบนGitHub
แฟล็กคุณลักษณะ (หรือการสลับคุณลักษณะ) ช่วยให้คุณสามารถเปิดใช้งานคุณลักษณะจากระยะไกลบนแอปพลิเคชันโดยไม่จำเป็นต้องสร้างใหม่ / ปรับใช้แอปพลิเคชันใหม่ สิ่งนี้ช่วยให้คุณปรับใช้โค้ดกับการใช้งานจริงได้ แต่จะไม่ปล่อยฟีเจอร์นี้จนกว่าคุณจะพร้อม คุณสามารถกำหนดเป้าหมายผู้ใช้ที่ต้องการได้ดังนั้นคุณจึงสามารถเปิดใช้งานคุณลักษณะใหม่ให้ผู้ใช้รุ่นเบต้าของคุณทดสอบได้
ที่ บริษัท ของเราที่เราเคยใช้LaunchDarklyและข้อเสนอแนะอื่น ๆ จากFeatureFlags.io เรายังได้ลองใช้การกำหนดค่าระยะไกลของ Firebaseเพื่อลองใช้งาน แต่เราพบว่ามันไม่เหมาะกับจุดประสงค์นี้จริงๆ
เราได้พัฒนาเวอร์ชันของเราเองที่ชื่อว่าBullet Trainซึ่งเราได้เปิดแหล่ง มันรวมทั้ง Feature Flags / Toggles และ Remote Config
ธงคุณลักษณะถูกใช้เพื่อวัตถุประสงค์หลายประการ แนวคิดทั่วไปคือการมอบหมายการควบคุมว่าผู้ใช้รายใดเห็นคุณลักษณะใดในแดชบอร์ดระยะไกลหรือสำนักงานส่วนหลังบางประเภท
เมื่อมีการตั้งค่าสถานะคุณลักษณะในโค้ดแล้วคุณสามารถใช้วิธีการต่างๆเพื่อกำหนดว่าผู้ใช้รายใดจะเห็นคุณลักษณะนี้ในแอปพลิเคชันของคุณ: 1. เปิด / ปิด - แสดงคุณลักษณะนี้ต่อผู้ใช้ของคุณทั้งหมดหรือไม่มีเลย 2. การเผยแพร่แบบค่อยเป็นค่อยไป - แสดงคุณลักษณะนี้ต่อผู้ใช้เพียงเปอร์เซ็นต์เดียวจากนั้นค่อยๆแสดงให้ผู้ใช้ทุกคนเห็น 3. การกำหนดเป้าหมาย - แสดงคุณลักษณะแก่ผู้ใช้เฉพาะตามคุณสมบัติหรือลักษณะของผู้ใช้รายนั้น
เครื่องมือที่ช่วยในการควบคุมฟีเจอร์แฟล็ก (บูลีน) และการกำหนดค่าคุณลักษณะ (สตริงตัวเลข ฯลฯ ) มักเรียกว่าแพลตฟอร์มการจัดการคุณลักษณะ มีบริการที่ยอดเยี่ยมสำหรับการจัดการคุณลักษณะที่เรียกว่าConfigz.io
จากมุมมองของการเข้ารหัสแฟล็กคุณลักษณะอาจเป็นเรื่องง่ายเหมือนกับif
คำสั่งที่ล้อมรอบโค้ดใหม่ที่คุณกำลังเขียน เมื่อif
คำสั่งประเมินเป็นจริง (แฟล็กคุณลักษณะเปิดอยู่) รหัสใหม่จะถูกเรียกใช้
ในตัวอย่างการส่งมอบซอฟต์แวร์ในโลกแห่งความเป็นจริงif
ข้อความที่อธิบายไว้ข้างต้นจะประเมินแตกต่างกันไปขึ้นอยู่กับสภาพแวดล้อมที่ซอฟต์แวร์กำลังทำงานอยู่ตัวอย่างเช่นหากแอปพลิเคชันกำลังดำเนินการบนเซิร์ฟเวอร์ QA ของคุณแฟล็กคุณลักษณะจะคืนค่าเป็นจริงและคุณลักษณะใหม่จะเป็น เห็น. หากมีการเรียกใช้งานบนเซิร์ฟเวอร์ที่ใช้งานจริงแฟล็กคุณลักษณะจะส่งคืนเป็นเท็จและคุณลักษณะจะถูกซ่อน
จากประสบการณ์ส่วนตัวของฉันในช่วงอาชีพของฉันฉันได้ใช้แฟล็กคุณลักษณะด้วยวิธีต่อไปนี้:
การแยกการปรับใช้รหัสจากการเผยแพร่คุณลักษณะให้กับลูกค้า นี่เป็นการใช้แฟล็กฟีเจอร์ครั้งแรกในขั้นตอนการพัฒนาของเรา เราใช้มันเพื่อลบการพึ่งพาระหว่างทีมการตลาดและผลิตภัณฑ์ของเราและทีมวิศวกรที่กำลังดำเนินการพัฒนาและเผยแพร่ แฟล็กฟีเจอร์ช่วยให้เราปรับใช้โค้ดของเราได้หลายสัปดาห์ก่อนการเปิดตัวในขณะที่ก่อนหน้านี้เรากำลังปรับใช้โค้ดในคืนก่อนการเปิดตัว!
การทดสอบในการผลิต ก่อนที่เราจะใช้แฟล็กฟีเจอร์เมื่อเราปล่อยโค้ดของเรามันเป็นเหตุการณ์ทั้งหมดหรือไม่มีเลยทั้งลูกค้าของเราทั้งหมดจะได้รับฟีเจอร์นี้หรือไม่มีเลย เราใช้แฟล็กฟีเจอร์เพื่อให้เราสามารถเปิดตัวคุณลักษณะใหม่ให้กับผู้ใช้เพียงเล็กน้อยในแต่ละครั้ง สิ่งนี้ทำให้เราสามารถรวบรวมข้อเสนอแนะและข้อมูลที่มีค่าเกี่ยวกับคุณลักษณะใหม่โดยไม่ต้องเสี่ยงกับปัญหาที่อาจเกิดขึ้นกับฐานลูกค้าทั้งหมด
การเปิด / ปิดคุณลักษณะต่อสภาพแวดล้อมในวงจรชีวิตของการพัฒนา เราใช้สิ่งนี้อย่างกว้างขวางในการพัฒนาเพื่อให้กระบวนการปรับใช้งานราบรื่นขึ้นมาก - เรามีไปป์ไลน์ CI / CD ซึ่งการใช้แฟล็กคุณลักษณะมีความสำคัญ
การสร้างสวิตช์ฆ่า เราได้รวมคุณสมบัติบางอย่างของแอปพลิเคชันของเราด้วยการตั้งค่าสถานะคุณลักษณะซึ่งช่วยให้เราสามารถ 'ฆ่า' คุณลักษณะนั้นได้ในกรณีที่เกิดปัญหาใด ๆ กับแอปพลิเคชันในขณะนั้น ตัวอย่างเช่นหากเราพบว่าตัวเองมีภาระงานหนักเราสามารถปิดคุณลักษณะบางอย่างที่ไม่จำเป็นของเว็บไซต์เพื่อช่วยแก้ปัญหาได้
คุณสามารถอ่านเพิ่มเติมเกี่ยวกับแฟล็กฟีเจอร์ได้ที่นี่
คุณสามารถเพิ่มแฟล็กฟีเจอร์ให้กับโค้ดของคุณได้หลายวิธี
การเขียนห้องสมุดของคุณเองอาจดูเหมือนเป็นความคิดที่ดีในตอนแรกและโดยปกติแล้วการเขียนห้องสมุดของคุณจะเริ่มต้นด้วยวิธีนั้น อย่างไรก็ตามคุณสามารถพบปัญหาได้ในไม่ช้าเมื่อคุณต้องการใช้กรณีการใช้งานขั้นสูงของแฟล็กฟีเจอร์เช่นการเปิดตัวไปยังเปอร์เซ็นต์ของผู้ใช้หรือกำหนดเป้าหมายกลุ่มผู้ใช้เฉพาะ ปัญหาอีกประการหนึ่งในการสร้างการติดตั้งค่าสถานะคุณลักษณะของคุณเองคือหากคุณใช้หลายภาษาคุณจะต้องติดตั้งโค้ดหลายครั้ง
วิธีที่ดีที่สุดและง่ายที่สุดในการใช้ธงคุณลักษณะคือการใช้บริการการจัดการคุณลักษณะธงออนไลน์เช่นประตูระบายน้ำ ด้วยวิธีนี้คุณสามารถใช้ประโยชน์จากแพลตฟอร์มเพื่อยกของหนักทั้งหมดซึ่งจะช่วยให้คุณมีสมาธิในการสร้างคุณสมบัติสำหรับแอปพลิเคชันของคุณ
นี่คือตัวอย่างของวิธีการเพิ่มค่าสถานะคุณลักษณะ Floodgate ให้กับแอปพลิเคชันโดยใช้. NET SDK
using FloodGate.SDK;
var floodgateClient = new FloodGateClient("API-KEY");
var flag = floodgateClient.GetValue("a-new-feature", false);
if (flag)
{
// Execute the code for my new feature here...
}
หากคุณทำงานในทีมพัฒนาและคุณไม่ได้ใช้แฟล็กคุณลักษณะและคุณกำลังประสบปัญหาในการปรับใช้และการจัดการโค้ดภายในทีม การใช้แฟล็กฟีเจอร์อาจเป็นวิธีที่ดีในการแก้ไขปัญหาเหล่านี้ นอกจากนี้ยังมีผลข้างเคียงที่ดีของแฟล็กฟีเจอร์ที่ช่วยเร่งความเร็วในการพัฒนาทีมของคุณ
Martin Fowler ให้ข้อมูลเชิงลึกเกี่ยวกับแฟล็กคุณลักษณะที่ฉันแนะนำให้คุณอ่าน
ความเข้าใจของฉันคือแฟล็กฟีเจอร์ช่วยให้คุณเกตเวย์ฟังก์ชันโดยการตัดสินใจว่าผู้ใช้รายใดจะได้รับคุณสมบัติบางอย่าง
ตัวอย่างเช่นสมมติว่าคุณต้องการให้ผู้ใช้เบต้าของคุณเห็นคุณลักษณะใหม่เท่านั้น คุณจะ "สลับ" คุณลักษณะนั้นสำหรับผู้ใช้เบต้าและผู้ใช้ที่เหลือของคุณจะไม่เห็นคุณลักษณะนี้
LDUser user = new LDUser("user@test.com");
boolean showFeature = ldClient.toggle("your.feature.key", user, false);
if (showFeature) {
// application code to show the feature
}
else {
// the code to run if the feature is off
}
ฉันกำลังทดสอบแฟล็กคุณลักษณะของ LaunchDarkly สำหรับการทดสอบJS A / B ส่วนหน้า - ดูเหมือนว่าจะทำงานได้ดี นอกจากนี้คุณยังสามารถตรวจสอบเว็บไซต์นี้สำหรับสลับคุณลักษณะและห้องสมุดคุณลักษณะธง
ฟีเจอร์แฟล็กโดยทั่วไปจะช่วยให้คุณสามารถเปิดและปิดคุณสมบัติโดยไม่ต้องทำการเปลี่ยนแปลงใด ๆ กับโค้ดหรือปล่อยเวอร์ชันใหม่ เป็นโซลูชันที่สำคัญโดยเฉพาะอย่างยิ่งสำหรับนักพัฒนาแอปพลิเคชันบนมือถือเนื่องจากพวกเขาไม่สามารถควบคุมผู้ใช้ให้อัปเดตแอปพลิเคชันเป็นเวอร์ชันใหม่ได้
มีหลาย บริษัท ที่ให้บริการนี้สำหรับนักพัฒนาแอปพลิเคชันมือถือ
ที่ บริษัท ของฉันเราใช้แฟล็กฟีเจอร์สำหรับฟีเจอร์ใหม่ทั้งหมดที่เราแนะนำในแอพ SaaS ของเรา นอกเหนือจากประโยชน์ด้านประสิทธิภาพแล้วยังช่วยให้เราสามารถเปิดตัวคุณลักษณะใหม่ ๆ ได้อย่างค่อยเป็นค่อยไปโดยแนะนำคุณลักษณะใหม่ ๆ ให้กับผู้ใช้ที่มีประสิทธิภาพก่อนรับข้อเสนอแนะจากพวกเขาและดำเนินการปรับปรุงก่อนที่เราจะเผยแพร่ให้กับผู้ใช้ทุกคน
นอกจากนี้ยังช่วยให้เราสามารถปรับแต่งข้อเสนอให้กับผู้ใช้แต่ละคน - ผู้ใช้ระดับสูงต้องการคุณสมบัติทั้งหมด ผู้ใช้ทั่วไปอาจต้องการเพียงสิ่งพื้นฐานและอาจสับสนกับคุณสมบัติที่ซับซ้อนที่มีประสิทธิภาพทั้งหมด นอกจากนี้ยังช่วยให้ทีมขายของเราสามารถขายได้
และแน่นอนตามที่คนอื่น ๆ ชี้ให้เห็นหากเราพบว่าคุณลักษณะใดทำให้ประสิทธิภาพการทำงานลดลงเราก็สามารถปิดคุณลักษณะนั้นได้ (ไม่ว่าจะสำหรับไคลเอ็นต์ทั้งหมดหรือสำหรับลูกค้ารายหนึ่งที่ทำให้เกิดปัญหา)