taeridad19 님의 블로그 입니다.

  • 2025. 3. 15.

    by. taeridad19

    목차

      서버리스 컴퓨팅이란? 기존 서버 기반 개발과의 차이점

      최근 몇 년간 클라우드 컴퓨팅의 빠른 진화는 소프트웨어 개발 방식에 근본적인 변화를 일으켰습니다. 그중에서도 **서버리스 컴퓨팅(Serverless Computing)**은 효율성과 민첩성을 중시하는 현대 IT 환경에서 매우 주목받는 아키텍처입니다. 이름만 보면 "서버가 없다"는 뜻처럼 들릴 수 있으나, 실제로는 서버 관리를 개발자가 하지 않아도 되는 환경을 의미합니다. 이 글에서는 서버리스 컴퓨팅의 개념, 작동 방식, 기존 서버 기반 개발과의 주요 차이점, 장단점, 실제 활용 사례에 대해 깊이 있게 살펴보겠습니다.

      서버리스 컴퓨팅이란? 기존 서버 기반 개발과의 차이점


      1. 서버리스 컴퓨팅이란 무엇인가?

      서버리스 컴퓨팅은 클라우드 제공업체(AWS, Azure, Google Cloud 등)가 백엔드 인프라를 자동으로 관리하고, 개발자는 비즈니스 로직에 집중할 수 있도록 하는 이벤트 기반 실행 모델입니다. 서버리스 환경에서는 애플리케이션의 각 기능이 개별적으로 실행되며, 요청이 있을 때만 작동하여 자원을 소비합니다.

      이 구조는 일반적으로 **Function as a Service(FaaS)**라고도 하며, 대표적인 예로는 AWS Lambda, Azure Functions, Google Cloud Functions 등이 있습니다.

      핵심 특징

      • 인프라 자동 관리: 서버 설치, 운영체제 패치, 확장 등 작업 불필요
      • 이벤트 기반 실행: 함수는 트리거(요청, 메시지 등)가 있을 때만 실행
      • 과금 모델: 사용한 만큼만 비용 발생 (초 단위 혹은 요청 단위)
      • 자동 확장: 요청 수에 따라 함수가 자동으로 수평 확장됨

      2. 기존 서버 기반 개발과의 구조적 차이

      기존의 서버 기반 개발은 보통 물리 서버 또는 가상 머신을 기반으로 백엔드 로직을 실행합니다. 이는 개발자가 직접 서버를 프로비저닝하고, 설정을 조정하며, 확장 및 유지보수를 담당해야 함을 의미합니다.

      주요 차이점 비교

      • 서버 관리
        • 기존 방식: 인프라, 운영체제, 보안 패치 모두 개발자가 관리
        • 서버리스: 클라우드 플랫폼에서 자동 관리
      • 배포 방식
        • 기존 방식: 전체 애플리케이션 또는 서비스 단위 배포
        • 서버리스: 개별 함수 단위로 배포 가능
      • 비용 구조
        • 기존 방식: 사용 여부와 관계없이 상시 실행 비용 발생
        • 서버리스: 함수가 실행된 시간과 횟수에 따라 요금 부과
      • 확장성
        • 기존 방식: 수동 확장(로드 밸런서, Auto Scaling 설정 필요)
        • 서버리스: 자동 확장 (트래픽 증가에 따라 실시간 대응)

      3. 서버리스 컴퓨팅의 주요 장점

      1. 개발 집중도 향상

      서버 관리나 인프라 유지보수에 시간을 뺏기지 않고, 순수한 로직 구현에만 집중할 수 있습니다. 이는 개발 속도 향상으로 이어지며, 특히 스타트업이나 소규모 팀에 큰 이점을 줍니다.

      2. 비용 효율성

      애플리케이션이 실행되지 않는 시간에는 비용이 발생하지 않기 때문에, 트래픽이 들쭉날쭉한 서비스나 간헐적으로 사용되는 기능에 적합합니다.

      3. 빠른 배포 및 반복

      함수를 작은 단위로 쪼개어 개발하고 배포할 수 있어, CI/CD 환경에 이상적입니다. 오류 수정이나 기능 개선을 신속하게 반영할 수 있습니다.

      4. 자동 확장성

      고객 수나 요청이 갑자기 증가하더라도, 서버리스 환경에서는 별도 설정 없이 자동으로 확장되며 안정적인 성능을 유지할 수 있습니다.


      4. 서버리스 컴퓨팅의 단점 및 고려사항

      1. 콜드 스타트 문제

      일부 클라우드 플랫폼에서는 함수가 일정 시간 미사용 상태였다가 다시 실행될 때 초기 로딩 시간이 발생할 수 있습니다. 이를 **콜드 스타트(Cold Start)**라고 하며, 사용자 경험에 영향을 줄 수 있습니다.

      2. 벤더 종속성

      AWS, Azure, GCP 등의 플랫폼에서 제공하는 도구나 API에 많이 의존하게 되면, 플랫폼 전환이 어렵고 자유도가 떨어질 수 있습니다.

      3. 디버깅 및 테스트의 어려움

      로컬 환경에서 서버리스 함수의 동작을 정확하게 재현하기 어려운 경우가 많아, 디버깅이나 로깅이 복잡할 수 있습니다.

      4. 상태 유지 어려움

      서버리스 함수는 기본적으로 **무상태(stateless)**이며, 실행 이후 모든 데이터는 사라집니다. 상태 유지를 원할 경우 별도의 외부 저장소(Redis, DB 등)를 연계해야 합니다.


      5. 서버리스 컴퓨팅의 활용 사례

      1. API 백엔드 구축

      서버리스 환경은 RESTful API 또는 GraphQL API 서버를 구축하는 데 적합합니다. 요청이 있을 때만 동작하므로 리소스 낭비가 줄어듭니다.

      2. 이미지 및 동영상 처리

      사용자가 이미지를 업로드할 때 자동으로 크기를 조정하거나 워터마크를 삽입하는 작업을 서버리스 함수로 처리할 수 있습니다.

      3. 채팅 및 알림 시스템

      이벤트 기반으로 작동하는 채팅, 알림, 이메일 발송 시스템을 빠르고 효율적으로 구축할 수 있습니다.

      4. 크론 작업 및 백그라운드 처리

      정기적인 보고서 생성, 데이터 정리 등 반복 작업을 트리거 기반으로 자동화할 수 있습니다.


      6. 서버리스 도입 전 고려해야 할 질문

      서버리스 컴퓨팅은 만능 솔루션이 아닙니다. 다음과 같은 질문을 통해 도입 여부를 판단해야 합니다:

      • 서비스는 이벤트 중심 구조에 적합한가?
      • 호출 간 상태 유지가 필요한가?
      • 초 단위 응답 속도가 중요한 실시간 시스템인가?
      • 플랫폼 종속성을 수용할 준비가 되어 있는가?

      특히 상태 유지를 많이 필요로 하거나, 매우 낮은 지연 시간이 필수적인 경우에는 전통적인 서버 아키텍처가 더 적합할 수 있습니다.


      결론: 서버리스는 혁신이지만, 전략적으로 접근하자

      서버리스 컴퓨팅은 개발자의 업무를 간소화하고, 운영 비용을 최적화하며, 확장성과 유연성을 크게 향상시킬 수 있는 혁신적인 패러다임입니다. 하지만 콜드 스타트, 디버깅 어려움, 벤더 종속성 같은 단점도 존재하므로, 서비스의 특성과 비즈니스 모델을 고려한 전략적인 선택이 필요합니다.

      기존 서버 기반 개발 방식과의 차이를 명확히 이해하고, 각각의 장단점을 비교하면서 단일 기능부터 점진적으로 서버리스로 전환해보는 것이 가장 현실적인 도입 방식입니다. 클라우드 시대의 개발자라면, 서버리스는 반드시 알아야 할 필수 개념이며, 앞으로의 기술 변화 속에서도 유연하게 대응할 수 있는 강력한 무기가 될 것입니다.