
Serverless
서버를 관리할 개발자나 인프라 엔지니어가 필요 없다는 의미다. 서버를 관리할 필요가 없으며 프로비전 없이 특정 기능에 대한 코드를 실행할 수 있다. Serverless 방식이 등장하기 이전 대표적인 2가지 컴퓨팅 인프라 구축 방법의 한계점을 보완하기 위해 등장하였다.
컴퓨팅 인프라 구축 방법
1. 데이터 센터(온 프레미스)
물리적인 하드웨어(서버)를 직접 구매하여 해당 서버에 직접 OS와 런타임 환경을 설치하고 실질적인 서비스를 제공하는 서버를 설치하는 방식이다. 과거 2년 전 직장에서 DELL 서버를 직접 구매하여 설치하고 선 정리와 UPS를 도입하는 등 온 프레미스 환경을 직접 구축해 보았다.
- 하드웨어와 소프트웨어를 직접 관리해아함
- 데이터 센터 내부의 정전이나 천재지변 수준의 재난 발생 시 복구가 어려움
- 개발자는 실질적인 비즈니스 로직에 집중할 수 없음
2. 클라우드(IaaS/PaaS)
클라우드 서비스 업체(aws 등)를 통해 비용을 지불하고 가상의 서버를 대여하는 방식을 의미한다. 대표적으로 AWS EC2와 Google의 GCP 그리고 Microsoft Azure가 있다.
- 물리적인 서버를 관리할 필요가 없음
- 높은 확장성과 탄력적인 리소스
- 자본 비용(물리적 서버 구축)에서 운용 비용(OnDemand) 방식으로 변경
- 고가용성과 장애 내구성을 확보하기 위해 Auto Scaling과 ELB와 같은 서비스의 도움을 받아야 함

3. 서버리스
개발자가 서버를 관리할 필요 없이 애플리케이션을 빌드하고 실행할 수 있도록 해주는 클라우드 네이티브 방식을 의미한다. 실질적인 서버는 추상화되어있으며 클라우드 서비스 업체가 서버에 대한 프로비저닝과 유지 보수 등 실질적인 관리를 해주므로 사용자는 코드를 배포하기만 하면 된다. 하지만 Serverless 환경을 잘 활용할 수 있는 아키텍처 구성이 요구되고 병렬 처리와 이벤트 기반 등의 로직을 잘 구성해야 한다.
- 서버의 관리와 프로비전 없이 코드를 실행할 수 있음
- 사용한 만큼만 비용을 지불(True OnDemand)
- 인프라 차원에서 고가용성과 내구성이 확보됨으로 별도로 고민할 필요 없음
- 빠르게 배포하고 업데이트 가능
서버리스 모델
Baas(Backend as a Service)
애플리케이션 개발을 위해 필요한 수많은 기능(데이터베이스 소셜 서비스 파일 서비스 등)들을 API 형태로 제공하는 방식을 의미한다. 개발자는 실질적인 서버 개발을 하지 않고도 내 서비스에 필요한 적절한 기능들을 빠르고 쉽게 구현할 수 있으며 비용 또한 사용한 만큼 지불한다(True OnDemand)
- 복잡한 백엔드 기능들을 직접 구현하지 않고 BaaS를 이용
- 게임 백엔드는 GBaaS 모바일은 MBaaS
Faas(Function as a Service)
BaaS와 다르게 개발자가 직접 필요한 코드(기능)를 작성하지만 기능이 실행되는 환경(컨테이너)의 유지 보수는 클라우드 서비스 업체에 맡기는 방식을 의미한다. 즉 함수(서비스 기능)를 서비스로 제공하며 개발자는 비즈니스 로직에만 집중할 수 있다. 대표적으로 AWS Lambda와 Google의 Google Cloud Function 그리고 Microsoft의 Azure Function이 있다.
- 서비스에 필요한 함수를 작성 후 등록
- 등록된 함수가 어떤 이벤트를 통해 호출될지 설정
BaaS | Faas |
기능에 대한 코드를 직접 작성하지 않음 | 기능에 대한 코드를 직접 작성함 |
전체 애플리케이션 배포 후 서버에서 항상 실행 | 함수 배포 후 작업 종료나 일정 시간 후 종료 |
서버리스 장단점
장점 | 단점 |
실행된 만큼만 청구되므로 경제적 | 일정 시간 요청이 없으면 수면 상태(Cold Start) |
서버를 관리할 필요가 없으므로 비즈니스 로직 집중 가능 | 오래 걸리는 작업(동영상/백업 등)에 부적합 |
자동으로 확장되므로 높은 가용성 | 무상태성(Stateless)이므로 데이터 공유 불가 |
간단한 배포로 인한 높은 생산성 | 클라우드 서비스 업체에 대한 종속성 |
참고 자료
https://www.redhat.com/ko/topics/cloud-native-apps/what-is-serverless
https://aws.amazon.com/ko/serverless/
'클라우드' 카테고리의 다른 글
AWS IAM (0) | 2022.11.10 |
---|---|
AWS Serverless Lambda (0) | 2022.10.07 |