서버리스 클라우드 함수 vs. 커스텀 마이크로서비스

업데이트: 2026년 10월

서버리스 클라우드 함수는 배포 가능한 백엔드 로직의 단일 단위이고, 마이크로서비스는 독립적으로 운영되는 하나의 완전한 서비스입니다. 이 한 문장이 비교 전체의 축소판입니다. 나머지 모든 것(운영 부담, 비용 곡선, 콜드 스타트, 상태)은 배포 단위가 무엇인지에서 따라 나옵니다. 플랫폼에 넘기는 함수인지, 직접 운영하는 서비스인지의 차이입니다.

핵심 요약

질문답변
핵심 차이배포 단위: 연산 하나(함수) vs. 소유하는 역량 하나(서비스)
운영 주체함수: 플랫폼. 마이크로서비스: 서비스마다 팀
유휴 비용함수는 0으로 축소; 서비스 집합은 하루 종일 과금
함수가 치르는 대가콜드 스타트, 실행 시간 제한, 무상태성
서비스가 치르는 대가파이프라인, 오케스트레이션, 모니터링, 온콜이 서비스 수만큼 곱해짐

코드로 보는 배포 단위

다음은 결제(checkout) 연산을 위한 배포물 전체입니다. 함수 하나뿐이며, 서비스별 저장소도, 컨테이너 이미지도, 파이프라인도 없습니다.

// JavaScript / Node.js — the function is the whole deployable
// cloud/main.js — runs on the platform; there is no service to operate
Parse.Cloud.define('checkout', async (request) => {
  const cart = await new Parse.Query('Cart').get(request.params.cartId, {
    sessionToken: request.user.getSessionToken(),
  });
  // …price the cart, reserve stock, write the order…
  return { orderId: cart.id, status: 'confirmed' };
});

// Any client calls it by name — no gateway, container, or pipeline
const result = await Parse.Cloud.run('checkout', { cartId });

이 스니펫의 마이크로서비스 버전은 저장소 하나입니다. HTTP 서버, 컨테이너 빌드, 배포 매니페스트, 서비스 디스커버리, 헬스 체크, 대시보드, 온콜 순번이 결제 로직의 첫 줄을 쓰기도 전에 필요합니다.

서버리스 클라우드 함수 vs. 커스텀 마이크로서비스

항목서버리스 클라우드 함수커스텀 마이크로서비스
배포 단위함수서비스(프로세스 + API + 데이터)
직접 운영하는 인프라없음. 플랫폼이 관리서비스마다 컨테이너, 오케스트레이션, 네트워킹
확장자동, 호출 단위, 0까지직접 설정; 유휴 시에도 용량이 가동
상태계약상 무상태; 상태는 데이터베이스에인메모리 상태 보유 가능(대가 있음)
지연 시간 프로필웜 호출은 빠름; 유휴 인스턴스는 콜드 스타트 비용일정함. 프로세스가 항상 가동
런타임플랫폼 제공(보통 관리형 JavaScript 런타임)컨테이너화할 수 있는 것이라면 무엇이든
장시간 실행 작업실행 시간 제한으로 중단무제한
팀 구성제품 엔지니어만플랫폼/DevOps 역량 필요
비용 곡선실행당 과금; 급증 부하에서는 독보적, 지속 부하에서 역전고정; 꾸준한 대량 볼륨에서 효율적

마이크로서비스 문헌은 이 아키텍처의 이점이 자동화된 배포, 정교한 모니터링, 장애를 전제한 설계 같은 상당한 운영 성숙도를 대가로 얻어진다는 점을 분명히 밝힙니다. 함수는 바로 그 부담을 플랫폼에 넘기며, Mike Roberts의 서버리스 분석이 FaaS를 통제권을 내주고 운영 부담을 근본적으로 줄이는 거래로 규정하는 이유가 여기에 있습니다. 어느 거래도 공짜는 아니며, 관건은 팀이 어느 쪽의 대가를 감당할 수 있는가입니다.

요청에 실제로 일어나는 일

서버리스 함수와 커스텀 마이크로서비스 집합을 거치는 요청 경로함수 모델에서는 클라이언트가 관리형 엔드포인트를 호출하면 플랫폼이 관리형 데이터베이스를 대상으로 함수를 실행하고 인스턴스를 자동으로 확장합니다. 마이크로서비스 모델에서는 클라이언트가 API 게이트웨이를 거쳐 팀이 운영하는 여러 서비스 중 하나에 도달하며, 각 서비스는 자체 컨테이너 배포와 데이터 저장소를 갖습니다.

마이크로서비스 모델(팀이 운영)

클라이언트

API 게이트웨이

장바구니 서비스

주문 서비스

장바구니 DB

주문 DB

함수 모델(플랫폼이 운영)

클라이언트

관리형 엔드포인트

checkout()

관리형 데이터베이스

함수 모델에서는 클라이언트가 관리형 엔드포인트를 호출하면 플랫폼이 관리형 데이터베이스를 대상으로 함수를 실행하고 인스턴스를 자동으로 확장합니다. 마이크로서비스 모델에서는 클라이언트가 API 게이트웨이를 거쳐 팀이 운영하는 여러 서비스 중 하나에 도달하며, 각 서비스는 자체 컨테이너 배포와 데이터 저장소를 갖습니다.

아래쪽 절반에는 위쪽 절반에서 표현할 수 없는 요소가 더해진다는 점에 주목해야 합니다. 서비스 간 호출, 서비스별 데이터 저장소, 게이트웨이가 그것이며, 마이크로서비스의 복잡성이 실제로 자리 잡는 곳이 바로 이 조정 영역입니다. 장바구니 서비스와 주문 서비스 사이의 분산 트랜잭션, 재시도, 부분 장애는 직접 작성해야 하는 코드입니다. 함수 모델에서는 같은 워크플로가 보통 함수 하나와 데이터베이스 하나이며, 이벤트 기반 요소(트리거, 예약 작업)는 직접 운영하는 큐가 아니라 플랫폼이 처리합니다.

함수가 마이크로서비스 집합을 대체하는 때와 대체할 수 없는 때

BaaS 패턴 뒤에 있는 솔직한 관찰은 이렇습니다. 전형적인 제품의 마이크로서비스 대부분은 얇습니다. 입력을 검증하고, 규칙을 적용하고, 데이터베이스를 읽거나 쓰고, 이웃 서비스를 호출합니다. 그 로직을 둘러싼 운영 껍데기가 무게의 90%입니다. BaaS 안의 클라우드 함수는 그 껍데기를 지웁니다. 데이터베이스, 인증, 파일 스토리지, API가 플랫폼 서비스이므로 각 “서비스”는 소수의 함수와 트리거로 축소됩니다. CRUD에 로직을 더한 제품을 출시하는 1–10명 규모의 팀에는 그 이상이 필요한 경우가 드뭅니다.

한계 역시 분명합니다. 함수는 특수 하드웨어가 필요한 추천 모델, 한 시간 동안 실행되는 비디오 트랜스코더, 커스텀 튜닝이 들어간 웹소켓 팬아웃 엔진, 지속적인 처리량 때문에 호출당 요금이 비싼 선택지가 되는 컴포넌트를 호스팅할 수 없습니다. 컴포넌트가 이 선을 넘으면 실제 서비스로 추출해 함수와 상호 운용하도록 하면 됩니다. 검증된 핫스팟을 추출하는 것은 너무 일찍 만든 추측성 집합을 분해하는 것보다 훨씬 저렴한 마이그레이션이며, 이는 모놀리스 우선 논거가 한 단계 위에서 가르치는 것과 같은 교훈입니다.

일반적인 사용 사례

  • 함수: API와 모바일 백엔드. 관리형 데이터베이스 위에서 요청을 처리하는 로직입니다. 가장 대표적인 사례이며 BaaS 플랫폼이 처음부터 끝까지 패키징하는 바로 그 사례입니다.
  • 함수: 트리거와 연결 작업. 저장 시 검증, 업로드 시 크기 조정, 서드파티 API 동기화, 야간 작업 실행. 전용 서비스로 만들기에는 민망할 만큼 짧게 끝나는 반응들입니다.
  • 함수: 급증하거나 예측 불가능한 트래픽. 출시, 캠페인, MVP. 0으로 축소되는 특성이 급증과 한산한 시기를 모두 흡수합니다.
  • 마이크로서비스: 지속적으로 무거운 컴포넌트. 검색, 피드, 가격 책정 엔진. 상시 가동 용량이 더 저렴하고 튜닝 가능한 꾸준한 부하입니다.
  • 마이크로서비스: 특수 런타임. 비표준 언어, 네이티브 의존성, GPU, 장시간 실행 프로세스.
  • 하이브리드. API 표면과 이벤트는 함수로, 수치가 요구하는 컴포넌트 한두 개는 추출한 서비스로.

함수와 마이크로서비스 중 무엇을 선택해야 할까? 결정 매트릭스

상황권장 방향
소규모 팀, 제품 로직이 대부분 CRUD + 규칙BaaS 위의 함수. 집합은 역량이 아니라 비용을 더함
트래픽이 급증하거나, 낮거나, 예측 불가능함수. 0으로 축소가 논거의 전부
컴포넌트가 작업당 수 분에서 수 시간 실행마이크로서비스(또는 백그라운드 작업 시스템). 타임아웃이 함수를 배제
핫 패스에서 지속적인 대량 처리량마이크로서비스. 고정 요금 용량이 비용 면에서 유리
모든 요청에 엄격한 꼬리 지연 시간 예산마이크로서비스. 콜드 스타트 편차 없음
커스텀 런타임, 네이티브 의존성, 특수 하드웨어마이크로서비스. 플랫폼은 지원하는 것만 실행
전담 운영 역량이 없음함수. 집합의 세금은 예산에 잡았든 아니든 청구됨
함수 형태의 제품 안에 핫스팟 하나하이브리드. 그 서비스 하나만 추출하고 나머지는 함수로 유지

한계와 트레이드오프

  • 함수: 실행 제한은 넘을 수 없는 벽입니다. 긴 작업은 작업 시스템이나 서비스로 옮겨야 합니다. 어떤 묘책도 타임아웃을 우아하게 늘려 주지 않습니다.
  • 함수: 콜드 스타트와 체인. 호출당으로는 드물지만, 함수가 함수를 호출하는 아키텍처에서는 콜드 스타트가 누적됩니다. 핫 패스는 얕게 유지해야 합니다.
  • 함수: 플랫폼 결합. 런타임과 그 API는 플랫폼의 것입니다. 셀프 호스팅할 수 있는 오픈소스 기반이 종속에 대한 실질적인 보험입니다.
  • 마이크로서비스: 운영 청구서는 서비스 단위입니다. 파이프라인, 모니터링, 버전 관리되는 계약, 온콜이 집합과 함께 곱해집니다. 이를 과소평가하는 것이 전형적인 실패 양상입니다.
  • 마이크로서비스: 분산 시스템 문제가 첫날부터 찾아옵니다. 네트워크 분할, 부분 장애, 서비스 간 일관성은 예외 상황이 아니라 아키텍처의 상수입니다.
  • 양쪽 모두: 상태는 어차피 외부화됩니다. 함수는 이를 강제하고, 잘 운영되는 서비스는 이를 선택합니다. 어느 설계에서든 결국 신뢰할 수 있는 원본 데이터를 보관하는 것은 컴퓨팅이 아니라 데이터베이스입니다.

Back4app에서의 서버리스 함수와 마이크로서비스

Back4app은 관리형 데이터베이스, 자동 생성되는 REST 및 GraphQL API, 인증, 파일 스토리지, Cloud Code 서버리스 함수를 결합한 오픈소스 Backend as a Service(BaaS) 플랫폼입니다. 이 비교의 함수 쪽을 통째로 제공하는 셈입니다. Cloud Code는 위의 checkout 같은 이름 있는 함수와 함께 데이터베이스 트리거, 예약 작업을 실행하며, 그 옆에는 마이크로서비스 집합이 맡았을 모든 기능이 이미 갖춰져 있습니다. 그래서 대부분의 제품이 만들었을 집합은 관리형 서비스 위의 함수가 됩니다. 그리고 기반이 오픈소스이고 셀프 호스팅할 수 있으므로 추출 경로는 열려 있습니다. 컴포넌트 하나가 함수 모델을 넘어서면 주변 플랫폼을 버리지 않고도 전용 서비스로 분리할 수 있습니다.

자주 묻는 질문

서버리스 함수는 마이크로서비스입니까?

정확히는 아닙니다. 세분화 수준이 자릿수 하나만큼, 즉 10배가량 차이 납니다. 마이크로서비스는 하나의 비즈니스 역량을 소유하며, 자체 프로세스, 데이터 저장소, 배포 파이프라인, API 표면을 갖습니다. 함수는 하나의 연산을 소유합니다. 마이크로서비스 하나는 보통 여러 함수로 분해되며, 각 함수를 둘러싼 프로세스, 확장, 런타임은 팀이 아니라 플랫폼이 제공합니다.

서버리스 함수가 마이크로서비스를 대체할 수 있습니까?

많은 제품에서 그렇습니다. 특히 서비스들이 주로 데이터베이스를 검증과 가벼운 워크플로로 감싸는 역할이라면 더욱 그렇습니다. BaaS 위의 함수는 데이터베이스, 인증, API를 물려받으므로 작성할 것은 진짜 비즈니스 로직뿐입니다. 예외도 분명히 존재합니다. 장시간 실행 작업, 커스텀 런타임, 지속적인 대량 처리량, 엄격한 지연 시간 하한이 필요한 경우에는 여전히 직접 운영하는 서비스가 유리합니다.

함수와 마이크로서비스 중 어느 쪽이 저렴합니까?

볼륨이 낮거나 급증하는 경우에는 함수입니다. 실행 단위로 지불하고 유휴 비용은 0인 반면, 마이크로서비스 집합은 컨테이너 비용이 하루 종일 청구되고 운영에 드는 엔지니어링 시간까지 더해집니다. 지속적인 대량 트래픽에서는 곡선이 교차하며 상시 가동 용량의 요청당 비용이 더 저렴해집니다. 비교에는 운영 인력의 급여를 포함해야 합니다. 대개 인프라 항목보다 그쪽이 더 큽니다.

콜드 스타트 때문에 함수가 마이크로서비스보다 느립니까?

유휴 인스턴스에 닿는 일부 호출에서만 그렇습니다. 보통 몇 밀리초에서 1초 남짓이며, 항상 웜 상태인 서비스의 일정한 지연 시간과 대비됩니다. 꾸준한 트래픽은 함수 인스턴스를 웜 상태로 유지하며, 주의할 경우는 함수 체인입니다. 각 홉마다 자체 콜드 스타트가 더해질 수 있기 때문입니다. 엄격한 꼬리 지연 시간 예산이 있다면 여전히 상시 가동 서비스가 유리합니다.

커스텀 마이크로서비스가 분명히 유리한 때는 언제입니까?

함수 타임아웃보다 오래 걸리는 장시간 실행 또는 상태 저장 작업, 플랫폼이 제공하지 않는 커스텀 런타임이나 시스템 의존성, 특수 하드웨어, 상시 가동 용량이 더 저렴한 지속적인 대량 처리량, 그리고 네트워크와 배포 토폴로지를 완전히 통제해야 하는 팀입니다. 한 컴포넌트에 이 중 여러 조건이 해당된다면 그 컴포넌트는 서비스가 되어야 합니다.

서버리스 함수는 상태를 유지할 수 있습니까?

호출 사이에는 유지할 수 없습니다. 모든 함수 호출은 깨끗한 상태에서 시작하며, 보존할 가치가 있는 것은 데이터베이스나 캐시에 있어야 합니다. 마이크로서비스는 인메모리 상태를 가질 수 있지만, 확장과 장애 조치가 더 어려워지는 대가를 치릅니다. 실무에서 두 아키텍처는 같은 규율로 수렴합니다. 상태를 외부화하고, 컴퓨팅은 일회용으로 취급하는 것입니다.

함수와 마이크로서비스를 결합할 수 있습니까?

예. 성숙한 시스템은 대개 그렇게 합니다. 실용적인 분할은 이렇습니다. 함수는 요청/응답 API 로직, 데이터베이스 트리거, 예약 작업, 이벤트 연결 작업을 처리하고, 전용 서비스는 무겁고 꾸준한 부하나 특수한 런타임 요구를 가진 소수의 컴포넌트를 처리합니다. 함수로 시작해 수치가 요구할 때 서비스를 추출하는 편이 그 반대 방향의 마이그레이션보다 저렴합니다.

관련 용어

비교 대상

참고 자료

백엔드를 구축할 준비가 되셨나요?

몇 분 안에 Back4app에서 프로젝트를 시작하세요. 데이터베이스, 인증, API, Cloud Code가 포함되어 있으며 신용카드는 필요 없습니다.

작성 및 검수: Back4app Engineering, Back4app Engineering · 게시일 2026-10-27