Skip to main content

Exclusive Content

ทำเว็บแบบ Facebook
พูดเหมือนง่าย แต่ไม่ง่าย ?

Khemtat Lengpaiboon (Software Engineer – Billme Co., Ltd.)

ทุกวันนี้หลายคนมักจะเคยเจอคำถามยอดฮิตประมาณว่า

“ถ้าอยากสร้างเว็บอย่าง Facebook, Twitter หรือ Lazada เนี่ยมันสร้างง่ายแบบนั้นจริง ๆ เหรอ ?”

วันนี้เราจะมาทำความเข้าใจกันว่า หากเราต้องการจะสร้างเว็บข้างต้นนี้ขึ้นมาใหม่เลยเนี่ยมันสามารถสร้างได้มั้ยแล้วถ้าสร้างได้มันสร้างยากมั้ย และต้องใช้งบประมาณเท่าไหร่  โดยตัวอย่างในวันนี้เราจะมาลองวิเคราะห์เว็บอย่างเฟสบุ๊คกันครับ

📊อัพเดทข้อมูลปัจจุบันของเฟสบุ๊คกันหน่อย

ปัจจุบันเฟสบุ๊คเป็นเว็บสื่อสังคมออนไลน์อันดับ 1 ของโลกอย่างไม่ต้องสงสัย จากสถิติล่าสุดที่ Statista รวบรวมไว้จนถึงปัจจุบันพบว่า เฟสบุ๊คมีจำนวนผู้ใช้งานรวมประมาณ 2,400 ล้านบัญชี ซึ่งมีประมาณ 1,000 ล้านบัญชีที่ใช้งานอย่างต่อเนื่องเป็นประจำทุกวัน
ในกรณีนี้เราลองตัดฟีเจอร์มากมายทิ้งไปก่อน เหลือไว้เพียงแค่จำนวนผู้ใช้ที่ประมาณ 2,400 ล้านคน กับ ปริมาณข้อมูลขนาดประมาณ 300 เพตะไบต์ 😲 (และยังเพิ่มขึ้นเรื่อย ๆ แบบเร็วมากกก) เฉลี่ยแล้วทุก ๆ 1 นาทีจะมีโพสใหม่เกิดขึ้นประมาณ 3 แสนโพส นี่ยังไม่รวมรูปภาพ วีดีโอ และอื่น ๆ อีกนะเนี่ย
คำถามก็คือแล้วเราจะจัดการกับระบบแบบนี้ยังไงดี จะต้องใช้เซิร์พเวอร์ขนาดเท่าไหร่เพื่อรองรับจำนวนผู้ใช้งานที่มากมายขนาดนี้ จะเก็บข้อมูลในรูปแบบต่าง ๆ อย่างไร ?

ความยากและความท้าทายของเฟสบุ๊คจึงไม่ใช่ที่ความยากในการพัฒนาฟีเจอร์เพียงอย่างเดียว
แต่มีความยากในการจัดการข้อมูลมหาศาลที่เพิ่มขึ้นอย่างรวดเร็วอีกด้วย

🛠 จำลองการออกแบบระบบเฟสบุ๊ค

หากเราลองวาดภาพระบบออกมาคร่าว ๆ ดู ก็จะพบว่าโดยหลักแล้วฟีเจอร์ที่เราใช้กันบ่อย ๆ ก็จะมีอยู่ประมาณ 6 ฟีเจอร์ ได้แก่
  1. News Feed — สำหรับดูรายการโพสของเพื่อน, กรุ๊ป และเพจที่เราติดตามอยู่
  2. User Profile — สำหรับเก็บข้อมูลส่วนตัว ชื่อ และสถานะต่าง ๆ
  3. Photos Gallery— สำหรับเก็บภาพนิ่งและคลิปวีดีโอ
  4. Post Activity — สำหรับโพสสถานะ รูปภาพ วีดีโอ, เช็คอินและอื่น ๆ
  5. Event — สร้าง, เข้าร่วมและจัดการกิจกรรม
  6. Messenger — ระบบแชทที่เราใช้สนทนากันบนระบบของเฟสบุ๊ค
ซึ่งดูแล้วก็ไม่น่าจะยากอะไรมากถูกมั้ยครับ ? แต่อย่าลืมนะว่า เราตัดระบบเบื้องหลังอื่น ๆ ออกไปเยอะมว๊ากกกเลยล่ะ ไม่ว่าจะเป็น Back office system, data warehouse, data pipeline, data analytics platform, software delivery pipeline, search engine, AI platform และอื่น ๆ อีกมากมายที่กล่าวไม่หมด เพราะระบบเบื้องหลังของเฟสบุ๊คไม่ได้มีแค่เพียงที่เราเห็นแน่นอน

 

📝 หัวใจสำคัญในการออกแบบระบบ

หลังจากที่เราได้ฟีเจอร์หลักที่เราต้องมีแล้ว คำถามต่อมาก็คือแล้วอะไรล่ะคือปัจจัยที่เราต้องคำนึงเมื่อต้องการออกแบบระบบ โดยปกติแล้วจะมีปัจจัยหลักอยู่ 3 หัวข้อก็คือ
  1. Scalability — ระบบจะต้องทำงานได้ตามปกติเมื่อมีปริมาณผู้ใช้และข้อมูลมากขึ้น รวมถึงการเพิ่มจำนวนของทีมนักพัฒนาระบบ และฟีเจอร์ใหม่ ๆ
  2. Reliability — ระบบจะต้องสามารถทำงานได้อย่างถูกต้องตามที่ควรจะเป็น ไม่ล่ม ไม่ค้าง ข้อมูลไม่สูญหาย
  3. Maintainability — ระบบที่ดีจะต้องสามารถดูแลรักษาได้ในระยะยาว เพราะซอฟต์แวร์ที่มีคนใช้ ก็ต้องมีการพัฒนาปรับปรุงต่อไปเรื่อย ๆ
หลังจากได้ฟีเจอร์และคุณสมบัติที่ระบบบต้องจึงค่อยนำปัจจัยอื่น ๆ ที่เกี่ยวข้องเข้ามาร่วมประเมินด้วย เช่น ต้องใช้ทรัพยากรเครื่องเซิร์พเวอร์ปริมาณขนาดไหน ใช้ทีมพัฒนาและดูแลประมาณกี่ทีม ทีมละกี่คนดี ใช้ระบบและเทคโนโลยีอะไรเพื่อเข้ามาช่วยแก้ปัญหาเหล่านี้ จะใช้การบริหารจัดการคนภายในอย่างไร
หากเราออกแบบและพัฒนาระบบให้ครบทั้ง 6 ฟีเจอร์และตอบโจทย์หัวใจสำคัญทั้ง 3 ข้อ เราก็จะพอตอบคำถามที่เราสงสัยกันได้ว่าการสร้างเว็บแบบเฟสบุ๊คก็ตอบได้เลยว่า สามารถสร้างได้แต่ยาก และแพงมากกก(‘ก’ ล้านตัว) เนื่องจากความยากและความแพงไม่ใช่อยู่ที่การสร้างฟีเจอร์เหล่านั้น แต่อยู่ที่การจัดการปริมาณข้อมูลที่เข้ามาต่างหากล่ะ ซึ่งสังเกตได้จากรายจ่ายหลักของเฟสบุ๊คอยู่ที่การพัฒนา, ปรับปรุงและดูแลรักษาระบบ โดยรายงานงบการเงินประจำปี 2018 ได้ระบุว่าเฟสบุ๊คมีรายได้สิ้นปี 2018 รวม $55,000 ล้าน แต่ก็มีรายจ่ายเป็นค่าดำเนินการสูงถึง 45% หรือ $24,000 ล้าน และอาจจะเพิ่มสูงขึ้น เนื่องจากเฟสบุ๊คจะทำการสร้างโครงสร้างพื้นฐานเองแทบทั้งหมดไม่ว่าจะเป็น Data Center และเครื่องเซิร์พเวอร์ที่กระจายอยู่ตามประเทศต่าง ๆ ทั่วโลก เพื่อให้ผู้คนสามารถเข้าใช้งานเฟสบุ๊คได้อย่างรวดเร็ว
และเมื่อเราได้รู้ลองวิเคราะห์ระบบอย่างเฟสบุ๊คแล้ว ก็ไม่น่ายากแล้วใช่ไหมครับกับการประเมินเว็บไซต์อื่น ๆ (เว็บไหนดังใส่ชื่อลงมาให้หมด) ที่เป็นของยอดฮิตที่คนชอบมาประกาศหาคนทำเว็บเลียนแบบพวกเว็บเหล่านี้
สำหรับใครที่อยากรู้ว่าปัจจุบันเฟสบุ๊คพัฒนาหรือวิจัยหัวข้อไหนอยู่ แนะนำให้เข้าไปศึกษาต่อได้เลยที่ Publications – Facebook Research แต่ถ้าใครไม่อยากอ่านบทความงานวิจัย อยากอ่านอะไรที่เป็นการประยุกต์ใช้แล้วก็เข้าไปอ่านที่บล็อคของวิศวกรเฟสบุ๊คที่ Facebook Engineering ได้เลยฮะ

ข้อมูลผู้เขียน
Khemtat Lengpaiboon

Software Engineer – BillMe Co., Ltd.

อย่าลืมม ! ติดตามข่าวสารสาระด้านเทคโนโลยี ธุรกิจ และ ไอเดียใหม่ๆ ได้แล้วที่นี่ Facebook

BorntoDev

Author BorntoDev

BorntoDev Co., Ltd.

More posts by BorntoDev

Leave a Reply

เราใช้คุกกี้เพื่อพัฒนาประสิทธิภาพ และประสบการณ์ที่ดีในการใช้เว็บไซต์ของคุณ คุณสามารถศึกษารายละเอียดได้ที่ นโยบายความเป็นส่วนตัว และสามารถจัดการความเป็นส่วนตัวเองได้ของคุณได้เองโดยคลิกที่ ตั้งค่า

ตั้งค่าความเป็นส่วนตัว

คุณสามารถเลือกการตั้งค่าคุกกี้โดยเปิด/ปิด คุกกี้ในแต่ละประเภทได้ตามความต้องการ ยกเว้น คุกกี้ที่จำเป็น

ยอมรับทั้งหมด
จัดการความเป็นส่วนตัว
  • คุกกี้ที่จำเป็น
    เปิดใช้งานตลอด

    ประเภทของคุกกี้มีความจำเป็นสำหรับการทำงานของเว็บไซต์ เพื่อให้คุณสามารถใช้ได้อย่างเป็นปกติ และเข้าชมเว็บไซต์ คุณไม่สามารถปิดการทำงานของคุกกี้นี้ในระบบเว็บไซต์ของเราได้
    รายละเอียดคุกกี้

  • คุกกี้สำหรับการติดตามทางการตลาด

    ประเภทของคุกกี้ที่มีความจำเป็นในการใช้งานเพื่อการวิเคราะห์ และ นำเสนอโปรโมชัน สินค้า รวมถึงหลักสูตรฟรี และ สิทธิพิเศษต่าง ๆ คุณสามารถเลือกปิดคุกกี้ประเภทนี้ได้โดยไม่ส่งผลต่อการทำงานหลัก เว้นแต่การนำเสนอโปรโมชันที่อาจไม่ตรงกับความต้องการ
    รายละเอียดคุกกี้

บันทึกการตั้งค่า