• เพลย์กราวด์สำหรับทดสอบที่สามารถแก้ไขการตั้งค่า nginx ได้ตามต้องการ

→ ป้อน config และคำสั่ง curl/http แล้วกด Run เพื่อรัน

→ แสดงผลลัพธ์ของคำสั่งที่รันและ nginx error log

  • ฟรอนต์เอนด์ Vue.js + แบ็กเอนด์ Go (เปิดเผยเฉพาะโค้ดฝั่งเซิร์ฟเวอร์ผ่าน Gist)

  • เมื่อกดปุ่มรัน แบ็กเอนด์ Go จะทำสิ่งต่อไปนี้

→ บันทึกไฟล์ config เป็นไฟล์ temp

→ สร้าง network namespace ใหม่

ip netns add $RANDOM_NAMESPACE_NAME

→ รัน go-httpbin บนพอร์ต 777

→ เริ่ม nginx

→ รอ 100ms จนกว่า nginx จะเริ่มทำงานได้อย่างถูกต้อง ถ้าล้มเหลวจะส่งคืน nginx error log

→ รันคำสั่งที่ผู้ใช้ป้อน (ตรวจสอบว่าเป็น curl / http หรือไม่)

→ ส่งคืนเอาต์พุตของคำขอ

  • จัดการทุกคำขอด้วยเซิร์ฟเวอร์ที่ใช้ร่วมกันเพียงเครื่องเดียว

  • แนวทางด้านความปลอดภัย: แยกส่วนเล็กน้อย และ YOLO เล็กน้อย

→ ฟรอนต์เอนด์โฮสต์อยู่บน CDN

→ ไม่ใช้ DB ใช้เฉพาะ local storage ของเบราว์เซอร์

→ ให้ nginx แต่ละตัวอยู่ใน network namespace ของตัวเอง และปิดกั้นไม่ให้ออกอินเทอร์เน็ต

→ ใช้ free tier ของ fly.io

→ ใส่ไว้ใน FAQ ให้ทุกคนทำตัวดี ๆ ต่อกัน

  • ประสิทธิภาพ

→ อินสแตนซ์ขนาดเล็กมาก (1 shared CPU, RAM 256MB)

→ ฟรอนต์เอนด์อยู่บน CDN ดังนั้นแบ็กเอนด์จะทำงานเฉพาะตอนใช้งานจริงเท่านั้น

→ หนึ่งคำขอใช้เวลาประมาณ 400ms ก็ถือว่าไม่เลว

→ httpbin เวอร์ชัน Go เบากว่าเวอร์ชัน Python ต้นฉบับ

→ ประสิทธิภาพฝั่งฟรอนต์เอนด์ไม่ค่อยดีนัก

ยังไม่มีความคิดเห็น

ยังไม่มีความคิดเห็น