Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- lambda
- SQL
- 조합
- Test
- hashcode
- KEVISS
- 바이너리 카운팅
- DI
- jpa
- StringBuilder
- 재정의
- DDL
- 필드 주입
- select_type
- 생성자 주입
- jwt
- Spring
- static
- equals
- java
- stream
- 인덱스
- cache
- VUE
- docker
- 열 속성
- MSA
- redis
- AOP
- 테스트 코드
Archives
- Today
- Total
백엔드 개발자 블로그
Serverless란? 본문
서버리스(Serverless)란 무엇인가?
서버(Server) + 리스(Less)의 합성어라 간혹 '서버가 없다'라고 문자 그대로 이해할 수 있지만, 절대 그렇지 않다.
서버리스(Serverless)는 클라우드 컴퓨팅의 모델 중 하나로 개발자가 서버를 직접 관리할 필요가 없는 아키텍처를 의미한다.
서버리스는 동적으로 서버의 자원을 할당한다.
사용자가 없다면 자원을 할당하지 않고 대기하다 요청이 들어오면 그 때 자원을 할당해서 요청을 처리하고 다시 대기 상태로 들어가게 된다.
자원을 효율적으로 사용할 수 있다.
실제 사용 자원에 대해서만 청구되기 때문에 경제적이다.
서버에 대해 일절 관리하거나 신경 쓸 필요가 없어 비즈니스 로직에 집중하여 개발을 할 수 있다.
서버리스 아키텍처(Serverless Architecture)의 구현 방식
서버리스 아키텍처의 대표적인 두 가지 구현 방식은 다음과 같다.
- FaaS (Function as a Service) : AWS Lambda, Microsoft Azure Function, Google Cloud Functions ... 등
- BaaS (Backend as a Service) : Firebase, Kinvey, Parse ... 등
두 가지 구현 방식으로 나뉘지만, 일반적으로 서버리스라고 하면 FaaS를 가리킨다.
FaaS(Function as a Service)
FaaS는 Function 즉, 함수를 서비스로 제공한다.
1. 업로드한 코드를 함수 단위로 쪼개 대기상태로 둔다.
2. 요청이 들어오면 대기 -> 함수를 실행
3. 끝나면 다시 대기상태로 만든다.
FaaS의 특징
1. Stateless
- FaaS 서비스는 함수가 실행되는 동안에만 관련된 자원을 할당하게 되며, 함수가 항상 같은 머신에서 실행된다는 보장이 없다. 따라서 함수 실행 시 로컬에서 어떤 상태(State)가 유지될 수 없다. 이를 해결하고 싶다면 메모리에 상태를 저장하지 않고 AWS의 경우 S3을 이용하거나 아예 DB를 사용해야 한다.
2. Ephemeral
- 함수는 특정 이벤트가 발생했을 때만 컨테이너로서 배포되고, 실행이 끝난 후엔 자원이 회수되므로 일시적으로만 배포된다고 할 수 있다.
BaaS (Backend as a Service)
백엔드에 필요한 환경 + 기능들(인증, DB, 사용자 관리 등)을 제공한다.
누가 BaaS를 사용해야 할까?
- Backend 지식이 없는 Frontend 개발자
- 빠른 개발을 원하는 Backend 개발자
어떤 유형의 프로젝트가 BaaS와 잘 어울릴까?
- 실시간 응용프로그램(채팅, 메시지 앱)
- 교통 앱
- 소셜-네트워크 유형 앱
- 전자상거래 앱
- 음악 또는 영상 스트리밍 앱
- 게임
서버리스(Serverless)의 장단점
장점
- 기존 IaaS나 PaaS와는 다르게 실제 사용량에 대해서만 비용이 청구되므로 경제적
- 서버에 신경 쓸 필요가 없으므로 개발자 생산성 향상 및 개발 시간 단축
- 자동 스케일 업 및 스케일 다운
- 간단한 패키징 및 배포
단점
- Cold Start
- 서버가 항시 요청에 대기하고 있는게 아니라 느리다. 프로젝트 규모가 작다면 크게 신경쓸만한 사항은 아니지만 규모가 커지거나 속도를 요구하는 프로젝트라면 서버리스는 좋은 선택이 아닐 수 있다.
- 실행 시간 한계
- 서버리스는 단순 작업(댓글 쓰기, 이메일 보내기 등)에는 적합하지만 긴 시간이 필요한 작업(동영상 업로드, 데이터 백업 등)에는 굉장히 비효율적이다. 서버리스는 함수가 1회 호출 될 때 사용할 수 있는 메모리 및 시간에 제한이 있기 때문이다. 만약 작업이 끝나지 않은채로 해당 시간이 지나면 작업이 완료될때까지 일정 시간마다 계속 함수를 다시 호출하게 된다.
- 클라우드 제공 플랫폼에 종속적
- 디버깅 및 테스트 불편
서버리스(Serverless)를 추천하는 대상
서버리스는 사이드 프로젝트(토이 프로젝트)나 빠르게 시제품(초기 서비스)을 런칭하고 싶은 경우에 추천한다.
쉽고 빠르게 제품을 출시할 수 있으며, 돈도 매우 절약된다.
'Server' 카테고리의 다른 글
토큰 기반 인증 vs 서버 기반 인증 (0) | 2023.08.30 |
---|---|
렌더링 (0) | 2023.08.30 |
Scale-Up 과 Scale-Out (0) | 2023.08.30 |
클라우드 컴퓨팅 (0) | 2023.08.30 |
REST API (0) | 2023.08.30 |