서버리스 개념

server

작성일 : 2024.07.06

요즘 AWS에 배포한 서비스들의 서버 비용이 너무 많이 청구되어 비용문제를 해결하기 위해 알아보던 중 서버리스에 대해 알게 되었고 이를 정리하기 위해 글을 작성합니다.

서버리스 아키텍쳐 란?

서버리스는 진짜로 서버가 없다는 의미가 아니라 서버를 직접 관리하지 않아도 코드를 실행할 수 있는 환경 입니다.

코드를 실행할 저장공간은 있어야합니다.

서버리스의 특징

서버리스의 특징으로는 사용자는 클라우드에서 코드만 업로드하면 클라우드 제공자가 서버의 프로비저닝, 운영체제 관리, 패치 적용을 관리하며 자동으로 실행됩니다.
서버리스 어플리케이션은 이벤트 요청시에만 실행되며 트래픽이 증가 했을때 자동으로 리소스를 확장하고 트래픽 감소시 리소스를 축소되어 사용한 만큼의 비용을 지불해 비용 절감의 효과가 있습니다.

이러한 이유로 기존 클라우드 컴퓨팅 모델에 비해 운영 부담이 줄고 경제적입니다.

서버리스 모델

FaaS(Function as a Service)

FaaS는 이름 그대로 이벤트를 기반으로 애플리케이션의 함수를 실행시켜 서비스를 제공합니다.

HTTP 요청이나 파일 업로드 등의 이벤트가 발생하면 서버는 이벤트를 감지해 대기시켰던 함수를 리소스를 할당해 함수를 실행시켜 결과를 반환한 후 리소스를 대기 상태로 유지합니다.

FaaS를 제공하는 플랫폼으로는 AWS Lambda, Google Cloud Functions, Azure Functions 등이 있습니다.

참고자료

Backend-as-a-Service (BaaS)

BaaS는 백엔드 개발에 필요한 기능을 API로 제공하는 서비스입니다.

사용자 인증이나 권한관리, 테이터베이스 연동등 어플리케이션 개발에 필요한 여러 기능을 제공해 서버 개발을 하지 않아도 빠르고 쉽게 구현 할 수 있게 됩니다.

로그인이나 데이터쿼리등의 요청이 들어오면 BaaS가 제공하는 API를 호출해 해당 요청을 수행합니다.

BaaS를 제공하는 대표적인 서비스는 Firebase가 있습니다.

참고자료

서버리스의 장단점

장점

비용

  • 실제 사용량에 대해 비용이 청구되어 경제적입니다.

빠른 배포

  • 서버 관리 없이 코드만 작성하면 즉시 배포할 수 있습니다.

유연한 확정성

  • 트래픽에 따라 자동으로 확장하고 축소합니다.

서버 관리 불필요

  • 서버에 대한 관리가 필요 없어 어플리케이션 개발에 집중할 수 있습니다.

단점

Cold Start

  • 요청할 때마다 서버가 실행되기 때문에 첫 요청에 대한 지연이 발생할 수 있습니다.

실행 시간 제한

  • 서버리스는 함수가 1회 호출될 때 사용할 수 있기 때문에 긴 시간이 필요한 작업등에는 어려움이 있습니다.

종속성

  • 클라우드 제공자에게 종속될 부감감이 큽니다.

디버깅 및 모니터링의 어려움

  • 서버에 대한 접근이 불가능하기 때문에 디버깅이나 모니터링이 어렵습니다.