가트너(Gartner)의 최근 발표에 따르면, 인프라 조직은 데이터 센터, 코로케이션, 클라우드와 같은 기존 지식을 뛰어넘어, 인프라를 통해 어떻게 기업의 비즈니스 전략을 지원하는 것이 가능할지에 대한 진지한 고민을 해야한다. 덧붙여 발표한 2019년에 인프라 조직에 가장 영향을 미칠 상위 10개의 기술 중, 서버리스 컴퓨팅(Serverless Computing)이 인공지능, 엣지 컴퓨팅 등의 토픽을 제치고 제일 중요한 기술 요소로 소개되었다.

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

디지털 전환(Digital Transformation) 시대에 다양한 업종의 기업 및 조직 내에서 IT 관리자들은 시시각각 수요가 급변하는 IT 자원을 준비하고 운영하는 많은 노력에서 벗어나고자 클라우드를 선택하였다. 클라우드가 성숙기에 이르면서, 클라우드 운영자들은 늘어난 클라우드 인스턴스를 관리해야 하는 새로운 문제에 봉착하였다. 운영체제와 애플리케이션의 패치와 버전 업그레이드와 더불어, 또다른 IT 서비스에 대한 클라우드 용량 산정과 운영을 위한 내부 커뮤니케이션 등, 지속적인 관리의 피로에서 좀 더 자유로워 질 수 있는 방법을 모색하게 되었고, 그중 현재 제일 많이 언급되고 있는 방법이 서버리스 컴퓨팅이다.

서버리스 컴퓨팅은 IT 인프라를 데이터 센터 혹은 클라우드에 별도 준비없이, 필요한 기능을 함수(function) 형태로 구현하고, 자동 스케일링 방식으로 시시각각 변하는 자원 수요를 지원하며 전통적인 백엔드 대신 사용한다. 따라서 서버리스 컴퓨팅을 FaaS(Function as a Service) 라고도 하며, 백엔드 시스템을 보이지 않는 서비스로 추상화하였기 때문에 BaaS(Backend as a Service) 라고도 한다.

그림 1. 인프라와 컴퓨팅 환경의 변화
그림 1. 인프라와 컴퓨팅 환경의 변화

그림 1은 서버리스 컴퓨팅이 출현할 때까지의 대표적인 기술들을 컴퓨팅 환경, H/W와 S/W 배치 형태, IT 서비스의 형태를 각각의 기술 그룹으로 나눠본 것이다. 기존의 데이터 센터 내에 있는 온프렘 환경에서부터 가상 머신, 컨테이너, 클라우드와 서버리스에 이르기까지 기술이 어떻게 발전했는지를 보여준다. 그렇지만 서버리스가 가상 머신이나 컨테이너 환경을 모두 대체할 수 있다는 의미는 아니며, 정형화된 백엔드 로직과 예상할 수 없는 서비스 수요를 이벤트 방식으로 처리하는데 기존 기술보다 좀 더 적합하다는 것을 의미한다.

서버리스 컴퓨팅의 도입 효과

먼저, 일반적인 서버를 확보하는 과정을 생각해보자. 준비 단계에서 서버 개발 및 운영자는 기술적인 요구사항을 감안하여 서버를 온프레미스 환경으로 구축할지, 클라우드 위에 올릴지 결정을 해야한다. 두번째로 비용적인 측면에서는 TCO 및 ROI를 감안하여 여러 벤더의 서비스를 검토해야 한다. 세번째는 운영 인력의 기술 내재화가 되어 있는지, 운영 및 유지보수 비용과 노력은 어떨지를 검토해야 한다.

서버리스 컴퓨팅은 단어 뜻 그대로 서버가 없다는 뜻 보다는, 보이지 않는 곳에 어디엔가 관리형 서버가 있다라고 해석하는 것이 맞다. 즉 어디엔가 물리적인 서버는 존재하고 이에 대한 관리는 클라우드 사업자의 몫이다. 서버리스 컴퓨팅을 통해, IT 조직과 S/W 개발자들은 클라우드 서버 운영의 노력에서 좀더 자유로워 지고, 본연의 업무인 클라이언트 로직 및 UI 개발 등을 포함한 애플리케이션 개발에 집중할 수 있게 되었다.

빠른 코드 개발에 조직에 핵심 역량을 집중한다면,, 결과적으로 빠른 서비스를 출시할 수 있는 토대를 마련할 수 있다. 서비스 이후에는 서비스의 수요에 알맞는 자동 스케일링 설정을 통해, 서버리스 클라우드의 스케일링이 수요에 알맞게 업다운 된다.

서버리스 컴퓨팅의 작동 원리

서버리스 컴퓨팅은 클라우드 사업자가 운영하는 가상화된 컨테이너에서 실행된다. 그림 2는 서버리스 컴퓨팅의 작동 원리를 도식화 한 것이다. 미리 필요한 기능을 서버리스에 원하는 프로그래밍 언어로 함수의 형태로 구현을 해두고, 이벤트 드리븐(event driven) 방식으로 필요에 따라 이 함수를 호출하여 사용한다.

초기의 서버리스 함수는 스크립트 형태의 언어인 Node.js만을 지원했지만 현재는 파이썬, 자바스크립트, C#, Java 등의 대표적인 객체지향 프로그래밍 언어와, 자체 개발한 라이브러리 패키지를 일반적으로 지원한다. 서버리스 함수는 또다른 API를 호출하거나, 필요한 데이터를 데이터베이스에 저장 후 분석 작업등을 할수있고, 동시 트랜잭션의 순차 처리를 위한 메시지큐나, 다른 클라우드 서비스와도 연계가 된다.

그림 2. 서버리스 컴퓨팅의 작동 원리
그림 2. 서버리스 컴퓨팅의 작동 원리

그림 2를 보면, 서버리스 컴퓨팅을 실행하는 이벤트는 파일 저장소(storage), 데이터베이스, API 게이트웨이 등에서 발생한다. 예를 들면 특정 파일이 저장소에 업로드가 방금 되었거나, 데이터베이스에 특정 데이터가 추가, 삭제 혹은 갱신되는 경우, 특정 REST API가 호출되는 경우 등이 이에 해당한다. 애플리케이션의 클라이언트 자체도 이벤트를 발생할 수 있다.

어떤 서비스, 어떤 개발 조직에 알맞나?

서버리스 컴퓨팅은 시스템상의 다양한 이벤트를 함수의 형태로 처리하는 특징을 가지고 있기 때문에 IT 서비스 운영 시 예상되는 반복적인 배치(batch) 처리 형태의 기능에 알맞다고 할 수 있다.

예를 들면 IoT 기기들이 주변 정보를 습득하여 통신 브로커에게 지속적으로 전달하거나, 클라이언트에서 수집된 로그들을 수집하여 빅데이터를 만들고 이를 분석하는 전처리 작업등이 해당된다.

이외에도 실시간으로 제공되는 라이브 동영상 스트리밍에 대한 미디어 로그 분석, 음성이나 텍스트를 인지하고 이에 알맞는 학습된 데이터를 제공하는 기본적인 인공지능 기능 등, 일반적인 애플리케이션의 백엔드 서버에 필요한 기능 중, 반복적으로 타 시스템과 연계하여 비즈니스 요구사항에 맞는 결과를 가져오는 기능에 좀 더 특화되어 있다.

서버리스 컴퓨팅의 도입이 제일 알맞은 조직은. 인프라에 대한 준비와 운영 인력을 최소화 해야하는 소규모 기술 인력으로, 비즈니스를 개발하여 빠르게 시장에 진입하는 스타트업 형태의 개발 조직이라고 할 수 있다. 체계적인 DevOps 형태를 갖춘 조직이라면, 서버리스 함수를 만들고 이를 이벤트를 발생시키는 원천 소스와 연결하고, 결과를 만드는 전반적인 기능을 구현하고 테스트하는데 무리가 없다. 또한 Node.js, Python을 비롯한 스크립트 형 언어로 함수를 개발하고 REST API에 익숙한 조직이라면 금상첨화이다.

서버리스 컴퓨팅 도입 시 유의할 점은?

서버리스 컴퓨팅은 많은 장점을 가진 신기술 이지만, 모든 신기술에는 도입에 따른 장단점이 모두 공존하기 때문에 여러가지 형태의 도입 결정에 필요한 요소를 고민해야 한다.

1. 과금 방식의 이해와 예상 비용 산정
일반적인 클라우드 서비스의 과금 모델은 저장소 볼륨, 트래픽 요금 등인 것에 반해 서버리스 컴퓨팅은 단위 시간 당 함수가 처리하는 트랜잭션의 수와 이때의 네트워크 및 메모리 사용률을 근간으로 하는 “Pay As You Go” 방식의 과금 모델을 가지고 있다.

일반적으로 트랜잭션이 없는 유휴 시간이 많은 서비스의 경우 좀 더 경제적인 모델이 될 수 있으나, B2C를 기반으로 하는 신서비스의 경우, 견적 단계에서 서버리스 함수의 컴퓨팅 자원 소모 비용에 대한 예상을 정확히 산정하는 것은 어려울 수 있다. 따라서 일반적인 클라우드 인스턴스 비용을 줄이기 위해 서버리스를 선택했다면, 예상 서비스 트랜잭션과 자원 소모 비용을 미리 산정해보고, 초기 단계의 서비스를 미리 운영하여 해당 추세를 지켜보는 과정이 필요하다.

2. 조직 내 기술 내재화
기술적인 측면에서는 서버리스 컴퓨팅의 도입이 클라우드 인프라 운영에 대한 부담을 줄이기 위한 측면으로 선택을 한 것인데, 이 부분이 또다른 관리 포인트를 재생산 한 것은 아닌지 생각해야 한다. 조직 내 기술 인력이 퍼블릭 클라우드에 익숙하고, 서버리스 환경을 익숙하게 활용할 수 있는 준비가 되어 있는지 확인이 필요하다.

3. 마이그레이션 방안
처음부터 IT 서비스를 서버리스 함수로 구현하여 운영중인 수많은 비즈니스 로직을 다시 조직의 자체 환경으로 마이그레이션 하는 것은 상당히 어렵다. 따라서 클라우드 벤더에 일부 종속성을 가지게 되는 부분에 대해서도 고민을 해야한다.

4. 성능 저하 대비책
서버리스 컴퓨팅은 서비스의 장시간 유휴 시, 과금을 피하고 컴퓨팅 자원 확보를 위해 비활성화된 함수를 완전히 종료하는 방법을 채택하는 경우가 있고. 함수를 다시 운영 상태로 전환하기 위한 가동 시간이 필요하다. 이를 콜드 스타트(cold start)라고 하는데, 종종 콜드 스타트는 전반적인 애플리케이션 응답 속도에 영향을 줄 수 있다. 따라서 이런 병목 현상을 피하기 위해 함수 실행 전에 모든 연결된 함수가 온전히 실행 가능한 상태인지 먼저 확인하고, 그렇지 않다면 활성 상태로 만들어 주어야 한다.

5. 도입은 작은 서비스 부터
마지막으로, 서버리스 함수는 모든 엔터프라이즈 환경의 비즈니스 로직을 구현하기엔 아직 무리가 있다. 컨테이너에 필요에 따라 배포되었다가 자동 종료되는 무상태(stateless) 기반의 함수형 언어의 제한점이기도 하고, 실제 함수가 실행되어 결과를 전달하는 클라우드 리전의 조건에 따라 전반적인 애플리케이션의 성능 문제를 야기할 수 있기 때문이다.

따라서 모든 백엔드 로직을 모두 서버리스 환경으로 옮기기 보다는 본문에서 언급한대로, 단순, 반복 처리를 위한 배치작업 형태의 일반적인 백엔드 서버 로직, 빅데이터 분석 혹은 머신러닝 등의 IT 서비스를 우선적으로 고려하는 것이 바람직한 도입 방식이다.

온라인뉴스팀 (news@nextdaily.co.kr)

관련기사

저작권자 © 넥스트데일리 무단전재 및 재배포 금지