BNK48 1st Concert Sale Recap

Metwara Narksook
Eventpop

--

การขายบัตรของงาน Tao Kae Noi Presents BNK48 1st Concert “STARTO” รอบแรกเริ่มเวลา 13.48น. วันที่ 1 มีนาคมเปิดขายบัตรประมาณ 5,000 ที่นั่ง ทีมงานคาดการณ์ว่าจะมีผู้สนใจเข้ามาทำการซื้อบัตรประมาณ 50,000 คน ซึ่งบัตรน่าจะขายหมดในเวลาไม่นานและจะมีคนจำนวนมากจะผิดหวังเนื่องจากไม่ได้บัตรในวันนี้

ในโพสนี้จะขอ recap สิ่งที่เกิดขึ้น ปัญหา และสิ่งที่ทีมงานทำการแก้ไข เพื่อให้ผู้ใช้บริการ ลูกค้า partner รวมไปถึงผู้ที่สนใจ ได้เข้าใจสิ่งที่เกิดขึ้น ผู้เขียนขอละรายละเอียดเชิงเทคนิคเพื่อไม่ให้โพสนี้ยาวเกินไป

ระบบทำงานอย่างไร?
เราขออธิบายการทำงานของระบบแบบคร่าวๆ เนื่องจากมีคนจำนวนมากยังไม่เข้าใจวิธีการทำงาน โดยจะขออธิบายโดยใช้ตัวอย่างง่ายๆ ผู้เชี่ยวชาญด้านเทคโนโลยีโปรดให้อภัยเราด้วย

จากตัวเลขที่เราคาดการณ์ ระบบจะต้องรองรับคนจำนวน 50,000 คนมาเลือกที่นั่งและทำรายการพร้อมกันในเวลาเดียวกัน ซึ่งโดยในความเป็นจริงแล้วถ้าเราปล่อยให้คนทั้งหมดเข้ามาเลือกที่นั่งพร้อมกันนั้นการเลือกที่นั่งแทบจะเป็นไปไม่ได้เลย เพราะที่นั่งจะเด้งออกตลอดในเวลาเสี้ยววินาที เพื่อให้การใช้งานเป็นไปอย่างราบรื่น และสร้างประสบการณ์ที่ดีให้กับผู้ใช้ทั้งบนคอมพิวเตอร์และบนโทรศัพท์มือถือ เราเลยตัดสินใจนำระบบเข้าคิวมาใช้

และเพื่อความยุติธรรม เราเปิดให้ทุกคนเข้ามากดคิวพร้อมกันในเวลา 13.48น. ทุกคนจะได้รับหมายเลขคิวคนละ 1 หมายเลข ตามลำดับการมาก่อนหลัง เมื่อทุกคนเข้าคิวหมดแล้ว เราจะทะยอยปล่อยให้คนเข้ามาทำรายการเรื่อยๆ จนกระทั่งขายหมด

มีคนแกะโค้ดในหน้าเว็บไซต์เจอลิ้งไปหน้าเข้าคิวซ่อนอยู่, ลิ้งนี้สามารถใช้งานได้หรือไม่?
ไม่ได้, เพราะเราตรวจสอบเวลาเปิดเข้าคิวที่ server ใครที่ทราบและเข้าลิ้งนี้ก่อนเวลาเปิดคิว จะถูกเด้งกลับมาที่หน้าเดิม ไม่สามารถลัดไปเข้าคิวได้แน่นอน

มีภาพปรากฎว่ามีคนได้คิวก่อนเวลา 13.48น. จริงหรือไม่?
ในหน้าจอเข้าคิวมีเวลาระบุ 2 อย่างคือ
1. เวลาอัพเดทข้อมูลล่าลุด และ
2. เวลาที่ Admin โพสข้อความล่าสุด, Admin โพสไว้ล่วงหน้าก่อนที่จะมีคนเริ่มเข้าคิวนานแล้ว

เว็บไซต์หลักจะทำการเปิดให้ไปเข้าคิวในเวลา 13.48น. และเนื่องจากระบบคิวเป็นอีกระบบแยกไปจากเว็บไซต์หลัก อาจจะมีความเหลื่อมของเวลาเล็กน้อย ดังนั้นเวลาที่แสดงในข้อ 1. ที่ระบบคิวอาจจะแสดงเวลาเหลื่อมไปซึ่งอาจทำให้สับสนได้ว่ามีคนเข้าคิวได้ก่อนเวลาในหลักนาที อาจก่อให้เกิดความเข้าใจผิด

ทำไมเว็บไซต์ถึงเข้าไม่ได้ในช่วงเวลา 13.46น.?
ในช่วงเวลา 13.40 มีผู้เข้ามาเตรียมตัวกดคิวจำนวนประมาณ 20,000 คน น้อยกว่าที่เราคาดไว้ แต่เราเริ่มเห็นจำนวน request(การเปิดหน้าเว็บไชต์) เพิ่มเข้ามาในปริมาณมากที่ผิดปกติกว่าที่ควรจะเป็นไปหลายเท่าตัว เนื่องจากระบบของเราสามารถ scale ได้เราจึงตัดสินใจเพิ่มจำนวน server เข้าไป ยิ่งเพิ่ม server จำนวน request ที่เข้ามายิ่งเพิ่มตาม จนกระทั่งเวลา 13.46 เริ่มมีผู้ใช้บางส่วนไม่สามารถเข้าเว็บได้ โดยปัญหานี้เกิดขึ้นในช่วงระยะเวลา 5–7 นาที

อยากให้ลองนึกภาพว่าเรากำลังสร้างถนน เราคาดว่าจะมีรถวิ่งพอดีๆ ที่ 50,000 คัน ในความเป็นจริงเรามองเห็นรถมาวิ่งจริง 20,000 คัน แต่ดันมีผู้ไม่หวังดีปล่อยวัวปล่อยแพะมาขวางทางทำให้เกิดความแออัด เราเร่งสร้างถนนขยายจำนวนเลนเพิ่มขึ้นไปอีก จำนวนวัวแพะก็เพิ่มเข้ามาอีกทำให้เกิดอาการรถติดบ้าง แต่ถนนไม่ได้ปิดไปเลย — ระบบไม่ได้ล่มทั้งหมด

เมื่อถึงเวลา 13.48น. ระบบก็เริ่มปล่อยให้ไปที่หน้าคิว คนก็เริ่มกดคิวได้ เราเริ่มเห็นจำนวนคนที่อยู่บนหน้าเว็บลดลง และย้ายไปที่คิวแทน

ทำไมปล่อยคิวได้ช้า?
เนื่องจากปัญหาในข้างต้น ทีมงานพยายาม block request ดังกล่าวและเพิ่มจำนวน server โดยใช้ไปถึง 150% ของที่เราคาดการณ์ไว้ ในขณะที่จำนวน request ที่เข้ามาเปิดหน้าเว็บพุ่งขึ้นไปสูงถึง 800,000 request ต่อนาทีทั้งๆ ที่เป็นช่วงเวลาที่ทุกคนอยู่ในคิว ซึ่งมีความผิดปกติอย่างมาก

เพื่อให้การใช้งานระบบ, การเลือกที่นั่ง และการชำระเงินเป็นไปอย่างราบรื่นเราจำเป็นจะต้องปล่อยคิวในปริมาณที่เหมาะสม

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

ทำไมถึงมีค่าบริการหลายอย่าง?
เนื่องจากเราต้องการตอบโจทย์ความต้องการของผู้จัดงานที่มีหลากหลาย ระบบจึงเปิดโอกาสให้ผู้จัดงานสามารถตั้งค่าได้ ว่าใครจะเป็นผู้จ่ายค่าบริการส่วนไหนได้อิสระ ทำให้แต่ละอีเว้นท์ในระบบมีวิธีการคิดค่าบริการและค่าธรรมเนียมที่ต่างกัน สามารถศึกษาเกี่ยวกับค่าบริการและค่าธรรมเนียมได้ที่นี่ https://support.eventpop.me/knowledge-base/design-settings-payment/

จากกระแสตอบรับทำให้ทาง BNK48 ตัดสินใจเพิ่มรอบการแสดงอีก 1 รอบ ทางเราและทีมงานได้รวบรวมและพยายามแก้ไขปัญหาที่เกิดขึ้น โดยนำเสนอระบบ Pre-Queue ขึ้นมา

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

Pre-Queue คืออะไร?
จากเดิม การเปิดเข้าคิวจะเป็นแบบมาก่อนได้ก่อน คือใครที่เข้าก่อนก็จะได้คิวก่อนไป ที่เวลา 13.48น. คิวเปิด คน 50,000 คนเข้ามาที่ server ในเวลาเกือบจะพร้อมกัน จินตนาการว่ามันเหมือนกับเอาลูกบอล 50,000 ลูกมากรอกใส่ท่อ อาจจะมีบางลูกพุ่งลงท่อไปก่อน บางลูกกระเด้งขึ้นมาเพราะชนกันเอง มันเป็นการเข้าคิว(โดย load-balancer และระบบ server)โดยมีการสุ่มเล็กๆ ในเสี้ยววินาทีนั้น เมื่อทุกคนเข้าไปอยู่ในคิว ใครที่ได้หมายเลขคิวแรกๆ ก็มีสิทธิ์ซื้อไป

Pre-Queue เข้ามาเปลี่ยนจุดที่ทุกคนแข่งกันมากดคิวคนแรก กลายเป็นใครที่เข้ามารอในช่วง Pre-Queue มีสิทธิ์ที่จะได้รับการสุ่มหมายเลขคิว โดยเมื่อหมดเวลา Pre-Queue ระบบจะสุ่มหมายเลขคิวให้กับทุกคนใน Pre-Queue ทันที ใครที่มาหลังจากนี้ก็จะต่อหมายเลขคิวคนสุดท้ายไปตามปกติ

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

การสื่อสาร
เมื่อตัดสินใจใช้ระบบนี้เราจำเป็นจะต้องสื่อสารกับลูกค้าถึงกติกาและวิธีการที่เปลี่ยนไป เราได้จัดทำวิธีการซื้อแบบ Step-by-step และแบบวิดีโอออกไป ซึ่งต้องขอบคุณความน่ารักของ Community ที่ช่วยกันแชร์และชี้แจงกติกาต่างๆ ให้กับคนอื่น

จุดกำเนิด Waiting Room
เราตัดสินใจแยกหน้า Waiting Room ออกจากเว็บไซต์หลักเพื่อให้ผู้ที่รอจะเข้า Pre-Queue ไปรวมตัวกันที่นี่ https://bnk48.eventpop.me ในหน้านี้จะมีปุ่มเพียงปุ่มเดียวเพื่อให้กดเพื่อเข้าสู่ Pre-Queue หรือ เข้าคิวปกติเมื่อถึงเวลา โดยจะมีช่องประกาศข่าวเอาไว้สื่อสารกับคนที่เปิด Waiting Room อยู่ โดยที่ผู้ใช้งานไม่จำเป็นต้อง refresh หน้าจอ

ปัญหาผู้ไม่หวังดี
เราได้ทำการปรับระบบที่ทำการ Block request ที่ผิดปกติออกไป ซึ่งการปรับนี้จำเป็นจะต้องเปลี่ยนให้ดีขึ้น เหมาะสมขึ้นอยู่ตลอด

เมื่อสรุปสิ่งที่เราจะต้องทำแล้ว ทีมงานมีเวลาไม่ถึง 24 ชั่วโมงในการ Implement ระบบและทำให้เกิดขึ้น

การขายรอบ 2 ในวันที่ 3 มีนาคมเป็นไปอย่างราบรื่น ลูกค้าสามารถเข้าไปกดบัตรได้อย่างรวดเร็ว เราสามารถปล่อยคิวได้เร็วอย่างที่ควรจะเป็น โดยทำให้ที่นั่งเริ่มเต็มได้ในเวลาไม่เกิน 15 นาที และหลังจากนั้นไม่นานเราได้ทำการสื่อสารกับผู้ที่ยังรออยู่ในคิวเรื่องที่นั่งที่หมดไป และได้ทำการปิดคิวลง

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

ข้อมูลที่น่าสนใจ

  • 120,000 คน คือ ตัวเลขจำนวนผู้ใช้ที่ออนไลน์พร้อมกันช่วงพีค
  • 48,381 และ 38,658 คือ หมายเลขคิวคนท้ายๆ
  • 4 ชั่วโมง คือ เวลานอนของทีมงาน
  • 5 ชั่วโมง คือ เวลาที่ใช้ในการทำตัวเต้นๆ ในหน้ารอคิว (ล้อเล่น ทำไว้ล่วงหน้านานแล้วครับ :) ) https://twitter.com/sutee_c/status/969900137471344640
  • 650 คือ จำนวนอีเมล์ ที่ส่งเข้ามา
  • 700 คือ จำนวนสายโทรศัพท์ที่ติดต่อเข้ามา
  • 2,200 คือจำนวนผู้ที่ติดต่อเข้ามาทั้งทาง LINE และ Facebook
  • 68 คือ จำนวนคนที่แอบเข้าไปในลิ้งคิวปลอมที่ทีมงานซ่อนไว้ใน HTML code ของหน้าเว็บ (http://bit.ly/BNK48-2nd-round)

--

--