직역하면 서버가 없다라는 뜻입니다.
하지만 진짜 서버가 없다는 것은 아니며, 서버를 직접 관리할 필요가 없는 아키텍처를 뜻해서 서버리스라고 부릅니다.
대표적으로 BaaS, Faas 두가지가 존재합니다.
BaaS를 사용하는 애플리케이션은 일반적으로 SPA, 안드로이드와 같은 클라이언트 중심으로 개발된 애플리케이션입니다.
클라이언트단에서 Bass가 제공하는 인증, DB, 사용자 관리 등과 같은 외부 서비스를 사용해서 대부분의 비즈니스 로직을 처리합니다.
Firebase, Finvey, Parse 등이 BasS에 속합니다.
Faas는 무상태(Stateless) 함수가 서버 측 비즈니스 로직을 포함합니다.
백엔드를 작은 함수단으로 쪼개서 사용자가 직접 관리하지 않는 서버로 올립니다.
함수들은 특정한 조건 또는 주기, 요청 등으로 트리거되어 서버가 알아서 실행되고 종료됩니다.
주로 서버리스라 하면 Faas에 더 가깝습니다.
Aws Lambda, Azure Functions, Google Cloud Functions 등이 Faas에 속합니다.
- 이벤트 기반의 비용 (일정 주기, 조건 등에 함수를 호출하므로 리소스 낭비가 발생하지 않아 비용이 저렴합니다. Aws Lambda의 경우 함수 100만번 실행당 0.2달러 입니다.)
- 인프라 구성, 운영, 보안 등에 신경쓰지 않고 비즈니스 로직에 집중할 수 있습니다.
- 자동 스케일 업 및 스케일 다운
- 간단한 패키징 및 배포
- 릴리즈 주기 감소
- 높은 생산성
- 실시간 서비스에는 적합하지 않음(항시 실행중인 서버랑 달리, 트리거에 의해 서버를 싱행하고 종료하기를 반복하기 때문에 실행 대기 시간이 오래 걸림)
- 클라우드 서비스 업체에 종속적
- 마이그레이션의 어려움
- 실행 시간 한계 (Aws Lambda의 경우 15분)
- 로컬 데이터를 사용할 수 없다. (Stateless)
- 디버깅이나 테스팅에 불편하다.