본문 바로가기
Research/Server

서버_Serverless란

by RIEM 2023. 2. 6.
728x90

요약

  • 소프트웨어, 하드웨어 모두 내가 구축하겠다 -> 온 프레미스 방식
  • 소프트웨어만 내가 관리하겠다 -> 클라우드
  • 중요한 기능만 내가 구현하고 그 외 기능 구현 및 하드웨어 관리는 하기 싫다 -> 서버리스

서버리스 탄생 배경

온 프레미스(On-Premise)

  • 정의 : 직접 서버를 구축하는 것(하드웨어 + 소프트웨어 모두 관리)
  • 예시 : 하드웨어 기기를 사서 집에서 직접 가동시키는 것
  • 단점
    • 서버 트래픽 몰릴 시 직접 하드웨어 업그레이드를 해주는 등 관리를 해줘야 하는 번거로움이 있음
    • 이러한 문제를 해결하는 것이 -> 클라우드 서비스

클라우드

  • 정의 : AWS EC2와 같이 개발자가 돈만 내면 서버를 쉽게 대여할 수 있는 서비스(소프트웨어만 관리)
  • 장점 : 사고에 의한 서버 다운, 성능 개선 등 고민할 필요가 없음
  • 단점 :
    • 여전히 소프트웨어는 직접 관리해야 함. 서버는 비어있기 때문에 관련 소프트웨어를 설치하고 업데이트해줘야 함
    • IaaS, PaaS 모델의 경우, 실제 유저 수와 무관하게 동일한 비용을 내는 정액제. 1000명이나 0명이나 같은 요금

서버리스에 대해

서버리스(Serverless)란?

  • 아키텍처 관점 : 서버리스는 서버를 직접 관리할 필요가 없는 아키텍처를 의미. 서버가 실제로 없는 것은 아니라 추상화된 것.
  • 개발 패러다임 관점 : 개발자가 서버 관리할 필요없이 어플리케이션을 구축할 수 있는 클라우드 네이티브 개발 모델
  • 모델 관점 : 특정 코드 실행 시, 필요한 컴퓨팅 리소스와 스토리지만 동적으로 할당한 뒤 그 사용량에만 비용 청구하는 클라우드 실행 모델

서버리스 원리

  1. 개발자가 서버리스에 업로드한 함수는 일단 휴면 상태로 대기
  2. 사용자 요청 시 서버리스는 잠든 함수를 깨워 요청한 작업을 수행한다
  3. 작업 완료 후 다시 휴면 상태로 돌아간다

서버리스 아키텍처 구현 방식 유형

  1. BasS
  2. 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 생성 단계

  1. 개발자가 자신의 어플리케이션 내 FaaS 함수 호출하는 구문을 먼저 삽입한다
  2. 어플리케이션 실행 후, FaaS에게 Rest API 형식 HTTP 요청이 온다
  3. FaaS는 해당 함수를 저장소로부터 읽어온다
  4. 해당 함수를 컨테이너 혹은 가상머신으로 생성한다
  5. 해당 함수 포함한 컨테이너 혹은 가상머신 생성 완료 후, 함수를 실행한다. 함수는 결과를 반환하거나 또는 그냥 수행을 한다
  6. 이후 일정시간 동안 함수 호출이 없으면 함수 포함하는 컨테이너 혹은 가상머신은 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

댓글