Blognone Quest for High Scalabilty Computing: เสวนาคนไทยทำเว็บขนาดใหญ่กันอย่างไร

เมื่อช่วงต้นเดือนที่ผ่านมา Blognone มีงานเสวนาที่ไม่ได้ประกาศภายนอก โดยเชิญผู้ร่วมงานเป็นกลุ่มตัวแทนของผู้ดูแลเว็บขนาดใหญ่จำนวนหนึ่ง เช่น Sanook.com, Kapook, MThai, ไทยรัฐ, Thaitrend, Tarad.com, และ Pantip.com ทั้งหมดได้ร่วมพูดคุยกันถึงประสบการณ์ปัญหาต่างๆ ที่เคยเจอมาว่าในการทำเว็บที่ใหญ่ขึ้นเรื่อยๆ เคยเจอปัญหากันอย่างไร และมีประสบการณ์การแก้ไขกันอย่างไรมาแล้วบ้าง
คนแรกคือคุณเชิดศักดิ์ โชครวมชัย รองประธานอาวุโสฝ่ายปฏิบัติการเครือข่ายจากเว็บสนุก ได้เล่าถึงกระบวนการการปรับตัวของเว็บในแต่ละระดับเป็น 7 ระดับ นับแต่การทำเว็บแบบเน้นฟีเจอร์อย่างเดียว ไล่ไปจนถึงระดับที่อาจจะไม่มีใครที่เรารู้จักเคยเจอโหลดในระดับเดียวกันมา ก่อน ประสบการณ์เหล่านี้จะแสดงให้เห็นว่าเมื่อเราสามารถผ่านระดับที่ความยุ่งยาก ต่างๆ ไปได้ เราจบพบในช่วงที่ระบบสามารถขยายออกไปได้อย่างมีประสิทธิภาพ แต่ในสุดท้ายแล้วหากเว็บยังคงเติบโตด้วยความเร็วสูง เราจะพบปัญหาที่ต้องสร้างความรู้ด้วยตัวเอง ปัญหาใหม่ๆ เช่น พลังงาน, ผู้ใช้จากหลายประเทศทำให้ต้องใช้งาน CDN, ไปจนถึงกระบวนการจัดการกระบวนการทำงานและการจัดการคน

[URL=“http://www.youtube.com/watch?v=tRA6EKDu_kc”]<a href=“http://www.youtube.com/watch?v=tRA6EKDu_kc” target="_blank" rel=“nofollow”>
//youtu.be/tRA6EKDu_kc

คุณโดม เจริญยศ เล่าถึงกระบวนการดูแลเว็บ Kapook และ TVPool โดยเล่าถึงประสบการณ์การเลือกเทคโนโลยี เช่น การเลือกของ Rackspace โดยปัจจัยสำคัญของการเลือกเทคโนโลยี คือ “เอาอยู่” เขาเล่าถึงการใช้ PHP ที่ใช้งานได้ดีแม้อาจจะต้องใช้หน่วยความจำสูงสักหน่อย และการเลือกการทำเครื่องเสมือนด้วย OpenVZ แต่ยังหาแนวทางใหม่ๆ เช่น Lua บน Nginx และกำลังหันไปใช้ docker มาแทนเครื่องเสมือนแล้วรันผ่านพอร์ตอย่างเดียว
ทางฝั่ง MThai เข้ามาเล่าถึงการพัฒนาแอพพลิเคชั่นที่โหลดหนักที่สุดนั่น คือ “lotto” (ตรวจหวยออนไลน์) ทาง MThai ใช้ Wordpress และเคยใช้ TotalCache มาก่อน แต่สุดท้ายต้องพัฒนาปลั๊กอินของตัวเองเพื่อให้ความต้องการ สร้างไฟล์ static ขึ้นมา และเมื่อมีการอัพเดตก็ปรับไฟล์ static ใหม่อีกครั้ง เป็นแนวทางที่ MThai เลือกต่างออกไปจากผู้ให้บริการรายอื่นๆ ที่พัฒนาแอพพลิเคชั่นเองทั้งหมด

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

[URL=“http://www.youtube.com/watch?v=Xxa-95qKX6o”]<a href=“http://www.youtube.com/watch?v=Xxa-95qKX6o” target="_blank" rel=“nofollow”>
//youtu.be/Xxa-95qKX6o

บริการถัดไปเป็นบริการที่เราอาจจะไม่ได้ใช้ “เว็บ” โดยตรง เพราะเป็นระบบ Thaitrend โดยคุณคเชนท์ หวังธรรมมั่ง ที่เก็บทวีตของคนไทยจำนวนมากในแต่ละวันตั้งแต่ปี 2010 เป็นต้นมา โหลดของ Thaitrend นั้นต่างจากโหลดของเว็บอื่นๆ เพราะเป็นโหลด “เขียน” ช่วงที่โหลดหนักที่สุดคือ 20000 ทวีตต่อนาที รวมสี่ล้านทวีตต่อวันโดยประมาณ ข้่อมูลรวมประมาณ 1 GB ต่อวัน จากผู้ใช้รวมประมาณสองล้านคน ทำให้ต้องปรับกระบวนการประมวลผลเป็นรูปแบบ asynchronous โดยต้องเก็บข้อมูลหลายชั้น เช่น การเก็บข้อมูลเข้าสู่ Redis ก่อนที่จะเขียนลง MySQL โดยตอนนี้กำลังทำระบบวิเคราะห์ทวีตหกเดือนย้อนหลังผ่านระบบ Elasticsearch ที่ต้องการประมวลผล โดย Elasticsearch มีข้อดีสำคัญคือระบบการสเกลเช่น sharding หรือ cluster ล้วนทำโดยอัตโนมัติทั้งสิ้น

คุณคเชนท์ยังเล่าถึงประสบการณ์การดูแลเว็บ Tarad.com ที่เคยเจอ spike ถึง 30 เท่าของโหลดปกติ ระบบ shopping cart และระบบจัดการสมาชิกล่ม กระบวนการแบบนี้ยังคงเกิดขึ้นเรื่อยๆ เมื่อมีรายการโปรโมชั่นใหม่ๆ และการออกโทรทัศน์ทำให้เว็บโหลดหนัก การใช้แคชในการกระบวนการเหล่านี้ไม่สามารถทำได้เพราะเป็นระบบที่คิดเงิน ทำให้วางแผนกันปรับไปใช้ระบบไฟล์ GlusterFS เพื่อเก็บฐานข้อมูล MariaDB กันต่อไป
คุณสมศักดิ์ ศรีประยูรสกุล จากบริษัท INOX ที่ช่วย Pantip.com ดูแลระบบ โดยประสบการณ์ของเขาคือปัญหาการสเกลนั้นมักจะเป็นปัญหาที่ผสมกัน เช่น Pantip เคยเจอปัญหาแบนด์วิดท์เต็มก่อนจึงไปพบปัญหา มาจนถึงปัญหาการกระจายโหลดที่ไม่สมดุลระหว่างกัน ทำให้การกระจายโหลดไม่ทั่วถึง

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

ในงานยังมีการนำเสนอจากคุณ javaboom พูดถึงการพัฒนาประมาณการความต้องการของโครงสร้างพื้นฐานว่าเราจะประมาณการ กันอย่างไร และคุณกิตติพงษ์ พูดถึงระบบการยุบรวมชั้นต่างๆ ของบริการเว็บเข้าเป็นแพลตฟอร์มที่บางลง และปรับกระบวนการพัฒนาไปเป็นภาษาเนทีฟ โดยใช้ภาษา vala และภาษา C เพื่อให้ระบบรวมเร่งความเร็วขึ้นไปได้นับสิบเท่าจากระบบปกติที่เราใช้กัน ทั่วไป
Blognone Quest มีความตั้งใจที่จะเป็นชุดของงานที่หยิบยกประเด็นต่างๆ ในโลกไอที เพื่อหาผู้ที่มีประสบการณ์ร่วมกันเข้ามาแลกเปลี่ยนกัน งาน High Scalability เป็นงานครั้งแรกที่เราจัดขึ้น ในอนาคตเราจะหาหัวข้อและผู้ร่วมแลกเปลี่ยนที่กันในอนาคตต่อไป
วิดีโอทั้งงานสามารถเข้าดูได้ที่ YouTube: Blognone Quest - High Scalability

ขอบคุณที่แชร์ครับ

ผมมีความเข้าใจว่าปัญหาที่เราพบเห็นส่วนใหญ่ คือการที่ขาดคนที่จะดูภาพรวมทั้งหมด เพราะการ scale ใหญ่จริงๆ ต้องอาศัยความเข้าใจหลายด้านประกอบกัน ไม่ว่าจะ hardware, architecture, web server expert, database expert ซึ่งผู้เชี่ยวชาญบางคนอาจเข้าใจมากกว่า 1 เรื่อง แต่คงไม่มีใครที่เชี่ยวชาญทุกเรื่อง ทุกส่วนต้องมาระดมกำลังกันในการทำ scaling ครับ

ไม่มีอะไรที่เป็นคำตอบเพียงชิ้นเดียวสำหรับการ scale

อัดจำนวน server ไม่ใช่คำตอบสุดท้าย, cloud ไม่ใช่คำตอบสุดท้าย, mongodb ไม่ใช่คำตอบสุดท้าย, ssd ไม่ใช่คำตอบสุดท้าย, nginx ไม่ใช่คำตอบสุดท้าย, memcached ก็ไม่ใช่คำตอบสุดท้าย…

แต่ต้องเอาทุกตัวมารวมกัน เลือกใช้งานในจุดที่เหมาะสมและได้ผลลัพธ์มากที่สุด บลาๆๆๆ

แชร์ความเห็นด้วยความเคารพครับ

ฝรั่งเค้าชอบบอกว่า from my $0.02 (from my two cents…) แปลคร่าวๆ ว่าจากความรู้อันน้อยนิดไม่เต็มบาทของกระผม…

ฟังแล้วน่าสนุกจัง ไปสมัครที่ใหนจะรับบ้างนะ :014:

ที่แน่ๆุมีคุณ icez เราร่วมด้วย

พี่ไอซ์แน่นอนจริงๆ ^^

ไม่มีสิครับถึงแปลก :70bff581: :70bff581:

เทพจริงๆ นับถือทุกท่าน แต่บางทีก็ งง ต้องไปนั่งหาเพิ่มเติม ถือว่าเป็นความรู้มากๆๆ ^^

+10000 เลย ระบบใหญ่ๆ ขนาดนี้ ต้องมี Architect ดูแลในองค์รวมครับ No solution that can fit all

ผมถึงชอบทำ custom solution มากกว่า standard package ครับ ขึ้นได้ช้าหน่อย แต่ชัวร์ว่า fit requirement แน่ๆ ครับ :smiley:

ดูของพันทิปอันเดียวน่าจะจบครับ (ㆆᴗㆆ) keep it simple keep it clean จะช่วยให้สเกลได้ง่ายขึ้นเยอะ

อันนี้เห็นด้วยครับ
ระบบไม่รู้จะทำให้ซับซ้อนทำไม
ทั้งๆ ที่ถ้าทำแบบง่ายๆ ก็ได้

ตัวอย่างเช่น ajax มันดีก็จริง แต่ web ของเราต้องการความสามารถระดับนั้นไหม

อย่างผม ตอนนี้วางแผนจะทำ web ใหม่ (เป็นการวม web 5 web เข้าด้วยกัน)
ตอนนี้กำลังสำรวจความต้องอการอยู่
มีคนบอกว่าอยากให้ web ใหม่เป็น web 2.0 บ้างหละ web 3.0 บ้างหละ
แล้วก็ยกทฤษฎี web 2.0 กับ 3.0 คืออะไร มีประโยชน์อย่างไร พร้อมยกตัวอย่างมา
พอผมถามกลับว่าจะเอา 2.0 กับ 3.0 มาทำอะไร ก็ตอบไม่ได้ บอกแค่ว่า อยากให้ web ใหม่ มันทันสมัย

ปัญหามีไว้แก้
ระบบทุกระบบล้วนแต่มีปัญหา
เวลาแก้ก็ควรแก้ทีละอย่าง ไม่ใช้แก้พร้อมกันหลายๆ อย่าง

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

คนเทพๆแบบท่านไอส์จะมีสักกี่คน ถ้าสเกลไม่ใหญ่จริงไปใช้ เทคนิคที่ไม่ค่อยมีคนรู้ก็จะไป
โดนค่าบริการ ค่าเทรน หรือ ค่าเสียโอกาสอื่นๆที่จะตามมาอีก เวลาแก้ไขก็ต้องรอเทพ มาแก้
หรือก็ต้อง รอฮาร์ดแวร์ที่เป็นแรร์ไอเท็ม

ขอบคุณสำหรับ ความรู้ดีๆครับ :875328cc:

ดูจบแล้วได้ความรู้เพิ่มขึ้นเยอะเลย ไม่เสียเงินด้วย ขอบคุณครับ

หลายเว็บที่ผมทำยังใช้ html +gif +jpg ล้วนๆ แทบไม่ต่างกับยุคสิบกว่าปีที่แล้ว พยายามให้แบคอัพง่ายเข้าไว้ มีอะไรก็หอบไฟล์ไปใส่ที่ใหม่ได้ด่วนๆไม่ต้องสนเทคโนโลยีมาก
อะไรที่ต้องไดนามิก ก็ไปจับๆเอามาจากเฟซบุคได้เช่นระบบฟอร์มหรือคอมเม้นต์ต่างๆ คริปส์ที่ต้องรันที่เซิฟเวอร์มีให้น้อยที่สุด ดาต้าเบสถ้าไม่ใหญ่ใช้เท็กไฟล์เลยครับ ใช้ perl เขียน cgi ดึงเอา…
คนไม่ขยันเรียนของใหม่อย่างผมก็ทั้งลำบากและสบายไปคนละแบบ… ถ้าทำเว็บด้วยเทคโนโลยีเก่าๆแนวนี้ ต่อไปถูกบังคับให้สเกลที่อ้วนขึ้น ค่าใช้จ่ายก็จะถูกกว่าเว็บใหม่ๆมาก

ผมแอบขำหลายๆเรื่อง ชีวิตจริงเคล้าน้ำตาชัดๆ พวก

“แค่มันแต่งงานกันจะอะไรหนักหนา”
“ออกทีวีทีเซิฟเวอร์แทบล่ม ไม่รู้แห่กันมาจากไหน”

ปล. การ Design ระบบตอนก่อน Scale เป็นเรื่องสำคัญมากครับ จะมาเปลี่ยนหลังเริ่มทำไปแล้ว นั่นหมายถึงความวุ่นวาย (Downtime ไม่นับ เพราะมันอาจจะมีหรือไม่มีก็ได้แล้วแต่งบประมาณ)
แล้วก็ ถ้าระบบเริ่มยุ่งยากซับซ้อนมีเป็น 10 Tier ใช้ซอฟท์แวร์เป็นกระตั้กๆ db ใช้แปดตัว fs ใช้สามตัวอะไรงี้ แสดงว่าคุณอาจจะไปผิดทางครับ
พยายามทำให้มันง่ายเข้าไว้และ Persistent ที่สุด ไม่ใช่ล่มเครื่องเดียว เทกระจาดทั้งฟาร์ม หรือเวปเน่าไปเป็นพาร์ทๆ -_- (มีจริงๆนะครับ ทำเป็นเล่นไป)

ชอบครับ

ชอบคลิปแรกพี่เขาพูดมันส์ดี เสียงเขาเหมือนเสียคนพากษ์แข่งเรือ (ชมนะครับพี่) ฟังมันส์จรืงๆอะผมชอบ !! :d5f02ecd: