서버리스 서비스

cabbage·2023년 2월 27일
0

기타

목록 보기
14/26

서버리스 서비스

서버리스 서비스는 직접 관리하는 백엔드 서버가 존재하지 않는 것으로 클라우드 제공업체들의 cloud function을 활용하여 함수 단위(Function-as-a-Service, FaaS)로 API를 배포하는 것을 말한다.

  • 개발자가 서버를 관리하지 않고 애플리케이션을 빌드하고 실행할 수 있게 해주는 클라우드 네이티브 개발 모델이다.
  • 클라우드 제공업체들이 서버 인프라에 대한 프로비저닝, 유지 관리, 스케일링 등의 작업을 처리해준다.
  • 서버리스로 서비스를 제공하는 경우 애플리케이션은 자동으로 스케일링되며, 이벤트 기반의 실행 모델을 통해 API 요청에 따라 API를 처리하는 cloud function이 실행된다.
  • 서버리스를 사용하면 개발자들은 다음과 같은 것들을 더이상 관리하지 않는다.
    • 트래픽에 따른 서버 스케일링
    • 서버 운영을 위한 소프트웨어 관리
    • 서버 모니터링

서버리스 서비스 절차

  1. 브라우저에서 API를 요청한다.
  2. 클라우드의 cloud function을 사용한 API 요청이 이루어진다.
  3. API 요청이 이루어지는 cloud function에서 DB에 접속하여 데이터를 등록하거나 조회하여 응답한다.

서버리스 서비스 장단점

장점

  1. API 요청이 있을 때에만 해당 API를 처리하는 cloud function이 호출되어 실행되는 비용만 발생한다. 따라서 24시간 서버를 유지하는 비용보다 비용을 절감하는 효과가 있다.
  2. 개발 생산성을 높일 수 있다. 서버 관리 같은 업무의 부담을 줄여주므로 애플리케이션 개발에 더 집중할 수 있다.

단점

  1. cold start 문제점이 존재한다.
    • 서버를 24시간 동안 유지하지 않는 대신, API 요청을 처리하는 cloud function을 실행하려면 VM이 실행되어야 한다.(서버를 켜야한다.)
    • 이때 서버를 실행하기 위한 시간이 필요한데, 이를 cold start라고 한다.
    • 서버를 실행하는 시간이 필요하므로 요청에 대한 응답이 늦어질 수밖에 없다.
    • 서버가 켜진 후에는 요청을 일정 시간 동안 대기한다. 대기 시간 동안 요청이 들어오면 응답을 빠르게 처리할 수 있지만 일정 시간 동안 요청이 들어오지 않으면 서버를 종료시킨다.
    • cold start 문제를 해결하고자 서버가 계속 켜진 상태를 유지하도록 더미 요청을 계속 보내는 방법이 있지만, 24시간 동안 서버를 유지하는 것과 같아지므로 비용 절감의 효과가 없어진다.
  2. 리소스의 한계가 있다.
    • 등록할 수 있는 함수의 메모리 사이즈에 제한이 있다.
    • 함수 실행 시간의 제한이 있다.
  3. 상태가 없는, 독립적이고 개별적인 함수를 만들어야 한다.
    • 서버리스 함수는 상태를 가질 수 없다.
    • 이벤트 발생 시 함수가 독립적이고 개별적으로 실행되므로 함수 내부에서 전역 데이터를 참조할 수 없다.
  4. 클라우드 제공업체의 규칙을 따라야 하므로 시스템의 유연성과 커스터마이징에 제한을 줄 수 있다.

참고

profile
캐비지 개발 블로그입니다. :)

0개의 댓글