Serverless

Taro·2023년 11월 19일

서버리스(Serverless) 란?

서버를 직접 관리할 필요가 없는 아키텍처 (Serverless Architecture) 를 뜻한다

  • 서버가 필요 없다는 뜻은 아님
  • 서버를 관리하거나 신경 쓸 필요가 없다

서버리스 아키텍쳐의 구현 방식

BaaS (Backend as a Service) : Firebase, Kinvey, Parse ...

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

FaaS (Function as a Service) : AWS Lambda, Azure Functions, Google Cloud Functions ...

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

서버리스의 장점, 단점

장점

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

단점

  • 실시간 서비스에는 적합하지 않음 (항시 실행 중인 서버랑 달리, 트리거에 의해 서버를 실행하고 종료하기를 반복하기 때문에 실행 대기 시간이 오래 걸림)
  • 클라우드 서비스 업체에 종속적
  • 마이그레이션의 어려움
  • 실행 시간 한계 (AWS Lambda의 경우 15분)
  • 로컬 데이터를 사용불가 (Stateless)
  • 디버깅이나 테스팅이 어려움
profile
기록하며 공부하는곳

0개의 댓글