Kotchasan PHP Framework

เว็บไซต์จองตั๋วล่ม บทเรียนของ Developer

เห็นช่วงนี้มีข่าว เว็บไซต์จองตั๋วล่ม อันเนื่องมาจากคนเข้าใช้พร้อมๆกันเป็นจำนวนมาก โดยเฉพาะในกลุ่ม Developer ที่มีการพูดถึงเป็นจำนวนมาก

หลายๆคนพุ่งเป้าไปที่ Hardware ว่าจะเลือกใช้อะไรดี ว่าจะ config ยังไงดี ซึ่งก็เป็นเรื่องที่ปฏิเสธไม่ได้ว่ามันมีส่วนเกี่ยวข้อง แต่การลงทุนด้าน Hardware ก็เป็นอะไรที่โหดร้ายมาก เนื่องจากค่าใช้จ่ายค่อนข้างสูง ยิ่งถ้าต้องเตรียม Hardware เพื่อรองรับการใช้งานจำนวนมหาศาลแล้วละก็จะมีค่าใช้จ่ายค่อนข้างมากเลยทีเดียว (มีเงินลงทุนก็ดีไปนะครับ)

ในฐานะ Developer สิ่งที่เราต้องพิจารณาตามหน้าที่ของเรา "ไม่ใช่ Hardware" แต่เราต้องไปโฟกัสที่โค้ดต่างหาก การเขียนโค้ดที่ดี นอกจากมันจะต้องทำงานได้ตามวัตถุประสงค์แล้ว มันยังจะต้อง "มีประสิทธิภาพ" ด้วย ซึ่งจากการได้คุยกับหลายๆคนมักบอกว่า
  • ต้องปิดงานไว (อันนี้เป็นบิสซิเน็สลอจิค) จริงๆ มันก็ใช่นะครับ Developer ก็ต้องกินต้องใช้ จบงานไวก็ดี
  • รับ  User ไม่ไหวก็ไปอัปเกรด Hardware เอา เพิ่ม Ram เพิ่ม CPU อัปเกรด Hardware อะไรก็ได้ให้เจ้าของเว็บไปอัปเกรดเอา (ส่วนใหญ่คิดแบบนี้ โดยโทษไปที่เรื่องของ Hardware)
  • ไม่รู้วิธี ไม่ได้วางแผน ไม่ได้คำนึงถึง หรือไม่ก็ "มันไม่เกิดขึ้นหรอก"
ปัญหาข้างต้นคงจะไม่เกิดขึ้นหรือลดน้อยลง ถ้าเรามีการทดสอบโค้ดของเราแล้วในเบื้องต้น ด้วยการทำ "benchmark"  ซึ่งการทำก็ไม่ได้ยากหรือซับซ้อนแต่อย่างใด สามารถทำด้วยตัวเองได้ง่ายๆ ตามลิงค์นี้ ทดสอบความเร็วของเว็บไซต์ด้วย apachebench กันเถอะ

การทดสอบเว็บข้างต้นเป็นการทดสอบภาพรวมของเว็บไซต์ ว่ามันสามารถรองรับผู้ใช้งานพร้อมๆกันจำนวนมากได้สักเท่าไร ซึ่งหากต้องการแก้ไขก็ต้องไปพึ่งพาวิธีการเขียนโค้ดที่มีประสิทธิภาพ
  • benchmark โค้ดระดับฟังก์ชั่น ฟังก์ชั่นแต่ละตัวถึงจะให้ผลลัพท์เหมือนกัน แต่มันก็มีประสิธิภาพต่างกันนะ ลองทดสอบมันดู และเลือกใช้ให้ถูก เช่น
  • เขียนโค้ดให้ถูกวิธี ผลลัพท์ที่ต้องการ 1 อย่าง มีหลายวิธีในการเขียน แต่จะมีวิธีเดียวที่มีประสิทธิภาพสูงที่สุด
  • เลือก software หรือ Framework ที่เหมาะสม ดูตัวอย่าง PHP Framework Benchmark
  • เลือกใช้เทคโนโลยีที่เหมาะสม เช่น ใช้ PHP7 แทน ใช้แคชช่วย และอีกสารพัดเครื่องมือให้นำมาใช้ (โดยไม่ต้องอัปเกรด Server)
สิ่งต่างๆ เหล่านี้เป็นสิ่งที่ Developer ต้องพิจารณาในการเขียนโค้ด จริงอยู่ว่ามันอาจเสียเวลา แต่ความรู้เหล่านี้มันสามารถนำไปใช้ได้ตลอด โดยยอมเสียเวลาครั้งแรกสักครั้ง ครั้งต่อๆไปเราคงรู้และนำไปใช้ได้แล้ว ซึ่งสุดท้ายเราจะสามารถเขียนโค้ดได้อย่างมีประสิทธิภาพ และสามารถจบงานได้เร็วด้วย

สุดท้าย การทดสอบเว็บก่อนใช้งานจริง มีความสำคัญอย่างยิ่งนะครับ มันแสดงถึงความรับผิดชอบ และ ความรอบคอบของเราด้วย เพราะผลเสียของการไม่ทดสอบ หากมันเกิดขึ้น อาจมีผลร้ายแรงเกินกว่าจะรับไหวเลยทีเดียว และที่สุดแล้วหากเรา (Developer) ทำการ Optimize โค้ดอย่างเต็มที่แล้ว และมันยังล่มอีก คงถึงเวลาที่จะต้องอัปเกรด Hardware แล้วละครับ