Unisquads
로그인
홈
이용약관·개인정보처리방침·콘텐츠정책·© 2026 Unisquads
이용약관·개인정보처리방침·콘텐츠정책
© 2026 Unisquads. All rights reserved.

Serverless (r1)

이 문서의 과거 버전 (r1)을 보고 있습니다. 수정일: 2026.02.14 23:11

Serverless

이름

Serverless

분류

클라우드 컴퓨팅 기술, 아키텍처 패턴

핵심 개념

서버 관리 없이 코드 실행, 이벤트 기반, 사용량 기반 과금

주요 서비스

AWS Lambda, Azure Functions, Google Cloud Functions

장점

운영 오버헤드 감소, 자동 확장성, 비용 효율성

단점

콜드 스타트, 벤더 종속성, 디버깅 복잡성

기술 상세

동의어

FaaS (Function as a Service)

주요 구성 요소

함수(Function), 트리거(Trigger), 이벤트(Event)

적용 사례

API 백엔드, 데이터 처리, 실시간 파일 처리, IoT 백엔드, 예약 작업

관련 기술

마이크로서비스, 컨테이너, API 게이트웨이

배포 모델

퍼블릭 클라우드, 프라이빗 클라우드, 하이브리드

과금 모델

실행 횟수 및 실행 시간 기반

보안 고려사항

함수 권한, 네트워크 격리, 시크릿 관리

모니터링

로그 집계, 분산 트레이싱, 성능 메트릭

주요 벤더

AWS, Microsoft Azure, GCP, IBM Cloud

오픈소스 프로젝트

OpenFaaS, Knative, Apache OpenWhisk

1. 개요

서버리스는 클라우드 컴퓨팅 실행 모델의 하나로, 개발자가 서버 인프라를 프로비저닝하거나 관리할 필요 없이 애플리케이션 코드를 실행할 수 있게 해주는 패러다임이다. 이 모델에서 클라우드 제공자는 서버 관리, 용량 계획, 패치 적용, 확장성 등 모든 인프라 운영 작업을 자동으로 처리한다. 개발자는 단지 개별 함수나 애플리케이션 로직을 작성하여 업로드하기만 하면, 특정 이벤트가 발생할 때 해당 코드가 실행된다.

서버리스라는 용어는 '서버가 없다'는 의미가 아니라, 서버 관리의 책임과 복잡성이 개발자로부터 클라우드 제공자로 추상화되었다는 점을 강조한다. 이는 IaaS나 PaaS와도 구별되는 개념으로, 더 높은 수준의 추상화와 자동화를 제공한다. 핵심 아이디어는 인프라가 아닌 비즈니스 로직에만 집중할 수 있도록 하는 것이다.

이 모델은 주로 FaaS와 BaaS 두 가지 주요 범주로 구성된다. FaaS는 서버리스 컴퓨팅의 핵심 구성 요소로, 개발자가 이벤트에 응답하는 개별 함수를 작성할 수 있게 한다. BaaS는 인증, 데이터베이스, 스토리지 같은 백엔드 서비스를 완전 관리형으로 제공하여, 개발자가 직접 서버 측 구성 요소를 구축하거나 유지 관리할 필요가 없게 한다.

서버리스 아키텍처는 현대 애플리케이션 개발, 특히 마이크로서비스, 실시간 데이터 처리, API 백엔드 구축에 점점 더 널리 채택되고 있다. 이는 운영 부담을 줄이고, 탄력적인 확장성을 제공하며, 실제 리소스 사용량에 기반한 세분화된 과금 모델을 가능하게 한다.

2. 핵심 개념

서버리스의 핵심 개념은 개발자가 서버 인프라의 프로비저닝, 관리, 확장에 대한 부담 없이 코드를 실행할 수 있도록 하는 데 기반을 둔다. 이는 클라우드 컴퓨팅의 진화된 형태로, 애플리케이션 로직을 개별 함수 단위로 패키징하여 특정 이벤트에 반응하도록 구성하는 방식을 취한다. 핵심 개념은 크게 이벤트 기반 실행, 자동 확장, 사용량 기반 과금으로 구분된다.

첫 번째 핵심 개념은 이벤트 기반 실행이다. 서버리스 함수는 HTTP 요청, 데이터베이스 변경, 파일 업로드, 메시지 큐 도착, 예약된 시간 등 외부에서 발생하는 특정 이벤트에 의해 트리거되어 실행된다. 함수는 상태를 유지하지 않는(Stateless) 방식으로 설계되며, 각 실행은 독립적이고 일회성으로 처리된다. 이는 전통적인 항상 실행 중인 서버 프로세스와 근본적으로 다른 실행 모델이다.

두 번째 개념은 완전한 자동 확장이다. 서버리스 플랫폼은 들어오는 요청이나 이벤트의 양에 따라 실행 환경을 자동으로 생성하고 관리한다. 트래픽이 급증하면 플랫폼이 필요한 만큼의 함수 인스턴스를 즉시 생성하여 처리하며, 트래픽이 줄어들면 불필요한 인스턴스를 자동으로 정리한다. 개발자는 확장 정책이나 용량 계획을 수립할 필요가 전혀 없다.

세 번째 개념은 정밀한 사용량 기반 과금 모델이다. 과금은 전통적인 서버 시간(시간당)이 아닌 실제 리소스 소비량, 주로 함수의 실행 횟수와 실행 시간(밀리초 단위)을 기준으로 이루어진다. 함수가 실행되지 않는 동안에는 비용이 전혀 발생하지 않는다. 이는 예측 불가능하거나 간헐적인 트래픽 패턴을 가진 애플리케이션에 특히 비용 효율적이다.

핵심 개념

설명

주요 특징

이벤트 기반 실행

외부 이벤트에 의해 함수가 트리거되고 실행됨

상태 비저장(Stateless), 트리거 다양(HTTP, 파일, 큐 등)

자동 확장

트래픽에 따라 실행 인스턴스가 자동으로 생성 및 소멸됨

용량 계획 불필요, 순간적 확장(Scale to Zero) 지원

사용량 기반 과금

실제 실행 횟수와 실행 시간에 따라 비용 청구됨

유휴 시간 비용 없음, 미세한 과금 단위

2.1. 이벤트 기반 실행

이벤트 기반 실행은 서버리스 컴퓨팅의 핵심 작동 원리이다. 이 모델에서는 개발자가 작성한 함수나 코드 조각이 특정 이벤트가 발생할 때만 실행된다. 코드는 사전에 클라우드 제공자에게 배포되지만, 평소에는 비활성 상태로 대기하며 실제 컴퓨팅 리소스를 소비하지 않는다.

이벤트의 종류는 매우 다양하다. 대표적인 예로는 HTTP 요청, 데이터베이스의 변경 사항, 파일이 스토리지 버킷에 업로드되는 것, 메시지 큐에 새 메시지가 도착하는 것, 또는 예약된 시간(크론 작업) 등이 있다. 예를 들어, 사용자가 웹 애플리케이션의 버튼을 클릭하면 API Gateway가 HTTP 요청을 받아 이를 트리거로 특정 Lambda 함수를 실행할 수 있다.

이러한 실행 모델은 전통적인 상시 실행되는 서버 아키텍처와 근본적으로 다르다. 서버리스에서는 애플리케이션 로직이 이벤트에 반응하는 독립적인 함수 단위로 분해된다. 이는 시스템을 보다 느슨하게 결합된 구성 요소로 만들며, 각 구성 요소는 자신을 활성화하는 이벤트에만 집중한다. 결과적으로, 리소스는 이벤트 처리에 필요한 순간에만 정확하게 할당되고, 처리가 완료되면 즉시 회수된다.

2.2. 자동 확장

서버리스 컴퓨팅의 자동 확장은 개발자가 명시적으로 용량을 프로비저닝하거나 관리하지 않아도, 애플리케이션의 수요에 따라 컴퓨팅 리소스가 실시간으로 조정되는 기능이다. 이는 이벤트 기반 실행 모델과 긴밀하게 연동되어 작동한다. 인바운드 요청이나 이벤트의 수가 증가하면 플랫폼은 자동으로 더 많은 함수 인스턴스를 생성하여 병렬로 처리한다. 반대로 트래픽이 감소하면 사용되지 않는 인스턴스를 정리하여 리소스를 확보한다.

이 자동 확장은 세분화된 수준에서 이루어진다. 각 함수(Function)는 독립적으로 확장되며, 이는 마이크로서비스 아키텍처와 잘 맞는다. 예를 들어, 사용자 가입을 처리하는 함수와 파일을 변환하는 함수는 서로 다른 트래픽 패턴을 보일 수 있으며, 서버리스 플랫폼은 각 함수를 개별적으로 최적화된 수준으로 확장한다. 확장 속도는 일반적으로 수 초 이내로 매우 빠르며, 수요를 예측할 필요 없이 실제 트래픽에 반응한다.

자동 확장의 주요 이점은 용량 계획의 부담이 사라진다는 점이다. 개발팀은 피크 트래픽을 위해 과도하게 리소스를 준비하거나, 갑작스러운 트래픽 증가로 인한 서비스 장애를 우려할 필요가 없다. 플랫폼이 이러한 운영적 복잡성을 대신 처리한다. 그러나 이는 콜드 스타트 지연과 같은 새로운 고려사항을 초래하기도 한다. 함수 인스턴스가 처음 생성될 때 발생하는 이 지연은 확장이 시작되는 순간에 영향을 미칠 수 있다.

확장 특성

설명

확장 단위

개별 함수(Function)

확장 트리거

인바운드 이벤트 또는 요청

확장 속도

일반적으로 수 초 이내

확장 한도

플랫폼별 계정 한도 존재[1]

축소(Scale-down)

유휴 인스턴스 자동 정리

2.3. 사용량 기반 과금

서버리스의 과금 모델은 전통적인 클라우드 컴퓨팅 서비스와 차별화된 핵심 특징 중 하나이다. 이 모델은 사용자가 실제로 소비한 컴퓨팅 리소스의 양에 대해서만 비용을 지불하는 방식을 기반으로 한다. 일반적으로 실행 시간(밀리초 또는 초 단위)과 실행 횟수, 그리고 할당된 메모리 크기를 기준으로 요금이 계산된다. 이는 서버를 프로비저닝하고 유지 관리하는 전통적인 방식, 즉 사용 여부와 관계없이 항상 가동 중인 서버 인스턴스에 대한 시간 단위의 고정 비용을 지불하는 모델과 대비된다.

과금 구조는 대부분의 주요 서버리스 플랫폼에서 유사하다. 예를 들어, AWS Lambda는 매월 특정 무료 사용량(요청 수 및 컴퓨팅 시간)을 제공한 후, 초과 사용량에 대해 요청 100만 건당 및 컴퓨팅 시간(GB-초)당 요금을 부과한다. Azure Functions와 Google Cloud Functions도 실행 횟수, 실행 시간, 메모리 사용량을 종합하여 비용을 산정한다. 네트워크 데이터 전송, 추가 서비스(예: API Gateway, 데이터베이스) 호출 등 다른 관련 서비스 사용에 대해서는 별도로 요금이 발생할 수 있다.

이러한 사용량 기반 과금 모델은 특히 트래픽 패턴이 불규칙하거나 예측하기 어려운 애플리케이션에 큰 비용 이점을 제공한다. 트래픽이 없을 때는 실행 시간과 횟수가 0에 가까워지므로 거의 비용이 발생하지 않는다. 반면, 급격한 트래픽 증가 시에는 자동으로 확장되어 요청을 처리하며, 그에 비례한 사용량만큼만 비용이 증가한다. 이는 사용자에게 탄력적이고 효율적인 비용 구조를 보장한다.

과금 요소

설명

일반적 단위

실행 횟수

함수가 호출(트리거)된 총 횟수

100만 회 요청당

실행 시간

함수 코드가 실제로 실행된 시간 (할당된 메모리 크기와 곱해짐)

GB-초 또는 GHz-초

할당 메모리

함수 실행 시 설정한 메모리 크기 (실행 시간 계산에 사용)

MB 또는 GB

기타 서비스

트리거(S3, DynamoDB 등) 또는 연결된 서비스(API Gateway 등) 사용량

서비스별 정책에 따름

3. 주요 서비스 및 플랫폼

AWS Lambda는 Amazon Web Services가 제공하는 서버리스 컴퓨팅 플랫폼이다. 2014년에 출시된 이 서비스는 특정 이벤트나 요청에 응답하여 코드를 실행하는 함수 단위의 서비스를 제공한다[2]. 사용자는 Node.js, Python, Java, Go 등 다양한 런타임을 선택하여 코드를 업로드하기만 하면 된다. AWS Lambda는 실행 횟수와 소요 시간에 따라 과금되며, Amazon S3, Amazon DynamoDB, Amazon API Gateway 등 다른 AWS 서비스와의 통합이 용이하다.

Microsoft Azure의 Azure Functions는 크로스 플랫폼 서버리스 솔루션이다. .NET, Node.js, Python, Java, PowerShell 등 광범위한 언어를 지원하며, Azure Portal, Visual Studio, 또는 명령줄 도구를 통해 개발 및 배포할 수 있다. Azure Functions는 HTTP 요청, 타이머, Azure Service Bus의 큐 메시지, Azure Blob Storage의 변경 사항 등 다양한 트리거로 실행된다. 특히 Durable Functions 확장을 통해 복잡한 상태 저장 워크플로를 오케스트레이션할 수 있는 기능이 특징이다.

Google Cloud Functions는 Google Cloud Platform의 이벤트 기반 서버리스 실행 환경이다. 주로 Google Cloud Pub/Sub, Cloud Storage, Firebase 이벤트에 반응하도록 설계되었다. 2세대 플랫폼에서는 Cloud Run 및 Eventarc와의 통합을 통해 더 많은 이벤트 소스를 지원하고 성능을 개선했다. Python, Node.js, Go, Java, .NET, Ruby, PHP를 포함한 여러 런타임을 제공한다.

이들 주요 서비스 외에도 IBM Cloud Functions(Apache OpenWhisk 기반), Oracle Cloud Functions(Fn Project 기반), 그리고 Cloudflare Workers와 같은 엣지 컴퓨팅 환경의 서버리스 플랫폼도 존재한다. 각 플랫폼은 유사한 핵심 개념을 공유하지만, 트리거 유형, 통합 서비스, 런타임 지원, 배포 모델 및 가격 정책에서 차이를 보인다.

3.1. AWS Lambda

AWS Lambda는 Amazon Web Services가 제공하는 서버리스 컴퓨팅 서비스이다. 이 서비스는 서버 프로비저닝이나 관리 없이 코드를 실행할 수 있게 해준다. 사용자는 코드를 업로드하기만 하면, AWS Lambda가 높은 가용성으로 코드 실행과 확장을 자동으로 처리한다. 코드는 이벤트에 반응하여 실행되며, 사용한 컴퓨팅 시간에 대해서만 비용을 지불한다.

이 서비스는 다양한 AWS 서비스와 통합되어 있다. 예를 들어, Amazon S3 버킷에 객체가 업로드되거나, Amazon DynamoDB 테이블이 수정되거나, Amazon API Gateway를 통해 HTTP 요청이 들어오는 것을 이벤트로 사용할 수 있다. 또한 Amazon Kinesis나 Amazon Simple Notification Service 등의 서비스도 이벤트 소스로 작동한다. 지원되는 런타임에는 Node.js, Python, Java, Go, .NET Core, Ruby 등이 포함되며, 사용자 정의 런타임을 통해 다른 언어도 사용할 수 있다.

주요 구성 요소와 제한 사항은 다음과 같다.

구성 요소/개념

설명

핸들러 함수

이벤트 소스로부터 이벤트 객체를 입력받아 처리하는 진입점 함수이다.

실행 역할

함수가 실행될 때 AWS 리소스에 접근하기 위한 권한을 부여하는 IAM 역할이다.

배포 패키지

코드와 종속성을 포함하는 ZIP 파일 또는 컨테이너 이미지이다.

메모리 설정

128MB에서 10,240MB 사이로 설정할 수 있으며, CPU 성능과 네트워크 대역폭도 이에 비례하여 할당된다[3].

최대 실행 시간

함수의 단일 실행(타임아웃)은 최대 15분까지 설정 가능하다.

동시 실행 수

리전별 기본 한도가 존재하지만, 필요에 따라 증가를 요청할 수 있다.

AWS Lambda는 마이크로서비스 아키텍처, 실시간 파일 처리, 백엔드 API 구축 등 다양한 애플리케이션에 널리 사용된다. 함수의 성능 메트릭과 로그는 자동으로 Amazon CloudWatch에 전송되어 모니터링과 디버깅을 지원한다.

3.2. Azure Functions

Azure Functions는 마이크로소프트의 클라우드 컴퓨팅 플랫폼인 Microsoft Azure에서 제공하는 서버리스 컴퓨팅 서비스이다. 이 서비스는 개발자가 인프라를 프로비저닝하거나 관리할 필요 없이 작은 코드 단위인 '함수'를 실행할 수 있게 해준다. 함수는 다양한 이벤트나 트리거에 의해 실행되며, 사용한 컴퓨팅 시간과 리소스에 대해서만 비용을 지불하는 사용량 기반 과금 모델을 따른다.

Azure Functions는 여러 프로그래밍 언어를 지원하며, 주요 트리거와 바인딩을 통해 다른 Azure 서비스와 쉽게 통합된다. 지원 언어와 주요 통합 서비스는 다음과 같다.

지원 언어

주요 트리거/바인딩 예시

C#

HTTP 요청, Azure Service Bus, Azure Cosmos DB 변경 피드

JavaScript

타이머, Azure Blob Storage, Azure Event Hubs

Python

Azure Queue Storage, Azure Event Grid

Java

GitHub 웹훅, Twilio SMS

함수는 HTTP 요청, 데이터베이스의 변경, 메시지 큐의 항목, 예약된 타이머 등 다양한 이벤트에 반응하여 실행된다. 개발자는 애플리케이션 로직에 집중할 수 있으며, 플랫폼이 자동으로 필요한 컴퓨팅 리소스를 할당하고 관리한다. 또한 Azure Functions는 Azure App Service 플랫폼 위에 구축되어 있어, 필요에 따라 함수 앱을 완전한 웹 애플리케이션으로 확장하는 것도 가능하다.

3.3. Google Cloud Functions

Google Cloud Functions는 Google Cloud 플랫폼에서 제공하는 서버리스 컴퓨팅 서비스이다. 이 서비스는 개발자가 서버를 프로비저닝하거나 관리할 필요 없이 코드를 실행할 수 있게 해준다. Google Cloud Functions는 이벤트 기반으로 동작하며, Google Cloud Storage, Cloud Pub/Sub, HTTP 요청 등 다양한 이벤트 소스에 의해 트리거될 수 있다. 코드는 완전히 관리되는 환경에서 실행되며, 사용한 컴퓨팅 시간과 호출 횟수에 대해서만 비용을 지불하는 사용량 기반 과금 모델을 따른다.

이 서비스는 주로 Node.js, Python, Go, Java, .NET 및 Ruby와 같은 여러 프로그래밍 언어를 지원한다. 개발자는 특정 이벤트에 반응하는 함수를 작성하여 배포하기만 하면 된다. 예를 들어, 새로운 파일이 Cloud Storage 버킷에 업로드될 때 해당 파일을 처리하거나, Pub/Sub 토픽에 메시지가 게시될 때 데이터를 변환하는 작업을 자동으로 수행할 수 있다.

Google Cloud Functions는 다른 Google Cloud 서비스와의 긴밀한 통합이 주요 특징이다. 이를 통해 복잡한 애플리케이션을 쉽게 구축할 수 있다. 주요 통합 포인트는 다음과 같다.

이벤트 소스

주요 사용 사례

HTTP/HTTPS 요청

웹훅 또는 API 엔드포인트 제공

Google Cloud Storage

파일 업로드, 변경, 삭제 시 처리

Cloud Pub/Sub

메시지 큐 기반의 비동기 이벤트 처리

Cloud Firestore

데이터베이스 문서 생성/수정 시 반응

Cloud Logging

로그 항목 기반의 알림 또는 처리

이 서비스는 또한 자동 확장 기능을 제공하여, 수신되는 이벤트의 양에 따라 필요한 만큼의 함수 인스턴스를 자동으로 생성하고 관리한다. 이는 트래픽이 급증하는 상황에서도 애플리케이션의 가용성을 유지하는 데 도움이 된다.

4. 아키텍처 패턴

서버리스 컴퓨팅은 특정한 아키텍처 패턴을 통해 구현된다. 가장 일반적인 패턴으로는 API 백엔드, 이벤트 처리 파이프라인, 그리고 마이크로서비스가 있다.

API 백엔드 패턴에서는 AWS Lambda나 Azure Functions와 같은 함수가 API 게이트웨이 뒤에 배치되어 HTTP 요청을 처리한다. 이 패턴은 사용자 인증, 데이터 검증, 데이터베이스 조회 등의 비즈니스 로직을 실행하는 RESTful API 또는 GraphQL 엔드포인트를 구축하는 데 적합하다. 서버리스 함수는 각 API 호출을 독립적인 이벤트로 처리하며, 필요에 따라 자동으로 확장되고 종료된다.

이벤트 처리 파이프라인 패턴은 다양한 이벤트 소스로부터의 트리거에 반응한다. 예를 들어, 객체 저장소에 파일이 업로드되면 함수가 실행되어 이미지 리사이징이나 데이터 변환을 수행할 수 있다. 또한, 메시지 큐의 메시지, 데이터베이스의 변경 사항, 또는 IoT 디바이스의 스트리밍 데이터를 처리하는 파이프라인을 구성하는 데에도 널리 사용된다. 이 패턴은 이벤트 드리븐 아키텍처의 핵심을 이루며, 느슨한 결합과 확장성을 제공한다.

마이크로서비스 패턴에서 서버리스 함수는 작고 독립적인 서비스 단위로 활용된다. 각 함수는 특정한 비즈니스 기능(예: 결제 처리, 사용자 알림 전송)을 담당한다. 이 접근 방식은 전통적인 모놀리식 애플리케이션이나 컨테이너 기반 마이크로서비스에 비해 인프라 관리 부담을 크게 줄여준다. 개발자는 코드에만 집중할 수 있으며, 배포, 확장, 가용성은 플랫폼이 책임진다.

패턴

주요 트리거

일반적인 사용 사례

API 백엔드

HTTP 요청 (API 게이트웨이 통해)

모바일 앱 백엔드, 웹 애플리케이션 API

이벤트 처리 파이프라인

파일 업로드, 메시지 큐, 데이터베이스 변경 스트림

실시간 파일 처리, 로그 분석, ETL 작업

마이크로서비스

다양한 이벤트 또는 API 호출

특정 비즈니스 기능(결제, 인증 등)을 위한 독립 서비스

4.1. API 백엔드

API 백엔드는 서버리스 아키텍처의 가장 일반적인 사용 사례 중 하나이다. 이 패턴에서는 API 게이트웨이가 클라이언트의 HTTP 요청을 수신하고, 이를 트리거로 사용하여 서버리스 함수를 실행한다. 함수는 비즈니스 로직을 처리하고 필요한 데이터 작업을 수행한 후, API 게이트웨이를 통해 클라이언트에게 응답을 반환한다.

이 접근 방식은 전통적인 모놀리식 서버 기반 API와 비교하여 몇 가지 명확한 이점을 제공한다. 각 API 엔드포인트는 별도의 함수로 구현될 수 있어, 개발과 배포가 독립적이며, 특정 기능의 수정이나 확장이 전체 시스템에 미치는 영향을 최소화한다. 또한 API 게이트웨이는 인증, 권한 부여, 속도 제한, 요청 변환과 같은 공통 작업을 처리하여 함수 코드를 간결하게 유지하도록 돕는다.

구성 요소

역할

API 게이트웨이

HTTP 요청/응답 라우팅, 인증, 제한 관리

서버리스 함수 (예: AWS Lambda)

개별 API 엔드포인트의 비즈니스 로직 실행

백엔드 서비스 (예: 데이터베이스, 메시지 큐)

함수에 의해 호출되는 지속적 서비스

이 패턴은 마이크로서비스 스타일의 API, 모바일 앱 백엔드, 또는 단일 페이지 애플리케이션의 서버 측 로직을 구축하는 데 적합하다. 운영팀은 서버 프로비저닝, 패치 관리, 운영 체제 유지 보수와 같은 인프라 관리 부담에서 벗어나, 애플리케이션 코드 개발에 집중할 수 있다. 트래픽이 증가하면 API 게이트웨이와 함수 플랫폼이 자동으로 확장되어 요청을 처리한다.

4.2. 이벤트 처리 파이프라인

이벤트 처리 파이프라인은 서버리스 아키텍처의 대표적인 패턴 중 하나이다. 이 패턴은 연속적인 처리 단계를 거쳐 데이터를 변환하거나 강화하는 워크플로를 구성하는 데 적합하다. 각 처리 단계는 특정 이벤트에 의해 트리거되는 독립적인 서버리스 함수로 구현된다. 한 함수의 출력이 다음 함수의 입력 이벤트가 되어, 데이터가 파이프라인을 따라 흐르며 처리된다.

일반적인 파이프라인은 데이터 수집, 변환, 저장, 분석 등의 단계로 구성된다. 예를 들어, 사용자가 업로드한 이미지 파일이 객체 저장소에 저장되면, 이 업로드 이벤트가 첫 번째 함수를 트리거하여 이미지 크기를 조정할 수 있다. 처리된 이미지는 다시 저장되고, 이 이벤트가 두 번째 함수를 활성화하여 메타데이터를 추출하거나 머신 러닝 모델을 통해 분석할 수 있다.

이 패턴의 주요 장점은 탄력성과 결합도 감소에 있다. 각 처리 단계는 독립적으로 배포, 확장, 관리될 수 있으며, 특정 단계의 로직 변경이 다른 단계에 영향을 미치지 않는다. 또한, 파이프라인의 흐름은 메시지 큐나 스트리밍 데이터 플랫폼을 통해 오케스트레이션되어, 이벤트 손실 없이 신뢰할 수 있는 처리를 보장한다.

단계

트리거 소스

처리 작업

출력 대상

수집

파일 업로드, IoT 센서

데이터 검증, 포맷 정규화

메시지 브로커

변환

메시지 브로커의 메시지

데이터 정제, 포맷 변환, 필터링

다른 메시지 브로커 또는 데이터 저장소

강화

변환된 데이터

외부 API 조회, 분석 수행

최종 저장소(예: 데이터 웨어하우스)

저장/전달

강화된 데이터

데이터 지속성 저장 또는 최종 사용자 알림

데이터베이스, 알림 서비스

이러한 파이프라인은 로그 분석, ETL 작업, 미디어 처리, 실시간 알림 시스템 등 다양한 배치 및 실시간 처리 시나리오에 적용된다.

4.3. 마이크로서비스

마이크로서비스 아키텍처는 하나의 큰 애플리케이션을 작고 독립적인 서비스들의 집합으로 분해하는 소프트웨어 개발 접근 방식이다. 각 서비스는 특정 비즈니스 기능을 담당하며, 잘 정의된 API를 통해 서로 통신한다. 서버리스 컴퓨팅은 이러한 마이크로서비스를 구축하고 배포하기 위한 이상적인 실행 모델을 제공한다. 서버리스 플랫폼은 각 마이크로서비스를 별도의 함수(Function) 또는 컨테이너로 패키징하여 독립적으로 배포, 실행, 관리할 수 있게 한다.

서버리스 마이크로서비스의 주요 특징은 강력한 분리와 자율성이다. 각 서비스는 자체 코드베이스, 데이터 저장소, 그리고 배포 라이프사이클을 가질 수 있다. 이는 개발 팀이 서로 다른 기술 스택을 사용하거나 독립적인 배포 주기로 작업할 수 있게 하여 개발 속도를 높인다. 또한, 각 서비스는 이벤트 기반 실행과 자동 확장의 이점을 그대로 누린다. 특정 서비스에 대한 트래픽이 증가하면, 서버리스 플랫폼은 해당 함수의 인스턴스만 자동으로 확장하여 리소스를 효율적으로 사용한다.

서버리스 마이크로서비스를 구현할 때는 몇 가지 설계 고려사항이 존재한다. 서비스 간 통신은 동기적인 HTTP 요청보다는 비동기적인 메시지 큐(Amazon SQS, Azure Service Bus)나 이벤트 버스(Amazon EventBridge, Google Pub/Sub)를 통해 이루어지는 것이 일반적이다. 이는 서비스 간 결합도를 낮추고 시스템의 복원력을 향상시킨다. 데이터 관리 측면에서는 각 마이크로서비스가 자체 데이터베이스를 소유하는 "데이터베이스 퍼 서비스" 패턴이 권장되며, 서버리스 데이터베이스 서비스(Amazon DynamoDB, Azure Cosmos DB)와 잘 통합된다.

고려 요소

설명

관련 서버리스 서비스 예시

통신

비동기 메시징을 선호하여 결합도 감소

Amazon SQS, Google Pub/Sub

데이터 격리

서비스별 독립 데이터 저장소

Amazon DynamoDB, Azure SQL Database 서버리스

관찰 가능성

분산된 로그, 메트릭, 트레이스 수집

AWS X-Ray, Azure Application Insights

배포

각 서비스의 독립적 배포 및 버전 관리

AWS CodePipeline, Azure DevOps

이 접근 방식은 유연성과 확장성을 제공하지만, 분산 시스템의 복잡성, 벤더 종속성, 그리고 종합적인 모니터링과 디버깅의 어려움 같은 전형적인 마이크로서비스의 도전 과제를 그대로 가져온다.

5. 장점

서버리스 컴퓨팅의 가장 큰 장점은 운영 오버헤드의 현저한 감소이다. 개발자는 서버 프로비저닝, 패치 관리, 용량 계획, 운영 체제 유지 관리와 같은 인프라 관리 작업에 신경 쓸 필요가 없다. 이는 개발팀이 애플리케이션 코드와 비즈니스 로직 개발에 집중할 수 있게 하여 생산성을 크게 향상시킨다. 인프라 관리의 복잡성이 클라우드 공급자에게 이전되므로, 소규모 팀이나 빠른 프로토타이핑이 필요한 경우에도 효율적으로 개발과 배포를 진행할 수 있다.

비용 효율성 또한 서버리스의 핵심 장점 중 하나이다. 기존의 서버 기반 모델은 사용 여부와 관계없이 프로비저닝된 서버에 대한 비용을 지속적으로 지불해야 했다. 반면 서버리스는 사용량 기반 과금 모델을 채택한다. 애플리케이션은 이벤트에 반응하여 함수가 실행된 시간(일반적으로 100밀리초 단위)과 실행 횟수에 대해서만 요금이 부과된다. 유휴 상태일 때는 비용이 전혀 발생하지 않으므로, 트래픽 패턴이 불규칙하거나 간헐적인 워크로드에 대해 매우 경제적이다.

확장성은 서버리스 아키텍처의 본질적인 특성이다. 자동 확장 기능은 완전히 관리되며, 개발자가 별도의 조치를 취하지 않아도 트래픽 증가에 따라 애플리케이션이 자동으로 수평 확장된다. 각 함수 호출은 독립적으로 실행되며, 필요에 따라 수천 개의 인스턴스가 병렬로 생성되어 요청을 처리할 수 있다. 마찬가지로 트래픽이 감소하면 인스턴스 수가 자동으로 줄어들어 리소스 낭비를 방지한다. 이는 예측하기 어려운 트래픽을 처리해야 하는 애플리케이션에 이상적인 특성이다.

이러한 장점들은 결국 민첩성과 빠른 출시 시간으로 이어진다. 개발자는 작은 단위의 함수를 빠르게 작성하고 배포할 수 있으며, 전체 애플리케이션을 재배포하지 않고도 개별 함수를 독립적으로 업데이트할 수 있다. 이는 지속적 통합 및 지속적 배포(CI/CD) 파이프라인과 잘 통합되어 현대적인 소프트웨어 개발 방법론을 지원한다.

5.1. 운영 오버헤드 감소

서버리스 컴퓨팅은 개발자가 서버의 프로비저닝, 패치, 유지보수, 용량 계획과 같은 인프라 관리 작업에서 벗어나게 해준다. 이는 클라우드 컴퓨팅의 진화된 형태로, 개발자는 애플리케이션 코드와 비즈니스 로직 작성에만 집중할 수 있다. 클라우드 제공업체가 모든 서버, 운영 체제, 런타임 환경의 관리와 가용성을 책임지기 때문이다.

이로 인해 전통적인 방식에 비해 운영 부담이 크게 줄어든다. 개발 팀은 더 이상 서버의 상태를 모니터링하거나, 보안 패치를 적용하거나, 트래픽 증가에 대비한 수동 확장 작업을 수행할 필요가 없다. 이러한 작업들은 모두 플랫폼에 의해 자동화되어 처리된다. 결과적으로 인프라 운영에 투입되던 인력과 시간을 애플리케이션 개발과 기능 개선에 재할당할 수 있게 되어 생산성이 향상된다.

운영 오버헤드 감소의 구체적인 이점은 다음 표와 같다.

감소 영역

설명

서버 관리

물리적 또는 가상 서버의 프로비저닝, 설정, 유지보수 불필요

용량 계획

피크 트래픽을 예측하고 이에 맞춰 서버 용량을 미리 준비할 필요 없음

소프트웨어 유지보수

운영 체제, 미들웨어, 런타임의 보안 업데이트 및 패치를 제공업체가 관리

가용성 및 내결함성

고가용성 아키텍처 구성이 플랫폼에 내장되어 제공됨

이러한 특성은 특히 소규모 팀이나 신속한 프로토타이핑이 중요한 스타트업, 그리고 인프라 전문 인력이 부족한 조직에게 큰 장점이 된다. 개발자는 복잡한 배포 스크립트나 구성 관리 도구 대신, 애플리케이션 코드를 배포하는 데만 신경 쓰면 된다.

5.2. 비용 효율성

서버리스 아키텍처의 비용 효율성은 전통적인 서버 기반 모델과 비교했을 때 가장 두드러지는 장점 중 하나이다. 비용은 실제로 소비한 컴퓨팅 리소스와 실행 시간에 기반하여 청구된다. 이는 사용자가 서버를 프로비저닝하거나 유지 관리하는 데 드는 선불 비용이나 유휴 상태의 서버에 대해 지속적으로 비용을 지불할 필요가 없음을 의미한다. 사용량 기반 과금 모델은 특히 트래픽 패턴이 불규칙하거나 예측하기 어려운 애플리케이션에서 큰 경제적 이점을 제공한다.

비용 구조는 일반적으로 실행 횟수와 실행 시간(밀리초 또는 초 단위), 그리고 할당된 메모리 양을 기준으로 구성된다. 주요 클라우드 제공업체들은 수백만 건의 실행에 대해 무료 티어를 제공하기도 한다. 이는 소규모 애플리케이션이나 개발/테스트 환경에서 거의 무료로 운영될 수 있게 한다. 또한, 자동 확장 기능은 수요에 맞춰 정확히 필요한 만큼의 리소스만을 동적으로 할당하므로, 트래픽 급증 시에도 과도한 용량을 미리 준비하는 데 따른 비용 낭비를 방지한다.

비용 요소

전통적 서버 모델

서버리스 모델

인프라 유지 관리

필요 (서버 관리, 패치, 모니터링)

공급자 책임[4]

용량 계획

필요 (피크 트래픽을 대비한 과잉 프로비저닝)

불필요 (자동 확장)

유휴 상태 비용

발생 (서버가 작동 중이면 비용 청구)

미발생 (코드가 실행되지 않으면 비용 청구 안 됨)

과금 단위

시간 단위 (예: 시간당 인스턴스 비용)

실행 횟수 및 실행 시간[5]

이러한 모델은 운영 효율성을 높일 뿐만 아니라, 비즈니스 성장에 따라 선형적으로 증가하는 비용 구조를 만들어 예산 계획을 수립하기 쉽게 한다. 개발 팀은 인프라 관리보다 애플리케이션 로직과 비즈니스 가치 창출에 더 집중할 수 있으며, 이는 간접적으로 인건비 절감 효과로 이어진다.

5.3. 확장성

서버리스 아키텍처의 확장성은 이벤트 기반 실행 모델과 자동 확장 기능에 기반합니다. 애플리케이션은 각 요청이나 이벤트를 독립적인 함수 인스턴스로 처리하며, 플랫폼은 수신되는 이벤트의 양에 따라 자동으로 인스턴스 수를 조정합니다. 이는 개발자가 확장 정책을 사전에 구성하거나 용량을 프로비저닝할 필요 없이, 트래픽이 증가하면 즉시 더 많은 인스턴스를 생성하고 트래픽이 감소하면 인스턴스를 줄이는 방식으로 작동합니다.

확장은 수평적(scale-out)으로 이루어지며, 이론적으로 무제한에 가까운 병렬 처리를 지원합니다. 예를 들어, 수천 개의 파일이 동시에 업로드되면 각 파일에 대해 별도의 함수 인스턴스가 생성되어 병렬로 처리할 수 있습니다. 이는 전통적인 서버 기반 아키텍처에서 필요한 수동적인 확장 계획이나 과도한 초기 용량 투자를 필요로 하지 않습니다.

그러나 이러한 확장성에는 몇 가지 특성이 있습니다. 첫째, 확장은 매우 빠르게 이루어지지만 완전히 순간적이지는 않으며, 콜드 스타트 현상으로 인해 초기 실행 시 약간의 지연이 발생할 수 있습니다. 둘째, 확장성은 일반적으로 플랫폼 공급자가 설정한 계정 한도 내에서 작동합니다. 셋째, 상태를 유지하지 않는(stateless) 설계 원칙을 따르기 때문에, 확장성을 극대화하려면 세션 상태 등을 외부 저장소에 관리해야 합니다.

확장성 특징

설명

확장 방식

수평 확장(Scale-out). 이벤트 트리거 시 새로운 함수 인스턴스 생성.

확장 속도

자동 및 신속하지만, 콜드 스타트로 인한 초기 지연 가능성 존재.

확장 범위

단일 인스턴스에서 수천 개의 병렬 인스턴스까지 자동 조정.

주요 제약

플랫폼별 실행 시간, 메모리, 동시 실행 수 한도. 상태 비저장(Stateless) 설계 필요.

결과적으로, 서버리스의 확장성은 예측 불가능하거나 간헐적인 트래픽 패턴을 가진 워크로드에 특히 적합합니다. 애플리케이션은 유휴 상태일 때는 비용이 발생하지 않다가, 필요할 때 즉시 대규모로 확장되어 피크 수요를 처리할 수 있습니다.

6. 도전 과제 및 고려사항

서버리스 컴퓨팅은 여러 장점을 제공하지만, 콜드 스타트 문제, 벤더 종속성, 그리고 디버깅 및 모니터링의 복잡성과 같은 고유한 도전 과제를 안고 있다.

가장 주목받는 문제는 콜드 스타트이다. 이는 함수가 일정 시간 비활성 상태 후 호출될 때, 실행 환경을 초기화하는 데 발생하는 지연 현상을 말한다. 이 지연은 런타임 언어(예: Java보다 Python이 일반적으로 빠름), 할당된 메모리 크기, 함수 코드의 복잡성에 따라 크게 달라진다. 실시간 응답이 중요한 애플리케이션에서는 이 지연이 사용자 경험에 부정적 영향을 미칠 수 있다. 콜드 스타트를 완화하기 위해 정기적인 핑(ping)을 보내 함수를 웜(warm) 상태로 유지하거나, 프로비저닝된 동시성(Provisioned Concurrency)과 같은 벤더별 솔루션을 활용하는 전략이 사용된다.

또 다른 주요 고려사항은 벤더 종속성이다. 개발자는 특정 클라우드 공급자(AWS, Azure, Google Cloud)의 고유한 서비스, API, 배포 및 모니터링 도구에 애플리케이션 로직을 밀접하게 결합하게 된다. 이로 인해 플랫폼 간 이식성이 저하되고, 공급자를 변경할 때 상당한 리팩토링 비용이 발생할 수 있다. 이 종속성을 완화하기 위해 서버리스 프레임워크나 Knative와 같은 크로스 플랫폼 도구를 사용하거나, 컨테이너 기반 서버리스 옵션을 고려하는 접근법이 있다.

도전 과제

주요 내용

완화 전략 예시

콜드 스타트

함수 초기화로 인한 실행 지연

웜 상태 유지, 프로비저닝된 동시성 사용

벤더 종속성

특정 클라우드 공급자 기술에 대한 의존도 증가

서버리스 프레임워크, Knative 등 크로스 플랫폼 도구 활용

디버깅 및 모니터링

분산된 이벤트 기반 실행으로 인한 추적 복잡성

분산 추적 도구(AWS X-Ray, Jaeger) 도입

마지막으로, 디버깅과 모니터링의 복잡성이 증가한다. 전통적인 모놀리식 애플리케이션과 달리, 서버리스 아키텍처는 수많은 분리된 함수와 이벤트 소스로 구성된다. 하나의 요청이 여러 함수를 거쳐 처리될 때, 전체 트랜잭션을 추적하고 성능 병목 지점을 식별하는 것이 어려워진다. 이를 해결하기 위해 AWS X-Ray나 Jaeger와 같은 분산 추적(Distributed Tracing) 도구를 도입하고, 함수별 상세 로깅과 중앙화된 모니터링 대시보드를 구축하는 것이 필수적이다.

6.1. 콜드 스타트

콜드 스타트는 서버리스 함수가 비활성 상태에서 요청을 처리하기 위해 초기화되는 과정에서 발생하는 지연 현상이다. 이는 함수 코드와 종속성을 로드하고, 런타임 환경을 시작하며, 필요한 경우 컨테이너를 새로 생성하는 시간을 포함한다. 결과적으로 첫 번째 요청이나 오랜 시간 유휴 상태 이후의 요청 응답 시간이 길어지게 된다. 콜드 스타트의 지속 시간은 프로그래밍 언어, 배포 패키지 크기, 클라우드 공급자 및 구성 설정에 따라 수 밀리초에서 수 초까지 다양하다.

콜드 스타트를 완전히 제거하는 것은 어렵지만, 완화하기 위한 여러 전략이 존재한다. 주요 방법으로는 함수를 주기적으로 호출하여 항상 '따뜻한' 상태로 유지하는 워밍이 있다. 또한, 배포 패키지 크기를 최소화하고, 초기화 코드를 최적화하며, 메모리 할당량을 적절히 조정하는 것이 효과적이다. 일부 공급자는 프로비저닝된 동시성과 같은 기능을 제공하여 지정된 수의 함수 인스턴스를 미리 준비된 상태로 유지함으로써 예측 가능한 성능을 보장한다.

콜드 스타트는 실시간 응답이 매우 중요한 애플리케이션에서 주요 고려사항이 된다. 따라서 애플리케이션의 지연 시간 요구사항과 함수의 예상 호출 패턴을 분석하여 적절한 완화 전략을 선택해야 한다.

6.2. 벤더 종속성

벤더 종속성은 서버리스 아키텍처를 채택할 때 주요하게 고려해야 하는 도전 과제 중 하나이다. 이는 특정 클라우드 제공업체의 서버리스 플랫폼(예: AWS Lambda, Azure Functions, Google Cloud Functions)에 애플리케이션 로직과 인프라 구성이 깊게 결합되어, 다른 플랫폼으로의 이전이 어렵거나 비용이 많이 드는 상태를 의미한다.

이러한 종속성은 여러 수준에서 발생한다. 가장 기본적으로 각 플랫폼은 고유한 트리거 이벤트 소스, 런타임 환경, 배포 패키지 형식 및 API 게이트웨이 서비스를 제공한다. 예를 들어, AWS Lambda 함수를 Amazon S3 버킷의 파일 업로드 이벤트에 연결하거나 Amazon DynamoDB 스트림을 처리하도록 구성했다면, 이 연결 구조와 IAM 정책은 AWS 생태계에 고유하다. 또한 각 벤더는 자체적인 모니터링, 로깅(예: Amazon CloudWatch), 배포 도구 체계를 가지고 있어, 애플리케이션의 운영 방식 자체가 특정 플랫폼에 종속되게 만든다.

벤더 종속성을 완화하기 위한 접근법으로는 다음과 같은 전략이 사용된다.

전략

설명

예시 도구/프레임워크

추상화 계층 사용

애플리케이션 코드와 특정 벤더의 FaaS 구현을 분리하는 미들웨어나 프레임워크를 도입한다.

Serverless Framework, AWS CDK, Terraform

멀티클라우드 설계

핵심 비즈니스 로직을 플랫폼 중립적으로 작성하고, 배포 타겟을 여러 개 유지한다.

컨테이너 기반 서버리스(예: AWS Fargate, Google Cloud Run)

표준 기술 채택

가능한 한 벤더 고유 서비스 대신 표준 API나 오픈 소스 컴포넌트를 활용한다.

KNative, 오픈 소스 메시징 큐(예: Apache Kafka)

그러나 이러한 완화 전략도 복잡성을 증가시키거나 일부 서버리스의 장점(예: 완전 관리형 서비스의 편의성)을 희생할 수 있다. 따라서 조직은 애플리케이션의 장기적 유연성 요구사항과 특정 벤더 플랫폼이 제공하는 고유한 기능 및 생태계의 이점을 신중히 저울질해야 한다.

6.3. 디버깅 및 모니터링

서버리스 환경에서는 전통적인 서버 기반 애플리케이션과 달리 인프라가 추상화되어 있어 디버깅과 모니터링에 새로운 접근이 필요하다. 실행 환경이 일시적이고 분산되어 있으며, 벤더가 관리하는 플랫폼에서 코드만 실행되기 때문이다. 이로 인해 로그 수집, 트랜잭션 추적, 성능 병목 현상 식별이 더 복잡해질 수 있다.

주요 도전 과제는 실행 로그의 분산과 통합이다. 각 함수 호출은 독립적인 컨테이너나 환경에서 발생하며, 로그는 기본적으로 클라우드 공급자의 로깅 서비스(예: AWS CloudWatch, Azure Monitor)로 스트리밍된다. 여러 함수와 서비스가 관여하는 하나의 비즈니스 트랜잭션을 종단간으로 추적하려면 분산 트레이싱 도구를 도입해야 한다. 또한, 콜드 스타트 지연 시간이나 함수 실행 시간 한계와 같은 서버리스 특유의 문제를 모니터링하는 것이 중요하다.

이를 해결하기 위해 다양한 도구와 모범 사례가 발전했다. 주요 클라우드 벤더는 자체 플랫폼에 통합된 모니터링 서비스를 제공하며, Datadog, New Relic, Thundra와 같은 제3의 전문 APM 도구들도 서버리스 지원을 강화하고 있다. 효과적인 모니터링을 위해서는 함수 호출 횟수, 지연 시간, 오류율, 비용 지표 등을 함께 추적하는 것이 필수적이다.

모니터링 요소

설명

관련 도구/서비스 예시

실행 로그

각 함수 호출의 표준 출력 및 오류 로그

AWS CloudWatch Logs, Google Cloud Logging

성능 지표

지속 시간, 콜드 스타트 시간, 메모리 사용량

AWS X-Ray, Azure Application Insights

비용 추적

실행 횟수 및 리소스 사용량에 따른 과금 내역

클라우드 벤더의 비용 관리 콘솔

분산 트레이싱

마이크로서비스 간 호출 경로 추적

Jaeger, Zipkin, 벤더별 분산 추적 서비스

디버깅은 로컬 개발 환경에서의 시뮬레이션과 원격 로그 분석을 결합하여 진행한다. 대부분의 플랫폼은 함수를 로컬에서 실행하고 테스트할 수 있는 에뮬레이터나 CLI 도구를 제공한다. 프로덕션 환경에서의 문제는 상세한 로깅과 구조화된 오류 메시지를 사전에 코드에 포함시키고, 집계된 모니터링 대시보드를 통해 사후 분석하는 방식으로 접근한다.

7. 사용 사례

서버리스 컴퓨팅은 특정 사용 사례에서 기존의 서버 기반 아키텍처에 비해 뚜렷한 이점을 제공한다. 주로 단기간 실행되는 이벤트 중심의 작업, 변동성이 큰 트래픽을 처리해야 하는 애플리케이션, 그리고 백엔드 인프라 관리에서 개발자의 부담을 줄이고자 할 때 적합하다.

실시간 파일 처리는 대표적인 사용 사례이다. 사용자가 클라우드 스토리지에 이미지나 동영상 파일을 업로드하면, 이벤트가 트리거되어 AWS Lambda나 Azure Functions 같은 함수가 즉시 실행된다. 이 함수는 썸네일 생성, 메타데이터 추출, 콘텐츠 검증 등의 작업을 수행한 후 결과를 데이터베이스나 다른 스토리지에 저장한다. 이는 전용 파일 처리 서버를 상시 운영할 필요 없이, 업로드 이벤트 발생 시에만 리소스를 소비하는 효율적인 모델이다.

웹 애플리케이션 백엔드 구축에도 널리 활용된다. API 게이트웨이와 결합하여 RESTful API의 엔드포인트를 구현할 수 있다. 각 API 경로는 특정 함수에 매핑되어 사용자 인증, 데이터베이스 조회, 비즈니스 로직 실행 등을 담당한다. 트래픽이 급증하는 시간대에 서버를 프로비저닝하거나 스케일링할 필요 없이 자동으로 요청을 처리할 수 있어, 신규 서비스나 프로토타입 개발에 특히 유리하다.

IoT 데이터 스트리밍 처리에도 효과적이다. 수많은 센서나 디바이스에서 지속적으로 발생하는 작은 규모의 데이터 패킷은 이벤트 기반 실행 모델과 잘 맞는다. 디바이스 메시지가 메시지 브로커를 통해 전달되면, 서버리스 함수가 이를 구독하여 실시간으로 데이터를 필터링, 집계, 정규화한 후 데이터 웨어하우스나 분석 시스템으로 전달한다. 이는 변동성이 큰 데이터 흐름을 효율적으로 관리하는 데 도움이 된다.

사용 사례

주요 트리거

처리 작업 예시

이점

실시간 파일 처리

객체 스토리지 업로드 이벤트

이미지 리사이징, 형식 변환, 바이러스 검사

이벤트 즉시 반응, 운영 서버 불필요

웹 애플리케이션 백엔드

HTTP 요청 (via API 게이트웨이)

사용자 인증, 데이터 조회/갱신, 외부 API 호출

탄력적 확장, 마이크로서비스 구현 용이

IoT 데이터 스트리밍

메시지 큐/스트림 (e.g., Apache Kafka, AWS IoT Core)

데이터 필터링, 실시간 집계, 이상 감지

대량의 간헐적 이벤트 처리, 비용 효율적

7.1. 실시간 파일 처리

서버리스 컴퓨팅은 실시간 파일 처리 작업에 매우 적합한 아키텍처를 제공한다. 이 접근 방식은 이벤트 기반 실행 모델을 활용하여, 클라우드 스토리지 서비스에 새로운 파일이 업로드되거나 수정되는 즉시 특정 함수를 트리거한다. 예를 들어, 사용자가 AWS S3 버킷에 이미지를 업로드하면, 이 업로드 이벤트가 AWS Lambda 함수를 자동으로 실행시켜 썸네일 생성, 메타데이터 추출 또는 바이러스 검사와 같은 처리를 수행한다. 이는 전통적인 서버 기반 방식처럼 파일을 주기적으로 확인(polling)할 필요가 없어 지연 시간을 크게 줄인다.

주요 처리 유형은 다음과 같다.

처리 유형

설명

일반적인 사용 예

미디어 변환

비디오/이미지 포맷 변환, 압축, 해상도 변경

사용자 업로드 동영상의 스트리밍용 다중 해상도 생성

데이터 변환/ETL

로그, CSV, JSON 파일의 형식 변환 및 정제

일일 보고서 파일을 데이터 웨어하우스에 적재 가능한 형식으로 가공

콘텐츠 검사

파일 내 바이러스 또는 불법 콘텐츠 검사

업로드된 모든 문서의 악성 코드 스캔

메타데이터 추출

파일에서 정보를 추출하여 인덱싱 또는 데이터베이스 저장

이미지에서 EXIF 데이터 추출, PDF에서 텍스트 색인 생성

이 패턴의 장점은 명확하다. 인프라 프로비저닝이나 지속적인 서버 관리 없이도 순간적으로 발생하는 대량의 파일 업로드 이벤트를 처리할 수 있다. 시스템은 트래픽에 따라 자동으로 확장되고, 실제 함수 실행 시간과 리소스 사용량에 대해서만 비용이 발생한다[6]. 그러나 콜드 스타트로 인한 초기 실행 지연이나, 단일 함수의 실행 시간 제한(일반적으로 15분)은 대용량 파일을 처리할 때 고려해야 할 사항이다. 이러한 제한을 극복하기 위해, 큰 파일은 작은 조각으로 나누어 처리하거나, 장시간 실행이 필요한 작업은 AWS Batch나 Google Cloud Run과 같은 다른 관리형 서비스와 조합하여 사용하는 아키텍처가 고안되기도 한다.

7.2. 웹 애플리케이션 백엔드

서버리스 컴퓨팅은 웹 애플리케이션의 백엔드 로직을 구축하는 데 매우 적합한 아키텍처 스타일이다. 전통적인 방식은 웹 서버를 프로비저닝하고 관리해야 했지만, 서버리스에서는 개발자가 API 엔드포인트 뒤의 비즈니스 로직에만 집중할 수 있다. 각 API Gateway 요청은 특정 함수를 트리거하며, 이 함수는 요청을 처리하고 응답을 반환한다. 이로 인해 서버 인프라의 운영, 패치, 확장에 대한 부담이 크게 줄어든다.

일반적인 구현 패턴으로는 RESTful API 또는 GraphQL 서버를 구성하는 것이 있다. 예를 들어, 사용자 인증, 데이터베이스 조회, 결제 처리 등의 각 기능이 독립적인 함수로 구현된다. 이러한 함수들은 마이크로서비스 아키텍처와 유사하게 느슨하게 결합되어 개발과 배포의 유연성을 제공한다. 상태 관리가 필요한 경우, 함수는 Amazon DynamoDB나 Azure Cosmos DB 같은 완전 관리형 데이터베이스 서비스와 연동된다.

이 접근 방식의 주요 이점은 탁월한 확장성과 비용 효율성이다. 애플리케이션에 트래픽이 없을 때는 함수가 실행되지 않아 비용이 발생하지 않으며, 갑작스러운 트래픽 급증 시 플랫폼이 자동으로 필요한 만큼의 함수 인스턴스를 생성하여 처리한다. 이는 트래픽 패턴이 변동성이 큰 신규 서비스나 마케팅 캠페인용 애플리케이션에 특히 유리하다.

구성 요소

전통적 아키텍처

서버리스 아키텍처

서버 관리

개발팀이 가상머신 또는 컨테이너를 직접 관리

플랫폼 제공사가 완전 관리

확장성

수동 또는 자동 확장 설정 필요

요청 수에 따른 완전 자동 확장

비용 모델

서버가 가동 중인 시간 기준 과금

함수 실행 횟수와 실행 시간 기준 과금

배포 단위

애플리케이션 또는 서비스 전체

개별 함수 단위

그러나 장기 실행 작업이나 웹소켓을 통한 지속적 연결이 필요한 실시간 애플리케이션에는 제한이 있을 수 있다. 또한, 함수 실행 시간에 제한이 있고, 콜드 스타트로 인한 초기 지연이 사용자 경험에 영향을 줄 수 있다는 점을 고려해야 한다.

7.3. IoT 데이터 스트리밍

IoT 데이터 스트리밍은 서버리스 컴퓨팅의 대표적인 사용 사례 중 하나이다. 수많은 IoT 디바이스에서 지속적으로 생성되는 센서 데이터나 이벤트 메시지는 규칙적이지 않고 간헐적인 트래픽 패턴을 보이는 경우가 많다. 서버리스 아키텍처는 이러한 데이터 스트림을 실시간으로 수집, 처리, 변환 및 저장하는 데 매우 적합한 모델을 제공한다.

일반적인 구현 패턴은 다음과 같다. 먼저, IoT 디바이스는 MQTT나 HTTP 프로토콜을 통해 AWS IoT Core, Azure IoT Hub, Google Cloud IoT Core와 같은 관리형 IoT 플랫폼으로 메시지를 전송한다. 이 플랫폼은 들어오는 메시지를 수신하면, 이를 트리거로 특정 서버리스 함수를 실행한다. 예를 들어, AWS Lambda는 AWS IoT 규칙 엔진에 의해 직접 호출될 수 있다. 함수는 각 메시지를 개별적으로 처리하며, 데이터를 필터링하거나, 평균 온도를 계산하거나, 이상 값을 감지하여 알림을 발송하는 등의 비즈니스 로직을 수행한다. 처리된 결과는 실시간 대시보드를 위한 Amazon Kinesis나 시간序列 데이터베이스에 저장되거나, 추가 분석을 위해 데이터 웨어하우스로 전달된다.

이 접근 방식의 주요 장점은 탄력적인 확장성과 비용 효율성이다. 디바이스가 수천 대에서 수백만 대로 변하고 데이터 전송 빈도가 급증하더라도, 서버리스 플랫폼은 필요한 만큼 함수 인스턴스를 자동으로 확장하여 모든 메시지를 처리한다. 반대로 트래픽이 없을 때는 리소스가 유휴 상태로 남아 비용이 발생하지 않는다. 이는 전통적인 방식처럼 피크 트래픽을 처리하기 위해 항상 가동 중인 서버 클러스터를 유지하는 것에 비해 상당한 운영 효율성을 가져온다.

처리 단계

담당 서비스/기능

역할

데이터 수집

AWS IoT Core / Azure IoT Hub

디바이스 연결, 메시지 수신 및 라우팅

이벤트 트리거

IoT 플랫폼 규칙 엔진

수신 메시지를 기반으로 서버리스 함수 호출

실시간 처리

AWS Lambda / Azure Functions

개별 메시지에 대한 비즈니스 로직 실행 (필터링, 변환, 분석)

데이터 저장/전송

Amazon DynamoDB, Kinesis, 데이터 레이크

처리 결과 저장 또는 다운스트림 서비스로 전달

단, 콜드 스타트로 인한 몇 밀리초의 지연이 발생할 수 있어, 극도로 낮은 지연 시간이 요구되는 특정 실시간 처리 시나리오에서는 고려가 필요하다. 또한, 장기 실행되는 스트림 처리나 복잡한 상태 관리가 필요한 작업에는 Apache Flink나 Apache Spark Streaming과 같은 전용 스트리밍 프레임워크와 서버리스 함수를 조합하는 하이브리드 아키텍처가 사용되기도 한다.

8. 관련 문서

  • 위키백과 - 서버리스 컴퓨팅

  • AWS - 서버리스란 무엇인가요?

  • Microsoft Azure - 서버리스 컴퓨팅

  • Google Cloud - 서버리스 설명

  • 나무위키 - 서버리스

  • IBM - 서버리스 컴퓨팅

  • CNCF - Serverless Whitepaper v1.0

  • InfoWorld - What is serverless? Serverless computing explained

리비전 정보

버전r1
수정일2026.02.14 23:11
편집자unisquads
편집 요약AI 자동 생성