Tags:
Node Thumbnail

สำหรับนักพัฒนาที่รันโค้ดแบบ serverless บน AWS Lambda ก็ต้องเจอปัญหา cold start กันมาทุกคน นั่นคือเมื่อตัวฟังก์ชันไม่ได้ถูกเรียกใช้มาระยะเวลาหนึ่งทำให้ AWS ปิดฟังก์ชันไป และในการเรียกใช้งานครั้งต่อไปหากไม่อยู่ในแคชก็จะต้องรันใหม่ตั้งแต่ต้น กินเวลานานหลายวินาที ส่งผลต่อประสิทธิภาพของแอพโดยรวมได้

แม้ที่ผ่านมา AWS จะพยายามลดเวลา cold start มาตลอด แต่ก็ยังกินเวลาหลายวินาที ล่าสุดได้เปิดตัว Lambda SnapStart ที่โฆษณาว่าช่วยลดระยะเวลา cold start ลงได้มากถึง 90% หรือแทบจะไม่มีการรอ cold start เลยทีเดียว

หลักการทำงานคือเมื่อฟังก์ชันถูกเรียกใช้งานครั้งแรกตามปกติ ระบบจะเก็บ snapshot ของฟังก์ชันด้วย Firecracker หลังจากนั้นเมื่อฟังก์ชันตายไปแล้วและถูกเรียกขึ้นมาใหม่ก็จะดึง snapshot มารันได้เลย ไม่ต้อง cold start ใหม่หมดตั้งแต่เริ่ม โดยจะเก็บ snapshot ไว้ให้ 14 วัน

alt="GEWB7u.jpg"

alt="GEWfgZ.jpg"

ทั้งนี้ Lambda SnapStart ยังมีให้ใช้เฉพาะบน Lambda ที่รัน Java ด้วย Amazon Corretto 11 JDK เท่านั้น สามารถเปิดใช้งานได้เลยทั้งฟังก์ชันที่มีอยู่แล้วและฟังก์ชันที่จะสร้างใหม่โดยไม่มีค่าใช้จ่ายเพิ่มเติม

อ่านรายละเอียดเพิ่มเติม อย่างการเดโมบนโค้ด Java ได้จากที่มา (โชว์ลดการ start ฟังก์ชันจาก 6.3 วินาที เหลือเพียง 181.9 มิลลิวินาที)

ที่มา - AWS re:Invent 2022
ภาพทั้งหมดโดย Blognone

Get latest news from Blognone

Comments

By: may2190 on 9 December 2022 - 10:07 #1271658

ที่ optimize ได้เพราะมันช้าอยู่แล้วสินะ java
ส่วนพวก node , go, python แทบไม่ต้องทำอะไร
https://filia-aleks.medium.com/aws-lambda-battle-2021-performance-comparison-for-all-languages-c1b441005fd1