[아키텍처] 2장. 서버리스 아키텍처란?
Serverless != No Server
서버리스란?
- 서버가 필요 없다는 뜻은 아니다! 클라우드상에 서버는 존재한다.
- 하지만 고객이 스스로 관리해야 하는 서버나 컨테이너가 거의 없다.
- 이벤트(트리거)에 따라 동작하는 나노 수준의 함수로 구성된다.
- 이 함수의 코드만 집중해 개발하고, 바로 배포한다.
BaaS (Backend as a Service) :
Firebase
…FaaS (Function as a Service) :
AWS Lambda
,Azure Functions
,Google Cloud Functions
…
- 프로젝트를 여러개의 함수로 쪼개, 분산된 컴퓨팅 자원에 이 함수를 등록하고, 실행 횟수에 따라 비용을 낸다!
서버리스 아키텍처
-
Amazon API Gateway
+AWS Lambda
+AWS 기존 서비스
-
AWS의 서비스 철학과 잘 맞다.
- 최소 단위의 다양한 서비스들을 자유롭게 끼워맞춰, 새로운 아키텍처를 설계, 구성하도록 하는 것!
-
팀 와그너 (AWSLambda 서비스 개발 총괄)의 서버리스 선언문*(Serverless Menifesto)
함수(Function)가 서비스의 기본 배포 및 확장 단위이다. 프로그래밍 모델에서 물리 서버, 가상 서버 및 콘테이너에 대한 의존성을 제거하라 데이터 스토리지는 어딘가 무제한으로 있다고(사용한다고) 가정하라 사용자가 아닌 오로지 요청(Request)에 대해서만 확장하라 요청이 없는데 돈을 낼 필요가 없다(가상 서버나 콘테이너도 여전히 비효율적이다). 함수의 실행은 어디서나 가능하므로, 장애 복원력을 가지도록 만들어라 BYOC(Bring your own code) ?나만의 서비스를 책임지고 만들 수 있다! 통계 수집 및 로그 취득은 보편적인 필수 사항이다.
서버리스의 장단점
-
장점
-
비용 : 필요할 때만 함수를 호출하고, 그만큼만 비용이 드므로 절약된다.
-
인프라 관리 : 인프라 구성 및 보안 등 신경써야 할 것이 줄어든다.
-
확장성 : 확장을 위해
AWS Auto Scaling
같은 기술도 필요 없다. 그냥 많이 쓰면 확장…
-
-
단점
-
자원의 제한 : 메모리와 처리 시간에 한계가 있다.
-
로컬 데이터 사용 불가능 : 함수들은 stateless하므로 로컬 데이터를 사용할 수 없다.
-
불편함 : 디버깅이나 테스팅에 불편함이 있다.
-
-
Use Case
- 크롤러 : 주기적으로 페이지를 긁는 일
- 파일 처리 : 업로드와 함께 화질이나 사이즈 조정 (내가 할 일!)
- 로그 분석 및 처리, 실시간 모니터링
- 자동화 작업 등등 …