서버리스

김지우·2022년 12월 16일
0

8주차

목록 보기
2/6
post-thumbnail

1️⃣ 서버리스 란?

서버리스(serverless):
개발자가 서버를 관리할 필요 없이 애플리케이션을 빌드하고 실행할 수 있도록 하는 클라우드 네이티브 개발 모델입니다.

서버리스 모델에도 서버가 존재하긴 하지만, 애플리케이션 개발에서와 달리 추상화되어 있습니다.

서버리스 애플리케이션은 배포되고 나면 필요에 따라 자동으로 scale-up과 scale-down을 진행합니다.

정리하자면 서버리스란?

  • 서버가 필요 없다는 뜻이 아닌, 서버를 관리하거나 신경 쓸 필요가 없다는 뜻입니다.

  • 나노 수준의 함수로 구성되어 있습니다.

<출처> : 서버리스(Serverless)란 무엇인가?


2️⃣ 서버리스 아키텍처의 구현 방식

서버리스는 BaaS 보다는 FaaS에 더 가깝습니다.
BaaS (Backend as a Service)
FaaS (Function as a Service)

  • BaaS의 종류 : Firebase, Kinvey, Parse ...
  • Faas의 종류 : AWS Lambda, Azure Functions, Google Cloud Functions ...

📍 BaaS 특징

  • 일반적으로 SPA, 안드로이드와 같은 클라이언트 중심으로 개발된 애플리케이션입니다.

  • BaaS가 제공하는 인증, DB, 사용자 관리 등과 같은 외부 서비스를 사용해서 대부분의 비즈니스 로직을 처리합니다.

📍 FaaS 특징

  • 무상태(Stateless) 함수가 서버 측 비즈니스 로직을 포함합니다.

  • Backend를 작은 함수로 쪼개서 사용자가 직접 관리하지 않는 서버로 올립니다.

  • 함수들은 특정한 조건 또는 주기, 요청 등으로 trigger 되어서 서버가 알아서 실행되고 종료됩니다.


3️⃣ 서버리스의 장단점

💡 장점

  • 일정 주기, 조건 등에 함수를 호출하므로 리소스를 낭비하지 않게 되어서 비용이 저렴합니다.

  • 인프라 구성, 운영, 보안 등에 신경쓰지 않고 비즈니스 로직에 집중할 수 있습니다.

  • auto-scaling이 적용됩니다.

  • 패키징 및 배포가 간단합니다.

  • 릴리즈 주기가 감소하여 생산성 또한 높아집니다.

❗️ 단점

  • trigger에 의해 서버를 실행 및 종료를 반복하기 때문에 실시간 서비스에는 적합하지 않습니다.

  • 클라우드 서비스 업체에 종속됩니다.

  • 실행 시간에 한계가 있습니다.

  • Stateless 형태로 로컬 데이터를 사용할 수 없습니다.

  • 위의 단점들 때문에 디버깅이나 코드 테스팅에 불편함이 따릅니다.

profile
백엔드 성장 기록

0개의 댓글