10 KiB
10 KiB
category, tags, title, description, last_updated
| category | tags | title | description | last_updated | ||
|---|---|---|---|---|---|---|
| Unified |
|
Serverless Computing | 서버리스 컴퓨팅(Serverless Computing)은 개발자가 서버 인프라를 직접 프로비저닝하거나 관리할 필요 없이, 코드를 함수(Function) 형태로 배포하고 필요할 때만 온디맨드(on-demand)로 실행하는 클라우드 컴퓨팅 실행 모델이다[1, 2]. | 2026-05-02 |
Serverless Computing
📌 Brief Summary
서버리스 컴퓨팅(Serverless Computing)은 개발자가 서버 인프라를 직접 프로비저닝하거나 관리할 필요 없이, 코드를 함수(Function) 형태로 배포하고 필요할 때만 온디맨드(on-demand)로 실행하는 클라우드 컴퓨팅 실행 모델이다[1, 2]. 대표적으로 AWS Lambda, Azure Functions, Google Cloud Run과 같은 서비스가 있으며, HTTP 요청이나 데이터베이스 업데이트 등의 이벤트에 의해 트리거되어 자동으로 확장 및 축소된다[2, 3]. 사용한 컴퓨팅 리소스에 대해서만 비용을 지불하는 구조로 유휴 자원을 최소화하며, 운영 오버헤드를 줄이고 지속 가능한 코딩 관행을 실천하는 데 기여하는 핵심 클라우드 네이티브 기술이다[2, 4, 5].
📖 Core Content
- 실행 모델 및 자원 관리 (FaaS): 서버리스는 FaaS(Function-as-a-Service) 모델을 채택하여 개발자가 애플리케이션의 핵심 비즈니스 로직 작성에만 집중할 수 있게 해준다[1]. 인프라 확장, 자원 할당, 시스템 유지보수는 클라우드 제공자가 전담하므로, 트래픽 변화에 맞춰 자동으로 자원이 스케일링(Automatic scalability)되며 사용하지 않을 때는 유휴 상태로 전환되어 자원 낭비가 없다[1, 2, 4].
- 프레임워크별 성능과 아키텍처 특성:
서버리스 환경에서 Node.js 프레임워크(Express, Fastify, NestJS)의 실전 적용은 각기 다른 성능 패턴을 보인다[6].
- Express & Fastify: 경량화된 구조를 가져 초기화(콜드 스타트) 지연 시간이 짧고 메모리 소모가 적어 응답 속도에 민감하거나 가벼운 마이크로서비스에 적합하다[7-9].
- NestJS: 의존성 주입(DI)과 모듈 기반의 계층화된 아키텍처를 사용하여 구조가 복잡하기 때문에, 서버리스 환경에서 콜드 스타트 지연과 메모리 사용량이 크게 발생한다[8, 10, 11]. 그러나 초기화 이후의 웜 스타트(Warm start) 상태에서는 부하가 높은 상황에서도 높은 요청 처리율(Throughput)과 안정성을 유지하는 강점을 지닌다[12, 13].
- 현대 애플리케이션 아키텍처와의 연계: 서버리스 컴퓨팅은 JAMstack 아키텍처에서 백엔드 동적 프로그래밍을 처리하는 API 및 JavaScript 런타임 환경으로 통합되거나[14], 모놀리식 애플리케이션을 마이크로서비스로 분해하여 독립적으로 확장 가능하게 만드는 데 적극적으로 도입되고 있다[3, 5].
⚖️ Trade-offs & Caveats
- 콜드 스타트(Cold Starts) 지연: 일정 기간 사용되지 않아 유휴 상태였던 함수가 다시 호출될 때, 클라우드 플랫폼이 런타임 환경을 초기화하면서 발생하는 추가적인 지연 시간이다[4]. 지연 시간에 민감한 애플리케이션에서는 큰 단점으로 작용하며, 프레임워크의 계층이 두껍고 무거울수록(예: NestJS) 이 지연 시간이 길어진다[4, 8, 15].
- 무상태성(Stateless) 및 리소스 통제 한계: 실행 환경이 일시적이고 클라우드 제공자에 의해 동적으로 생성 및 소멸되므로, 기본적으로 내부 상태를 유지할 수 없으며 기반 하드웨어 리소스에 대한 직접적인 제어권이 줄어든다[4, 16].
- 실행 시간 및 동시성 제약: 클라우드 제공자의 플랫폼 정책에 따라 단일 함수의 최대 실행 시간이 제한되어 있어 장기 실행 작업에는 부적합할 수 있다[4]. 또한 극심한 고부하(Heavy load) 상황에서는 프레임워크 자체의 처리 능력을 떠나, 플랫폼의 스로틀링이나 확장 지연으로 인한 DNS 오류 및 타임아웃 등의 플랫폼 한계에 직면할 수 있다[17, 18].
🔗 Knowledge Connections
Related Concepts
[관계 유형 A: 아키텍처/기반 기술]
- Cloud Native Architecture
- 연결 이유: 서버리스는 마이크로서비스, 컨테이너 등과 함께 클라우드 네이티브 아키텍처를 구성하여 애플리케이션을 빠르고 효율적으로 확장하기 위해 주로 채택되는 핵심 기술이기 때문이다[3, 19].
- 이 개념을 통해 더 깊게 이해할 수 있는 부분: 서버리스 환경 하에서 마이크로서비스가 어떻게 분리되고 클라우드 인프라에 맞게 오케스트레이션되는지 전체적인 시스템 아키텍처 구조를 파악할 수 있다[3, 20].
- Function-as-a-Service (FaaS)
- 연결 이유: 서버리스 컴퓨팅을 실현하는 실질적인 클라우드 실행 모델로, 코드를 독립적인 함수 형태로 배포하는 방식을 의미한다[1].
- 이 개념을 통해 더 깊게 이해할 수 있는 부분: 온디맨드 함수 실행, 이벤트 트리거 방식 및 그에 따른 콜드 스타트 지연의 구조적 원리를 이해할 수 있다[1, 4].
[관계 유형 B: 구현/활용 도구]
- AWS Lambda
- 연결 이유: 코드를 업로드하면 자동으로 확장 및 리소스를 관리해 주는 가장 대표적인 서버리스 컴퓨팅 플랫폼 중 하나이다[1, 2].
- 이 개념을 통해 더 깊게 이해할 수 있는 부분: 각 Node.js 프레임워크(Express, Fastify, NestJS)가 실제 클라우드 환경에서 배포될 때의 메모리 할당, 실행 시간, 런타임 제약 등의 벤치마킹 기준과 오류 발생 패턴을 이해할 수 있다[2, 17, 21, 22].
- JAMstack
- 연결 이유: 프론트엔드와 백엔드를 분리하면서 백엔드 기능을 서버리스 함수 기반의 재사용 가능한 API로 추상화하여 사용하는 현대 웹 아키텍처 패턴이다[14, 23, 24].
- 이 개념을 통해 더 깊게 이해할 수 있는 부분: 풀스택 애플리케이션 설계 시, UI 렌더링 성능 최적화와 함께 서버리스 API가 어떻게 조합되어 빠르고 안전한 확장성을 제공하는지 알 수 있다[23, 25].
Deeper Research Questions
- 서버리스 환경에서 프레임워크(예: NestJS, Express, Fastify)의 내부 아키텍처 설계 방식(미들웨어 체인, 플러그인, 의존성 주입 등)이 콜드 스타트 시간과 웜 스타트 효율성에 구체적으로 어떤 기술적 영향을 미치는가?
- 콜드 스타트 지연을 완화하기 위해 프로비저닝된 동시성(Provisioned Concurrency)이나 비동기 요청 처리 최적화 기법은 프레임워크 코드 수준에서 어떻게 적용될 수 있는가?
- 대규모 트래픽이 발생하는 고부하(Heavy load) 상황에서 서버리스 플랫폼의 자체적인 확장 지연(Auto-scaling delay)이 프레임워크의 성공적인 요청 처리율(Success rate)에 미치는 병목 한계점은 무엇인가?
- 모놀리식 애플리케이션을 FaaS 기반의 서버리스 마이크로서비스로 마이그레이션할 때, 도메인 로직과 외부 의존성의 결합도를 낮추기 위한 육각형 아키텍처(Hexagonal Architecture) 패턴을 어떻게 효과적으로 접목할 수 있는가?
- 서버리스 컴퓨팅을 기반으로 하는 에지 컴퓨팅(Edge computing) 환경에서 지연 시간을 전역적으로 최소화하기 위한 분산 데이터 캐싱 및 상태 동기화 아키텍처 전략은 무엇인가?
Practical Application Contexts
- Implementation: Node.js 기반 프레임워크를 활용하여 외부 의존성(데이터베이스 등)이 없는 순수 메모리 기반의 API를 구축한 뒤, Serverless Framework와 같은 IaC 도구를 통해 AWS Lambda 인프라에 함수 형태로 패키징 및 배포한다[22, 26].
- System Design: 이벤트 주도형(Event-driven) 백엔드 시스템 설계 시, HTTP 요청이나 데이터베이스 상태 변경 등의 트리거에 따라 독립적으로 반응하고 자동 스케일링되는 클라우드 네이티브 마이크로서비스 구조를 설계할 때 핵심 컴포넌트로 활용한다[2, 3].
- Operation / Maintenance: 트래픽 변동 폭이 큰 애플리케이션에서 서버를 상시 구동하지 않고 요청당 과금 모델을 사용하여 운영 비용을 최적화하며, CloudWatch 모니터링을 통해 함수의 메모리 사용량과 초기화 지연(Init Duration)을 추적하여 운영 안정성을 관리한다[4, 27, 28]. 유휴 자원 감소를 통해 지속 가능한 코딩 지표(Sustainability)도 개선한다[5].
- Learning Path: HTTP 통신 및 API 라우팅 기초를 이해한 후, 클라우드 제공자의 FaaS 모델(AWS Lambda 동작 원리 등)을 학습하고, 가상 유저(Virtual Users) 부하 테스트(예: Artillery)를 거치며 프레임워크별 런타임 효율성 차이를 분석하는 방향으로 학습을 진행한다[1, 29-31].
- My Project Relevance: 진행 중인 애플리케이션 프로젝트가 요구하는 비즈니스 특성에 맞추어(예: 극도의 빠른 로딩 및 초기 반응성이 필요한지, 혹은 장기적 유지보수와 복잡한 구조화가 필요한지) 서버리스 플랫폼 상에서 가장 효율적으로 구동될 수 있는 최적의 프레임워크를 선정하기 위한 기준 및 테스트 방법론으로 적용할 수 있다.
Adjacent Topics
- Microservices Architecture
- 확장 방향: 서버리스 함수들이 모여 어떻게 거대한 마이크로서비스 생태계를 구성하고 통신하는지, 상태(State) 비공유 모델에서의 분산 트랜잭션 및 오케스트레이션 관리 전략으로 연구를 확장할 수 있다.
- Edge Computing
- 확장 방향: 글로벌 지연 시간을 줄이기 위해 사용자에게 가장 물리적으로 가까운 엣지(Edge) 노드에서 서버리스 함수를 실행하는 패턴 및 콘텐츠 전송 네트워크(CDN) 통합 최적화 모델에 대해 깊이 있게 탐구할 수 있다.
Last updated: 2026-05-02