사용한 만큼만 비용을 지불하고, 사용하지 않을 때는 0으로 스케일링하며, 서버 관리를 완전히 중단하세요 — 하지만 경제성이 더 이상 통하지 않는 시점은 알아두십시오.

귀하의 애플리케이션은 트래픽 변동이 심합니다 — 밤에는 조용하고, 업무 시간 중에는 급증하며, 마케팅 캠페인이나 계절적 이벤트로 인해 예측 불가능한 폭주가 발생합니다. 귀하는 시간의 70% 동안 유휴 상태인 서버에 비용을 지불하고 있습니다. 또는 신제품을 구축 중이며 제품-시장 적합성을 검증하기 전에 인프라 프로비저닝, 용량 계획 및 온콜 로테이션에 투자하고 싶지 않습니다. Serverless는 요청당 가격 책정, 자동 스케일링, 제로 인프라 관리를 제공합니다 — 하지만 워크로드 특성이 적합할 때만 해당합니다.
Explore more design patterns and system architectures
서버리스 우선(serverless-first) 방식은 15분을 초과하는 장기 실행 프로세스, 영구적인 WebSocket 연결이 필요한 워크로드, 예약 용량이 더 저렴한 일관된 고처리량 트래픽이 발생하는 애플리케이션, 그리고 낮은 수준의 OS 또는 네트워크 구성이 필요한 시스템에 적합하지 않습니다. MicrocosmWorks는 아키텍처 설계 시 이러한 제약 조건을 기반으로 각 워크로드를 평가하고, 서버리스가 API 엔드포인트 및 이벤트 처리를 담당하고 컨테이너나 VM이 지속적인 컴퓨팅이 필요한 워크로드를 실행하는 하이브리드 접근 방식을 권장합니다. 이러한 실용적인 접근 방식은 적합하지 않은 모든 구성 요소를 서버리스로 강제하려는 일반적인 실수를 피할 수 있습니다.
MicrocosmWorks는 주요 endpoint에 provisioned concurrency를 활용하고, 초기화 시간을 줄이기 위한 function bundle optimization을 수행하며, Java 워크로드의 경우 콜드 스타트를 초 단위에서 밀리초 단위로 단축시키는 Lambda SnapStart를 전략적으로 사용하여 Lambda cold start 문제를 완화합니다. 또한, latency-sensitive한 경로는 Node.js나 Python과 같이 최소한의 dependencies를 가진 lightweight runtime을 사용하도록 애플리케이션을 아키텍처하여, provisioned concurrency 없이도 cold start를 200ms 미만으로 유지합니다. 이 정도의 latency조차 허용되지 않는 endpoint의 경우, sub-10ms 응답을 위해 Lambda@Edge 또는 CloudFront Functions를 사용합니다.
MicrocosmWorks는 개발자의 머신에서 거의 production 수준의 충실도로 cloud 서비스를 에뮬레이트하는 SST (Serverless Stack), LocalStack 또는 Serverless Framework의 오프라인 모드와 같은 도구를 사용하여 로컬 개발 환경을 설정합니다. 저희는 각 pull request마다 스핀업되는 임시 cloud 환경에서 실행되는 integration test suites를 구현하여, 개발자들이 staging environment를 공유하지 않고도 실제 AWS 서비스를 대상으로 유효성을 검사할 수 있도록 합니다. 이러한 이중 접근 방식은 개발을 위한 빠른 local iteration loops를 제공하는 동시에, 코드가 production에 도달하기 전에 cloud-specific issues를 포착할 수 있게 합니다.
MicrocosmWorks는 가변적이거나 급증하는 트래픽 패턴을 가진 애플리케이션의 경우 서버리스가 훨씬 저렴하다는 것을 발견했습니다. 이는 상응하는 항상 켜져 있는 컨테이너 배포보다 70-90% 저렴한 경우가 많지만, 월 1,000만~2,000만 호출 이상의 지속적인 처리량에서는 비용 이점이 줄어듭니다. 저희는 아키텍처 설계 중에 고객의 특정 트래픽 패턴에 맞춰 서버리스 호출당 요금과 예약된 컨테이너 용량을 비교하고, API Gateway 요금 및 데이터 전송 요금과 같은 숨겨진 비용을 포함하는 비용 예측 모델을 구축합니다. 시간당 $10-$35의 컨설팅 요금으로 이용 가능한 저희의 최적화 서비스는 서버리스 청구 내역을 정기적으로 검토하여 과도하게 프로비저닝된 메모리, 과도한 함수 실행 시간 또는 불필요한 API Gateway 사용으로 인한 낭비를 식별합니다.
MicrocosmWorks는 Lambda 함수와 데이터베이스 사이에 영구적인 계층으로 배포되는 Amazon RDS Proxy 또는 PgBouncer와 같은 연결 풀링 프록시를 사용하여, 수천 개의 Lambda 연결을 관리 가능한 실제 데이터베이스 연결 풀로 다중화합니다. 또한, 연결 풀링이 여전히 병목 현상을 일으킬 수 있는 높은 동시성 워크로드의 경우, MicrocosmWorks는 서버리스 애플리케이션이 DynamoDB 또는 기타 연결 없는 데이터베이스를 선호하도록 설계합니다. 관계형 데이터베이스를 사용해야 하는 애플리케이션의 경우, 동시 Lambda 호출이 데이터베이스의 연결 용량과 일치하도록 제한하는 연결 인식 스케일링 제한을 구현합니다.
Serverless-first 아키텍처는 관리형 이벤트 서비스 (EventBridge, SQS, Step Functions)로 연결된 관리형, 스케일-투-제로 컴퓨트 서비스 (Lambda, Cloud Functions, Vercel Functions)를 기반으로 애플리케이션을 전적으로 구축합니다. 패치할 서버도, 크기를 조정할 클러스터도, 계획할 용량도 없습니다. 함수는 이벤트(HTTP 요청, 큐 메시지, 스케줄 트리거, 데이터베이스 변경)에 응답하여 실행되며, 0에서 수천 개의 동시 인스턴스로 자동 스케일링됩니다. 이 패턴은 서버리스 데이터베이스(DynamoDB, Neon, PlanetScale), 서버리스 큐(SQS), 서버리스 오케스트레이션(Step Functions, Temporal Cloud)으로 확장됩니다.
이 아키텍처는 본질적으로 이벤트 기반입니다. API Gateway(AWS API Gateway, Vercel)는 HTTP 요청을 개별 함수로 라우팅합니다. 이벤트 소스(SQS queues, EventBridge rules, S3 notifications, DynamoDB streams)는 함수를 비동기적으로 트리거합니다. Step Functions 또는 Temporal은 각 단계가 재시도, 타임아웃, 오류 처리가 내장된 함수인 다단계 워크플로우를 오케스트레이션합니다. 서버리스 데이터베이스(키-값용 DynamoDB, 관계형용 Neon/PlanetScale)는 용량 관리 없이 스토리지를 처리합니다. 스트랭글러 피그(strangler fig) 패턴은 기존 모놀리식 아키텍처에서 점진적인 마이그레이션을 가능하게 합니다.
| 계층 | 기술 |
|---|---|
| 컴퓨트 | AWS Lambda, Vercel Functions (Fluid Compute), Google Cloud Functions, Cloudflare Workers |
| API | API Gateway (REST/WebSocket), Vercel, AppSync (GraphQL) |
| 오케스트레이션 | AWS Step Functions, Temporal Cloud, Vercel Workflow DevKit |
| 데이터 | DynamoDB, Neon Postgres, PlanetScale, Upstash Redis, S3 |
| 이벤트 | EventBridge, SQS, SNS, Vercel Queues |
| 관측 가능성 | CloudWatch, Datadog (서버리스 모니터링), Lumigo, X-Ray |
| 사용 시점 | 회피 시점 |
|---|---|
| 트래픽이 유휴 기간이 길어 가변적일 때 (스케일-투-제로가 비용 절감) | 트래픽이 꾸준하고 대량일 때 — 지속적인 로드에서는 예약 인스턴스가 50-70% 더 저렴합니다 |
| 제로 인프라 관리 및 운영 오버헤드를 원할 때 | 영구적인 연결이 필요할 때 (WebSocket 서버, 데이터베이스 연결 풀) — Vercel이 이를 처리하긴 하지만 |
| 애플리케이션이 이벤트 기반 함수로 자연스럽게 분해될 때 | 워크로드가 요청당 15분 이상의 연속 실행을 요구할 때 |
| 모놀리식 아키텍처에서 점진적으로 마이그레이션하며 엔드포인트별 롤아웃을 원할 때 | 팀이 분산 시스템에 익숙하지 않을 때 — 서버리스는 분산 디버깅의 복잡성을 야기합니다 |
MW는 서버리스를 종교적인 결정이 아닌 경제적인 결정으로 다룹니다. 우리는 귀하의 실제 트래픽 패턴(이론적이 아닌)에 대해 서버리스, 컨테이너, 예약 인스턴스의 비용을 모델링하고, 운영을 위한 엔지니어링 시간을 포함하여 총 소유 비용을 최소화하는 옵션을 추천합니다. 우리의 서버리스 아키텍처는 함수별 비용 할당(모든 호출에 해당 호출을 트리거한 기능 태그 지정), P99가 임계값을 초과할 때 경고를 포함하는 콜드 스타트 모니터링, 그리고 스프린트당 하나의 엔드포인트를 이동하는 점진적 마이그레이션 플레이북을 포함합니다. 우리는 미디어 회사, SaaS 제품, 전자상거래 플랫폼의 모놀리식 아키텍처를 서버리스로 마이그레이션했으며 — 두 경우에는 워크로드 특성이 변경되었을 때 일부를 다시 컨테이너로 마이그레이션했습니다.
보안은 출시 후 추가하는 기능이 아닙니다. 그것은 아키텍처의 속성입니다 — 시스템이 보안을 위해 설계되었거나 그렇지 않거나.