เว็บไซต์จองตั๋วล่ม บทเรียนของ Developer
เห็นช่วงนี้มีข่าว เว็บไซต์จองตั๋วล่ม อันเนื่องมาจากคนเข้าใช้พร้อมๆกันเป็นจำนวนมาก โดยเฉพาะในกลุ่ม Developer ที่มีการพูดถึงเป็นจำนวนมาก
หลายๆคนพุ่งเป้าไปที่ Hardware ว่าจะเลือกใช้อะไรดี ว่าจะ config ยังไงดี ซึ่งก็เป็นเรื่องที่ปฏิเสธไม่ได้ว่ามันมีส่วนเกี่ยวข้อง แต่การลงทุนด้าน Hardware ก็เป็นอะไรที่โหดร้ายมาก เนื่องจากค่าใช้จ่ายค่อนข้างสูง ยิ่งถ้าต้องเตรียม Hardware เพื่อรองรับการใช้งานจำนวนมหาศาลแล้วละก็จะมีค่าใช้จ่ายค่อนข้างมากเลยทีเดียว (มีเงินลงทุนก็ดีไปนะครับ)
ในฐานะ Developer สิ่งที่เราต้องพิจารณาตามหน้าที่ของเรา "ไม่ใช่ Hardware" แต่เราต้องไปโฟกัสที่โค้ดต่างหาก การเขียนโค้ดที่ดี นอกจากมันจะต้องทำงานได้ตามวัตถุประสงค์แล้ว มันยังจะต้อง "มีประสิทธิภาพ" ด้วย ซึ่งจากการได้คุยกับหลายๆคนมักบอกว่า
การทดสอบเว็บข้างต้นเป็นการทดสอบภาพรวมของเว็บไซต์ ว่ามันสามารถรองรับผู้ใช้งานพร้อมๆกันจำนวนมากได้สักเท่าไร ซึ่งหากต้องการแก้ไขก็ต้องไปพึ่งพาวิธีการเขียนโค้ดที่มีประสิทธิภาพ
สุดท้าย การทดสอบเว็บก่อนใช้งานจริง มีความสำคัญอย่างยิ่งนะครับ มันแสดงถึงความรับผิดชอบ และ ความรอบคอบของเราด้วย เพราะผลเสียของการไม่ทดสอบ หากมันเกิดขึ้น อาจมีผลร้ายแรงเกินกว่าจะรับไหวเลยทีเดียว และที่สุดแล้วหากเรา (Developer) ทำการ Optimize โค้ดอย่างเต็มที่แล้ว และมันยังล่มอีก คงถึงเวลาที่จะต้องอัปเกรด Hardware แล้วละครับ
หลายๆคนพุ่งเป้าไปที่ Hardware ว่าจะเลือกใช้อะไรดี ว่าจะ config ยังไงดี ซึ่งก็เป็นเรื่องที่ปฏิเสธไม่ได้ว่ามันมีส่วนเกี่ยวข้อง แต่การลงทุนด้าน Hardware ก็เป็นอะไรที่โหดร้ายมาก เนื่องจากค่าใช้จ่ายค่อนข้างสูง ยิ่งถ้าต้องเตรียม Hardware เพื่อรองรับการใช้งานจำนวนมหาศาลแล้วละก็จะมีค่าใช้จ่ายค่อนข้างมากเลยทีเดียว (มีเงินลงทุนก็ดีไปนะครับ)
ในฐานะ Developer สิ่งที่เราต้องพิจารณาตามหน้าที่ของเรา "ไม่ใช่ Hardware" แต่เราต้องไปโฟกัสที่โค้ดต่างหาก การเขียนโค้ดที่ดี นอกจากมันจะต้องทำงานได้ตามวัตถุประสงค์แล้ว มันยังจะต้อง "มีประสิทธิภาพ" ด้วย ซึ่งจากการได้คุยกับหลายๆคนมักบอกว่า
- ต้องปิดงานไว (อันนี้เป็นบิสซิเน็สลอจิค) จริงๆ มันก็ใช่นะครับ Developer ก็ต้องกินต้องใช้ จบงานไวก็ดี
- รับ User ไม่ไหวก็ไปอัปเกรด Hardware เอา เพิ่ม Ram เพิ่ม CPU อัปเกรด Hardware อะไรก็ได้ให้เจ้าของเว็บไปอัปเกรดเอา (ส่วนใหญ่คิดแบบนี้ โดยโทษไปที่เรื่องของ Hardware)
- ไม่รู้วิธี ไม่ได้วางแผน ไม่ได้คำนึงถึง หรือไม่ก็ "มันไม่เกิดขึ้นหรอก"
การทดสอบเว็บข้างต้นเป็นการทดสอบภาพรวมของเว็บไซต์ ว่ามันสามารถรองรับผู้ใช้งานพร้อมๆกันจำนวนมากได้สักเท่าไร ซึ่งหากต้องการแก้ไขก็ต้องไปพึ่งพาวิธีการเขียนโค้ดที่มีประสิทธิภาพ
- benchmark โค้ดระดับฟังก์ชั่น ฟังก์ชั่นแต่ละตัวถึงจะให้ผลลัพท์เหมือนกัน แต่มันก็มีประสิธิภาพต่างกันนะ ลองทดสอบมันดู และเลือกใช้ให้ถูก เช่น เปรียบเทียบการค้นหาข้อความด้วย PHP แบบไม่สนใจขนาดตัวอักษร
- เขียนโค้ดให้ถูกวิธี ผลลัพท์ที่ต้องการ 1 อย่าง มีหลายวิธีในการเขียน แต่จะมีวิธีเดียวที่มีประสิทธิภาพสูงที่สุด
- เลือก software หรือ Framework ที่เหมาะสม ดูตัวอย่าง PHP Framework Benchmark
- เลือกใช้เทคโนโลยีที่เหมาะสม เช่น ใช้ PHP7 แทน ใช้แคชช่วย และอีกสารพัดเครื่องมือให้นำมาใช้ (โดยไม่ต้องอัปเกรด Server)
สุดท้าย การทดสอบเว็บก่อนใช้งานจริง มีความสำคัญอย่างยิ่งนะครับ มันแสดงถึงความรับผิดชอบ และ ความรอบคอบของเราด้วย เพราะผลเสียของการไม่ทดสอบ หากมันเกิดขึ้น อาจมีผลร้ายแรงเกินกว่าจะรับไหวเลยทีเดียว และที่สุดแล้วหากเรา (Developer) ทำการ Optimize โค้ดอย่างเต็มที่แล้ว และมันยังล่มอีก คงถึงเวลาที่จะต้องอัปเกรด Hardware แล้วละครับ