บทความนี้เขียนขึ้นร่วมกับคุณ Vitalii Topoliuk ซึ่งดำรงตำแหน่งวิศวกรซอฟต์แวร์จาก Meta และคุณ Sean Keegan ซึ่งดำรงตำแหน่งนักพัฒนาผู้มีส่วนร่วมจาก Meta
การสัมภาษณ์ในวันนี้ เราอยู่กับคุณ Vitalii Topoliuk ซึ่งดำรงตำแหน่งวิศวกรซอฟต์แวร์ในทีมแอพ Messenger บนเดสก์ท็อปที่ Meta ทีมของคุณ Vitalii ทำงานในส่วนของ Messenger เวอร์ชั่นเดสก์ท็อป ซึ่งช่วยให้คุณสามารถส่งข้อความ โทร และติดต่อกันได้โดยตรงจากคอมพิวเตอร์ของคุณ
ผมชื่อ Vitalii Topoliuk เป็นวิศวกรซอฟต์แวร์ในทีมแอพ Messenger บนเดสก์ท็อปครับ เราพัฒนาแอพ Messenger เวอร์ชั่น Windows และ macOS มาตลอด 3 ปีที่ผ่านมา โดยในช่วง 2 ปีหลังนี้เราพัฒนาโดยใช้ React Native
แอพของเราได้รับการสนับสนุนโดยเฟรมเวิร์ก React Native ครับ
Messenger เวอร์ชั่นเดสก์ท็อปและโปรเจ็กต์สืบเนื่อง ได้แก่ Work Chat สำหรับเดสก์ท็อปและ Workrooms สำหรับเดสก์ท็อป
แอพของเรานั้นต่อยอดมาจากเฟรมเวิร์ก Electron ซึ่งช่วยให้เราดำเนินงานได้ดีมากในช่วงแรก แต่ไม่นานนัก เราก็ใช้งาน Electron จนสุดขีดความสามารถ และจำเป็นต้องลงทุนอย่างมากเพื่อให้ได้ประสิทธิภาพการทำงาน ความน่าเชื่อถือ และประสิทธิภาพ (PRE) ตามข้อกำหนด นอกจากนี้ Electron ยังจำกัดฟีเจอร์ต่างๆ ของแอพอีกด้วยครับ
พอเปลี่ยนมาใช้ React Native เราก็แก้ปัญหาเกี่ยวกับ PRE ได้จำนวนมาก และปรับปรุงประสบการณ์ของผู้พัฒนาได้มากเลยครับ React Native ช่วยให้สามารถนำฐานโค้ดกลับมาใช้ใหม่ได้ 80% และปรับปรุงเกณฑ์ชี้วัดเกี่ยวกับ PRE ได้อย่างมาก ด้านล่างนี้เป็นการปรับปรุงบางส่วนที่เราทำได้เพียงเปลี่ยนมาใช้ React Native สำหรับแอพ โดยไม่ต้องลงทุนเพิ่มเติมกับ PRE เมื่อเทียบกับแอพ Electron ซึ่งเป็นที่นิยม โดยเรามุ่งเน้นในส่วนของการปรับปรุง PRE ตลอดเวลา 3 เดือน
การเข้าถึงข้อบกพร่อง: -60%
อัตราความสำเร็จสำหรับ Cold Start: 97% (88% สำหรับ Electron)
เวลาแฝงสำหรับ Cold Start ที่ P90: -50%
ขนาดไบนารี: -80%
การเข้าถึงข้อบกพร่อง: +59%
อัตราความสำเร็จสำหรับ Cold Start: 99% (95% สำหรับ Electron)
เวลาแฝงสำหรับ Cold Start ที่ P90: -60%
ขนาดไบนารี: -70%
มีครับ ที่ Meta เรามีโอกาสได้แสดงให้ชุมชนเห็นว่า เราสามารถใช้ React Native เพื่อสร้างแอพพลิเคชั่นข้ามแพลตฟอร์มสำหรับเดสก์ท็อปได้ครับ
ผมหวังว่า React Native จะเข้ามาแทนที่ Electron ในอนาคต แต่หากจะให้ได้ผล เฟรมเวิร์กก็ควรได้รับการปรับปรุงให้มีเครื่องมือในการทำงานที่ครบวงจรมากขึ้นครับ ตัวอย่างเช่น Electron จะไม่ใช่เพียงเครื่องมือฉาบฉวยสำหรับแอพบนเว็บ แต่จะมีเครื่องมือต่างๆ ในการสร้างตัวติดตั้ง ตัวอัพเดตอัตโนมัติ การรายงานข้อบกพร่อง ฯลฯ
เราขอขอบคุณคุณ Vitalii ที่สละเวลาให้สัมภาษณ์ในครั้งนี้ เป็นเรื่องน่าทึ่งที่ได้รู้ว่า React ถูกนำมาใช้เพื่อปรับปรุงแอพพลิเคชั่นหลักๆ อย่างไรบ้าง และเราเรียนรู้จากทุกสิ่งที่เราสร้างขึ้นที่ Meta และมอบสิ่งเหล่านั้นกลับคืนสู่ชุมชน React อย่างไร เราหวังว่าคุณจะพบว่าบทสัมภาษณ์นี้มีประโยชน์และให้ข้อมูลเชิงลึกว่ามีการใช้งาน React อย่างไรและในจุดใดบ้างที่ Meta เตรียมพบกับบล็อกบทสัมภาษณ์เพิ่มเติมจากการพูดคุยกับวิศวกรของ Meta และได้ฟังความคิดเห็นของวิศวกรเกี่ยวกับหัวข้อนี้
React เป็นหนึ่งในโปรเจ็กต์โอเพนซอร์สที่ได้รับความนิยมมากที่สุดและได้รับการจัดอันดับให้เป็นหนึ่งในเฟรมเวิร์กสำหรับการพัฒนาเว็บที่ "ได้รับความนิยมสูงสุด" อย่างต่อเนื่องในช่วงหลายปีที่ผ่านมา พวกเราที่ Meta เชื่อว่า React เป็นไลบรารีที่โดดเด่นซึ่งช่วยให้ผู้พัฒนาสร้างอินเทอร์เฟซผู้ใช้ได้อย่างง่ายดายและครอบคลุม ทั้งนี้ React เป็นไลบรารีโอเพนซอร์สที่เปิดกว้างสำหรับทุกคน ซึ่งมีผู้พัฒนาหลายล้านคนทั่วโลกใช้งาน โดยมีตั้งแต่เว็บไซต์แบบง่ายๆ ไปจนถึงแอพพลิเคชั่นระดับองค์กร
บล็อกนี้เป็นส่วนหนึ่งของซีรีส์พบปะผู้พัฒนา ซึ่งเราจะเชิญวิศวกรของ Meta ที่ใช้ React เป็นประจำมาร่วมแบ่งปันประสบการณ์และบอกเล่าเกี่ยวกับผลิตภัณฑ์อันน่าทึ่งที่พวกเขากำลังสร้างขึ้น เตรียมพบกับบล็อกบทสัมภาษณ์เพิ่มเติมจากการพูดคุยกับวิศวกรคนอื่นๆ และได้ฟังความคิดเห็นของวิศวกรเกี่ยวกับหัวข้อนี้
เรียนรู้เพิ่มเติมเกี่ยวกับโอเพนซอร์สของ Meta ได้ที่เว็บไซต์โอเพนซอร์สของเรา ติดตามช่อง YouTube ของเรา หรือติดตามเราบน Twitter, Facebook และ LinkedIn