2018년 7월, 서버리스(Serverless) 아키텍처의 오류 감지 및 모니터링 솔루션 업체인 대시버드(Dashbird)의 SEO 매니저 존 데미안(John Demian)은 자사 홈페이지에 흥미로운 글을 게시했습니다. 코카콜라가 아마존 웹 서비스(Amazon Web Service, 이하 AWS) EC2 인스턴스에서 운영 중이던 자판기 관리 시스템을 AWS Lambda로 이전하여 관리비용을 년 1만 3,000달러에서 4,500달러로 65%나 절감했다는 내용이었습니다. Lambda는 서버리스 개념이 최초로 적용된 서비스로 2014년 11월 AWS가 발표했습니다. 이후 구글, 마이크로소프트 등에서 이를 벤치마킹 한 서비스가 생겨났으며 앞서 언급한 코카콜라와 넷플릭스, 버라이즌 등 대기업을 비롯해 여러 회사들이 서버리스를 도입하였습니다. 서버리스가 이처럼 많은 관심을 받는 이유는 무엇일까요? 이를 이해하기 위해 본 아티클에서는 서버리스 컴퓨팅을 소개하고자 합니다.
기업 IT 환경이 온프레미스(On-Premise)에서 클라우드 기반으로 바뀌면서 시스템 확장의 신속성과 운영 효율성이 더욱 높아졌습니다. 클라우드 서비스는 인프라를 제공하는 IaaS(Infrastructure as a Service)부터 다양한 플랫폼이 구비된 PaaS(Platform as a Service)까지 갖추며 구체화 되었습니다. 기업들은 클라우드 서비스를 활용해 SaaS(Software as a Service) 어플리케이션을 만들어 고객에게 제공할 수 있게 되었는데, SaaS 어플리케이션을 보다 효율적으로 구축하고 운영할 수 있도록 돕는 서버리스 아키텍처가 출현하면서 많은 서비스들이 서버리스로 옮겨지는 추세를 보이고 있습니다.
서버리스는 언뜻 단어로만 보면 'Server + Less'로 '서버가 필요 없다'는 뜻으로 생각될 수 있습니다. 하지만 실제 의미는 클라우드 서비스 공급자가 서버를 관리, 실행하며, 요청이나 특정 이벤트가 있을 때 클라우드의 서버를 이용하거나 서비스 할 어플리케이션을 동작시키는 것입니다. 이를 통해 사용자(개발자)는 서버 관리에서 완전히 자유로워지며 실제 구현해야 할 기능에 더 집중할 수 있게 됩니다.
서버리스는 보통 '서버리스 컴퓨팅' 또는 '서버리스 아키텍처'로 불립니다. 서버리스 개념은 어플리케이션 관점에서 BaaS(Backend as a Service)와 FaaS(Function as a Service)로 나누어 살펴보면 이해가 더 용이합니다.
BaaS는 단일 웹페이지나 모바일 앱 기반의 서비스에서 필요한 서버 기능들을 사용하기 위해 이용하는 써드파티(Third Party) 어플리케이션이나 클라우드 서비스를 일컫습니다. 쉽게 말해 어플리케이션 개발 시 요구되는 복잡한 백앤드(Back-End) 기능들을 사용자(개발자)가 직접 개발하지 않고 클라우드 공급자가 제공하는 서비스를 이용해 쉽고 안정적으로 구현하는 것입니다. 주된 사용 대상이 모바일 앱과 웹 앱(WebApp)이다 보니 MBaaS(Mobile Backend as a Service)라 불리는 시장이 활성화 되는 추세입니다. 클라우드 데이터베이스 서비스인 Firebase나 클라우드 인증 서비스인 Auth0가 BaaS에 해당합니다.
BaaS가 클라우드 서비스 공급자가 제공하는 서버 기능을 단순하게 이용한다면 이와 달리 FaaS는 사용자가 쓸 기능을 함수 단위로 나누어 구현하고 이를 서비스하는 형태입니다. FaaS는 Event-Driven 아키텍처를 구현하는데 적합하며 사용자가 원하는 기능을 미리 작성해놓고 특정 이벤트(예를 들어 HTTP Request, API 호출, 특정 조건 등)에 의해 실행됩니다. 이때 서버는 계속 대기하면서 이벤트를 기다리지 않고 이벤트가 발생할 때마다 실행됩니다. 비용은 서버가 실행된 횟수와 시간(밀리세컨드. 1,000분의 1초)에 따라 산정됩니다. FaaS를 구현한 대표적인 서비스로 AWS의 Lambda, 마이크로소프트의 Azure Functions, 구글의 Google Cloud Functions 등이 있습니다.
대형 클라우드 벤더가 서버리스를 출시한 이후, 기존 서비스를 서버리스(FaaS)로 이전하는 사례가 늘어나고 있습니다. 기업들이 서버리스로 이전을 택하는 이유는 무엇일까요?
첫째, 운영 비용 절감 효과를 들 수 있습니다. IaaS나 PaaS와 같이 상시 운영 중인 서버와 달리 요청에 따라 호출되어 처리되기 때문에 유휴 자원이 발생하지 않습니다. 코카콜라의 비용 절감 사례가 그 예입니다.
둘째, 서버리스는 기존 클라우드 서비스보다 더 유연한 확장성을 제공합니다. FaaS의 경우 일반적인 클라우드 서비스와 같이 특정 조건(예를 들어 CPU, RAM 임계치 도달과 같은)에 따라 확장되는 방식이 아닌, 호출될 때마다 새로운 인스턴스가 기동되어 동작하기 때문에 특정 조건을 설정하지 않아도 급격한 트래픽 변화에 유연한 대응이 가능합니다.
셋째, 기능이 함수 단위로 개발되기 때문에 서비스를 빠르고 간단하게 출시할 수 있습니다.
하지만 서버리스로 전환하기에 앞서 다음의 제약사항은 반드시 확인이 필요합니다.
첫째, 빠른 응답이 필요한 제품의 경우 서버리스로의 전환은 부적합할 수 있습니다. 이는 실행되는 함수가 호출되기 위해 컨테이너가 실행되는 대기 시간(콜드스타트, Cold-Start)이 존재하기 때문인데 서버가 항시 기동되고 있지 않은 서버리스의 특징에 기인합니다.
둘째, 무상태(Stateless)적인 기능으로 구현되어야 합니다. 하나의 작은 기능으로 나뉘어진 함수들은 요청마다 새로 기동되어 호출되기 때문에 전후 상태를 공유할 수 없습니다. 또한 변수와 데이터의 공유가 불가능하며, 데이터를 로컬 스토리지에서 읽고 쓸 수 없습니다. (이는 서버리스 벤더에 따라 추가 서비스를 통해 극복이 가능하지만, AWS S3, Azure Storage등 일반적인 서버리스는 불가능합니다.)
셋째, 서버리스 서비스 벤더가 제한을 두는 사항은 그대로 수용해야 합니다. 함수 내에서 사용할 수 있는 최대 메모리, 최대 처리 가능 시간 등의 제약이 그것입니다. 이에 따라 큰 기능을 잘게 나누어 구현해야 합니다. 이를 준수하지 않고서는 서버리스로 이전할 수 없습니다.
서버리스는 저렴한 비용으로 새로운 아이디어를 빠르게 테스트할 수 있는 장점이 있으며, 여러 서비스에 적용이 가능합니다. 서버리스가 적합한 기능으로 배치 및 자동화 서비스를 들 수 있습니다. 배치 작업의 경우 24시간 운영되던 서버가 필요 없게 되고, 특정 시간에 수행되던 기능을 서버리스로 옮기는 것만으로도 손쉽게 변경할 수 있습니다.
이와 비슷한 맥락으로 자동화 작업도 적용이 가능합니다. 넷플릭스는 동영상 업로드 시 파일의 인코딩과 검증, 태깅 이후에 공개되는 작업을 AWS Lambda를 통해 자동화 했습니다. 실시간 비디오 스트리밍 앱 개발사인 페리스코프(Periscope)도 동영상의 유해성 여부를 확인하는 기능을 Lambda에서 운영하고 있습니다.
분석과 모니터링 기능에도 서버리스가 적합합니다. 예를 들면 CPU 사용량이 임계치에 도달했을 때 알림을 받거나 지속적으로 기록되는 로그를 분석하고 리포팅 하는데 사용할 수 있습니다. 미국 온라인 패션 매거진 버슬(Bustle)은 하루 1억건의 이벤트 처리와 데이터 분석 리포팅에 서버리스를 적용해 84%의 비용을 절감하였습니다.
마지막으로 챗봇(Chat-Bot) 서비스에 서버리스를 적용하면 API 호출 시 요청을 처리하고 유연한 확장이 가능해 많은 사용자에게 안정적인 서비스를 제공할 수 있습니다. 슬랙(Slack)을 기반으로 하는 챗봇 어플리케이션이나 Amazon Echo 그리고 AWS Lambda를 이용한 음성인식 어플리케이션이 늘어나고 있습니다.
IaaS부터 PaaS 그리고 현재의 서버리스에 이르기까지 컴퓨팅 자원의 효율적인 사용이라는 클라우드 서비스의 발전 목표는 기업의 요구사항에 한층 더 가까워졌습니다. AWS가 Lambda를 발표한 이후 마이크로소프트의 Azure Functions, 구글의 Google Cloud Functions 등 대형 벤더들이 서비스를 출시하면서 경쟁은 더욱 치열해지고 있습니다. 서버리스 시장 선점을 위한 이들의 적극적인 행보는 이미 클라우드의 패러다임이 전환되고 있음을 암시합니다.
클라우드 서비스 시장에서 서버리스는 값싸고 빠르게 아이디어를 테스트하고 구현할 수 있는 환경을 제공합니다. 물론 PaaS는 여전히 매력적인 서비스이고 서버리스가 가진 제약을 수용할 수 없는 경우에 좋은 대안이 될 수 있습니다. 그럼에도 불구하고 서버리스는 복잡한 기능을 간결화 할 수 있고, 보다 민첩한 서비스를 구현할 수 있을 뿐 아니라, 운영 비용의 절감 효과까지 얻을 수 있기에 관심을 가지고 검토해 볼만한 가치가 있을 것입니다.
# Reference
[1] 서버리스 컴퓨팅의 의미와 현황 그리고 과제, 한국정보화진흥원, 2018
▶ 해당 콘텐츠는 저작권법에 의하여 보호받는 저작물로 기고자에 저작권이 있습니다.
▶ 해당 콘텐츠는 사전 동의없이 2차 가공 및 영리적인 이용을 금하고 있습니다.
에스코어㈜ 소프트웨어사업부 오픈소스SW그룹
오픈소스 소프트웨어의 기술 서비스를 담당하고 있습니다.