netflix-culture-valley
จากบทความเรื่อง 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

jerk_netflix

ระบบของ Netflix ส่วนใหญ่ใช้บริการของ Amazon

โดยที่ infrastructure หลักจะอยู่บน Amazon EC2
ส่วนข้อมูลชนิด digital ต่าง ๆ จะเก็บอยู่ที่ Amazon S3

และระบบ Backend ยังนำ software ที่เป็น opensource มาใช้งานอีก
ไม่ว่าจะเป็น MySQL, Gluster, Apache Tomcat, Hive, Chukka, Cassandra และ Hadoop
มันจะเยอะไปไหน … แต่ยังไม่หมดนะ !!

แสดงดังรูป

netflix-architecture

ระบบของ 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

สามารถดูเพิ่มเติมได้ที่ Github :: Netflix

เป็นอย่างไรบ้าง สำหรับโครงสร้าง และ วัฒนธรรมองค์กร แบบคร่าว ๆ ของ Netflix ?
มันน่าสนใจไหม ?