ทีมวิศวกรของ Facebook ใหญ่มาก คิดเป็นครึ่งหนึ่งของพนักงานทั้งบริษัท 2,000 คน โดยแบ่งเป็นทีมซอฟต์แวร์ และทีมดูแลระบบอย่างละครึ่ง (ประมาณทีมละ 400-500 คน) เพื่อให้เข้าใจง่าย ผมแบ่งเนื้อหาเป็น 2 ส่วนตาม 2 ทีมนี้นะครับ
ทีมวิศวกรซอฟต์แวร์
- วิศวกรใหม่ของ Facebook จะต้องอบรมโครงสร้างและกระบวนการทำงานของบริษัท นานประมาณ 4-6 สัปดาห์ และมีคนไม่ผ่านอบรม ไม่รับเข้าทำงานประมาณ 10% อบรมเสร็จแล้วจะได้สิทธิ์เข้าถึง database ที่กำลังทำงานอยู่
- วิศวกรทุกคนของ Facebook สามารถแก้โค้ดของซอฟต์แวร์ที่รัน Facebook ได้ตามใจชอบ ไม่จำกัดฝ่าย
- Facebook มีผู้จัดการผลิตภัณฑ์ (product manager) น้อยมาก ฝ่ายบริหารและการตลาดไม่สำคัญเท่าวิศวกร
- ผู้จัดการสั่งงานวิศวกรโดยตรงไม่ได้ ต้องใช้การล็อบบี้ คือเสนอไอเดียให้วิศวกร ซึ่งจะเลือกทำหรือไม่ทำก็ได้ ทำเป็นระยะเวลานานแค่ไหนก็ได้ ขึ้นกับวิศวกรแต่ละคน
- วิศวกรจะทำทุกอย่างเองทั้งหมด ตั้งแต่โค้ดจาวาสคริปต์ไล่ลงไปถึงฐานข้อมูล รวมถึงการแก้บั๊กและดูแลโค้ดหลังใช้งานจริงแล้ว
- Facebook ไม่มีทีม QA (เป็นหน้าที่ของวิศวกรเอง) และไม่ค่อยใช้ automated unit test (มีบ้างแต่ไม่เยอะนัก)
- ในกรณีที่ต้องการดีไซเนอร์ วิศวกรก็ต้องไปขายไอเดียให้ดีไซเนอร์สนใจและยอมช่วยทำ แต่ส่วนมากวิศวกรของ Facebook นิยมทำงานระดับฐานราก มากกว่างานระดับอินเทอร์เฟซ
- กระบวนการ commit โค้ดเข้าระบบ ต้องผ่านการรีวิวจากคนอื่นๆ อย่างน้อยหนึ่งคนเสมอ การส่งโค้ดโดยไม่รีวิวถือเป็นการประสงค์ร้าย และระบบถูกออกแบบมาให้คนอื่นๆ ช่วยกันรีวิวโค้ดได้ง่าย
- โค้ดบางส่วนที่สำคัญมาก เช่น News Feed มีข่าวว่า Mark Zuckerberg จะเป็นคนรีวิวโค้ดด้วยตัวเองเสมอ
- ตามธรรมเนียมแล้ว โค้ดของ Facebook รุ่นใหม่จะถูกนำขึ้นเซิร์ฟเวอร์จริงสัปดาห์ละครั้ง ทุกวันอังคาร
- วิศวกรเจ้าของโค้ดที่จะส่งขึ้นเซิร์ฟเวอร์จริงในสัปดาห์นั้น จะต้องอยู่ที่บริษัทในวันอังคาร และต้องประจำอยู่ใน IRC ของบริษัทเพื่อเตรียมรับมือกับปัญหา
ทีมดูแลระบบเซิร์ฟเวอร์
- ตอนนี้ Facebook มีเซิร์ฟเวอร์ประมาณ 60,000 ตัว
- การเปลี่ยนแปลงโค้ดรุ่นใหม่จะแบ่งออกเป็น 3 ระดับกว้างๆ คือ p1 ทดสอบโค้ดใหม่เฉพาะภายใน p2 ปล่อยโค้ดใหม่ต่อสาธารณะในวงจำกัด และ p3 เปลี่ยนโค้ดหมดทั้งเว็บ
- ชุดของเซิร์ฟเวอร์ที่เล็กที่สุดสำหรับทดลองโค้ดใหม่ ประกอบด้วยเซิร์ฟเวอร์ 6 ตัว
- ทุกวันอังคาร ทีมระบบจะเริ่มทดสอบจาก 6 ตัวนี้ก่อน ถ้าผ่านก็จะไล่ระดับขึ้นไปเรื่อยๆ แต่ถ้าไม่ผ่าน วิศวกรจะต้องกลับไปแก้โค้ดใหม่ และเริ่มทดสอบจากชุดเล็กสุดเสมอ
- ทีมดูแลระบบมีตัวชี้วัดหลายอย่าง ทั้งด้านเทคนิค และด้านพฤติกรรมของผู้ใช้ ถ้าหากโค้ดรุ่นใหม่ส่งผลให้พฤติกรรมของผู้ใช้เปลี่ยนไป ก็จะสามารถตรวจพบได้ทันที
- เมื่อโค้ดผ่านการทดสอบทั้งหมดแล้ว จะถูกรวมเข้ากับโค้ดจริงที่จะปล่อยในวันอังคาร
ที่มา - FrameThink
http://www.blognone.com/news/21243