πŸŽ‰ berenickt λΈ”λ‘œκ·Έμ— 온 κ±Έ ν™˜μ˜ν•©λ‹ˆλ‹€. πŸŽ‰
DevOps
14-Lambda

1. Serverless

  • Serverless : μ„œλ²„λ¦¬μŠ€ μ»΄ν“¨νŒ…μ„ μ€„μ—¬μ„œ λΆ€λ₯΄λŠ” 말
    • λ‚΄κ°€ 관리할 μ„œλ²„κ°€ μ—†λ‹€λŠ” 의미

1.1 Serverless νŠΉμ§•

  • μ„œλ²„ 관리 λΆ€λ‹΄μ—†μŒ (κ°œλ°œμžλŠ” μ½”λ“œ μž‘μ„±μ—λ§Œ 집쀑)
    • κ°œλ°œμžλŠ” μ½”λ“œ μž‘μ„±μ—λ§Œ μ§‘μ€‘ν•˜κ³ ,
    • 인프라 κ΄€λ¦¬λŠ” AWS Lambda, Azure Functions, Google Cloud Functions λ“±μ˜ μ„œλ²„λ¦¬μŠ€ ν”Œλž«νΌμ— λ§‘κΉ€
  • μ„œλ²„λ¦¬μŠ€ ν•¨μˆ˜λŠ” 주둜 이벀트 기반으둜 싀행됨 (e.g. HTP μš”μ²­, λ°μ΄ν„°λ² μ΄μŠ€ λ³€κ²½, 파일 μ—…λ‘œλ“œ λ“±)
  • λΉ„μš© 효율적 (ν•„μš”ν•  λ–„λ§Œ μ‹€ν–‰λ˜λ©°, μ‹€ν–‰ μ‹œκ°„μ— 따라 λΉ„μš©μ΄ 청ꡬ됨)
  • μˆœκ°„μ  ν™•μž‘μ„±
  • μž‘μ€ μ½”λ“œ λ‹¨μœ„
  • λ‹€μ–‘ν•œ ν΄λΌμš°λ“œ μ„œλΉ„μŠ€μ™€ 톡합(λ°μ΄ν„°λ² μ΄μŠ€, μŠ€ν† λ¦¬μ§€, λ©”μ‹œμ§€, AI λ“±)

2. Lambda

  • AWS LambdaλŠ” μ„œλ²„λ¦¬μŠ€ μ»΄ν“¨νŒ… μ„œλΉ„μŠ€λ‘œ λ‹€μ–‘ν•œ 앱을 μ‹€ν–‰ν•˜κ³  κ΄€λ¦¬ν•œλ‹€.
  • Lambda ν•¨μˆ˜λŠ” λ‹€μ–‘ν•œ 이벀트 μ†ŒμŠ€μ—μ„œ νŠΈλ¦¬κ±°λœλ‹€.
    • e.g. HTTP μš”μ²­, λ°μ΄ν„°λ² μ΄μŠ€ λ³€κ²½, λ©”μ‹œμ§€ 큐 λ©”μ‹œμ§€ λ“±μ˜ μ΄λ²€νŠΈμ— λ°˜μ‘ν•˜μ—¬ 싀행됨
  • Node.js, Python, Java, Go, Ruby, .NET λ“±μ˜ λ‹€μ–‘ν•œ ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄λ₯Ό 지원
    • μ½”λ“œμ˜ μ—¬λŸ¬ 버전을 κ΄€λ¦¬ν•˜κ³ , νŠΉμ • 버전을 λ°°ν¬ν•˜κ±°λ‚˜ λ‘€λ°±ν•  수 μžˆλŠ” κΈ°λŠ₯도 제곡
  • μžλ™μœΌλ‘œ μŠ€μΌ€μΌλ§ λ˜λ―€λ‘œ νŠΈλž˜ν”½ 증가에 따라 ν•¨μˆ˜ μΈμŠ€ν„΄μŠ€κ°€ μƒμ„±λ˜κ³  κ΄€λ¦¬λœλ‹€
    • 이둜써 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ ν™•μž₯성이 ν–₯상됨
  • μ΄ˆλ‹Ή μ‹€ν–‰ μ‹œκ°„μ„ 기반으둜 λΉ„μš©μ΄ μ²­κ΅¬λ˜λ―€λ‘œ, λΉ„μš©μΈ‘λ©΄μ—μ„œλ„ ꡉμž₯히 효율적
  • 타 AWS μ„œλΉ„μŠ€μ™€ μ‰½κ²Œ 톡합할 수 μžˆλ‹€.
    • e.g. S3, DynamoDB, SNS, API Gateway, CloudWatch λ“±
    • e.g. CloudWatch와 ν†΅ν•©ν•˜κ²Œ 되면 Lambda ν•¨μˆ˜μ˜ 싀행을 λͺ¨λ‹ˆν„°λ§ν•˜κ³  λ‘œκΉ…ν•  수 있음
    • 이λ₯Ό 톡해 디버깅 및 μ„±λŠ₯ μ΅œμ ν™”κ°€ κ°€λŠ₯
  • μ‹€ν–‰ 역할을 톡해 μ•‘μ„ΈμŠ€ κΆŒν•œμ„ κ΄€λ¦¬ν•˜κ³ , 이λ₯Ό 톡해 ν•¨μˆ˜κ°€ λ‹€λ₯Έ AWS λ¦¬μ†ŒμŠ€μ™€ μ•ˆμ „ν•˜κ²Œ μƒν˜Έ μž‘μš©ν•¨
    • κ·Έλž˜μ„œ λ³΄μ•ˆ μΈ‘λ©΄μ—μ„œλ„ 강점을 κ°–κ³  μžˆλ‹€
  • cf. AWSμ—μ„œ λ§Œλ“  Lambda 곡식 μ†Œκ°œ λ™μ˜μƒ

3. (μ‹€μŠ΅) Lambda ν•¨μˆ˜ 생성 및 μ‹€ν–‰

[Lambda] β†’ [ν•¨μˆ˜ 생성] λ²„νŠΌμ„ ν΄λ¦­ν•œλ‹€.

  • κ°„λ‹¨ν•˜κ²Œ ν…ŒμŠ€νŠΈλ₯Ό ν•˜κΈ°μ—, [λΈ”λ£¨ν”„λ¦°νŠΈ μ‚¬μš©] μ˜΅μ…˜μ„ 선택.
    • ν•¨μˆ˜ 이름 : myFunction
    • 화면을 μ•„λž˜λ‘œ 내렀보면, ν•¨μˆ˜ μ½”λ“œκ°€ μž‘μ„±λ˜μ–΄ μžˆλ‹€.
    • cf. 이벀트λ₯Ό λ°›μ•„μ„œ ν‚€λ₯Ό 좜λ ₯ν•˜κ³ , 첫 번째 ν‚€λ₯Ό λ¦¬ν„΄ν•˜λŠ” κ°„λ‹¨ν•œ ν•¨μˆ˜
  • 였λ₯Έμͺ½ μ•„λž˜μ— μžˆλŠ” [ν•¨μˆ˜ 생성] λ²„νŠΌμ„ ν΄λ¦­ν•΄μ„œ ν•¨μˆ˜λ₯Ό μƒμ„±ν•œλ‹€.
  • ν•¨μˆ˜ 생성은 μ•½ 1-2λΆ„ 정도 μ†Œμš”λœλ‹€.

ν•¨μˆ˜κ°€ μƒμ„±λ˜λ©΄, 화면을 μ•„λž˜λ‘œ 내렀보면 μ†ŒμŠ€μ½”λ“œκ°€ μžˆλ‹€.

  • [ν…ŒμŠ€νŠΈ λ²„νŠΌ]을 클릭
  • 그러면 μ§€κΈˆμ€ μ•„λ¬΄λŸ° ν…ŒμŠ€νŠΈ μ΄λ²€νŠΈκ°€ μ—†κΈ° λ•Œλ¬Έμ—,
    • λ¨Όμ € ν…ŒμŠ€νŠΈ 이벀트λ₯Ό κ΅¬μ„±ν•˜λŠ” λ‹€μ΄μ–Όλ‘œκ·Έκ°€ λ‚˜μ˜¨λ‹€.
    • 이벀트 이름 : MyEvent
    • cf. λ°‘μ—μ„œλŠ” 이벀트둜 전달될 JSON 객체λ₯Ό νŽΈμ§‘ν•  수 μžˆλ‹€.
    • [μ €μž₯] λ²„νŠΌμ„ 클릭.
  • ν…ŒμŠ€νŠΈ 이벀트λ₯Ό μ €μž₯ν•œ 이후에 λ‹€μ‹œ [ν…ŒμŠ€νŠΈ λ²„νŠΌ]을 ν΄λ¦­ν•œλ‹€.
  • 그러면 λžŒλ‹€ν•¨μˆ˜κ°€ μ‹€ν–‰λ˜κ³ , λ‘œκ·Έμ™€ 응닡이 좜λ ₯λ˜λŠ” 것을 λ³Ό 수 μžˆλ‹€.

4. (μ‹€μŠ΅) Lambda ν•¨μˆ˜ μ‚­μ œ

[Lambda ν•¨μˆ˜] νŽ˜μ΄μ§€μ—μ„œ 였λ₯Έμͺ½ μƒλ‹¨μ˜ [μž‘μ—…] 메뉴λ₯Ό ν΄λ¦­ν•œλ‹€.

  • 그리고 ν•˜μœ„ λ©”λ‰΄μ—μ„œ [ν•¨μˆ˜ μ‚­μ œ]λ₯Ό ν΄λ¦­ν•œλ‹€.
  • 그러면 확인 λ‹€μ΄μ–Όλ‘œκ·Έκ°€ λ‚˜μ˜€κ³ , [μ‚­μ œ] λ²„νŠΌμ„ ν΄λ¦­ν•œλ‹€.
  • Lambda ν•¨μˆ˜ μ‚­μ œκ°€ μ™„λ£Œλœλ‹€.