พัฒนาแพลตฟอร์มวิดีโอใน 90 วัน

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

เห็นได้ชัดว่าเป็นสามเดือนที่น่าตื่นเต้น แต่จากภายนอกยังไม่ชัดเจนนัก: แพลตฟอร์มการประชุมออนไลน์คืออะไร? ประกอบด้วยส่วนใดบ้าง? ดังนั้น ในการประชุม DevOops ช่วงฤดูร้อนครั้งสุดท้าย ฉันจึงถามผู้ที่รับผิดชอบงานนี้:

  • Nikolay Molchanov - ผู้อำนวยการด้านเทคนิคของ JUG Ru Group;
  • Vladimir Krasilshchik เป็นโปรแกรมเมอร์ Java เชิงปฏิบัติที่ทำงานบนแบ็กเอนด์ (คุณสามารถดูรายงานของเขาได้ที่การประชุม Java ของเรา)
  • Artyom Nikonov รับผิดชอบการสตรีมวิดีโอทั้งหมดของเรา

อย่างไรก็ตาม ในการประชุมฤดูใบไม้ร่วง-ฤดูหนาว เราจะใช้แพลตฟอร์มเดียวกันเวอร์ชันปรับปรุง - ผู้อ่าน habra จำนวนมากจะยังคงเป็นผู้ใช้

พัฒนาแพลตฟอร์มวิดีโอใน 90 วัน

ภาพรวม

– องค์ประกอบของทีมเป็นอย่างไร?

นิโคไล โมลชานอฟ: เรามีนักวิเคราะห์ นักออกแบบ ผู้ทดสอบ ส่วนหน้า XNUMX คน และส่วนหลัง XNUMX คน และแน่นอนว่าเป็นผู้เชี่ยวชาญเรื่องรูปตัว T!

— กระบวนการโดยทั่วไปมีลักษณะอย่างไร?

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

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

— เราจัดการบรรลุสิ่งที่เรามุ่งมั่นไว้ได้หรือไม่?

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

ความท้าทายคือ: ให้เครื่องมือแก่เราเพื่อใช้ในการถ่ายทอดการประชุมของเราไปยังผู้ถือตั๋ว

การวางแผนทั้งหมดแบ่งออกเป็นหลายขั้นตอน และคุณสมบัติทั้งหมด (ประมาณ 30 รายการทั่วโลก) ถูกแบ่งออกเป็น 4 หมวดหมู่:

  • ซึ่งเราจะทำอย่างแน่นอน (เราขาดไม่ได้)
  • ซึ่งเราจะทำประการที่สอง
  • ซึ่งเราจะไม่มีวันทำ
  • และสิ่งที่เราจะไม่มีวันทำ

เราสร้างฟีเจอร์ทั้งหมดจากสองหมวดหมู่แรก

— ฉันรู้ว่ามีการสร้างปัญหา JIRA ทั้งหมด 600 รายการ ภายในสามเดือน คุณสร้างไมโครเซอร์วิสได้ 13 รายการ และฉันสงสัยว่าไมโครเซอร์วิสเหล่านั้นไม่ได้เขียนแค่ในภาษา Java เท่านั้น คุณใช้เทคโนโลยีที่แตกต่างกัน คุณมีคลัสเตอร์ Kubernetes สองคลัสเตอร์ใน Availability Zone สามแห่งและสตรีม RTMP 5 รายการใน Amazon

ตอนนี้เรามาดูแต่ละองค์ประกอบของระบบแยกกัน

สตรีมมิ่ง

— เริ่มจากเมื่อเรามีภาพวิดีโอแล้ว และมันถูกส่งไปยังบริการบางอย่าง Artyom บอกเราหน่อยว่าการสตรีมนี้เกิดขึ้นได้อย่างไร?

อาร์เต็ม นิคอนอฟ: รูปแบบทั่วไปของเรามีลักษณะดังนี้: รูปภาพจากกล้อง -> ห้องควบคุมของเรา -> เซิร์ฟเวอร์ RTMP ในเครื่อง -> Amazon -> เครื่องเล่นวิดีโอ รายละเอียดเพิ่มเติม เขียนเกี่ยวกับมัน บนHabréในเดือนมิถุนายน

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

จากมุมมองของฮาร์ดแวร์ เรามีกล้องจำนวนหนึ่ง (ในสตูดิโอของเราและที่ลำโพงระยะไกล) จำนวนรีโมทคอนโทรลในสตูดิโอ ซึ่งบางครั้งต้องได้รับการซ่อมแซมใต้โต๊ะระหว่างการออกอากาศ

สัญญาณจากอุปกรณ์เหล่านี้เข้าสู่คอมพิวเตอร์ด้วยการ์ดจับภาพ การ์ดอินพุต/เอาท์พุต และการ์ดเสียง ที่นั่นสัญญาณจะถูกผสมและประกอบเป็นโครงร่าง:

พัฒนาแพลตฟอร์มวิดีโอใน 90 วัน
ตัวอย่างเค้าโครงสำหรับลำโพง 4 ตัว

พัฒนาแพลตฟอร์มวิดีโอใน 90 วัน
ตัวอย่างเค้าโครงสำหรับลำโพง 4 ตัว

นอกจากนี้การออกอากาศอย่างต่อเนื่องยังได้รับความช่วยเหลือจากคอมพิวเตอร์สามเครื่อง: มีเครื่องหลักหนึ่งเครื่องและอีกเครื่องที่ทำงานตามลำดับ คอมพิวเตอร์เครื่องแรกจะรวบรวมรายงานฉบับแรก รายงานฉบับที่สอง - การหยุดพัก รายงานฉบับแรก - รายงานถัดไป รายงานฉบับที่สอง - การหยุดพักครั้งถัดไป และอื่นๆ และเครื่องหลักผสมเครื่องแรกกับเครื่องที่สอง

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

จากนั้น สตรีมจากคอมพิวเตอร์จะไปยังเซิร์ฟเวอร์ภายในเครื่อง ซึ่งมีงาน XNUMX ประการ: กำหนดเส้นทางสตรีม RTMP และบันทึกข้อมูลสำรอง ดังนั้นเราจึงมีจุดบันทึกหลายจุด จากนั้นสตรีมวิดีโอจะถูกส่งไปยังส่วนหนึ่งของระบบของเราที่สร้างขึ้นบนบริการ Amazon SaaS เราใช้ มีเดียไลฟ์,S3,คลาวด์ฟรอนท์.

วลาดิมี: จะเกิดอะไรขึ้นที่นั่นก่อนที่วิดีโอจะเข้าถึงผู้ชม? คุณต้องตัดมันออกไปใช่ไหม?

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

— เราใช้ความละเอียด 1080p หรือไม่?

อาร์เต็ม: ความกว้างของวิดีโอของเราเท่ากับ 1080p - 1920 พิกเซลและความสูงน้อยกว่าเล็กน้อยภาพจะยาวขึ้น - มีเหตุผลในเรื่องนี้

ผู้เล่น

— Artyom อธิบายว่าวิดีโอเข้าสู่สตรีมได้อย่างไร วิธีการเผยแพร่วิดีโอไปยังเพลย์ลิสต์ต่างๆ ด้วยความละเอียดหน้าจอที่แตกต่างกัน ตัดเป็นชิ้นๆ และเข้าสู่เครื่องเล่น Kolya บอกฉันหน่อยว่านี่คือผู้เล่นประเภทไหน มันใช้สตรีมอย่างไร ทำไมต้อง HLS

วลาดิมี: เรามีเครื่องเล่นที่ผู้ดูการประชุมทุกคนสามารถรับชมได้

พัฒนาแพลตฟอร์มวิดีโอใน 90 วัน

โดยพื้นฐานแล้ว นี่คือสิ่งห่อหุ้มรอบๆ ห้องสมุด hls.jsซึ่งมีผู้เล่นอีกหลายคนเขียนไว้ แต่เราต้องการฟังก์ชันการทำงานที่เฉพาะเจาะจงมาก เช่น การกรอกลับและทำเครื่องหมายสถานที่ที่บุคคลนั้นอยู่ รายงานใดที่เขากำลังดูอยู่ เรายังต้องการเลย์เอาต์ของเราเอง โลโก้ทุกประเภท และทุกอย่างที่ประกอบเข้ากับเรา ดังนั้นเราจึงตัดสินใจเขียนไลบรารีของเราเอง (แบบ wrapper บน HLS) และฝังไว้บนเว็บไซต์

นี่คือฟังก์ชันรูท ดังนั้นจึงมีการใช้งานเกือบครั้งแรก แล้วทุกอย่างก็เติบโตขึ้นรอบๆ

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

พัฒนาแพลตฟอร์มวิดีโอใน 90 วัน
ตัวอย่างไทม์ไลน์

— ปุ่มถูกสร้างขึ้นในโปรแกรมเล่นเพื่อแสดงไทม์ไลน์ของรายงานทั้งหมด...

วลาดิมี: ใช่ เราได้แก้ไขปัญหาการนำทางของผู้ใช้ทันที ในช่วงกลางเดือนเมษายน เราตัดสินใจว่าจะไม่ออกอากาศการประชุมแต่ละครั้งบนเว็บไซต์แยกต่างหาก แต่จะรวมทุกอย่างไว้ในที่เดียว เพื่อให้ผู้ใช้ตั๋ว Full Pass สามารถสลับระหว่างการประชุมต่างๆ ได้อย่างอิสระ ทั้งการถ่ายทอดสดและการบันทึกการประชุมที่ผ่านมา

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

— มีปัญหาทางเทคนิคเกี่ยวกับเรื่องนี้หรือไม่?

วลาดิมี: พวกเขามีแถบเลื่อนที่ทำเครื่องหมายจุดเริ่มต้นของรายงานต่างๆ

— สุดท้ายแล้ว คุณได้ติดเครื่องหมายเหล่านี้บนแถบเลื่อนก่อนที่ YouTube จะทำอะไรที่คล้ายกันหรือไม่

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

วลาดิมี: แต่เราขายได้เร็วกว่าจริงๆ จริงๆ แล้ว เบื้องหลังฟีเจอร์ง่ายๆ นี้ มีแบ็กเอนด์ ฟรอนต์เอนด์ การคำนวณ และคณิตศาสตร์จำนวนมากอยู่ภายในโปรแกรมเล่น

ส่วนหน้า

— เรามาดูกันว่าเนื้อหาที่เราแสดง (การ์ดคำพูด วิทยากร เว็บไซต์ กำหนดการ) ไปถึงส่วนหน้าได้อย่างไร

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

พัฒนาแพลตฟอร์มวิดีโอใน 90 วัน
นี่คือวิธีที่ผู้พูดมองเห็นท่อ

ระบบนี้เป็นการพัฒนาภายในของเรา

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

ดูเหมือนว่าไซต์นี้เป็นเพียงหน้าเว็บที่มีผู้เล่นและไม่มีอะไรซับซ้อนที่นี่ ยกเว้นแต่ว่ามันไม่ใช่ แบ็กเอนด์ที่อยู่ด้านหลังเพจนี้จะไปที่ Contentful รับกำหนดการจากที่นั่น สร้างออบเจ็กต์บางอย่าง และส่งไปยังส่วนหน้า ด้วยการใช้การเชื่อมต่อ websocket ซึ่งไคลเอนต์ทุกรายของแพลตฟอร์มของเราสร้างขึ้น เราจะส่งการอัปเดตกำหนดการตั้งแต่แบ็กเอนด์ไปยังฟรอนต์เอนด์ให้เขา

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

วลาดิมี: สิ่งสำคัญคือต้องชี้แจงที่นี่ว่าเว็บไซต์ของเราไม่ใช่แอปพลิเคชัน SPA แบบคลาสสิก นี่เป็นทั้งเว็บไซต์ตามเค้าโครงและแสดงผลและสปา Google มองว่าไซต์นี้เป็น HTML ที่แสดงผลจริงๆ นี่เป็นสิ่งที่ดีสำหรับ SEO และสำหรับการส่งเนื้อหาไปยังผู้ใช้ ไม่ต้องรอให้ JavaScript โหลด 1,5 เมกะไบต์ก่อนจึงจะเห็นหน้า แต่จะเห็นหน้าที่แสดงผลแล้วทันที และคุณจะรู้สึกได้ทุกครั้งที่เปลี่ยนรายงาน ทุกอย่างเกิดขึ้นในครึ่งวินาที เนื่องจากเนื้อหาพร้อมและโพสต์ในตำแหน่งที่ถูกต้องแล้ว

— มาวาดเส้นใต้สิ่งที่กล่าวมาทั้งหมดโดยแสดงรายการเทคโนโลยีกัน Tyoma กล่าวว่าเรามีสตรีม Amazon 5 รายการ และเราจัดส่งวิดีโอและเสียงที่นั่น เรามีสคริปต์ทุบตีที่นั่น เราใช้มันเพื่อเปิดใช้งานและกำหนดค่า...

อาร์เต็ม: สิ่งนี้เกิดขึ้นผ่าน AWS API มีบริการด้านเทคนิคอีกมากมาย เราแบ่งความรับผิดชอบของเราเพื่อที่ฉันจะได้ส่งมอบ CloudFrontและนักพัฒนาส่วนหน้าและส่วนหลังก็รับประโยชน์จากจุดนั้น เรามีการเชื่อมโยงของเราเองหลายอย่างเพื่อลดความซับซ้อนของเลย์เอาต์ของเนื้อหา ซึ่งจากนั้นเราจะสร้างเป็น 4K เป็นต้น เนื่องจากกำหนดเวลามีจำกัดมาก เราจึงดำเนินการเกือบทั้งหมดบน AWS

— จากนั้นทั้งหมดนี้ก็จะเข้าสู่ผู้เล่นโดยใช้ระบบแบ็คเอนด์ เรามี TypeScript, React, Next.JS ในเครื่องเล่นของเรา และที่แบ็กเอนด์ เรามีบริการหลายอย่างใน C#, Java, Spring Boot และ Node.js ทั้งหมดนี้ปรับใช้โดยใช้ Kubernetes โดยใช้โครงสร้างพื้นฐาน Yandex.Cloud

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

ข้อจำกัดทางธุรกิจและการวิเคราะห์

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

วลาดิมี: ในตอนแรกเราเริ่มต้นจากข้อกำหนดวิดีโอ สิ่งที่สำคัญที่สุดคือการกระจายพื้นที่จัดเก็บวิดีโอทั่วโลกเพื่อการจัดส่งที่รวดเร็วถึงลูกค้า ความละเอียดอื่นๆ รวมถึงความละเอียด 1080p รวมถึงการกรอกลับ ซึ่งอีกหลายรายการไม่ได้ใช้ในโหมดถ่ายทอดสด ต่อมาเราได้เพิ่มความสามารถในการเปิดใช้งานความเร็ว 2 เท่า โดยช่วยให้คุณ "ตามทัน" การถ่ายทอดสดและรับชมการประชุมต่อไปแบบเรียลไทม์ได้ และระหว่างทาง ฟังก์ชันการทำเครื่องหมายไทม์ไลน์ก็ปรากฏขึ้น นอกจากนี้เรายังต้องทนทานต่อข้อผิดพลาดและทนทานต่อการเชื่อมต่อ 10 ครั้ง จากมุมมองแบ็กเอนด์ นี่คือการเชื่อมต่อประมาณ 000 รายการคูณด้วย 10 คำขอสำหรับการรีเฟรชเพจแต่ละครั้ง และนี่คือ 000 RPS/วินาทีแล้ว ค่อนข้างมาก.

— มีข้อกำหนดอื่นใดอีกสำหรับ “นิทรรศการเสมือนจริง” กับพันธมิตรออนไลน์หรือไม่?

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

— นอกจากนี้ยังมีข้อกำหนดสำหรับการวิเคราะห์มุมมองและสถิติแบบเรียลไทม์ ฉันรู้ว่าเราใช้ Prometheus สำหรับสิ่งนี้ แต่บอกรายละเอียดเพิ่มเติมให้เราทราบ: เราปฏิบัติตามข้อกำหนดอะไรบ้างสำหรับการวิเคราะห์ และสิ่งนี้นำไปใช้อย่างไร

วลาดิมี: ในตอนแรก เรามีข้อกำหนดทางการตลาดสำหรับการรวบรวมสำหรับการทดสอบ A/B และรวบรวมข้อมูลเพื่อทำความเข้าใจวิธีการส่งมอบเนื้อหาที่ดีที่สุดให้กับลูกค้าอย่างเหมาะสมในอนาคต นอกจากนี้ยังมีข้อกำหนดสำหรับการวิเคราะห์บางอย่างเกี่ยวกับกิจกรรมของพันธมิตรและการวิเคราะห์ที่คุณเห็น (เคาน์เตอร์เยี่ยมชม) ข้อมูลทั้งหมดจะถูกรวบรวมแบบเรียลไทม์

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

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

การฉ้อโกง

— เรามีกลไกต่อต้านการฉ้อโกงหรือไม่?

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

วลาดิเมียร์: ผู้ใช้ที่ถูกแบนรายหนึ่งเข้าใจว่าเหตุใดสิ่งนี้จึงเกิดขึ้น เขามาขอโทษและสัญญาว่าจะซื้อตั๋ว

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

วลาดิเมียร์: ฉันต้องการพูดคุยเกี่ยวกับการวิเคราะห์และสถิติซึ่งเราจะวิเคราะห์ความสำเร็จของรายงานหรือสามารถมอบให้กับพันธมิตรได้ ไคลเอนต์ทั้งหมดเชื่อมต่อผ่านการเชื่อมต่อ websocket ไปยังคลัสเตอร์แบ็กเอนด์เฉพาะ มันยืนอยู่ตรงนั้น เฮเซลคาสท์. ลูกค้าแต่ละรายในแต่ละช่วงเวลาจะส่งสิ่งที่เขาทำและเพลงที่เขาดูอยู่ จากนั้นข้อมูลนี้จะถูกรวบรวมโดยใช้งาน Hazelcast ที่รวดเร็ว และส่งกลับไปยังทุกคนที่รับชมเพลงเหล่านี้ เราเห็นตรงมุมว่าตอนนี้มีคนอยู่กับเรากี่คน

พัฒนาแพลตฟอร์มวิดีโอใน 90 วัน

ข้อมูลเดียวกันนี้จะถูกเก็บไว้ที่ Mongo และไปที่ Data Lake ของเรา ซึ่งเรามีโอกาสที่จะสร้างกราฟที่น่าสนใจยิ่งขึ้น คำถามเกิดขึ้น: มีผู้ใช้ที่ไม่ซ้ำกี่รายที่ดูรายงานนี้ พวกเราไป โพสต์เกรสมีการปิงของทุกคนที่มาจาก ID ของรายงานนี้ เรารวบรวมรวบรวมสิ่งที่ไม่ซ้ำกันและตอนนี้เราเข้าใจแล้ว

วลาดิมี: แต่ในขณะเดียวกัน เรายังได้รับข้อมูลแบบเรียลไทม์จาก Prometheus ด้วย มีการตั้งค่าเทียบกับบริการ Kubernetes ทั้งหมด และเทียบกับ Kubernetes เอง มันรวบรวมทุกสิ่งอย่างแน่นอน และด้วย Grafana เราสามารถสร้างกราฟใดก็ได้แบบเรียลไทม์

วลาดิเมียร์: ในด้านหนึ่ง เราดาวน์โหลดสิ่งนี้เพื่อการประมวลผล OLAP เพิ่มเติม และสำหรับ OLTP แอปพลิเคชันจะดาวน์โหลดสิ่งทั้งหมดไปยัง Prometheus, Grafana และกราฟมาบรรจบกัน!

- เป็นกรณีที่กราฟมาบรรจบกัน

การเปลี่ยนแปลงแบบไดนามิก

— บอกเราว่าการเปลี่ยนแปลงแบบไดนามิกเกิดขึ้นอย่างไร: หากรายงานถูกยกเลิก 6 นาทีก่อนเริ่มต้น ห่วงโซ่ของการดำเนินการคืออะไร? ไปป์ไลน์ไหนใช้งานได้?

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

ความเป็นไปได้ประการที่สอง เมื่อทุกอย่างเกิดขึ้นอย่างรวดเร็ว: ตัวแก้ไขจะเปลี่ยนข้อมูลใน Contentful ด้วยตนเอง (ลิงก์ไปยัง Telegram การนำเสนอของผู้พูด ฯลฯ) และตรรกะเดียวกันนั้นก็ใช้งานได้เหมือนครั้งแรก

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

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

การปรับใช้

— ฉันต้องการถามเกี่ยวกับการปรับใช้ Kolya และทีมงานใช้เวลาส่วนใหญ่ในช่วงเริ่มต้นในการตั้งค่าโครงสร้างพื้นฐานทั้งหมดที่ทุกอย่างเปิดเผยให้เราทราบ บอกฉันว่ามันทำมาจากอะไร?

วลาดิมี: จากมุมมองทางเทคนิค ในตอนแรก เรามีข้อกำหนดสำหรับผลิตภัณฑ์ที่เป็นนามธรรมจากผู้ขายรายใดก็ตาม มาที่ AWS เพื่อสร้างสคริปต์ Terraform จาก AWS โดยเฉพาะ หรือจาก Yandex หรือจาก Azure โดยเฉพาะ เป็นต้น ไม่พอดีจริงๆ เราต้องย้ายไปที่ไหนสักแห่งในบางจุด

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

เรามีสองกลุ่ม การทดสอบและการผลิต มีความเหมือนกันทุกประการในแง่ของฮาร์ดแวร์และการตั้งค่า เราใช้โครงสร้างพื้นฐานเป็นโค้ด บริการทั้งหมดจะถูกเผยแพร่โดยอัตโนมัติในสามสภาพแวดล้อมจากสาขาฟีเจอร์ สาขาหลัก สาขาทดสอบ และ GitLab โดยใช้ไปป์ไลน์อัตโนมัติ สิ่งนี้จะผสานรวมเข้ากับ GitLab ได้สูงสุด และผสานรวมกับ Elastic, Prometheus ได้สูงสุด

เราได้รับโอกาสอย่างรวดเร็ว (สำหรับแบ็กเอนด์ภายใน 10 นาที สำหรับฟรอนต์เอนด์ภายใน 5 นาที) เปิดตัวการเปลี่ยนแปลงกับสภาพแวดล้อมใดๆ ด้วยการทดสอบ การบูรณาการ การรันการทดสอบการทำงาน การทดสอบการบูรณาการบนสภาพแวดล้อม และยังทดสอบด้วยการทดสอบโหลดบน สภาพแวดล้อมการทดสอบใกล้เคียงกับที่เราต้องการในการผลิต

เกี่ยวกับการทดสอบ

— คุณทดสอบเกือบทุกอย่าง มันยากที่จะเชื่อว่าคุณเขียนทุกอย่างอย่างไร คุณช่วยบอกเราเกี่ยวกับการทดสอบแบ็กเอนด์ได้ไหม: ครอบคลุมทุกอย่างแค่ไหน, การทดสอบอะไรบ้าง?

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

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

ในขณะนี้ ฉันมีการทดสอบส่วนประกอบประมาณ 70 รายการและการทดสอบบูรณาการประมาณ 40 รายการบนเครื่อง ความคุ้มครองเกือบ 95% นี่เป็นสำหรับส่วนประกอบ น้อยกว่าสำหรับการบูรณาการ แต่ก็ไม่ได้จำเป็นมากนัก เมื่อพิจารณาว่าโปรเจ็กต์เกี่ยวข้องกับการสร้างโค้ดทุกประเภท นี่เป็นตัวบ่งชี้ที่ดีมาก ไม่มีทางอื่นที่จะทำสิ่งที่เราทำในสามเดือน เพราะหากเราทดสอบด้วยตนเอง โดยมอบฟีเจอร์ให้กับผู้ทดสอบของเรา และเธอจะพบจุดบกพร่องและส่งคืนให้เราเพื่อทำการแก้ไข การไปกลับเพื่อแก้ไขโค้ดจะใช้เวลานานมากและเราจะไม่ตรงตามกำหนดเวลาใดๆ

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

วลาดิเมียร์: ดังนั้นจึงถือเป็นความสำเร็จอย่างมากที่เมื่อฉันประมาณคุณลักษณะ ฉันบอกว่าฉันต้องการเวลา 4 วันสำหรับปากกาธรรมดา 1 อันและเว็บซ็อกเก็ต 4 อัน Kolya อนุญาต เขาคุ้นเคยกับความจริงที่ว่า 2 วันนี้มีการทดสอบ XNUMX ประเภทและมีแนวโน้มว่ามันจะได้ผล

วลาดิมี: ฉันยังมีการทดสอบ 140 รายการที่เขียน: ส่วนประกอบ + การทำงาน ซึ่งทำสิ่งเดียวกัน สถานการณ์เดียวกันทั้งหมดได้รับการทดสอบในการใช้งานจริง ในการทดสอบ และในการใช้งานจริง นอกจากนี้ เรายังเพิ่มการทดสอบ UI พื้นฐานด้านการทำงานอีกด้วย ด้วยวิธีนี้เราจะครอบคลุมฟังก์ชันพื้นฐานที่สุดที่อาจขาดหายได้

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

— ฉันไม่รู้แน่ชัดว่าเรากำลังทดสอบอะไรทางฝั่งสตรีมอยู่หรือเปล่า แต่ฉันจำได้ว่ามีปัญหากับตัวแปลงรหัสเมื่อเราพบปะกัน เราได้ทดสอบสตรีมแล้วหรือยัง?

อาร์เต็ม: ทดสอบซ้ำแล้วซ้ำอีก การจัดพบปะ ในกระบวนการจัดงานมีตติ้ง มีตั๋ว JIRA ประมาณ 2300 ใบ นี่เป็นเพียงสิ่งทั่วไปที่ผู้คนทำเพื่อพบปะสังสรรค์ เราได้นำบางส่วนของแพลตฟอร์มมาไว้ในหน้าแยกต่างหากสำหรับการมีตติ้ง ซึ่งดำเนินการโดย Kirill Tolkachev (ทอล์คเควี).

พูดตามตรงไม่มีปัญหาใหญ่อะไร จริงๆ หลายครั้งที่เราพบข้อผิดพลาดในการแคชบน CloudFront เราแก้ไขมันได้ค่อนข้างรวดเร็ว - เราเพียงแค่กำหนดค่านโยบายใหม่ มีข้อบกพร่องในผู้คนมากขึ้นอย่างมีนัยสำคัญในระบบสตรีมมิ่งบนเว็บไซต์

ในระหว่างการประชุม ฉันต้องเขียนจดหมายถึงผู้ส่งออกอีกหลายคนเพื่อให้ครอบคลุมอุปกรณ์และบริการมากขึ้น ในบางแห่ง ฉันต้องทำจักรยานของตัวเองเพียงเพื่อการวัดเท่านั้น โลกของฮาร์ดแวร์ AV (เสียง-วิดีโอ) ไม่ได้มีสีชมพูมากนัก คุณมีอุปกรณ์ "API" บางอย่างที่คุณไม่สามารถควบคุมได้ และคุณยังห่างไกลจากความจริงที่ว่าคุณจะสามารถรับข้อมูลที่คุณต้องการได้ ผู้จำหน่ายฮาร์ดแวร์ช้ามากและแทบจะเป็นไปไม่ได้เลยที่จะได้สิ่งที่คุณต้องการจากพวกเขา โดยรวมแล้วมีฮาร์ดแวร์มากกว่า 100 ชิ้นพวกเขาไม่ได้คืนสิ่งที่คุณต้องการและคุณเขียนผู้ส่งออกที่แปลกและซ้ำซ้อนซึ่งอย่างน้อยคุณก็สามารถแก้ไขข้อบกพร่องของระบบได้

Оборудование

— ฉันจำได้ว่าก่อนเริ่มการประชุมเราได้ซื้ออุปกรณ์เพิ่มเติมบางส่วนอย่างไร

อาร์เต็ม: เราซื้อคอมพิวเตอร์ แล็ปท็อป และชุดแบตเตอรี่ ปัจจุบันเราสามารถอยู่ได้โดยไม่ต้องใช้ไฟฟ้าเป็นเวลา 40 นาที ในเดือนมิถุนายนมีพายุฝนฟ้าคะนองรุนแรงในเซนต์ปีเตอร์สเบิร์ก - ดังนั้นเราจึงต้องไฟดับเช่นนี้ ในเวลาเดียวกัน ผู้ให้บริการหลายรายมาหาเราพร้อมลิงก์แบบออปติกจากจุดต่างๆ นี่เป็นเวลา 40 นาทีของการหยุดทำงานของอาคาร ในระหว่างนี้เราจะเปิดไฟ เสียง กล้อง ฯลฯ ในการทำงาน

— เรามีเรื่องราวที่คล้ายกันกับอินเทอร์เน็ต ในสำนักงานที่สตูดิโอของเราตั้งอยู่ เราได้ลากตาข่ายอันดุเดือดระหว่างพื้น

อาร์เต็ม: เรามีไฟเบอร์ 20 Gbit ระหว่างชั้น ไกลออกไปตามพื้น บางแห่งมีทัศนศาสตร์ บางแห่งไม่มีทัศนศาสตร์ แต่ก็ยังมีช่องน้อยกว่าช่องกิกะบิต - เราเปิดวิดีโอระหว่างเส้นทางของการประชุม โดยทั่วไปแล้ว การทำงานบนโครงสร้างพื้นฐานของคุณเองจะสะดวกมาก โดยแทบไม่สามารถทำได้ในการประชุมแบบออฟไลน์บนไซต์งาน

— ก่อนที่ฉันจะทำงานที่ JUG Ru Group ฉันเคยเห็นวิธีจัดห้องฮาร์ดแวร์ในการประชุมออฟไลน์ในชั่วข้ามคืน โดยมีจอภาพขนาดใหญ่พร้อมหน่วยวัดทั้งหมดที่คุณสร้างใน Grafana ขณะนี้ยังมีห้องสำนักงานใหญ่ซึ่งทีมพัฒนานั่งอยู่ ซึ่งในระหว่างการประชุมจะแก้ไขข้อบกพร่องบางอย่างและพัฒนาคุณสมบัติต่างๆ ขณะเดียวกันมีระบบติดตามแสดงผลบนหน้าจอขนาดใหญ่ Artyom, Kolya และคนอื่นๆ นั่งคอยดูให้แน่ใจว่าทุกอย่างจะไม่ล้มและทำงานได้อย่างสวยงาม

ความอยากรู้และปัญหา

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

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

วลาดิเมียร์: สำหรับฉันดูเหมือนว่าสิ่งนี้จะเกิดขึ้นในช่วงสามเดือนที่ผ่านมาเท่านั้น ทุกวัน. อย่างที่คุณเห็นผมของฉันถูกดึงออกหมดแล้ว

พัฒนาแพลตฟอร์มวิดีโอใน 90 วัน
Vladimir Krasilshchik หลังจากผ่านไป 3 เดือน เมื่อมีเกมบางประเภทเกิดขึ้นและไม่มีใครเข้าใจว่าจะทำอย่างไรกับมัน

ทุกๆ วันจะมีเรื่องแบบนี้ เมื่อมีช่วงเวลาที่คุณหยิบมันมาฉีกผมออก หรือรู้ตัวว่าไม่มีใครอีกแล้ว และมีเพียงคุณเท่านั้นที่ทำได้ งานใหญ่ครั้งแรกของเราคือ TechTrain ในวันที่ 6 มิถุนายน เวลา 2 น. เรายังไม่ได้เปิดตัวสภาพแวดล้อมการใช้งานจริง แต่ Kolya กำลังเปิดตัว และบัญชีส่วนบุคคลไม่ทำงานเป็นเซิร์ฟเวอร์การอนุญาตโดยใช้ OAuth2.0 เราเปลี่ยนให้เป็นผู้ให้บริการ OAuth2.0 เพื่อเชื่อมต่อแพลตฟอร์มเข้ากับมัน ฉันทำงานมาประมาณ 18 ชั่วโมงติดต่อกัน ฉันดูคอมพิวเตอร์และไม่เห็นอะไรเลย ฉันไม่เข้าใจว่าทำไมมันถึงไม่ทำงาน และ Kolya ดูโค้ดของฉันจากระยะไกล มองหาจุดบกพร่องในการกำหนดค่า Spring พบมัน และ LC ก็ใช้งานได้ และกำลังใช้งานจริงด้วย

วลาดิมี: และหนึ่งชั่วโมงก่อนที่ TechTrain จะมีการเปิดตัว

ดวงดาวมากมายอยู่เรียงกันที่นี่ เราโชคดีมากเพราะเรามีทีมที่ยอดเยี่ยม และทุกคนก็ได้รับแรงบันดาลใจจากแนวคิดในการทำออนไลน์ ตลอดสามเดือนที่ผ่านมา เราได้รับแรงผลักดันจากการที่เรา "สร้าง YouTube" ฉันไม่ยอมให้ตัวเองตัดผม แต่บอกทุกคนว่าทุกอย่างจะผ่านไปด้วยดี เพราะจริงๆ แล้วทุกอย่างคำนวณไว้นานแล้ว

เกี่ยวกับประสิทธิภาพ

— คุณช่วยบอกฉันได้ไหมว่ามีกี่คนที่อยู่บนไซต์ในหนึ่งแทร็ก? มีปัญหาด้านประสิทธิภาพหรือไม่?

วลาดิมี: ไม่มีปัญหาด้านประสิทธิภาพดังที่เราได้กล่าวไปแล้ว จำนวนผู้เข้าร่วมสูงสุดที่เข้าร่วมรายงานหนึ่งฉบับคือ 1300 คน ซึ่งอยู่ใน Heisenbug

— มีปัญหากับการรับชมในท้องถิ่นหรือไม่? และเป็นไปได้ไหมที่จะมีคำอธิบายทางเทคนิคพร้อมไดอะแกรมเกี่ยวกับวิธีการทำงานทั้งหมด?

วลาดิมี: เราจะจัดทำบทความเกี่ยวกับเรื่องนี้ในภายหลัง

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

วลาดิเมียร์: ตามที่ฉันเข้าใจ นักพัฒนาส่วนหน้าทำงานในพื้นที่โดยใช้การจำลอง และเนื่องจากเวลาในการเผยแพร่ไปยังนักพัฒนาที่อยู่ส่วนหน้าก็สั้นเช่นกัน (5 นาที) จึงไม่มีปัญหาในการตรวจสอบว่าเกิดอะไรขึ้นกับใบรับรอง

— ทุกอย่างได้รับการทดสอบและดีบั๊ก แม้กระทั่งในเครื่อง ซึ่งหมายความว่าเราจะเขียนบทความที่มีคุณสมบัติทางเทคนิคทั้งหมด แสดงให้คุณเห็น และบอกคุณทุกอย่างด้วยไดอะแกรมว่ามันเป็นอย่างไร

วลาดิเมียร์: คุณสามารถรับมันและทำซ้ำได้

- ใน 3 เดือน

ทั้งหมด

— ทุกอย่างที่อธิบายไว้ด้วยกันฟังดูดีเลย เมื่อพิจารณาว่าทีมเล็กๆ เสร็จภายในสามเดือน

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

— มีอะไรอยู่ในรายการงานเพิ่มเติมของคุณเมื่อการประชุมภาคฤดูร้อนได้เกิดขึ้นแล้ว?

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

และยังเพิ่มแพลตฟอร์มทั้งหมด ยกเว้นการสตรีมและการประชุม ยังเป็นสถานะหลังการประชุมอีกด้วย เหล่านี้คือเพลย์ลิสต์ (รวมถึงรายการที่รวบรวมโดยผู้ใช้) ซึ่งอาจเป็นเนื้อหาจากการประชุมที่ผ่านมาอื่นๆ บูรณาการ มีป้ายกำกับ ผู้ใช้สามารถเข้าถึงได้ และยังสามารถดูได้บนเว็บไซต์ของเรา (live.jugru.org).

— พวกคุณขอบคุณมากสำหรับคำตอบของคุณ!

หากในหมู่ผู้อ่านมีผู้ที่เข้าร่วมการประชุมภาคฤดูร้อนของเรา โปรดแบ่งปันความประทับใจของคุณต่อผู้เล่นและออกอากาศ อะไรที่สะดวก อะไรทำให้คุณหงุดหงิด คุณต้องการเห็นอะไรในอนาคต

หากคุณสนใจแพลตฟอร์มและต้องการเห็นมัน "ในการต่อสู้" เราจะใช้มันอีกครั้งบนของเรา การประชุมฤดูใบไม้ร่วง-ฤดูหนาว. มีให้เลือกมากมาย ดังนั้นจึงมีอันที่เหมาะกับคุณเกือบแน่นอน

ที่มา: will.com

เพิ่มความคิดเห็น