AWS Lambda

Mart — Tanathip Viriya
3 min readJun 7, 2020

--

ในสมัยก่อนที่เราสร้าง server มันเสียเวลาในการมาจัดการกับ server พวก network, physical, software บนเครื่องต่างๆมากมายถึงแม้จะเป็น EC2 ก็ตามที

AWS เลยมีสิ่งที่เรียกว่า AWS Lambda ที่ทําหน้าที่ในการตัดความยุ่งยากพวกนั้นออกไป สนใจแค่โค้ดที่เราจะใช้งานเท่านั้น

โดยการใช้งาน Lambda จะเป็น Paralle คือสามารถมีกี่ request เข้ามาใช้งาน Lambda พร้อมกันก็ได้ ทุก request จะแยก execution กันไม่ต้องรอให้อันใดอันนึงเสร็จกัน

ค่าใช้จ่ายในการใช้งาน Lambda

แบ่งเป็น 2 ส่วนคือ

  1. Request Charge
    เก็บเงินตาม request โดย 1ล้าน requests แลก FREE!
  2. Compute Charge (duration & memory)
    เก็บเงินตามระยะเวลาในการรันของ function โดยรับที่ 100ms ต่อการทํางาน ราคาอยู่ที่ $0.0000166667 for every GB-second
    ถ้าเรา allocate memory ให้กับ function มากๆก็จะเสียตาม memory

Invoking Lambda functions

นอกจากการ request ให้ Lambda ทํางานแล้ว เรายังสามารถ trigger lambda ได้ผ่านหลายช่องทาง เช่น

  • ถ้าเป็นพวก Stream หรือ Queue เราสามารถทํา Event Source Mapping กับ SQS, Kinesis, DynamoDB
  • หรือใช้ AWS services อื่นเช่น Cloudwatch, S3 ในการ invoke ก็ได้

Lambda Version Control

โดยปกติแล้ว Lambda function เมื่อเรา deploy ขึ้นไปแล้ว ไม่มีทางที่จะ deploy ครั้งเดียวแล้วใช้งานได้ตลอดไป มันจะมีการ update code ขึ้นไปอยู่เลยๆๆ เพราะฉะนั้นเราต้องหาทางที่จะจัดการ version ของ code ใน lambda ด้วย เพื่อทั้งการ revert หรือ ในการ track กลับไป (ไม่งั้นเราจะต้องจัดการใน git repository เราเอง)

โดย แต่ละ Lambda version จะมี unique Amazon Resource Name (ARN) ซึ่งจะไม่มีวันเปลี่ยน

โดยถ้าเราเรีย Lambda โดยไม่ได้ระบุอะไรมันจะไปที่ $LATEST version เสมอ เช่น

Lambda versioning

arn:aws:lambda:aws-region:acct-id:function:helloworld:$LATEST

ทีนี้เราสามารถสร้างสิ่งที่เรียกว่า alias สําหรับ function นั้นๆได้ เพื่อง่ายต่อการเรียกใช้ เช่น PROD, DEV เป็นต้น

นอกเหนือจากนั้น lambda ยังทําการ weight request ได้ด้วย เช่นทํา blue-green deployment เป็นต้น

จะเห็นว่ามันสามารถ alias ที่เราสร้างขึ้นชื่อ SplitTrafficData 40% ไปที่ version 2 และ 60% ไปที่ version 1 เป็นต้น

การ Debug Lambda

เนื่องจากพอเป็น Serverless Architecture การจะ debug แบบโปรแกรมทั่วไป จะไม่ใช่เรื่องง่าย AWS เลยมีสิ่งที่เรียก AWS X-ray ที่ช่วยให้เราสามารถ debug ว่าเกิดอะไรขึ้นได้ (Traced Request)

โดยการทํางานของ X-ray เริ่มจากเรานํา X-Ray SDK ไปใช้งานรวมกันกับ Application โดยเจ้า SDK เนี้ยมันจะส่ง JSON ก้อนเล็กๆออกไป X-Ray Daemon และ X-Ray API แล้วก็ไปสร้างเป็น Resource ต่างๆให้เรา

X-Ray Architecture

โดยมันจะช่วยให้เราเห็นถึงการทํางานของ request ที่ส่งออกไป

Memory Management

Memory– The amount of memory available to the function during execution. Choose an amount between 128 MB and 3,008 MB in 64-MB increments.

Lambda allocates CPU power linearly in proportion to the amount of memory configured. At 1,792 MB, a function has the equivalent of one full vCPU (one vCPU-second of credits per second).

Sign up to discover human stories that deepen your understanding of the world.

--

--

No responses yet

Write a response