서버리스란 무엇인가?
말 그대로 서버가 없는것이 아니라 인프라 엔지니어나 개발자가 관리하는 서버가 없다는 뜻으로 해석을 하면 편함
- 사용자는 클라우드 서비스 공급자가 제공한 주소로 요청을 전송
- 클라우드 서비스는 메시지를 기반으로 요청에 응답하는 데 사용할 패키지를 찾음
- 패키지가 선택되면 패키지를 실행할 도커 컨테이너로 로드한다
- 도커 컨테이너가 실행되고 요청이 처리
- 생성된 응답을 요청한 사용자에게 전송
클라우드 서버리스 서비스로는 BaaS(Backend as a Service) , FaaS(Function as a Service) 등이 있고 대표적으로 Firebase, AWS Lamda , Azure Functions, Google Cloud Functions 등이 있음
해당 서비스들은 도커 컨테이너가 실행되고 해당 함수 안에 정의된 프로세스를 완료한 시간(초) 만큼 과금이 부여됨
기존 IaaS 등 유휴 서버에 대해서 비용을 지불하는 과금을 서버리스는 유휴 서버에 대해 과금을 지불 하지 않고 실제 함수가 실행된 시간, 리소스 비용만 지불하는 과금 형태
서버리스의 장점
- 확장성
- 고가용성
- 자원의 효율성
- 비용 절감
- 관리 서버의 인력 무
- 지속적인 배포 가능
서버리스의 단점
- 컨테이너 로드의 대기 시간 ( 기존 아키텍쳐보다 시간이 걸림 )
- 클라우드 서비스 업체의 제약조건
- 클라우드 서비스 업체의 종속성
- 어려운 디버깅
- 각 함수마다 배포를 실행 ( 공수가 많이듬 )
- 장시간 실행되는 CPU를 많이 사용하는 작업 불가
- 실시간 처리에 적합하지 않음
- 빈번한 서버 함수 호출에 적합하지 않음
참고자료
https://github.com/PacktPublishing/Building-Serverless-Web-Applicationshttps://www.xenonstack.com/blog/serverless-openfaas-java/
https://velopert.com/3543
댓글
댓글 쓰기