in Uncategorized

สรุปสิ่งที่ผมได้รับรู้จาก Session ~จูนนิ่งยังไง ไม่ให้เว็บล่มง่ายๆ~

     ผมได้มีโอกาสได้รับชม session จูนนิ่งยังไง ไม่ให้เว็บล่มง่ายๆ โดย Narate Ketram อำนวยการจัดงานโดย SysAdminDay2021 ซึ่งผมเล็งเห็นจุดที่น่าสนใจหลายจุด จึงขอสรุปตามที่ตัวเองรับรู้มาได้ประมาณนี้ครับ

อะไรที่ล่มได้ มันก็จะล่ม
การออกแบบระบบเผื่อเหตุการณ์ระบบล่ม เป็นสิ่งที่ต้องคำนึงถึง

Naret Ketram

      จูนนิ่งยังไง? ไม่ให้เว็บล่มง่ายๆ!

      ขอแบ่งเป็น 4 ส่วน
      Design เน้น High Availability มีจุดที่เป็น Single Point of Failure น้อยที่สุด เช่น

            ชั้นแรก Gateway ที่ Request จากภายนอกเข้ามาเจอ ควรเป็น Reverse Proxy/Load Balancer ซึ่งในจุดนี้ก็มีความเสี่ยงในการล่มอยู่เช่นกัน จึงควรเปิด Feature เฉพาะของผู้ให้บริการ Infrastructure จำพวก Global Traffic Manager, Global Load Balance
            ชั้นที่สอง Web Application ควรมีการทำ Shared Storage ที่แต่ละ Node ของ Web Application ใช้งานได้ร่วมกัน เช่น Persistance Volume หรือ Object Storage ที่แต่ละ Node ทำการ Mount แล้วเห็น Data ที่เหมือนๆกัน และทำ Shared Session ที่แต่ละ Node ใช้งานด้วยกัน บน Memory-Caching System (เช่น Memcache) จัดเป็น Cluster ใน In Memory Database (เช่น KT Server)
            ชั้นที่สาม (Relational) Database ที่ใช้ควรต้องทำ Cluster ได้ (และ latency ของการ Sync ข้อมูลระหว่าง Database แต่ละ node ไม่ควรเกิน 1 วินาที) แต่ถ้าทำ Cluster ไม่ได้จริงๆ ควรมี Database Proxy/Load Balancer เช่นกัน

      Implementation เน้นเครื่องมือที่เหมาะสม เช่น Deploy แบบ Container, ใช้ Technology Stack ที่ง่ายต่อการ Scale เช่น Linux-based OS, Web Application Server, Database (ทั้งแบบ Relational และ Non-Relational) จนไปถึง Gateway ตามที่กล่าวไปในส่วนแรก

      Tuning ทำในเชิง Bottom-Up เลย เริ่มจาก OS Kernel, Database, Web Application, Gateway

      Load Testing เพื่อพิสูจน์การ Tuning ว่าสามารถตอบโจทย์ทั้งในด้านความเร็วในการตอบสนอง และ จำนวน Concurrent ที่ระบบรับได้ โดยเมื่อทำการ Test ในส่วนนี้ ต้องได้รับการยินยอมจากเจ้าของระบบ (เพื่อทำ Production Benchmark) ก่อน เพื่อป้องกันประเด็นละเอียดอ่อนทางกฎหมาย

เครื่องไม้ เครื่องมือที่น่าสนใจ

Write a Comment

Comment