'การตั้งค่าสถานะคุณลักษณะ' คืออะไรและเมื่อใดที่จะใช้ (หรือไม่)


17

มีคำถามบางอย่างเกี่ยวกับfeature flag togglesเช่น:

คำถาม :

  • อะไรคือ "สลับการตั้งค่าสถานะคุณลักษณะ" (ในบริบทของ DevOps)
  • ทำไมถึงใช้

3
ข้อมูลอ้างอิงไม่ใช่คำตอบโดยตรง - martinfowler.com/articles/feature-toggles.html
Ken Mugrage

1
ฉันรู้ว่า "การถาม" เกี่ยวกับการลงคะแนนเสียงคำอธิบายนั้นไม่เป็นที่ยอมรับกันโดยทั่วไป แต่ใครก็ตามที่ลงคะแนนคำถามนี้โดยไม่ระบุชื่อเพียงรู้ว่าสำหรับฉัน downvote นั้นไม่มีค่าเนื่องจาก downvote เหล่านี้มีราคาถูก (downvoter ไม่หลวม -1 สำหรับการทำเช่นนั้น) downvotes ที่ไม่ระบุชื่อของคำตอบจะแตกต่างกันอย่างไรก็ตาม ... เช่น downvoter ไม่ทิ้งร่องรอย ...
Pierre.Vriens

2
และฉันชอบที่จะรู้ว่าทำไมบางคนรู้สึกว่าคำถามนี้ควรถูกปิดเพราะ "กว้างเกินไป" เมื่อจริง ๆ แล้วนี่เป็นคำถามที่ดีที่สมควรได้รับคำตอบที่ดี
Evgeny

Merci @Evgeny ดูเหมือนว่าเราอยู่ในหน้าเดียวกัน ... แต่คุณสังเกตเห็นว่าการโหวตปิด 1 รายการถูกถอนออกหรือไม่ อาจเป็นเพราะการแก้ไขล่าสุดของฉัน
Pierre.Vriens

คำตอบ:


13

โดยไม่ต้องทำซ้ำเนื้อหาของhttps://martinfowler.com/articles/feature-toggles.htmlเนื่องจากเป็นคำอธิบายเชิงลึกที่น่าทึ่งเกี่ยวกับการสลับการตั้งค่าสถานะของคุณลักษณะ ฉันจะมุ่งเน้นไปที่แง่มุมของ DevOps

ตามรายงานState of DevOps ปี 2014จัดทำโดย PuppetLabs มีสี่ตัวชี้วัดหลักในการวัดประสิทธิภาพของไอที:

  • ระยะเวลาในการเปลี่ยนแปลง
  • ความถี่ที่วางจำหน่าย
  • ใช้เวลาในการเรียกคืนบริการ
  • เปลี่ยนอัตราความล้มเหลว

สิ่งเหล่านี้ยังส่งผลต่อประสิทธิภาพโดยรวมขององค์กร ดังนั้นหมายความว่าหากไอทีของคุณทำได้ดีมากในการวัดเหล่านี้กำไรของคุณจะเพิ่มขึ้นอีก $$$

การจัดส่งอย่างต่อเนื่องถูกเปิดใช้งานโดยตัวชี้วัดเหล่านี้และได้รับการอธิบายในเชิงลึกในหนังสือการจัดส่งอย่างต่อเนื่อง: การเผยแพร่ซอฟต์แวร์ที่เชื่อถือได้ผ่าน Build, Test และ Deployment Automationโดย Jez Humble

ในบริบทของการจัดส่งสินค้าอย่างต่อเนื่องมีความแตกต่างที่สำคัญที่แตกต่างจากการปรับใช้อย่างต่อเนื่อง และนั่นคือการตัดสินใจว่าจะเปิดตัวฟีเจอร์ (สำหรับลูกค้า) เมื่อใด

การเก็บรักษาการเปลี่ยนแปลงขนาดเล็กกว่าและการปรับใช้ (การคัดลอกรหัส) คุณสมบัติอ่อนหัดกับระบบการผลิตที่มีธงคุณลักษณะสลับออกจะช่วยให้การลดระยะเวลารอคอยสำหรับการเปลี่ยนแปลง

เมื่อคุณสมบัติเสร็จสิ้นในที่สุดการปล่อยจะเป็นการตัดสินใจที่เหลือให้กับธุรกิจ อาจต้องมีการเปิดตัวฟีเจอร์ใหม่ที่สอดคล้องกับการตลาดบางส่วนหรือการวางจำหน่ายในส่วนอื่นของธุรกิจเช่นฟีเจอร์ในแอพมือถือ

คุณสมบัติสามารถนำออกใช้โดยใช้การทดลอง A / B เพียงส่วนหนึ่งของฐานลูกค้าหรือเฉพาะบุคคลหรือแม้กระทั่งโดยตรงไปยังความพร้อมใช้งานทั่วไป (GA) แม้ว่าการปล่อย GA จะกระทำได้บ่อยครั้งหลังจากมีความมั่นใจเพียงพอที่คุณสมบัติดังกล่าวจะทำงานตามที่คาดไว้ อาจมีคนโต้แย้งว่าสิ่งนี้มีผลกระทบต่อความถี่ในการปล่อยให้สูงขึ้น

การแยกตัวของการปล่อยและการปรับใช้นี้แทบจะเป็นไปไม่ได้เลยหากไม่มีการสลับการตั้งค่าสถานะ

ตามธรรมชาติเมื่อไม่จำเป็นต้องปรับใช้เพื่อสลับคุณลักษณะปิดดังนั้นเวลาในการเรียกคืนบริการจะลดลงอย่างมาก

และด้วยการใช้แฟล็กฟีเจอร์ที่ปล่อยฟีเจอร์ให้กับชิ้นส่วนเล็ก ๆ ของฐานลูกค้าการวัดอัตราการเปลี่ยนแปลงที่ล้มเหลวก็สามารถปรับปรุงได้อย่างมีนัยสำคัญเช่นกัน


ดังนั้นกลไกง่าย ๆ ที่เรียกว่าสลับการตั้งค่าสถานะจะช่วยให้ประสิทธิภาพด้านไอทีดีขึ้นมากและจะช่วยปรับปรุงประสิทธิภาพการทำงานขององค์กรโดยรวม

ตัวอย่างที่ดีของวิธีการนี้จะทำใน บริษัท จริงสามารถพบได้ที่Flickr (บนของโพสต์สาธารณะที่เก่าแก่ที่สุดในเรื่อง) และEtsy แต่คนอื่น ๆ ได้นำมาใช้ในการปฏิบัติงานและพูดคุยเกี่ยวกับมันในระยะเวลาสำหรับตัวอย่างที่มีชื่อเสียงวัฒนธรรมวิศวกรรมที่วิดีโอ Spotify

Etsy กำลังแสดงเครื่องมือภายในเพื่อจัดการการตั้งค่าสถานะคุณลักษณะที่เรียกว่า Catapult ในการนำเสนอหลายรายการที่พบในเว็บ และตรัสรู้ปล่อยเครื่องมือโอเพนซอร์สที่เรียกว่าวาซาบิที่ช่วยจัดการการตั้งค่าสถานะคุณลักษณะ


Merci สำหรับคำตอบที่น่าสนใจ / ละเอียดนี้ ... มีเพียง 2 สิ่งเท่านั้น: บทความที่เชื่อมโยงนั้นเกี่ยวกับ "toggles Feature" ไม่ใช่ "Feature Flag Toggle" (ดังที่คุณเขียนไว้ในย่อหน้าแรก) คุณเห็นด้วยหรือเปล่าว่าเป็นคำพ้องความหมาย ถ้าไม่ใช่ความแตกต่างคืออะไร? นอกจากนี้: "การทดลอง A / B" คืออะไร (A = After และ B = Before? อาจไม่ ... )
Pierre.Vriens

1
ฉันเห็นด้วยเหล่านี้เป็นคำพ้องความหมาย ฉันชอบที่จะลองและชัดเจนเกี่ยวกับชื่อดังนั้นจึงไม่มีความกำกวม ฉันคิดว่า "การทดสอบ a / b คืออะไร" เป็นคำถามของมันเอง ... แต่คำตอบสั้น ๆ ก็คือมันมีการแปรผันสองแบบที่วัดกันเช่นในลิงก์ "Etsy แสดงออก" หรืออธิบายที่en.wikipedia.org/wiki/A/B_testing
Evgeny

ตกลงนั่นคือการสัมผัสการตกแต่งที่ฉันรอ / หวังดังนั้น "ยอมรับ"
Pierre.Vriens

@ Pierre.Vriens "นอกจากนี้: อะไรคือ" การทดลอง A / B "(A = After and B = Before?" - คุณอาจถามว่าในเว็บไซต์ DevOps SE ที่เด็ดสุด ๆ นี้)
Dan Cornilescu

1

Ken Mugrageโพสต์ความคิดเห็นที่น่าสนใจด้านล่างคำถามของฉันพร้อมลิงก์ไปยังคำอธิบายที่ให้ความกระจ่างเกี่ยวกับ " Feature toggles " โดยมีบทสรุปดังนี้:

สลับคุณสมบัติเป็นเทคนิคที่มีประสิทธิภาพช่วยให้ทีมสามารถปรับเปลี่ยนพฤติกรรมของระบบโดยไม่ต้องเปลี่ยนรหัส พวกเขาอยู่ในหมวดหมู่การใช้งานที่หลากหลายและเป็นสิ่งสำคัญที่จะต้องคำนึงถึงการจัดหมวดหมู่นั้นเมื่อใช้งานและจัดการสวิตช์ สลับการแนะนำความซับซ้อน เราสามารถรักษาความซับซ้อนนั้นได้โดยใช้วิธีการสลับการใช้งานแบบสลับและเครื่องมือที่เหมาะสมเพื่อจัดการการตั้งค่าสลับของเรา แต่เราควรตั้งเป้าหมายที่จะ จำกัด จำนวนการสลับในระบบของเรา

ไม่เพียง แต่จะสรุปความช่วยเหลือดังกล่าวข้างต้นที่จะเข้าใจสิ่งนี้เป็นเรื่องเกี่ยว แต่ก็ยังมีบางตัวอย่างที่อธิบายว่าทำไมพวกเขาใช้ และหลังจากแยกย่อยออกไปอีกเล็กน้อยดูเหมือนว่า "Feature Toggle" และ "Feature Flag Toggle" นั้นเป็นคำพ้องความหมายของกันและกัน

แต่การแก้ปัญหา (คำตอบ) กับปัญหา (คำถาม) เปลี่ยนปัญหา ... ใครคนหนึ่งอาจถามคำถามที่เกี่ยวข้องเช่น:

  • อะไรคือข้อดี / ข้อเสียของการใช้งาน มันเป็นแนวคิดที่ทรงพลัง แต่ก็น่ากลัวหากไม่ได้ใช้อย่างชาญฉลาด (และปลอดภัยอย่างเหมาะสม) ...
  • มีตัวอย่างอะไรบ้าง (ตัวอย่างที่ดีและไม่ดี) ที่ใช้อยู่ ฉันสามารถนึกถึงพวกเขาได้บ้างบางคนบางคนฉันเคยใช้ตัวเองมานานแล้ว
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.