ก๊วนซอฟท์แวร์ </softganz> SoftGang (Gang Software)

Web &amp; Software Developer Gang.

วิธีการดูแลโค้ดของวิศวกร Facebook

by Little Bear @23 ธ.ค. 56 17:49 ( IP : 49...85 ) | Tags : Programing , Facebook

SoftGanz Group โดยชื่อแล้วเป็นแก๊งซ์ (gang(z) ที่เขียนโปรแกรม (software) ตั้งแต่จัดตั้งแก๊งมา ก็มีสมาชิกอยู่ 1 คน คือผมเอง (ไม่รู้เหมือนกันว่าเป็นแก๊งได้ยังไง เอาเป็นว่า เป็นแก๊งที่มี 1 คน ก็แล้วกัน) ดังนี้การเขียนโปรแกรม ผมก็เขียนคนเดียว ไล่มาตั้งแต่ คุย requirement , system analyse , database design , php programming , javascript programming , css design , graphic design (บางครั้งก็มีคนอื่นออกแบบให้บ้าง ระยะหลังก็ลอกแบบเขาบ้าง ซื้อแบบเขาบ้าง แล้วแต่สะดวก)

โค๊ดส่วนใหญ่ เมื่อเขียนเสร็จ ตรวจสอบเองว่าผิดบ้างไหม (test เอง QC เอง) เสร็จปุ๊บ ก็อัพโหลดปั๊บเลย (แสดงว่าเป็น nightly build version ตลอด)

เรียกว่าทำทุกอย่างด้วยตัวคนเดียว ก็เลยไม่มีระบบอะไรทั้งนั้น

แต่พัฒนาระบบโปรแกรมที่มีขนาดใหญ่ ไม่สามารถทำอย่างที่ผมทำได้ ต้องมีทีม ต้องมีการวางระบบ งั้นลองมาดูกันว่า ทีมวิศวกรของ Facebook นั้นเขาออกแบบระบบในการพัฒนาโปรแกรมกันอย่างไร (ขออนุญาตนำต้นฉบับจาก blognone.com มาแปะไว้ด้านล่างนี้เลยนะครับ)

ต่อไปนี้เป็นบทความจาก blognone.com นะครับ


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

ทีมวิศวกรของ 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 ตัวนี้ก่อน ถ้าผ่านก็จะไล่ระดับขึ้นไปเรื่อยๆ แต่ถ้าไม่ผ่าน วิศวกรจะต้องกลับไปแก้โค้ดใหม่ และเริ่มทดสอบจากชุดเล็กสุดเสมอ
  • ทีมดูแลระบบมีตัวชี้วัดหลายอย่าง ทั้งด้านเทคนิค และด้านพฤติกรรมของผู้ใช้ ถ้าหากโค้ดรุ่นใหม่ส่งผลให้พฤติกรรมของผู้ใช้เปลี่ยนไป ก็จะสามารถตรวจพบได้ทันที
  • เมื่อโค้ดผ่านการทดสอบทั้งหมดแล้ว จะถูกรวมเข้ากับโค้ดจริงที่จะปล่อยในวันอังคาร

ที่มา - blognone.com , FrameThink

Relate topics