전통적인 웹 개발 환경에서 서버를 운영하는 것은 매우 고통스러운 작업입니다. 서비스가 성장함에 따라 다음과 같은 난제들에 직면하게 됩니다.
이러한 고질적인 문제들을 해결하기 위해 등장한 것이 서버리스(Serverless) 모델입니다. 서버리스는 서버가 실제로 존재하지 않는다는 의미가 아니라, "개발자가 서버를 관리할 필요가 없는 환경"을 의미합니다. 클라우드 서비스 제공업체(AWS, GCP, Azure 등)가 서버 운영의 모든 과정을 자동화하여 추상화해 주는 방식입니다.
서버리스 아키텍처는 주로 FaaS(Function as a Service)와 BaaS(Backend as a Service)로 구성됩니다.
클라이언트가 이벤트를 발생시키면, 클라우드 환경이 필요한 시점에만 함수를 실행하고 종료하는 구조입니다.
서버리스 함수는 최소 단위의 기능(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" }), }; } };
함수가 오랫동안 실행되지 않으면 해당 인스턴스는 회수됩니다. 이후 첫 요청 시 런타임 환경을 다시 구축하는 데 시간이 소요되는데, 이를 콜드 스타트라고 합니다.
서버리스 아키텍처는 단순한 트렌드를 넘어 현대적인 백엔드 개발의 표준 중 하나로 자리 잡았습니다. 특히 트래픽이 불규칙한 스타트업이나, 마이크로서비스 아키텍처(MSA)를 지향하는 팀에게 최고의 선택지가 될 수 있습니다.
참고 자료: