Serverless
주로 BaaS와 FaaS에 의존하는 아키텍처를 Serverless라고 부른다
BaaS : 앱개발자가 서버 기술을 몰라도 그 환경에 연결되는 모바일앱을 만들 수 있게 돕는 환경이다. 클라우드 서비스형 플랫폼(PaaS)에 속하는데 '서버와 통신하는 모바일앱 개발에 필요한 특정 기능(백엔드)을 지원하는 환경'으로 묘사된다.
FaaS : 서비스로서의 기능(Function-as-a-Service, FaaS)이란 스테이트리스(stateless) 컨테이너에서 실행되는 이벤트 기반 컴퓨팅 실행 모델로서, 서비스를 사용하여 서버측 로직과 상태를 관리합니다.
martinfowler.com/bliki/Serverless.html
좀더 정확한 뜻: 앱개발을 할 때 보통의 서버 프로세스를 사용하지 않는, 인터넷 기반 시스템
보통 서버가 관장하던 일을 많은 3rd party 서비스로 대체하게된다 (Amazon AWS, Azure 등의 서비스 이용)
"보통 서버가 관장하던 일"은 무엇인가?
1. request-response cycle을 제어하는 일이다
Serverless로 오면서 이것은 client side control flow 혹은 dynamic content generation으로 바뀌게 된다
2. business logic
serverless로 오면 더이상 application 살아있는 동안 계속해서 일을 해주어야 했던 long lived server를
훨씬 짧은 수명을 갖는 custom code component가 대체한다. 이 custom code component는 HTTP request/response cycle 하나와 비슷한 수명을 갖는다. 즉 request 요청을 받아서 작업을 하고 response를 돌려주면 죽는다.
이러한 custom code component는 보통 <Amazon Lambda>, <Azure Function> or <Google Cloud Functions>에 있는데, 이러한 스타일의 organizing software를 우리는 FaaS라고 부르는 것이다.
이렇게 FaaS를 사용하면 서버비용을 획기적으로 단축시킬 수 있다.
장점
- 비용
- scale이 더 쉽다 (크기 줄였다 늘렸다)
단점
- local development, unit testing이 어려움