🌼 서버리스
클라우드 컴퓨팅의 모델 중 하나로 개발자가 서버를 직접 관리할 필요가 없는 아키텍처
서버리스는 동적으로 서버의 자원을 할당한다.
사용자가 없으면 할당하지 않고 대기하다 요청이 들어오면 그때 자원을 할당해서 요청을 처리하고 대기 한다.
비용은 대기상태를 제외한 실제 사용 자원에 대해서만 청구 된다.
개발자는 스케일링,업데이트,백업,보안등 신경 쓸필요가 없어진다.
⛔️ 서버리스 아키텍쳐 구현 방식
1️⃣ Faas(Function as a Service)
AWS Lambda, Microsoft Azure function, Google Cloud Functions 등
함수를 서비스로 제공
서버를 업로드하면, 업로드한 코드를 함수 단위로 쪼개 대기상태로 둔다
요청이 들어오면 서버가 대기상태에 두었던 함수를 실행시켜 처리한 후 작업이 끝나면 다시 대기상태
비용은 함수 호출 횟수에 따라 청구된다.
평소에는 대기하다가, 요청이 들어오면 서버가 켜지며 요청을 처리한후 다시 대기하게 된다.
🐶 Stateless
함수가 실행되느 동안에만 관련된 자원을 할당, 함수가 항상 같은 머신에서 실행된다는 보장이 없다.
함수 실행 시 로컬에서 어떤 상태(State)가 유지될 수 없다.
메모리에 상태를 저장하지 않고,AWS -> S3를 이용하거나 DB를 사용해야한다.
🐶 Ephemeral
특정 이벤트가 발생했을 때만 컨테이너로서 배포
실행이 끝난 후엔 자원이 회수되므로 일 일시적 배포
2️⃣ Baas(Backend as a Service)
Firebase, Kinvey, Parse 등
일반적으로 SPA, 안드로이드와 같은 클라이언트 중심으로 개발된 어플리케이션
클라이언트단에서 BaaS가 제공하는 인증, DB, 사용자 관리 등과 같은 백엔드 관련 외부 서비스를 사용
대부분의 비즈니스 로직을 처리
SNS연동이나 DB와 같이 백엔드에 필요 기능들을 직접 구현할 필요 없이, Open API로 기능 구현이 가능하다.
클라우드 공급자가 백엔드 개발 환경까지 제공해준 다고 생각
⛔️ 서버리스 장단점
🫥 장점
실제 사용량에 대해서만 비용이 청구
서버에 신경 쓸 필요 없으므로 개발자 생산성 향상 및 개발 시간 단축
자동 스케일 업/다운
간단하게 배포 가능
🫥 단점
Cold Start : 서버가 항시 요청에 대기하고 있지않아 느리다.
실행 시간 한계 : 긴 시간이 필요한 작업에는 굉장히 비효율 적이다.
(함수가 1회 실행될 때 사용할 수 있는 멤모리 및 시간에 제한이 있다.)
클라우드 제공 플랫폼에 종속적
디버깅 및 테스트 불편
참조