Lambda layer (Part 1) Introduce

สื่งที่จำเป็นสำหรับ developer หลายๆคนคงหนีไม่พ้นการใช้งาน library มาเป็นตัวช่วยในการ dev ของทุกคน และใน Lambda function การใช้งาน library ก็ไม่ได้ง่ายเสมอไป จริงอยู่ว่า runtime แต่ละตัวที่มีให้ใช้งานใน lambda ก็จะมี library พื้นฐานติดมาให้ แต่ว่ามันก็ไม่น่าจะพอต่อการใช้งาน แล้วถ้าเราจะใช้งาน library อื่นๆใน lambda ของเราหล่ะ เราควรทำอย่างไร

Normal way

ในการ deploy lambda function ที่มี dependencies ต่างๆเพื่อใช้งาน เราต้องทำการ zip dependencies ทั้งหมดรวมกับ handler function เป็น 1 ก้อน แล้ว upload มาใช้งานที่ lambda ก็จะทำให้ function ของเราเรียกใช้งาน dependencies นั้นๆได้

This is a pain

การใช้งานกับ 1 function ก็คงจะยังดูไม่ซับซ้อนเท่าไหร่ แต่ถ้าเรามีหลายๆ function หล่ะ การที่ต้องมา zip data แล้วอัพโหลดทุกครั้งน่าจะไม่สะดวกเท่าที่ควร หรือถ้าเราต้องการใช้ dependencies เหล่านี้ในทุกๆ function หล่ะ เท่ากับว่าเราต้องมา install ใหม่ในทุกครั้งที่มีการสร้าง lambda ตัวใหม่ๆอีก และอาจจะทำให้การจัดการ version ของ dependencies เหล่านั้นทำได้ไม่ดีเท่าที่ควร

Lambda Layer

Layer เป็น feature ที่เอาไว้ใช้งานการจัดการ dependencies หรือ library ต่างๆที่ lambda ต้องมีการเรียกใช้งาน แทนที่เราจะ zip รวมไปกับ function แล้ว upload ขึ้นไปใช้งาน เราสามารถ zip เฉพาะ dependencies อย่างเดียวแล้วนำไปสร้างเป็น layer เก็บไว้ได้ ข้อดีของการใช้งาน layer เลยก็คือ 1. เราสามารถแยก dependencies ออกจาก code ได้อย่างชัดเจน 2. สามารถนำ layer ที่สร้างนั้นไปใช้งานกับหลายๆ function ได้ 3. จัดการ version ที่เกิดขึ้นได้ง่าย แต่ถึงอย่างนั้นเองมันก็ยังมีข้อเสียอยู่บ้าง เช่น ขนาดของ dependencies ต้องไม่เกิน 250 MB เป็นต้น

Summary

ใน part นี้เราได้อธิบายถืงแนวคิดและสิ่งที่ layer จะมาเป็นตัวช่วยเราให้ทำงานกับ lambda function ได้ง่ายมากยิ่งขึ้น part ต่อไปเราจะไปทำการสร้าง layer และนำ layer นั้นไปใช้งานกัน

Aa

© 2023, All Rights Reserved, VulturePrime co., ltd.