[ETC] 서버리스(Serverless)?

2022. 12. 7. 13:56ETC

서버리스(Serverless)는 직역하면 "서버가 없다"라는 뜻입니다.

서버리스(Serverless)는 클라우드 컴퓨팅의 모델 중 하나로 개발자가 서버를 직접 관리할 필요가 없는 아키텍처를 의미한다.

  • 서버가 필요 없다는 뜻은 아니다.
  • 서버를 관리하거나 신경 쓸 필요가 없다는 뜻
  • 나노 수준의 함수로 구성된다.
서버리스 아키텍처의 구현 방식

 

서버리스 아키텍처의 대표적인 두 가지 구현 방식은 아래와 같습니다.

  • BaaS (Backend as a Service) : Firebase, Kinvey, Parse ... 등
  • FaaS (Function as a Service) : AWS Lambda, Azure Functions, Google Cloud Functions ... 등

BaaS를 사용하는 애플리케이션은 일반적으로 SPA, 안드로이드와 같은 클라이언트 중심으로 개발된 애플리케이션입니다. 클라이언트단에서 Baas가 제공하는 인증, DB, 사용자 관리 등과 같은 외부 서비스를 사용해서 대부분의 비즈니스 로직을 처리합니다.

FaaS는 무상태(Stateless) 함수가 서버 측 비즈니스 로직을 포함합니다. 백엔드를 작은 함수단으로 쪼개서 사용자가 직접 관리하지 않는 서버로 올립니다. 함수들은 특정한 조건 또는 주기, 요청 등으로 트리거 되어서 서버가 알아서 실행되고 종료됩니다. 주로 서버리스라 하면 FaaS에 더 가깝습니다.

서버리스의 장단점

- 장점

  • 이벤트 기반의 비용. (일정 주기, 조건 등에 함수를 호출하므로 리소스를 낭비하지 않게 되어서 비용이 저렴합니다. AWS Lambda의 경우 함수 100만번 실행당 0.2달러면 가능합니다.)
  • 인프라 구성, 운영, 보안 등에 신경쓰지 않고 비즈니스 로직에 집중할 수 있다.
  • 자동 스케일 업 및 스케일 다운
  • 간단한 패키징 및 배포
  • 릴리즈 주기 감소
  • 높은 생산성

- 단점

  • 실시간 서비스에는 적합하지 않음 (항시 실행 중인 서버랑 달리, 트리거에 의해 서버를 실행하고 종료하기를 반복하기 때문에 실행 대기 시간이 오래 걸림)
  • 클라우드 서비스 업체에 종속적
  • 마이그레이션의 어려움
  • 실행 시간 한계 (AWS Lambda의 경우 15분)
  • 로컬 데이터를 사용할 수 없다. (Stateless)
  • 디버깅이나 테스팅에 불편하다.
서버리스는 사이드 프로젝트(토이 프로젝트)나 빠르게 시제품(초기 서비스)을 런칭하고 싶은 경우에 추천한다.
쉽고 빠르게 제품을 출시할 수 있으며, 돈도 매우 절약된다.

 

'ETC' 카테고리의 다른 글

[ETC] EXPO를 통한 안드로이드 앱 패키징  (0) 2023.03.02
[ETC] Pinata Sub Marined  (0) 2023.02.03
[ETC] Debounce 와 Throttle 차이점  (0) 2022.12.06
[Homestead] 디렉토리 추가  (0) 2022.12.02
[ETC] Browser Service Worker  (0) 2022.11.22