จากบทความเรื่อง The Stack Behind Netflix Scaling
ทำการสรุปโครงสร้าง เครื่องมือ และ วัฒนธรรมองค์กรของระบบ Netflix
ซึ่งทำการรวบรวมจากบทความ และ งานสัมมนาต่าง ๆ
คิดว่า น่าสนใจเลยนำมาแปล และ สรุปไว้นิดหน่อย
เริ่มกันเลย
เริ่มที่เครื่องมือต่าง ๆ ที่ใช้ในการพัฒนาระบบ
- ภาษาโปรแกรมที่ใช้ประกอบไปด้วย Java, JavaScript และ Python
- JavaScript ที่ใช้มี 2 ส่วนคือ Node.js สำหรับฝั่ง Backend และ React สำหรับฝั่งผู้ใช้งาน
- Database ที่ใช้งานประกอบไปด้วย MySQL, Oracle และ Cassandra ซึ่งเคยอ่านเจอบทความหนึ่งจากหัวหน้าทีมพัฒนาของ Netflix บอกว่าระบบหยุดขยายการใช้งาน Oracle ด้วยการใช้งาน MySQL แทน
- Database ที่ใช้นั้นจะใช้ผ่าน Amazon RDS (Relational Database Service) และ Amazon DynamoDB
- ระบบส่ง email ใช้ Amazon SES (Simple Email Service)
- จัดการ source code ผ่าน Github
- ระบบ Continuous Integration ใช้ Jenkins
สิ่งที่น่าสนใจอย่างมากของ Netflix คือ วัฒนธรรมองค์กร (Culture)
เนื่องจากเป็นองค์กรที่มีชื่อเสียงเรื่อง culture อย่างมาก ตัวอย่างเช่น เรื่องของ Hardwork ไม่ได้เกี่ยวข้องกับจำนวนชั่วโมงการทำงานที่บริษัท แต่ใส่ใจเรื่องของงานที่มันแจ่ม ๆ มากกว่า เรื่องของ Context, not Control เน้นว่าให้หลีกเลี่ยงการจัดการแบบ Commad and Control เช่น การตัดสินใจจากระดับบนเพื่อสั่งงานลงมา การที่จะดำเนินงานต่าง ๆ ต้องได้รับการอนุญาตจากฝ่าย management ก่อน มีกลุ่ม committee ในการทำงาน มีการประชุมวางแผนงาน และ ขั้นตอนการทำงานที่มากเกินไป หรือ เยอะกว่าการลงมือทำ ซึ่งเรื่องต่าง ๆ เหล่านี้ให้ทำการหลีกเลี่ยงซะ เรื่องของ Great Workplace สถานที่ทำงานดี ๆ ไม่ได้หมายความว่า ต้องมีกาแฟดี ๆ ให้กิน ต้องมีอาหารกลางวันให้กินฟรี ๆ ต้องมีการเลี้ยงฉลอง ต้องมี office ที่สวยงาม แต่มันคือ เพื่อนร่วมงาน และ งานที่ทำต่างหาก ใน slide ยังอธิบายอีกว่า หลาย ๆ บริษัทมักจะติด คำ ประโยค และ quote ที่ดี ๆ ไว้ เช่นเรื่อง Integrity, Communication, Respect และ Excellence แต่สิ่งที่เกิดขึ้นจริง ๆ กลับตรงกันข้ามเสียอย่างนั้น !! สามารถอ่านเพิ่มเติมได้ที่ Slide :: Culture อีกเรื่องที่มีการพูดถึงอย่างมาก คือDo not tolerate brilliant jerks. The cost to teamwork is too high - CEO Netflix
ระบบของ Netflix ส่วนใหญ่ใช้บริการของ Amazon
โดยที่ infrastructure หลักจะอยู่บน Amazon EC2 ส่วนข้อมูลชนิด digital ต่าง ๆ จะเก็บอยู่ที่ Amazon S3 และระบบ Backend ยังนำ software ที่เป็น opensource มาใช้งานอีก ไม่ว่าจะเป็น MySQL, Gluster, Apache Tomcat, Hive, Chukka, Cassandra และ Hadoop มันจะเยอะไปไหน ... แต่ยังไม่หมดนะ !! แสดงดังรูประบบของ Netflix สามารถใช้งานได้หลากหลาย device
ดังนั้นสิ่งที่ทางระบบต้องทำก็คือ แปลงข้อมูลของ VDO ให้อยู่ในรูปแบบต่าง ๆ มากถึง 120 รูปแบบ รวมทั้งการให้บริการแบบ Streaming จะเป็นแบบ Adaptive bitrate streaming หมายความว่า คุณภาพของ VDO และ เสียง จะแปรผันตามความเร็ว internet ของผู้ใช้งาน รวมทั้งผู้ใช้งานยังสามารถเลือกคุณภาพของ VDO ได้เองอีกด้วยสิ่งที่น่าสนใจอีกอย่าง คือ Netflix recommendation system
คือระบบที่แนะนำสิ่งที่เกี่ยวข้อง สิ่งที่น่าสนใจ สิ่งที่ผู้ใช้อาจจะคาดไม่ถึง เป็นระบบที่นำเอา Machine learning เข้ามาประยุกต์ใช้งาน ซึ่งเป็นระบบที่มีชื่อเสียงอย่างมาก ไม่แพ้ระบบของ Amazon เลย สามารถอ่านเพิ่มเติมได้จาก Learning a Personalized Homepageสุดท้าย Netflix ยังได้สร้าง opensource project ออกมาให้ใช้อีกด้วย
ประกอบไปด้วย- Big Data
- Data persistence
- Build and Delivery tool
- Performance
- Security
เป็นอย่างไรบ้าง สำหรับโครงสร้าง และ วัฒนธรรมองค์กร แบบคร่าว ๆ ของ Netflix ? มันน่าสนใจไหม ?