서버리스(Serverless)란?

송현진·2025년 5월 15일
0

Architecture

목록 보기
9/18

서버리스(Serverless)는 개발자가 서버 관리에 대한 걱정 없이 비즈니스 로직과 코드 작성에만 집중할 수 있도록 클라우드 제공자가 인프라를 자동으로 관리해주는 클라우드 컴퓨팅 모델이다.

서버리스라는 용어는 "서버가 전혀 없다"는 의미가 아니라 실제 서버는 존재하지만 개발자들이 인프라의 구성, 관리, 유지보수 같은 복잡한 작업들을 하지 않아도 된다는 의미이다. 즉, 서버 관리는 클라우드 서비스 제공자가 자동으로 처리하고 개발자는 단순히 작성한 코드를 클라우드에 업로드하고 실행시키기만 하면 된다.

등장 배경

과거의 소프트웨어 개발 방식에서는 개발자가 애플리케이션을 운영하기 위해 물리적인 서버를 직접 구매하거나 임대하여 운영체제 설치부터 웹 서버, 미들웨어 구성, 배포와 모니터링에 이르기까지 모든 과정에 신경 써야 했다. 이러한 전통적인 방식에서는 트래픽 예측이 힘들었고 예상치 못한 트래픽 급증 시 빠른 확장이 어렵다는 문제점도 있었다. 또한 서버의 유지보수와 보안, 성능 튜닝 등 지속적인 관리 비용도 만만치 않았다. 이러한 불편함을 해결하기 위해 등장한 것이 바로 클라우드 컴퓨팅이며 특히 클라우드 컴퓨팅의 진화된 형태인 서버리스(Serverless)는 서버의 존재 자체를 개발자 시야에서 완전히 제거하여 인프라 관리에 대한 부담을 최소화하였다.

두 가지 주요 형태

서버리스는 크게 BaaS(Backend as a Service)FaaS(Function as a Service)로 구분된다.

BaaS (Backend as a Service)

BaaS는 애플리케이션을 개발할 때 필요한 여러 백엔드 서비스 기능을 클라우드 제공자가 미리 준비해놓은 상태로 제공하는 서비스이다. 예를 들어 인증 및 권한 관리, 데이터베이스 관리, 스토리지 관리, 푸시 알림, 사용자 관리 등을 API 형태로 제공한다. 개발자는 이를 활용하여 별도의 서버 구축 없이 손쉽게 앱이나 웹 서비스의 백엔드를 구축할 수 있다.

대표적인 서비스

  • Firebase (Google)
  • AWS Cognito, AWS Amplify, DynamoDB, S3 (AWS)

장점

  • 별도의 서버나 인프라 구축 없이 빠르게 서비스 개발 및 배포 가능
  • 복잡한 백엔드 작업에 대한 관리와 유지보수가 필요 없음
  • 클라우드 제공자가 보안, 확장성 등 많은 부분을 자동 관리

FaaS (Function as a Service)

FaaS는 특정 작업이나 이벤트에 대응하여 독립된 함수를 실행하는 형태의 서비스이다. 함수는 이벤트가 발생할 때만 실행 환경이 생성되고 작업을 완료한 후에는 실행 환경이 즉시 종료되어 리소스를 효율적으로 관리할 수 있다. 개발자는 이벤트에 대응하는 함수만 작성하여 클라우드 서비스에 배포하면 된다.

대표적인 서비스

  • AWS Lambda
  • Azure Functions
  • Google Cloud Functions

장점

  • 사용한 만큼만 비용이 청구되어 매우 경제적
  • 자동으로 확장 및 축소되는 뛰어난 확장성 제공
  • 서버 유지보수, 관리 작업이 전혀 필요 없음

동작 원리

서버리스 환경은 크게 다음과 같은 흐름으로 동작한다

  1. 클라이언트가 요청을 보냄 (HTTP 요청, 이벤트 발생 등)
  2. 클라우드 제공자는 요청을 받아 특정 함수를 실행할 환경을 생성하고 코드를 로드
  3. 함수가 요청을 처리한 뒤 결과를 반환
  4. 코드의 실행이 완료되면 실행 환경은 즉시 소멸됨

즉, 서버리스 환경에서는 실행 요청이 있을 때만 자원이 활성화되고 그 외의 시간에는 자원이 해제되어 비용이 절약된다.

장점

  • 비용 효율성: 자원을 사용하는 만큼만 비용을 지불하므로 자원 낭비를 줄일 수 있다.
  • 신속한 배포: 서버 및 인프라 설정 과정이 생략되어 빠르게 애플리케이션을 배포할 수 있다.
  • 유지보수 용이: 서버 관리와 유지보수 부담이 사라져 개발자는 서비스 개발에만 집중할 수 있다.
  • 확장성: 트래픽 변화에 따라 자동으로 인프라가 확장되거나 축소된다.

단점

  • Cold Start 문제: 함수가 처음 실행될 때 지연이 발생할 수 있다.
  • 실행 시간 제한: 클라우드 제공자의 서비스마다 최대 실행 시간이 제한되어 있다.
  • 복잡한 디버깅과 모니터링: 이벤트 기반 아키텍처와 분산 환경으로 인해 디버깅과 모니터링이 복잡해질 수 있다.

서버리스는 다음과 같은 경우에 유용하다

  • 트래픽이 불규칙하고 예측이 어려운 서비스
  • 빠른 MVP 제작 및 빠른 배포가 요구되는 스타트업 환경
  • 특정 이벤트 발생 시 짧은 작업을 처리하는 경우 (예: 이미지 변환, 이메일 발송, 알림 처리)
  • 마이크로서비스 기반의 이벤트 주도형(Event-driven) 아키텍처

비용 구조

서버리스(FaaS)는 일반적으로 요청 수와 함수 실행 시간을 기준으로 과금한다. AWS Lambda 기준으로 아래와 같은 구조이다.

  • 요청 수: 월 100만 건 무료, 이후 100만 건당 $0.20
  • 실행 시간: 메모리와 시간(ms)을 기준으로 GB-초 단위 과금

이를 통해 적은 트래픽을 가진 서비스나 간헐적 요청에 매우 경제적인 운영이 가능하다.

📝 회고

서버리스에 대해 알아본 이유는 현재 내가 진행하고 있는 선물 추천 서비스에 이를 적용할 수 있을지 고민하기 위해서였다. 서버리스의 장점인 자동 확장성과 비용 효율성을 생각할 때 내가 개발 중인 선물 추천 서비스는 초기 트래픽이 불규칙할 것으로 예상되므로 서버리스로 전환하면 초기 비용 부담을 크게 낮추면서 안정적으로 서비스를 운영할 수 있을 것으로 기대된다. 다만 외부 API 호출이나 긴 실행 시간이 필요한 로직 부분에서는 Cold Start와 실행 시간 제한 같은 서버리스의 단점을 고려하여 보완책을 마련해야 할 것으로 판단된다.

참고

profile
개발자가 되고 싶은 취준생

0개의 댓글