서버리스
서버 구축
- 인터넷 및 네트워크 구축
- 서버 하드웨어
- 서버 운영체제
- 서버 미들웨어
- 그리고 애플리케이션 개발 및 배포
를 해야 한다.
어려움
- 서버 안정성 - 대용량 트래픽을 제공하는 서버 구축은 복잡하고 어렵다. 안정적이고 확장 가능한 서버는 초심자가 수년간 연구해도 도달하기 어려운 경지
- 악의적 공격에서 방어
- 관리
- 서버 애플리케이션 유지보수의 신속성 (비상 대기)
서버리스란
개발자가 서버를 관리할 필요 없이 애플리케이션을 빌드하고 실행 할 수 있도록 클라우드 네이티브 개발 모델
- 사실은 서버가 존재 한다.
- 개발자 입장에서 서버에 구축 및 관리에 에너지를 아낄 수 있다.
서버리스 구조
- 서버 하드웨어 및 운영체제 제공
- 데이터베이스 제공
- 메모리 캐시
- 함수 서비스
- 모니터링 서비스
- 공통 기능 제공 (유저, 계정, 팀, 분석 등)
개발자는
- Database, Collection을 SQL이 아닌 다른 형식으로 정의하고
- Function을 구현하여 서버리스에 올리면 된다.
- 초보자도 쉽게 서비스를 구성할 수 있다.
서버리스 분류
BaaS
- 서비스로서의 백엔드
- 개발자가 다양한 서드파티 서비스와 애플리케이션에 액세스 가능
- 인증 서비스
- 암호화
- 데이터베이스
- API를 통해서 호출
Faas
- 서비스로서의 함수
- 일반적인 서버리스 개념
- 사용자 정의 로직을 작성 가능
- 클라우드 서비스 컨테이너에서 구동
- BaaS와 달리 FaaS는 개발자에게 더 많은 제어권 제공합
서버리스 장단점
장점
- 쉽게 대용량 확장이 가능한 서버 구성
- 개발 기간 단축 - 시간은 돈
- 대용량 서버를 연구해 온 전문가들이 제공하는 안정적인 서비스 활용
- 가격 저렴 - 요청이 들어 올때를 기준으로 지불 - 일정 사용량 이하는 무료로도 제공
단점
- 락인
- 직접 DB 액세스 하지 않고 제공하는 라이브러리를 통해 접근
- 특정 서버리스 서비스에 발목 잡힘
- 서비스 업체를 옮기려면 소스코드를 다시 작성
- 인프라 자체에 문제가 생길 경우 통제 불가능
- 슬립으로 인한 딜레이 발생 가능성
- 사용되지 않는 경우 함수가 슬립 상태 진입
- 요청시 슬립 상태에서 깨어나므로 딜레이 발생 가능
- 게임, 주식 매매 등에는 적합하지 않음
- AWS Lambda 는 5분 후 Sleep
- 시간 제약
- 함수 실행 시간에 제약이 있음 (설정 가능)
- 딥러닝 등 장시간 구동하는 서비스에는 적합하지 않음
서버리스 사용
- 넷플릭스
제공업체 및 서비스 이름
- AWS
- Lambda
- Azure
- Functions
- Google
- Cloud Functions (FaaS)
- Firebase (BaaS)
- CloudFlare
- Workers
- Vercel
- Appwrite