728x90
요약
- 소프트웨어, 하드웨어 모두 내가 구축하겠다 -> 온 프레미스 방식
- 소프트웨어만 내가 관리하겠다 -> 클라우드
- 중요한 기능만 내가 구현하고 그 외 기능 구현 및 하드웨어 관리는 하기 싫다 -> 서버리스
서버리스 탄생 배경
온 프레미스(On-Premise)
- 정의 : 직접 서버를 구축하는 것(하드웨어 + 소프트웨어 모두 관리)
- 예시 : 하드웨어 기기를 사서 집에서 직접 가동시키는 것
- 단점
- 서버 트래픽 몰릴 시 직접 하드웨어 업그레이드를 해주는 등 관리를 해줘야 하는 번거로움이 있음
- 이러한 문제를 해결하는 것이 -> 클라우드 서비스
클라우드
- 정의 : AWS EC2와 같이 개발자가 돈만 내면 서버를 쉽게 대여할 수 있는 서비스(소프트웨어만 관리)
- 장점 : 사고에 의한 서버 다운, 성능 개선 등 고민할 필요가 없음
- 단점 :
- 여전히 소프트웨어는 직접 관리해야 함. 서버는 비어있기 때문에 관련 소프트웨어를 설치하고 업데이트해줘야 함
- IaaS, PaaS 모델의 경우, 실제 유저 수와 무관하게 동일한 비용을 내는 정액제. 1000명이나 0명이나 같은 요금
서버리스에 대해
서버리스(Serverless)란?
- 아키텍처 관점 : 서버리스는 서버를 직접 관리할 필요가 없는 아키텍처를 의미. 서버가 실제로 없는 것은 아니라 추상화된 것.
- 개발 패러다임 관점 : 개발자가 서버 관리할 필요없이 어플리케이션을 구축할 수 있는 클라우드 네이티브 개발 모델
- 모델 관점 : 특정 코드 실행 시, 필요한 컴퓨팅 리소스와 스토리지만 동적으로 할당한 뒤 그 사용량에만 비용 청구하는 클라우드 실행 모델
서버리스 원리
- 개발자가 서버리스에 업로드한 함수는 일단 휴면 상태로 대기
- 사용자 요청 시 서버리스는 잠든 함수를 깨워 요청한 작업을 수행한다
- 작업 완료 후 다시 휴면 상태로 돌아간다
서버리스 아키텍처 구현 방식 유형
- BasS
- FaaS
서버리스를 왜 사용하냐?
- 사이드 프로젝트나 프로토타입을 빠르게 출시하고 싶을 때
- 서버 관련 업무들은 클라우드 서비스 제공 업체에 넘기고 싶을 때. 예) 운영 체제, 시스템 관리, 보안 패치, 부하 분산, 용량 관리, 스케일링, 로깅, 모니터링 등
- 댓글 쓰기, 이메일 보내기 등 단순 작업을 대신 수행히줄 때
서버리스 실제 사용 사례
- 배치 작업 : 실시간이 아닌 일괄적으로 작업을 처리해야 할 경우
- 자동화 작업
- 넷플릭스는 동영상 업로드 시 파일 인코딩, 검증, 태깅 이후 공개되는 작업을 AWS Lambda로 자동화
- 비디오 스트리밍 앱 개발사 Periscope는 동영상 유해성 여부 확인 기능을 AWS Lambda 사용
- 분석과 모니터링
- 온라인 패션 매거진 Bustle은 하루 1억건 이벤트 처리와 분석 리포팅에 서버리스 적용하여 84% 비용 절감
- 챗봇 서비스
- 챗봇 서비스에서 API 요청을 처리할 때
- 슬랙 기반 챗봇 앱, Amazon Echo 이용한 음성 인식 어플리케이션에 주로 사용
BaaS(Backend as a Service)란?
- 설명 : 서버 개발 관련 기능(회원 관리, DB, 소셜 서비스 연동 등)을 직접 구현하지 않고 클라우드 공급자가 제공하는 서비스를 API로 제공받는 서비스
- 장점 : 개발 시간을 단축
- 예시 : Firebase, Kinvey, Parse ...
- 유형 : GBaaS(클라우드 게임서버엔진), MBaaS(모바일) 등이 있다
- 적용 대상 : 주로 안드로이드와 같은 클라이언트 중심으로 개발된 어플리케이션이 BaaS를 주로 사용
- 비용 : 서버 사용 시간에 따라 비용 지불
- 작동 원리 : Rest API 같은 HTTP 요청을 통해 함수에 파라미터를 전달한 뒤 리턴값을 받거나 함수 동작 시작 이벤트를 발생시킨다
FaaS란
- Function as a Service
- 개발자가 작성한 코드를 클라우드 제공 업체가 관리하는 전담 서버 컨테이너에서 실행해주는 서비스
- 예시) AWS Lambda, Azure Functions, Google Cloud Functions
- 비용 : 함수 호출 횟수와 실행 시간에 따라 비용 지불
- 작동 원리 : 서버에서 수행할 기능을 개발자가 직접 코드로 작성하여 등록
FaaS 생성 단계
- 개발자가 자신의 어플리케이션 내 FaaS 함수 호출하는 구문을 먼저 삽입한다
- 어플리케이션 실행 후, FaaS에게 Rest API 형식 HTTP 요청이 온다
- FaaS는 해당 함수를 저장소로부터 읽어온다
- 해당 함수를 컨테이너 혹은 가상머신으로 생성한다
- 해당 함수 포함한 컨테이너 혹은 가상머신 생성 완료 후, 함수를 실행한다. 함수는 결과를 반환하거나 또는 그냥 수행을 한다
- 이후 일정시간 동안 함수 호출이 없으면 함수 포함하는 컨테이너 혹은 가상머신은 FaaS 시스템에 의해 삭제된다
서버리스의 장점
- 비용이 경제적이다. 이벤트 기반으로 비용을 책정하여 리소스를 효율적으로 사용하기 때문. AWS Lambda는 100만 회 실행 당 0.2달러
- 비즈니스 로직에 집중 가능. 인프라 구성, 운영, 보안 등에 신경쓸 필요가 없기 때문 -> 어플리케이션 품질 향상
- 자동 스케일 조정 -> 유연한 확장
- 단기간 이벤트성 트래픽 감당하는 경우 효과적
- 패키징 및 배포가 간단하다
- 릴리즈 주기를 줄일 수 있다
- 생산성이 높다
서버리스의 단점
Cold Start
. 실시간 서비스에는 부적합. 이벤트 기반으로 서버 실행과 종료를 반복하여 실행 대기 시간이 길어지기 때문- 클라우드 서비스 업체에 종속적. 어플리케이션 구조를 서버리스에 맞춰 바꿔야하기 때문에 플랫폼을 바꾸기가 힘들다
- 마이그레이션이 어려움
- 로컬 데이터 사용 불가. Stateless적으로 구현해야 하기 때문
- 디버깅 및 테스팅이 어렵다
레퍼런스
https://www.redhat.com/ko/topics/cloud-native-apps/what-is-serverless
https://jaehoney.tistory.com/77
https://inpa.tistory.com/entry/WEB-%F0%9F%8C%90-%EC%84%9C%EB%B2%84%EB%A6%AC%EC%8A%A4ServerLess-%EA%B0%9C%EB%85%90-%F0%9F%92%AF-%EC%B4%9D%EC%A0%95%EB%A6%AC-BaaS-FaaS
728x90
'Research > Server' 카테고리의 다른 글
서버_Nginx란 (0) | 2023.03.06 |
---|---|
PM2 모듈 기본 사용법 (1) | 2023.03.01 |
서버_Forward Proxy, Reverse Proxy, Load Balance (0) | 2023.02.06 |
서버_Nginx를 왜 쓰는가? (0) | 2023.02.06 |
서버_네이버의 Node.js API 서버 개선 사례 (0) | 2023.02.03 |
댓글