서버리스(Serverless)
서버리스는 그대로 해석하면 서버가 없다라고 해석될 수 있지만 서버리스의 진짜 정의는 서버를 직접 관리할 필요가 없는 아키텍쳐를 뜻하며 서버리스 아키텍처라고도 부른다. 즉, 서버를 관리하거나 신경 쓸 필요 없도록 해준다.
서버리스 아키텍처의 구현 방식
FaaS(Function as a Service)
함수를 서비스로 제공하며, 사용자가 백엔드에서 작성한 코드를 서버리스 제공자의 서버에 업로드하면 해당 서버는 업로드한 코드를 함수 단위로 쪼개서 대기상태로 둔 다음 요청이 들어오면 대기상태의 함수를 실행시켜 처리한다.
FaaS 특징
- Stateless
FaaS는 함수가 실행되는 동안에만 자원을 할당하며, 함수가 항상 같은 머신에서 실행된다는 보장이 없다.
- Ephemeral
함수는 특정 이벤트가 발생했을 때만 컨테이너로서 배포되며, 실행이 끝난 후엔 자원이 회수되므로 일시적으로만 배포된다.
BaaS(Backend as a Service)
SNS연동이나 DB와 같이 백엔드에 필요한 기능들을 사용자가 직접 구현할 필요 없이 제공하는 API로 해당 기능을 구현할 수 있게 해준다.
서버리스의 장점
- 이벤트 기반이기 때문에 비용이 저렴하다.
- 인프라 구성, 운영, 보안 등에 신경쓰지 않고 비즈니스 로직에 집중할 수 있다.
- 자동 스케일 업 및 스케일 다운이 가능하다.
- 간단한 패키징 및 배포가 가능하다.
- 릴리즈 주기 감소
- 높은 생산성
서버리스의 단점
- 실시간 서비스에는 적합하지 않다.
- 클라우드 서비스 업체에 종속적이다.
- 마이그레이션의 어려움이 있다.
- 실행 시간에 한계가 있다.
- 로컬 데이터를 사용할 수 없다.
- 디버깅이나 테스팅에 불편하다.
참고한 사이트 :
https://jaehoney.tistory.com/77
https://dev-coco.tistory.com/171