การปรับแต่งประสิทธิภาพและทรัพยากร
การ Deploy แอปพลิเคชันบน AWS
Dunieski Otano
Amazon Web Services Solutions Architect
ช้าและแพง
แอปช้าลงเมื่อมีทราฟฟิกพุ่งสูง
ค่าใช้จ่าย Lambda พุ่งขึ้นในเดือนเดียวกัน
การปรับแต่งช่วยให้เร็วขึ้นและประหยัดขึ้น
Concurrency: ต้นทุน vs. cold start
Reserved: จำกัดและปกป้อง
จำกัดและรับประกัน capacity ของฟังก์ชัน
ควบคุมต้นทุนได้ถูกที่สุด แต่ไม่ช่วยเรื่อง cold start
Provisioned: จ่ายเพื่อความพร้อม
รักษา instance ให้พร้อมใช้เสมอ ไม่มี cold start
ต้นทุนสูงขึ้น ใช้เฉพาะจุดที่ latency สำคัญจริงๆ
ปรับขนาดหน่วยความจำด้วย duration-cost curve
หน่วยความจำมากขึ้น = CPU มากขึ้น =
duration สั้นลง
ต้นทุน = ราคาหน่วยความจำ x duration
จุดที่ถูกที่สุดมักอยู่ที่
ตรงกลาง
ทดสอบหลายขนาด แล้วเลือกจุดที่เหมาะ
การแคชระดับแอปพลิเคชัน
นำผลลัพธ์กลับมาใช้ซ้ำ
ภายใน execution context
Lambda ที่ warm จะเก็บ global ไว้ระหว่างการเรียกใช้
แคช config, client และข้อมูลที่เข้าถึงบ่อย
ElastiCache
สำหรับแคชที่ใช้ร่วมกันระหว่าง instance
การแคชที่ edge ด้วย CloudFront
CloudFront
: แคช response ที่ edge location
ให้บริการ request ซ้ำโดยไม่ต้องผ่าน backend
cache key รวม
header, query string และ cookie
ได้
คอนเทนต์แบบ static และแคชได้ขยายตัวโดยไม่มีค่าใช้จ่ายเพิ่ม
เลือกชั้นแคชให้เหมาะสม
Edge (CloudFront)
: คอนเทนต์ static ที่ใช้ร่วมกันวงกว้าง
Application (in-memory)
: ออบเจ็กต์ร้อนต่อ instance
Data (ElastiCache/DAX)
: การอ่านข้อมูลร้อนที่แชร์กัน
ใช้แบบซ้อนชั้น แต่ละชั้นลดต้นทุนคนละส่วน
รวมแนวทางการปรับแต่ง
ปรับขนาดหน่วยความจำจาก
duration-cost curve
เพิ่ม provisioned concurrency เฉพาะจุดที่ latency สำคัญ
แคชที่ชั้น
edge, app และ data
วัดผล เปลี่ยนทีละอย่าง แล้ววัดซ้ำ
มาฝึกกันเถอะ!
การ Deploy แอปพลิเคชันบน AWS
Preparing Video For Download...