[AWS] Lambda: Cold Start 문제

cold start μ΄μŠˆλŠ” lambdaλ₯Ό μ‚¬μš©ν• λ•Œ κ²ͺ을 수 μžˆλŠ” λŒ€ν‘œμ μΈ 문제 쀑 ν•˜λ‚˜λ‹€.

이게 뭐냐 ν•˜λ©΄, λžŒλ‹€λ₯Ό μ˜€λž«λ™μ•ˆ μ“°μ§€ μ•Šλ‹€κ°€ κ°„λ§Œμ— μ‹€ν–‰ν•˜λ©΄ 느리게 싀행이 λ˜λŠ”κ±Έ λ§ν•œλ‹€.

μ΄λ ‡κ²Œ μ΄ˆκΈ°ν™” μ‹œκ°„μ΄ λ”ν•΄μ§€λŠ” 것이닀.

ν•œλ²ˆ ν˜ΈμΆœν•˜κ³  λ‚˜λ©΄ κ·Έλ•ŒλΆ€ν„°λŠ” λ‹€μ‹œ 빨라진닀.

μˆ˜λ°±λ°€λ¦¬μ΄ˆκ°€ λ°œμƒν•˜λ˜κ²Œ 2λ°€λ¦¬μ΄ˆλ‘œ μ€„μ—ˆλ‹€.

λ°€λ¦¬μ΄ˆ λ‹¨μœ„λΌμ„œ 별거 μ•„λ‹Œκ²ƒμ²˜λŸΌ 보일 μˆ˜λ„ μžˆμ§€λ§Œ, Lambda의 ꡬ성 μƒνƒœμ— λ”°λΌμ„œ cold start μ‹œκ°„μ΄ 1초λ₯Ό λ„˜λŠ” 일도 λΉ„μΌλΉ„μž¬ν•˜λ‹€.
κ²½μš°μ— λ”°λΌμ„œλŠ” μ„œλΉ„μŠ€μ— μ€‘λŒ€ν•œ ν’ˆμ§ˆ μ €ν•˜λ₯Ό μΌμœΌν‚¬ μˆ˜λ„ μžˆλŠ” λ¬Έμ œλ‹€.




이런게 μ™œ λ°œμƒν•˜λ‚˜?

cold startλŠ” Lambda μ‹œμŠ€ν…œμ˜ 근본적인 ν•œκ³„ λ•Œλ¬Έμ— λ°œμƒν•œλ‹€.
μ•„λ§ˆμ‘΄μ΄ μžμ„ μ‚¬μ—…κ°€λ„ μ•„λ‹ˆκ³ ... 쓰지도 μ•ŠλŠ” ν•¨μˆ˜λ₯Ό 계속 λ©”λͺ¨λ¦¬μ— μ˜¬λ €λ†“μ„ μˆ˜λŠ” μ—†λŠ” 노릇 μ•„λ‹Œκ°€.

LambdaλŠ” λ‚΄λΆ€μ μœΌλ‘œ μˆ¨κ²¨μ§„ S3 λ²„ν‚·μ—μ„œ μ†ŒμŠ€μ½”λ“œλ₯Ό λ‹€μš΄λ‘œλ“œν•΄μ„œ μ»¨ν…Œμ΄λ„ˆλ₯Ό λ„μš°κ³ , μ½”λ“œλ₯Ό μ‹€ν–‰μ‹œν‚€λŠ” ν”„λ‘œμ„ΈμŠ€λ₯Ό κ°€μ§„λ‹€.

μ—¬κΈ°μ„œ μ½”λ“œλ₯Ό λ‹€μš΄λ°›κ³  μ»¨ν…Œμ΄λ„ˆλ₯Ό μƒμ„±ν•˜λŠ” μ‹œκ°„μ΄ cold start λ”œλ ˆμ΄κ°€ λ˜λŠ” 것이닀.

cold λͺ¨λ“œλ‘œ μ „ν™˜λ˜κΈ°κΉŒμ§€ κ±Έλ¦¬λŠ” μ‹œκ°„μ€ μΌμ •ν•˜μ§€ μ•Šκ³ , cold startκ°€ μ™„λ£Œλ˜λŠ” μ‹œμ λ„ μ •ν•΄μ Έμžˆμ§€λŠ” μ•Šλ‹€.
cold start μ‹œκ°„μ€ ν•¨μˆ˜ κ΅¬ν˜„, μ–Έμ–΄ λŸ°νƒ€μž„, μ½”λ“œ 크기, λ©”λͺ¨λ¦¬ 크기 등에 영ν–₯을 λ°›λŠ”λ‹€.

λ©”λͺ¨λ¦¬λ₯Ό 크게 μž‘μ•„λ‘λ©΄ cold startλ₯Ό 쀄일 수 μžˆλ‹€κ³ λŠ” ν•œλ‹€. ν•˜μ§€λ§Œ 이것도 μ™„μ „ν•œ 해결책은 μ•„λ‹ˆλ‹€.




ν•΄κ²°μ±…1: κ°•μ œλ‘œ λ°μ›Œμ£ΌκΈ°

고전적인 방법은, κ·Έλƒ₯ λžŒλ‹€λ₯Ό 주기적으둜 ν˜ΈμΆœν•΄μ„œ κ°•μ œλ‘œ warm-up을 ν•΄μ£ΌλŠ” 것이닀.

보톡 μ΄λ²€νŠΈλΈŒλ¦Ώμ§€λ‘œ λͺ‡μ‹­λΆ„에 ν•œλ²ˆμ”© ν˜ΈμΆœν•˜λŠ” ν˜•νƒœλ‘œ μ‚¬μš©ν•œλ‹€.

이정도 ν˜ΈμΆœν•œλ‹€κ³  λΉ„μš©μ΄ λ”±νžˆ νŠ€λŠ” 것도 μ•„λ‹ˆκ³ , κ½€ λ§Žμ΄λ“€ μ‚¬μš©ν•˜λŠ” 방법이닀.

ꢌμž₯ν•˜λŠ” 방법은 μ•„λ‹ˆμ§€λ§Œ, μ €λ ΄ν•˜λ‹€λŠ” μ μ—μ„œ λ§Žμ΄λ“€ μ“΄λ‹€.




ν•΄κ²°μ±…2: λ™μ‹œμ„± ν”„λ‘œλΉ„μ €λ‹ (λͺ¨λ²”사둀)

AWSμ—μ„œ κ³΅μ‹μ μœΌλ‘œ ꢌμž₯ν•˜λŠ” 방법은 λ™μ‹œμ„±μ„ μ˜ˆμ•½ν•΄μ„œ ν”„λ‘œλΉ„μ €λ‹ν•˜λŠ” κ²ƒμœΌλ‘œ 항상 ν™œμ„±ν™” μƒνƒœλ₯Ό μœ μ§€ν•˜λŠ” 것이닀.

일단 μ•Œμ•„λ‘¬μ•Όν• κ±΄, λΉ„μš©μ΄ μΆ”κ°€λ°œμƒν•œλ‹€λŠ” 것이닀.

https://aws.amazon.com/ko/lambda/pricing/
μ‹€μ œλ‘œ μ‚¬μš©λ˜λŠ” 것과 λ³„κ°œλ‘œ κ·Έλƒ₯ λ– μžˆλŠ” λ§ŒνΌλ„ μš”κΈˆμ„ κ½€ λΆ€κ³Όν•œλ‹€..

μ„€μ •ν•˜κΈ°μ— μ•žμ„œμ„œ, λ™μ‹œμ„± 개수λ₯Ό ν™•μΈν•œλ‹€.
도쿄 같은 λΆ€λ₯΄μ£Όμ•„ 리전은 λ™μ‹œμ„± 할당값을 1000κ°œμ”© μ£ΌλŠ”λ°, μ„œμšΈμ€ κ·Έλ ‡μ§€κ°€ μ•Šμ•„μ„œ μš”μ²­μ„ ν•΄μ„œ λŠ˜λ €λ‹¬λΌ ν•΄μ•Όν•œλ‹€.

μ΄λ ‡κ²Œ 50밖에 μ—†μœΌλ©΄ λͺ»μ“΄λ‹€.

AWS νŒ€μ—μ„œ 처리λ₯Ό ν•΄μ€˜μ„œ μΆ©λΆ„νžˆ λŠ˜μ–΄λ‚¬λ‹€λ©΄, lambda ꡬ성-λ™μ‹œμ„± νƒ­μœΌλ‘œ μ΄λ™ν•œλ‹€.


μ—¬κΈ°μ„œ ν”„λ‘œλΉ„μ €λ‹μ— μ‚¬μš©ν•  λ™μ‹œμ„± 개수λ₯Ό λͺ‡κ°œ λΉΌμ€˜μ•Ό ν•œλ‹€.

μ˜ˆμ•½λ˜μ§€ μ•Šμ€ 것도 μ–΄λŠμ •λ„ λ‚¨κ²¨λ†”μ•Όν•˜λŠ”λ°, λ¦¬μ „λ§ˆλ‹€ λ‹€λ₯΄λ”라. μ„œμšΈμ€ 50κ°œλŠ” 남겨야 ν•˜κ³ , λ„μΏ„λŠ” 100κ°œλŠ” 남겨야 ν•œλ‹€.


그리고 μ˜ˆμ•½ν•΄λ‘”κ±Έ μ—¬κΈ°μ„œ κ°€μ Έλ‹€κ°€ κ΅¬μ„±ν•˜λ©΄ λœλ‹€.
μ‹Έμ§€λŠ” μ•Šλ‹€.


이러면 이제, λ™μ‹œ μ‹€ν–‰ κ°œμˆ˜κ°€ μ € 100개λ₯Ό λ„˜μ§€λ§Œ μ•ŠμœΌλ©΄ cold start λ¬Έμ œλŠ” 없을 것이닀.



μ°Έμ‘°
https://docs.aws.amazon.com/lambda/latest/operatorguide/execution-environments.html
https://stackoverflow.com/questions/37931010/lambda-cold-start-possible-solution