로그인 / 등록 Account

클라우드 네이티브 애플리케이션

서버리스 아키텍처: 개념과 장단점

서버리스(serverless)란 애플리케이션 개발자가 서버를 프로비저닝하거나 애플리케이션의 확장을 관리할 필요가 없는 클라우드 컴퓨팅 모델을 가리킵니다. 대신 클라우드 제공업체가 일상적인 태스크를 추상화하므로 개발자는 전통적인 모델보다 훨씬 빠르게 코드를 프로덕션 환경으로 푸시할 수 있습니다.

간단히 말해 서버리스는 개발자가 인프라는 대부분 무시하고 코드에 집중할 수 있도록 합니다. 서버 사양이 개발자에게 영향을 주지 않으므로 “서버리스”인 것입니다. 물론 서버는 여전히 존재하지만— 클라우드 제공업체가 이를 관리한다는 점이 다를 뿐입니다.

보다 구체적으로 말하면 클라우드 제공업체(Amazon 또는 Google)가 물리 서버를 실행하고 사용자를 위해 자사 리소스를 동적으로 할당하면, 사용자는 코드를 직접 프로덕션 환경으로 배포할 수 있습니다. 이는 퍼블릭 클라우드 서비스로서의 인프라(Infrastructure-as-a-Service, IaaS)와 비슷해 보이지만 서버리스는 공급업체가 코드 실행에 필요한 만큼의 컴퓨팅 리소스에만 과금한다는 사실이 주된 차이점입니다.

서버리스 컴퓨팅은 어떻게 작동할까요?

표준 IaaS 모델에서 사용자는 용량 단위를 미리 구매하는데, 이는 애플리케이션을 실행하기 위해 “상시 가동” 서버 구성 요소 비용을 지불하는 것입니다. 서버리스 모델의 경우는 이와 다릅니다. 이벤트가 실행할 애플리케이션 코드를 트리거하면 클라우드 제공업체는 해당 코드에 리소스를 동적으로 할당하고, 사용자는 코드 실행이 끝나면 비용을 지불하지 않습니다. 비용 및 효율성 측면에서의 이점 외에도 서버리스는 개발자들을 애플리케이션 확장과 서버 프로비저닝과 관련한 일상 업무 및 반복적 태스크에서 자유롭게 합니다.

서버리스 컴퓨팅에는 두 가지 주요 방법이 있습니다. 첫 번째는 서비스로서의 백엔드(Backend-as-a-Service, BaaS)를 통해 다양한 타사 서비스 및 애플리케이션이 사용자 애플리케이션을 구성하는 방법입니다. 두 번째는 개발자가 사용자 정의 서버측 로직을 작성하하지만 클라우드 제공업체가 관리를 전담하는 컨테이너에서 실행되는 서비스로서의 기능(Function-as-a-Service, FaaS)을 통한 방법입니다. 이러한 방법을 통해 완전한 서버리스 애플리케이션을 구축하거나, 일부는 서버리스로, 일부는 전통적인 마이크로서비스 구성 요소로 애플리케이션을 구성할 수 있습니다.

서비스로서의 백엔드(BaaS)

서비스로서의 모바일 백엔드(Mobile Backend-as-a-Service, MBaaS)로도 알려져 있는 서비스로서의 백엔드(BaaS)는 타사 애플리케이션 및 서비스를 광범위하게 사용하는 서버리스 컴퓨팅 방법입니다. 예를 들어, 클라우드 제공업체는 인증 서비스와 추가 암호화, 클라우드 액세스 가능한 데이터베이스 및 상세한 데이터 사용량을 제공할 수 있습니다. 이러한 백엔드 서비스는 보통 클라우드 제공업체가 설정한 애플리케이션 프로그래밍 인터페이스(Application Programming Interface, API) 호출을 통해 액세스되므로 이러한 기능을 사내에서 개발하는 것보다 시스템에 통합하는 것이 훨씬 간단합니다.

서비스로서의 기능(FaaS)

서버측 로직은 개발자에 의해 작성되므로 서비스로서의 기능(FaaS)에는 BaaS보다 높은 수준의 제어 기능이 포함됩니다. 그러나 일단 로직이 작성되면 클라우드 제공업체가 관리하는 컨테이너에 배포되므로 이는 서버리스의 주요 이점이 됩니다. 이러한 컨테이너에는 다음과 같은 특징이 있습니다.

  • 스테이트리스(stateless): 데이터 통합이 더욱 간소화됨
  • 일회성: 매우 단기간에 실행 가능
  • 이벤트에서 트리거: 필요에 따라 자동으로 실행 가능
  • 전체 관리형: 클라우드 제공업체가 관리를 전담하므로 “상시 가동” 애플리케이션 및 서버 대신 필요한 만큼만 비용 지불

서버리스의 장단점은 무엇일까요?

무엇보다도 서버리스는 개발자 생산성을 높이고 운영 비용을 줄일 수 있습니다. 서버 프로비저닝 및 관리와 같은 일상 업무의 부담을 줄여, 개발자가 애플리케이션에 더 많은 시간을 할애할 수 있습니다. 애플리케이션 구성 요소 전체가 사내에서 작성되는 것이 아니라 BaaS를 통해 타사에서 통합되면 이러한 이점이 더 확대됩니다. 서버리스 모델에서 운영 비용이 낮아지는 이유는 항상 자체 서버를 실행하고 관리하는 대신 필요한 만큼 클라우드 기반 컴퓨팅 시간에 대해 비용을 지불하기 때문입니다.

하지만 자체 서버를 실행하지 않거나 자체 서버측 로직을 제어하지 않는 데 따른 단점도 있습니다. IT 스택의 이러한 측면에 대한 제어 권한을 이전하면 벤더 종속 문제가 생길 수 있습니다. 클라우드 제공업체는 자사 구성 요소가 상호작용하는 방법을 엄격히 제한할 수 있어, 사용자 시스템의 유연성과 커스터마이징 수준에 영향을 주게 됩니다. 제공업체를 변경하면 새로운 벤더 사양에 맞추기 위해 시스템을 업그레이드하는 비용이 발생할 수도 있습니다.

서버리스 컴퓨팅을 위한 쿠버네티스 기반

클라우드 컴퓨팅

클라우드 네이티브 애플리케이션을 더 빠르게 배포할 수 있는 컨테이너와 쿠버네티스 플랫폼

클라우드 컴퓨팅

클라우드 네이티브 애플리케이션 개발에 적합한 애플리케이션 런타임과 프레임워크 셀렉션

서버리스의 더 큰 가능성을 살펴보세요