2 λΆ„ μ†Œμš”

Serverless에 λŒ€ν•΄μ„œ

λ§Žμ€ μƒν™©μ—μ„œ μ„œλ²„λ¦¬μŠ€ λΌλŠ” 단어가 자주 μ‚¬μš©λœλ‹€.

단어 κ·ΈλŒ€λ‘œ serverless 둜 μ‚΄νŽ΄λ³΄λ©΄, serverκ°€ ν•„μš” μ—†λŠ”μœΌλ‘œ 해석할 수 μžˆμ„ 것 κ°™λ‹€.

μ„œλ²„λ¦¬μŠ€λž€?

μ„œλ²„λ¦¬μŠ€(Serverless)λž€, κ°œλ°œμžκ°€ μ„œλ²„λ₯Ό 관리할 ν•„μš” 없이 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ λΉŒλ“œν•˜κ³  μ‹€ν–‰ν•  수 μžˆλ„λ‘ ν•˜λŠ” ν΄λΌμš°λ“œ λ„€μ΄ν‹°λΈŒ 개발 λͺ¨λΈμ΄λ‹€.

  • ν΄λΌμš°λ“œ λ„€μ΄ν‹°λΈŒ : ν΄λΌμš°λ“œ 제곡 λͺ¨λΈμ—μ„œ μ œκ³΅ν•˜λŠ” λΆ„μ‚° μ»΄ν“¨νŒ…μ„ ν™œμš©ν•˜κΈ° μœ„ν•΄ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ ꡬ좕 및 μ‹€ν–‰ν•˜λŠ” κ°œλ…

μ„œλ²„λ¦¬μŠ€ λͺ¨λΈμ—λ„ μ„œλ²„κ°€ μ‘΄μž¬ν•˜κΈ΄ ν•œλ‹€.

ν•˜μ§€λ§Œ, μ• ν”Œλ¦¬μΌ€μ΄μ…˜ κ°œλ°œμ—μ„œμ™€ λ‹€λ₯΄κ²Œ μΆ”μƒν™”λ˜μ–΄ μžˆλ‹€λŠ” νŠΉμ§•μ΄ μžˆλ‹€!

ν΄λΌμš°λ“œ μ œκ³΅μžκ°€ μ„œλ²„ 인프라에 λŒ€ν•œ ν”„λ‘œλΉ„μ €λ‹, μœ μ§€ 관리, μŠ€μΌ€μΌλ§ λ“±μ˜ 일상적인 μž‘μ—…μ„ μ²˜λ¦¬ν•˜λ©°, κ°œλ°œμžλŠ” 배포λ₯Ό μœ„ν•΄ μ»¨ν…Œμ΄λ„ˆμ— νŒ¨ν‚€μ§• ν•˜κΈ°λ§Œ ν•˜λ©΄ λœλ‹€.

  • ν”„λ‘œλΉ„μ €λ‹ : IT 인프라λ₯Ό μƒμ„±ν•˜κ³  μ„€μ •ν•˜λŠ” ν”„λ‘œμ„ΈμŠ€

또, μ„œλ²„λ¦¬μŠ€ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ€ 배포되고 λ‚˜λ©΄ ν•„μš”μ— 따라 μžλ™μœΌλ‘œ μŠ€μΌ€μΌ μ—…λ˜κ±°λ‚˜ μŠ€μΌ€μΌ λ‹€μš΄λœλ‹€.

μ„œλ²„λ¦¬μŠ€ μ•„ν‚€ν…μ²˜ νŠΉμ§•

μ„œλ²„λ¦¬μŠ€λŠ” ν΄λΌμš°λ“œ μ œκ³΅μžκ°€ ν΄λΌμš°λ“œ 인프라와 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ μŠ€μΌ€μΌλ§ λͺ¨λ‘ κ΄€λ¦¬ν•œλ‹€λŠ” μ μ—μ„œ λ‹€λ₯Έ ν΄λΌμš°λ“œ μ»΄ν“¨νŒ… λͺ¨λΈλ“€κ³Ό 차이λ₯Ό 보인닀.

μ„œλ²„λ¦¬μŠ€ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ€ 호좜 μ‹œ, μ˜¨λ””λ§¨λ“œλ‘œ μžλ™ μ‹œμž‘λ˜λŠ” μ»¨ν…Œμ΄λ„ˆμ— λ°°ν¬λœλ‹€!

  • μ˜¨λ””λ§¨λ“œ : μ‚¬μš©μžκ°€ ν•„μš”λ‘œ ν•˜λŠ” μ„œλΉ„μŠ€λ₯Ό μ¦‰μ‹œ μ΄μš©ν•  수 μžˆλ„λ‘ μ œκ³΅λ˜λŠ” λͺ¨λΈ

또, μ„œλ²„λ¦¬μŠ€λ₯Ό ν™œμš©ν•˜λ©΄ 운영체제 및 파일 μ‹œμŠ€ν…œ 관리, λ³΄μ•ˆ 패치, λΆ€ν•˜ λΆ„μ‚°, μš©λŸ‰ 관리, μŠ€μΌ€μΌλ§, λ‘œν‚Ή, λͺ¨λ‹ˆν„°λ§ λ“±κ³Ό 같은 일상적인 μž‘μ—…μ„ λͺ¨λ‘ ν΄λΌμš°λ“œ μ„œλΉ„μŠ€ μ œκ³΅μžμ— 맑길 수 μžˆλ‹€.

μ™„μ „ν•œ μ„œλ²„λ¦¬μŠ€ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 및 μΌλΆ€μ˜ μ„œλ²„λ¦¬μŠ€λ‘œ MSAλ₯Ό ꡬ좕할 μˆ˜λ„ μžˆλ‹€!

μ„œλ²„λ¦¬μŠ€ μ»΄ν“¨νŒ…μ—μ„œ ν΄λΌμš°λ“œ μ œκ³΅μžλŠ” 무슨 일을 ν• κΉŒ?

μ„œλ²„λ¦¬μŠ€ λͺ¨λΈμ—μ„œ ν΄λΌμš°λ“œ μ œκ³΅μžλŠ” μ½”λ“œλ₯Ό ν”„λ‘œλ•μ…˜μœΌλ‘œ λ°”λ‘œ 배포할 수 μžˆλŠ” μ‚¬μš©μžλ₯Ό λŒ€μ‹ ν•˜μ—¬ 물리 μ„œλ²„λ₯Ό κ΅¬λ™ν•˜κ³ , λ¦¬μ†ŒμŠ€λ₯Ό μ‹ μ†ν•˜κ²Œ ν• λ‹Ήν•œλ‹€.

μ„œλ²„λ¦¬μŠ€ μ»΄ν“¨νŒ… μ„œλΉ„μŠ€λŠ” 일반적으둜 두 κ°€μ§€μ˜ 그룹으둜 λ‚˜λ‰œλ‹€.

  1. μ„œλΉ„μŠ€λ‘œμ„œμ˜ λ°±μ—”λ“œ (BaaS: Backend-as-a-Service)
  2. μ„œλΉ„μŠ€λ‘œμ˜ κΈ°λŠ₯ (FaaS: Function-as-a-Service)

BaaS (Backend-as-a-Service)

κ°œλ°œμžκ°€ λ‹€μ–‘ν•œ 제3사 μ„œλΉ„μŠ€μ™€ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ— μ•‘μ„ΈμŠ€ν•  수 있게 함!

예λ₯Ό λ“€λ©΄, ν΄λΌμš°λ“œ μ œκ³΅μžλŠ” 인증 μ„œλΉ„μŠ€, μΆ”κ°€ μ•”ν˜Έν™”, 데이터 μ‚¬μš©λŸ‰ 등을 μ œκ³΅ν•  수 μžˆλ‹€.

BaaSλ₯Ό ν™œμš©ν•˜λŠ” 경우, μ„œλ²„λ¦¬μŠ€ κΈ°λŠ₯은 일반적으둜 API λ₯Ό 톡해 ν˜ΈμΆœλœλ‹€.

FaaS (Function-as-a-Service)

이벀트 기반 μ»΄ν“¨νŒ… μ‹€ν–‰ λͺ¨λΈλ‘œ, κ°œλ°œμžκ°€ μž‘μ„±ν•˜λŠ” λ‘œμ§μ€ ν”Œλž«νΌμ—μ„œ 전체λ₯Ό κ΄€λ¦¬ν•˜λŠ” μ»¨ν…Œμ΄λ„ˆλ‘œ 배포된 ν›„, μ˜¨λ””λ§¨λ“œλ‘œ μ‹€ν–‰λœλ‹€.

BaaSμ™€λŠ” λ‹€λ₯΄κ²Œ, FaaSλŠ” 사전에 μž‘μ„±λœ μ„œλΉ„μŠ€ λΌμ΄λΈŒλŸ¬λ¦¬μ— μ˜μ‘΄ν•˜μ§€ μ•Šκ³ , μ‚¬μš©μž μ •μ˜ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μƒμ„±ν•˜λŠ” κ°œλ°œμžμ—κ²Œ 더 λ§Žμ€ μ œμ–΄ κΆŒν•œμ„ μ œκ³΅ν•œλ‹€.

μ½”λ“œλŠ” ν΄λΌμš°λ“œ μ œκ³΅μžκ°€ κ΄€λ¦¬ν•˜λŠ” μ»¨ν…Œμ΄λ„ˆμ— 배포되며, λ‹€μŒκ³Ό 같은 νŠΉμ§•μ„ κ°–κ³ μžˆλ‹€.

  • λ¬΄μƒνƒœμ„±(Stateless): 데이터 톡합이 κ°„μ†Œν™”λ¨
  • μΌνšŒμ„±: 맀우 단기간에 μ‹€ν–‰ κ°€λŠ₯
  • μ΄λ²€νŠΈμ—μ„œ 트리거: ν•„μš”μ— 따라 μžλ™ μ‹€ν–‰ κ°€λŠ₯
  • 전체 κ΄€λ¦¬ν˜•: ν΄λΌμš°λ“œ μ œκ³΅μžκ°€ μ „λ‹΄ κ΄€λ¦¬ν•˜λ―€λ‘œ, μƒμ‹œ 가동 μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 및 μ„œλ²„ λŒ€μ‹  ν•„μš”ν•œ 만큼만 λΉ„μš© μ§€λΆˆ

FaaSλ₯Ό ν™œμš©ν•˜λ©΄ APIλ₯Ό 톡해 μ„œλ²„λ¦¬μŠ€ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ ν˜ΈμΆœν•  수 μžˆλ‹€.

FaaS μ œκ³΅μžλŠ” 이λ₯Ό API κ²Œμ΄νŠΈμ›¨μ΄λ₯Ό 톡해 μ²˜λ¦¬ν•¨.

[ChatGPT] Serverlessκ°€ 뭐야?

ServerlessλŠ” ν΄λΌμš°λ“œ μ»΄ν“¨νŒ… λͺ¨λΈ 쀑 ν•˜λ‚˜λ‘œ, μ„œλ²„ 인프라 관리에 λŒ€ν•œ 뢀담을 λœμ–΄μ£Όκ³  κ°œλ°œμžκ°€ μ½”λ“œμ—λ§Œ 집쀑할 수 μžˆλ„λ‘ μ„€κ³„λœ ν™˜κ²½μ„ λ§ν•œλ‹€.

μ„œλ²„λ¦¬μŠ€ ν™˜κ²½μ—μ„œλŠ” μ„œλ²„λ₯Ό κ΄€λ¦¬ν•˜κ³  μœ μ§€ν•˜λŠ” μž‘μ—…μ΄ ν΄λΌμš°λ“œ 제곡자(AWS, GCP λ“±)에 μ˜ν•΄ μžλ™μœΌλ‘œ 처리되며, κ°œλ°œμžλŠ” κ·Έμ € ν•„μš”ν•œ κΈ°λŠ₯을 μž‘μ„±ν•˜κ³  이λ₯Ό ν˜ΈμΆœν•˜λŠ” κ²ƒλ§ŒμœΌλ‘œλ„ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μš΄μ˜ν•  수 μžˆλ‹€.

μ£Όμš” νŠΉμ§•

  • λ¬΄μ„œλ²„ 관리
    • μ„œλ²„λ₯Ό 직접 μ„€μ •, μœ μ§€λ³΄μˆ˜, ν™•μž₯ν•  ν•„μš”κ°€ μ—†μŒ
    • ν΄λΌμš°λ“œ μ œκ³΅μžκ°€ μžλ™μœΌλ‘œ 이런 μž‘μ—…μ„ μ²˜λ¦¬ν•¨
  • μžλ™ ν™•μž₯
    • μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ νŠΈλž˜ν”½μ΄ μ¦κ°€ν•˜κ±°λ‚˜ κ°μ†Œν•  λ•Œ μžλ™μœΌλ‘œ λ¦¬μ†ŒμŠ€λ₯Ό ν™•μž₯ λ˜λŠ” μΆ•μ†Œν•¨
    • 이둜 인해 μ„±λŠ₯ μ΅œμ ν™”κ°€ μš©μ΄ν•˜λ©°, κ³Όλ„ν•œ λΉ„μš©μ΄ λ°œμƒν•˜μ§€ μ•ŠμŒ
  • 과금 방식
    • μ‹€μ œ μ‹€ν–‰λœ μ‹œκ°„λ§ŒνΌ λΉ„μš©μ„ μ§€λΆˆν•˜λŠ” λ°©μ‹μž„
    • 비정기적 νŠΈλž˜ν”½ λ°œμƒ μ„œλΉ„μŠ€μ—μ„œ νš¨μœ¨μ μž„
  • λΉ λ₯Έ 배포
    • μƒˆλ‘œμš΄ κΈ°λŠ₯을 μΆ”κ°€ν•˜κ±°λ‚˜ μ—…λ°μ΄νŠΈ μ‹œ, λΉ λ₯΄κ²Œ 배포 κ°€λŠ₯함
    • μ„œλ²„ μ„€μ •μ΄λ‚˜ 인프라 λ³€κ²½ 없이 μ½”λ“œλ§Œ μ—…λ‘œλ“œν•˜λ©΄ λ°”λ‘œ 적용됨

μž₯점

  • 개발 생산성
    • μ„œλ²„ 관리에 μ‹ κ²½ μ“Έ ν•„μš”κ°€ μ—†μœΌλ‹ˆ, μ‹€μ œ μ„œλΉ„μŠ€ λ‘œμ§μ—λ§Œ μ‹ κ²½μ“Έ 수 있음
  • λΉ„μš© νš¨μœ¨μ„±
    • μ‹€μ œ μ‚¬μš©ν•œ λΉ„μš©λ§ŒνΌλ§Œ λΉ„μš© μ§€λΆˆ
  • ν™•μž₯μ„±
    • ν΄λΌμš°λ“œ μ œκ³΅μžκ°€ μžλ™μœΌλ‘œ λ¦¬μ†ŒμŠ€λ₯Ό ν™•μž₯ν•΄μ£Όλ―€λ‘œ, λŒ€κ·œλͺ¨ νŠΈλž˜ν”½ 처리 μ‹œμ—λ„ μ„±λŠ₯을 μœ μ§€ν•  수 있음

단점

  • μ„±λŠ₯ 지연
    • ν•¨μˆ˜ 호좜 μ‹œ, 처음 μ‹€ν–‰λ˜κΈ°κΉŒμ§€μ˜ μ‹œκ°„(cold start) λ¬Έμ œκ°€ λ°œμƒν•  수 있음
    • μ„±λŠ₯에 λ―Όκ°ν•œ μ„œλΉ„μŠ€μ—μ„œλŠ” μ•ˆμ’‹μ„ μˆ˜λ„..!
  • μ˜μ‘΄μ„±
    • ν΄λΌμš°λ“œ μ œκ³΅μžμ— λŒ€ν•œ μ˜μ‘΄μ„±μ΄ 컀짐
    • νŠΉμ • μ œκ³΅μžμ— μ’…μ†λ˜μ–΄λ²„λ¦΄ μˆ˜λ„ 있음
  • 디버깅 및 λͺ¨λ‹ˆν„°λ§
    • μ„œλ²„λ¦¬μŠ€ ν™˜κ²½μ—μ„œλŠ” 기쑴의 μ„œλ²„ 기반 μ‹œμŠ€ν…œλ³΄λ‹€ 디버깅과 λͺ¨λ‹ˆν„°λ§μ΄ λ³΅μž‘ν•  수 있음

참고 자료

μ„œλ²„λ¦¬μŠ€(serverless)λž€?

νƒœκ·Έ:

μΉ΄ν…Œκ³ λ¦¬:

μ—…λ°μ΄νŠΈ:

λŒ“κΈ€λ‚¨κΈ°κΈ°