서버리스란?

끊임없이 변화가 거듭되는 기술의 세계에서 그 변화 추세를 따라잡기란 어려운 일일 수 있습니다. 이와 관련해 자주 들어봤을 한 가지 용어가 있습니다. 그건 바로 '서버리스'죠. 그렇다면 서버리스가 대체 뭘까요? 그리고 서버리스의 이점은 무엇일까요?

오늘날 현업 종사자 중 어떤 방식으로든 서버리스 플랫폼을 사용해본 적이 없는 사람은 겨우 35%에 그치는 것으로 드러났습니다. 반면 테크 비즈니스의 주요 기업들은 서버리스 기술을 사용 중이며, 기술 사용 영역도 확장되고 있죠.

본 가이드는 서버리스 컴퓨팅의 작동 원리, 이점 등을 포함해 서버리스 컴퓨팅에 대해 알아야 할 모든 것을 상세히 다룹니다.

가이드 일독을 통해 이 컴퓨팅 기술이 가진 강력한 힘을 확인해 보세요.

서버리스의 정의

간단하게 말하자면 서버리스 컴퓨팅은 서버 걱정 없이 코드를 실행하는 방법을 의미합니다.

과거에는 코드를 실행하려면 물리적인 서버(또는 서버 클러스터)를 설정 및 유지 관리했어야 했죠. 서버의 유지 관리를 위해서는 모든 서버의 실행을 담당할 엔지니어들의 값비싼 노동력이 필요했습니다. 그런데 서버리스 컴퓨팅의 등장과 함께 이 모든 일이 자동으로 이루어지게 된 것입니다. 코드 업로드만 신경쓰면 되고, 인프라 관리에 대한 걱정은 할 필요가 없게 된 거죠.

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

서버리스 컴퓨팅을 달성하는 방식은 몇 가지가 있습니다. 하지만 가장 널리 쓰이는 방식은 '서비스형 함수(FaaS)'라고 불리는 기술을 사용하는 것입니다.

Oracle과 같은 FaaS 플랫폼에서 코드를 실행하기 위해서는 가장 먼저 함수를 생성해야 합니다. 함수는 코드의 작은 조각으로, 이벤트 발생 시 이에 대한 대응으로 실행됩니다. 예를 들어 사진 공유 웹사이트를 구축하고 있다면, 누군가 새로운 사진을 업로드할 때마다 실행되는 함수도 생성해야 하죠.

함수를 생성했다면 이를 FaaS 플랫폼에 배포해야 합니다. 이 과정은 보통 명령줄 또는 IDE 플러그인을 사용해 이루어지죠. 프로세스가 배포되었다면 이제 실행 준비가 끝났습니다. 누군가 해당 이벤트를 트리거하면(예: 새로운 사진 업로드 등을 통해) 함수가 실행되기 때문에 서버를 설정하거나 관리할 필요가 없어집니다.

다양한 종류의 FaaS 플랫폼이 시중에 나와 있는데, 각각의 플랫폼에는 저마다 고유의 기능 및 가격 정책 옵션이 포함됩니다. Oracle은 그중에서도 가장 널리 사용되는 플랫폼 중 하나죠.

서버리스 아키텍처의 이점

서버리스 아키텍처의 주요 이점 중 하나는 서버에 대해 더 이상 걱정할 필요가 없다는 점입니다. 서버의 부재는 인프라 관리에 쏟을 시간 또는 리소스가 부족한 소기업과 일인 개발자들에게는 엄청난 이점이 될 수 있습니다.

또 한 가지 중대한 이점은 확장성입니다. 전통적인 호스팅 방식에서는 피크 트래픽 시간을 계획하고 해당 시간에 로드를 처리할 서버를 충분히 확보해야 했습니다. 하지만 서버리스 아키텍처를 사용하면 이 모든 과정이 알아서 처리되죠. FaaS 플랫폼은 필요에 따라 사용자의 함수를 확장 또는 축소할 수 있기 때문에 장기적으로 봤을 때 엄청난 비용 절감 효과가 있습니다.

서버리스 컴퓨팅이 가진 가장 매력적인 측면 중 하나는 종량제 가격 모델(pay-as-you-go)을 채택한다는 점입니다. 전통적인 호스팅 방식에서는 실제 사용량과 상관없이 일정량의 리소스에 대한 비용을 지불해야 했습니다. 하지만 서버리스 아키텍처를 사용하면 함수가 사용한 리소스만큼만 비용을 지불하면 되죠. 기업의 트래픽 패턴이 불규칙하거나 예측 불가능하다면 특히 엄청난 비용을 절감할 수 있습니다.

서버리스 컨테이너의 개념

서버리스 컨테이너는 FaaS 플랫폼에 배포된 컨테이너를 말합니다. 이 컨테이너들은 사용자가 코드 및 종속성을 단일 단위로 패키지화하여 함수를 손쉽게 배포 및 관리할 수 있게 해줍니다.

전통적인 함수와 비교했을 때 서버리스 컨테이너는 몇 가지 이점을 제공합니다. 첫째, 서버리스 컨테이너는 프로세스에 비코드 종속성(라이브러리, 프레임워크 등)을 포함할 수 있게 해줍니다. 비코드 종속성은 패키지 코드를 제대로 지원하지 않는 언어(예: Golang)를 사용 중일 때 유용합니다. 둘째, 서버리스 컨테이너는 복잡한 서버리스 함수를 손쉽게 생성할 수 있게 해 줍니다. 여러 언어를 사용하거나 수많은 프로세스를 실행해야 하는 경우 서버리스 컨테이너가 이 프로세스를 훨씬 손쉽게 관리할 수 있게 해 주죠.

서버리스 컨테이너가 몇 가지 이점을 제공하는 것은 틀림없지만, 모든 상황에 적합한 것은 아닙니다. 우선 서버리스 컨테이너는 전통적인 함수에 비해 가격이 비쌉니다. 컨테이너 런타임뿐만 아니라 프로세스 자체에 대한 비용도 지불해야 하니까요. 둘째, 서버리스 컨테이너에서는 디버깅 및 트러블슈팅이 더 어려울 수 있습니다. 뭔가가 잘못되면 무슨 일이 있었는지 파악하는 일 자체가 어려울 수 있죠.

그렇다면 과연 서버리스 컨테이너를 사용하는 게 유리할까요? 그건 사용자의 니즈에 달려있습니다. 단순한 함수를 구축 중이라면 전통적인 함수만으로도 충분합니다. 하지만 복잡한 애플리케이션을 구축 중이거나 컨테이너의 유연성이 필요하다면 서버리스 컨테이너가 더 탁월한 선택일 수 있죠.

서버리스 컴퓨팅 vs. 클라우드 컴퓨팅

1세대 클라우드 컴퓨팅은 기업이 오프사이트 서버 공간을 임대할 수 있게 해 주었습니다. 모든 서버 공간 및 인프라에 대한 책임은 공급업체에게 돌아갔죠.

하지만 공급업체는 고객의 트래픽 급증을 예측하지 못합니다. 게다가 이들은 데이터 제한 초과분에 대해 고객에게 비용을 부과하기 때문에 트래픽 급증은 많은 비용을 유발하는 이벤트가 될 수 있죠.

트래픽 급증으로 인한 정전 또는 추가 요금 발생의 위험을 줄이기 위해 대부분의 기업들은 여분의 추가 서버 공간을 구입합니다. 이 공간은 대부분의 시간 동안 유휴 상태로 유지되기 때문에 고객에게 추가적인 비용 부담을 안겨주죠. 게다가 세상에 사용되지 않는 서버 용량이 엄청나게 많이 생겨나게 됨을 의미하기도 합니다.

서버리스 컴퓨팅은 실제 사용량을 기반으로 요금을 청구함으로써 이와 같은 문제를 해결합니다. 사용량과 상관없이 정액제로 부과되던 수도 요금을, 물 사용량을 기반으로 부과하는 방식으로 전환하는 것과 같죠. 이를 종량제 방식이라고도 부릅니다.

개발자들은 프론트엔드 개발에만 집중할 수 있기 때문에 개발자에게도 유리하죠. 기업들은 비용을 절약하고 효율성을 얻을 수 있습니다. 자동 확장도 더욱 쉬워집니다. 적절한 환경만 조성된다면 윈윈 솔루션이라고 할 수 있죠.

서버리스 컴퓨팅의 이점

앞서 서버리스 컴퓨팅의 몇 가지 이점에 대해서 다루었습니다. 특히 서버리스 컴퓨팅은 소규모 기업들에게는 훨씬 비용 효율적인 방식입니다. 이점에 대해서 조금 더 자세히 살펴보도록 하겠습니다.

서버 불필요

서버리스 프레임워크의 주요 이점 중 하나는 서버에 대해 더 이상 걱정하지 않아도 된다는 점입니다. 서버에 대해 걱정하지 않아도 되는 상황은 인프라 관리에 쏟을 시간 또는 리소스가 부족한 소기업과 일인 개발자들에게는 엄청난 이점이 될 수 있습니다.

자동 확장성

전통적인 호스팅 방식에서는 피크 트래픽 시간을 계획하고 해당 시간에 로드를 처리할 서버를 충분히 확보해야 했습니다. 하지만 서버리스 아키텍처를 사용하면 이 모든 과정이 알아서 처리되죠. FaaS 플랫폼이 필요에 따라 함수를 확장 또는 축소해 주니까요.

종량제 가격 정책

서버리스 컴퓨팅의 가장 매력적인 요소 중 하나는 아마도 종량제 가격 모델일 겁니다. 전통적인 호스팅 방식에서는 실제 사용량과 상관없이 일정량의 리소스에 대한 비용을 지불해야 했습니다. 하지만 서버리스 아키텍처를 사용하면 함수가 사용한 리소스에 대해서만 비용을 지불하면 되죠.

유연한 구성

서버리스 컴퓨팅의 또 다른 이점은 바로 유연성입니다. 기존의 호스팅 방식은 플랫폼에서 사용 가능한 요소들이 제한적이었습니다. 하지만 FaaS 플랫폼을 사용하면 함수의 작동 방식을 더욱 다양하게 제어할 수 있죠. 사용하고 싶은 언어(들), 필요한 종속성, 심지어 런타임 환경까지 선택할 수 있습니다.

서버리스 vs. PaaS vs. IaaS

서버리스 아키텍처와 다른 종류의 호스팅 간에는 어떤 차이가 있을까요? 저마다의 장점과 단점이 있습니다.

PaaS

클라우드 컴퓨팅의 범주에 속하는 서비스형 플랫폼(PaaS)은 애플리케이션 개발 및 배포를 위한 플랫폼을 제공합니다. PaaS 플랫폼은 보통 런타임 환경, 라이브러리, 프레임워크 등 시작에 필요한 모든 것을 제공하죠.


어떤 방식이 가장 적합할지는 귀사의 니즈 및 경험 수준에 따라 달라집니다. 초심자라면 PaaS가 최고의 옵션일 수 있죠. 하지만 숙련된 개발자라면 IaaS가 더 적합한 옵션일 수 있습니다.

서버리스 아키텍처는 이 두 옵션 사이의 어느 지점에 해당됩니다. 서버리스는 PaaS 및 IaaS의 이점들을 일부 제공하며, PaaS에서 가용한 것보다는 더 큰 유연성을 원하지만 스스로 모든 세부사항을 관리하고 싶지는 않은 기업들에게 유리합니다.

서버리스 이후의 단계

기존 플랫폼의 기능 및 역량이 진화함에 따라 서버리스 지형도 지속적으로 변화합니다. 그렇다면 서버리스 컴퓨팅의 미래는 어떤 모습일까요?

일부 전문가들은 결국 클라우드 서비스에 대한 선호 옵션으로 서버리스가 PaaS와 IaaS를 능가할 것으로 내다봅니다. 서버리스가 PaaS 및 IaaS 플랫폼의 표준 기능이 될 것이라고 믿는 사람들도 있죠. 서버리스가 특정 사용 사례를 위한 틈새 솔루션으로 남을 것이라고 생각하는 사람들도 여전히 있습니다.

그러나 한 가지 확실한 점이 있다면, 서버리스 애플리케이션의 미래가 대단히 밝아 보인다는 것이죠. 점점 더 많은 기업들이 클라우드 컴퓨팅을 위한 서버리스 접근 방식의 이점을 발견하면서 향후 몇 년간 서버리스 도입의 증가를 기대할 수 있게 되었습니다.