Operation/System Architecture

서버리스(Serverless)란 무엇인가?

JaeHoney 2021. 10. 5. 13:49

서버리스란 ?

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

하지만, 서버가 없는 것은 아니고, 서버를 직접 관리할 필요가 없는 아키텍처를 뜻해서 서버리스 아키텍처(Serverless Architecture)라고 부르는 것 같습니다.

 

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

 

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

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

  • 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)
  • 디버깅이나 테스팅에 불편하다.

 

 

서버리스는 특히, 사이드 프로젝트나 빠르게 프로토타입을 출시할 때 빠르고 쉽게 제품을 출시할 수 있고, 돈도 매우 절약됩니다. 서버리스 시장은 무섭게 성장하고 있고, 관심을 가져서 더 좋은 운영 환경을 고려하는데 도움이 되었으면 합니다.

 

 

관련글