HooneyLog
© 2026 Seunghoon Shin. All rights reserved.
모든 게시글
아키텍쳐
2024. 11. 22.•
2

서버리스 아키텍처: 인프라 관리의 부담을 줄이는 현대적 웹 개발 패러다임

Seunghoon Shin
작성자 Seunghoon Shin풀스택 개발자

서버리스 아키텍처: 인프라 관리의 부담을 줄이는 현대적 웹 개발 패러다임

1. 문제의 배경

전통적인 웹 개발 환경에서 서버를 운영하는 것은 매우 고통스러운 작업입니다. 서비스가 성장함에 따라 다음과 같은 난제들에 직면하게 됩니다.

  • 인프라 프로비저닝: 트래픽을 예측하여 서버 사양을 결정하고 OS 설정, 런타임 설치 등을 직접 수행해야 합니다.
  • 오토 스케일링: 갑작스러운 트래픽 증가에 대응하기 위한 시스템 구축이 복잡합니다.
  • 유휴 비용: 트래픽이 없는 시간대에도 서버는 계속 가동되어야 하므로 불필요한 비용이 발생합니다.
  • 보안 및 업데이트: OS 보안 패치나 시스템 업데이트를 개발자가 직접 관리해야 하는 부담이 있습니다.

2. 해결 방안 탐색

이러한 고질적인 문제들을 해결하기 위해 등장한 것이 서버리스(Serverless) 모델입니다. 서버리스는 서버가 실제로 존재하지 않는다는 의미가 아니라, "개발자가 서버를 관리할 필요가 없는 환경"을 의미합니다. 클라우드 서비스 제공업체(AWS, GCP, Azure 등)가 서버 운영의 모든 과정을 자동화하여 추상화해 주는 방식입니다.

3. 핵심 개념 및 아키텍처

서버리스 아키텍처는 주로 FaaS(Function as a Service)와 BaaS(Backend as a Service)로 구성됩니다.

동작 원리 및 아키텍처

클라이언트가 이벤트를 발생시키면, 클라우드 환경이 필요한 시점에만 함수를 실행하고 종료하는 구조입니다.

  • 이벤트 기반 실행: 사용자의 요청이나 DB 트리거 등이 발생할 때만 실행됩니다.
  • 자동 스케일링: 요청이 1개든 1,000개든 클라우드가 알아서 인스턴스를 늘려 처리합니다.
  • 종량제 요금제: 함수가 실행된 시간과 메모리 사용량에 대해서만 비용을 지불합니다.

4. 구현 및 트러블슈팅

AWS Lambda 기반 예시 (Node.js)

서버리스 함수는 최소 단위의 기능(Function)으로 작성됩니다.

// lambda-handler.ts import { APIGatewayProxyEvent, APIGatewayProxyResult } from 'aws-lambda'; export const handler = async (event: APIGatewayProxyEvent): Promise<APIGatewayProxyResult> => { try { const { name } = JSON.parse(event.body || '{}'); return { statusCode: 200, body: JSON.stringify({ message: `Hello ${name}! Welcome to Serverless World.`, }), }; } catch (error) { return { statusCode: 500, body: JSON.stringify({ message: "Internal Server Error" }), }; } };

트러블슈팅: 콜드 스타트(Cold Start) 문제

함수가 오랫동안 실행되지 않으면 해당 인스턴스는 회수됩니다. 이후 첫 요청 시 런타임 환경을 다시 구축하는 데 시간이 소요되는데, 이를 콜드 스타트라고 합니다.

  • 해결 방안:
    • 정기적인 핑(Ping)을 보내 인스턴스를 활성화 상태로 유지합니다.
    • 런타임 바이너리 크기를 최소화하여 부팅 속도를 높입니다.
    • AWS의 경우 'Provisioned Concurrency' 옵션을 사용하여 미리 인스턴스를 준비해 둡니다.

5. 결과 및 Trade-off

정량적/정성적 성과

  • 비용 절감: 서버 유휴 시간의 낭비 비용을 0으로 줄일 수 있습니다.
  • 생산성 극대화: 서버 관리 인력이 필요 없으며 개발자는 오직 비즈니스 코드에만 집중할 수 있습니다.
  • 빠른 시장 출시(Time to Market): 복잡한 설정 없이 빠르게 서비스를 배포할 수 있습니다.

Trade-off 및 한계점

  • 벤더 락인(Vendor Lock-in): 특정 클라우드 서비스의 전용 API와 환경에 종속될 수 있습니다.
  • 실행 시간 제한: 대부분의 FaaS는 최대 실행 시간이 15분 내외로 제한되어 있어 복잡한 연산에는 부적합합니다.
  • 로컬 디버깅의 복잡성: 클라우드 환경과 완벽하게 일치하는 로컬 테스트 환경 구축이 까다롭습니다.

6. 마치며

서버리스 아키텍처는 단순한 트렌드를 넘어 현대적인 백엔드 개발의 표준 중 하나로 자리 잡았습니다. 특히 트래픽이 불규칙한 스타트업이나, 마이크로서비스 아키텍처(MSA)를 지향하는 팀에게 최고의 선택지가 될 수 있습니다.

참고 자료:

  • AWS Lambda Documentation
  • Serverless Framework 가이드
← 이전 글리액트 네이티브의 새로운 아키텍쳐 ( JSI )
다음 글 →React 18 핵심 가이드: 동시성 렌더링으로 완성하는 사용자 경험