2020.02.18

“FaaS를 넘어 엣지로” 차세대 엣지 서버리스 아키텍처의 현황과 전망

Brecht De Rooms | InfoWorld
서버리스 서비스는 어디에나 있다. 새로운 프로그래밍 방식을 향한 진화의 원동력인 서버리스 환경은 애플리케이션 호스팅 플랫폼, 서버리스 데이터베이스, CDN(Contents Delivery Network), 보안 솔루션 등등 모든 형태로 구현되고 있다.

인프라 수준의 환경 구성, 확장 및 프로비저닝에 대한 우려는 사라졌으며, 분산만이 마지막 문제로 남아 있다. 이 문제의 해결책으로 등장한 것이 바로 엣지 서버리스(Edge Serverless)로, 데이터와 컴퓨트를 수많은 데이터센터에 걸쳐 분산 배포한다. 엣지 서버리스는 컴퓨팅을 사용자와 더 가까운 곳으로 가져와 지연시간을 줄일 수 있다.
 
ⓒ GettyImagesBank

엣지 서버리스는 거의 15년 전에 IaaS(Infrastructure-as-a-Service)로 시작된 클라우드 아키텍처 진화의 정점이다. 클라우드 진화의 다음 단계는 서버리스 ‘빌딩 블록’의 분산을 촉진하고 개발자가 더 쉽게 소비할 수 있도록 하는 것이다.

서버리스 아키텍처는 현재 어디에 있는지, 어디로 향하는지 좀 더 자세히 살펴보자. 
 

계층화 아키텍처

IaaS(Infrastructure as a Service)
클라우드 컴퓨팅 혁명은 IaaS의 등장으로 본격화되었다. IaaS를 통해 기업은 로컬 인프라를 호스팅된 ‘클라우드’ 인프라로 옮겨 운영할 수 있다. 사용한 스토리지와 컴퓨팅 시간에 대해서만 비용을 지불하며, 어떠한 하드웨어나 네트워크도 설치하거나 관리할 필요가 없다.

처음에는 IaaS가 비싸 보였지만, 일반 기업은 구현할 수 없는 수준의 가용성을 보장했기 때문에 빠르게 확산됐다. 실제로 자체적으로 인프라를 구매하고 유지하는 비용이 IaaS 서비스 요금보다 비싼 경우가 많았다. 가장 큰 장점은 하드웨어 유지보수와 프로비저닝이 필요없기 때문에 개발자가 비즈니스 가치에만 집중할 수 있다는 것이다.

PaaS(Platform as a Service)
그 후 서비스 업체는 클라우드 컴퓨팅을 한 단계 더 발전시켜 PaaS를 제공했다. PaaS는 애플리케이션을 구축하는 데 필요한 모든 것을 임대해 준다. 여기에는 서버뿐만 아니라 운영체제, 프로그래밍 언어 환경, 데이터베이스 및 데이터베이스 관리 툴이 포함된다.

IaaS를 이용하면 임대한 서버의 관리자가 되지만, PaaS 업체는 소프트웨어 설치나 보안 업데이트와 같은 서버 관리 작업을 넘겨 받고, 때로는 코드의 환경 요구사항을 예측하려고 한다. PaaS의 목표는 애플리케이션 배치를 위한 손쉬운 방법을 제공하는 것이다. IaaS보다 한 단계 더 발전한 PaaS는 개발자가 시스템 관리 업무에서 벗어나 가장 중요한 것, 즉 애플리케이션에 집중할 수 있게 해준다. 

SaaS(Software-as-a-Service)
SaaS는 일반적으로 다양한 구독을 통해 이용할 수 있는 온라인으로 호스팅하는 애플리케이션을 가리킨다. 이들 애플리케이션은 클라우드에서 완전히 작동하며 인터넷과 브라우저를 통해 접속한다. 본질적으로, 클라우드에서 실행되고 가입 기반의 가격책정 모델을 갖는 모든 애플리케이션이 SaaS 애플리케이션으로 간주된다.

SaaS 애플리케이션에는 2가지 유형이 있다. 최종 사용자에게 초점을 맞춘 서비스와 개발자에게 초점을 맞춘 서비스가 그것이다. 후자는 다른 애플리케이션을 위한 기반을 제공한다. 최종 사용자에게 초점을 맞춘 SaaS 애플리케이션의 대표적인 예는 지메일, 드롭박스, 지라, 비트버킷, 슬랙 등이며, 스트라이프(Stripe)와 슬라스크(Slaask)처럼 자사 SaaS 솔루션을 기업 자체 애플리케이션에 통합할 수 있는 API를 제공하는 곳도 있다.

CaaS(Container as a Service)
컨테이너 플랫폼은 IaaS의 최신 구현 방식이다. CaaS 업체는 완전한 서버 호스트를 제공하는 대신 기업이컨테이너 내에서 서비스나 애플리케이션을 호스팅할 수 있도록 해주고, 컨테이너를 대신 관리한다. 컨테이너는 가상머신보다 기반 호스트 자원을 더 효율적으로 활용할 수 있다. ‘작은 가상머신’이라고 생각할 수도 있다. 컨테이너는 실행도 빠르고, 단일 서버에서 여러 인스턴스를 실행할 수 있다.

CaaS 업체는 서버에 컨테이너를 배치하고 컨테이너 인스턴스 수를 늘리고 줄이는 툴을 제공한다. 가장 진보적인 솔루션은 기반 서버를 완벽하게 관리하므로, 기업이 인프라 대신 코드(또는 컨테이너)에 집중할 수 있게 해준다.

CaaS는 금방 PaaS와 SaaS의 빌딩 블록 중 하나로 자리 잡으며 계층화 아키텍처를 구성한다. 하나의 플랫폼이 모든 애플리케이션 요구 사항을 제공할 만큼 유연하지는 않기 때문에, 복잡한 애플리케이션은 여전히 SaaS, PaaS 및 CaaS의 조합으로 이루어져 있다.
 
많은 복잡한 애플리케션이 SaaS와 PaaS, CaaS의 조합으로 이루어진다. ⓒ Fauna
 
SaaS에 대한 의존도를 최대한 높이면 프로비저닝 및 확장성에 대한 우려에서 벗어날 수 있다. 하지만 SaaS가 소화할 수 없는 나머지 부분은 보통 컨테이너에 자리를 잡는데, 이는 여전히 환경 구성과 프로비저닝에 대한 우려를 가지고 있다는 것을 의미한다.

이런 우려를 줄이기 위해 다섯 번째 해법인 서버리스 아키텍처가 탄생한 것이다. 
 

서버리스 아키텍처

FaaS(Function as a Service)
FaaS를 사용하면 확장, 서버 또는 컨테이너에 대한 생각 없이 코드를 업로드하고 실행할 수 있다. 그런 점에서 FaaS는 기존 계층화 아키텍처의 사용 편의성 기준을 능가한다. FaaS의 가장 큰 장점은 확장이다. FaaS는 PaaS나 CaaS보다 더 세밀한 단위로 확장할 수 있으며, 확장에 따르는 환경 구성이 필요없다. 또한 사용하지 않는 것에 대해서는 비용을 지불하지 않는다. 물론, PaaS만큼은 아니지만, 한계는 있다. 
 
  • 단위의 세밀성(Granularity) : PaaS 애플리케이션은 일반적으로 애플리케이션별로만 확장되는 반면, CaaS를 기반으로 구축된 애플리케이션은 컨테이너별로만 확장된다. FaaS 애플리케이션은 별도의 기능으로 세분화되어 기능별로 확장된다. 단점은 자주 애플리케이션의 아키텍처를 다시 생각해야 한다는 것이다. 하나의 애플리케이션이나 몇 개의 컨테이너를 관리하는 대신 더 소규모 작업을 수행하는 많은 기능을 관리해야 하므로 많은 오케스트레이션 작업이 필요할 수 있다.
 
  • 환경 구성(Configuration) : 확장할 때 보통은 환경을 구성해야 하거나 실행해야 하는 애플리케이션과 컨테이너의 인스턴스 수를 수동으로 설정해야 하는 곳에서도 FaaS는 환경을 다시 구성하거나 특정 리소스를 프로비저닝할 필요가 없다.
 
  • 비용 모델 : 코드가 실제로 실행되는지 여부와 관계없이 비용을 지불하는 컨테이너 배치(CaaS)와 달리, FaaS는 각각의 기능을 호출할 때만 비용이 부과된다. 이렇게 사용한 만큼 지불하는 요금 모델은 서서히 서버리스 환경의 가장 중요한 측면으로 자리 잡고 있다.
 
  • 한계 : 일반적인 애플리케이션에서는 코드에 대한 메모리 제한 또는 실행 시간 제한을 정의할 수 있다. FaaS 업체는 기업이 이런 식으로 리소스를 구성할 수 있도록 지원하지만, 서비스 업체가 이를 최적화하는 데는 상한선이 있기 마련이다. 10GB의 RAM으로 기능을 생성하거나 몇 시간 동안만 실행한다면, 몇 대의 서버를 확보해야 할지 생각해보면, FaaS 업체가 자원을 최대한 효율적으로 사용하는 것이 얼마나 어려운 일인지 알 수 있다. 
 

새로운 엣지 아키텍처

서버리스 아키텍처는 프로비저닝과 확장에 대한 우려는 없앴지만 분산은 여전히 어려운 문제로 남아 있다. 이상적으로 보면, 지연 시간을 줄이기 위해서는 코드를 최종 사용자에게 가장 가까운 곳에서 실행하는 것이 좋다. 하지만 최근까지 애플리케이션을 구축해 온 방식에는 여러 가지 문제가 있다.
 



2020.02.18

“FaaS를 넘어 엣지로” 차세대 엣지 서버리스 아키텍처의 현황과 전망

Brecht De Rooms | InfoWorld
서버리스 서비스는 어디에나 있다. 새로운 프로그래밍 방식을 향한 진화의 원동력인 서버리스 환경은 애플리케이션 호스팅 플랫폼, 서버리스 데이터베이스, CDN(Contents Delivery Network), 보안 솔루션 등등 모든 형태로 구현되고 있다.

인프라 수준의 환경 구성, 확장 및 프로비저닝에 대한 우려는 사라졌으며, 분산만이 마지막 문제로 남아 있다. 이 문제의 해결책으로 등장한 것이 바로 엣지 서버리스(Edge Serverless)로, 데이터와 컴퓨트를 수많은 데이터센터에 걸쳐 분산 배포한다. 엣지 서버리스는 컴퓨팅을 사용자와 더 가까운 곳으로 가져와 지연시간을 줄일 수 있다.
 
ⓒ GettyImagesBank

엣지 서버리스는 거의 15년 전에 IaaS(Infrastructure-as-a-Service)로 시작된 클라우드 아키텍처 진화의 정점이다. 클라우드 진화의 다음 단계는 서버리스 ‘빌딩 블록’의 분산을 촉진하고 개발자가 더 쉽게 소비할 수 있도록 하는 것이다.

서버리스 아키텍처는 현재 어디에 있는지, 어디로 향하는지 좀 더 자세히 살펴보자. 
 

계층화 아키텍처

IaaS(Infrastructure as a Service)
클라우드 컴퓨팅 혁명은 IaaS의 등장으로 본격화되었다. IaaS를 통해 기업은 로컬 인프라를 호스팅된 ‘클라우드’ 인프라로 옮겨 운영할 수 있다. 사용한 스토리지와 컴퓨팅 시간에 대해서만 비용을 지불하며, 어떠한 하드웨어나 네트워크도 설치하거나 관리할 필요가 없다.

처음에는 IaaS가 비싸 보였지만, 일반 기업은 구현할 수 없는 수준의 가용성을 보장했기 때문에 빠르게 확산됐다. 실제로 자체적으로 인프라를 구매하고 유지하는 비용이 IaaS 서비스 요금보다 비싼 경우가 많았다. 가장 큰 장점은 하드웨어 유지보수와 프로비저닝이 필요없기 때문에 개발자가 비즈니스 가치에만 집중할 수 있다는 것이다.

PaaS(Platform as a Service)
그 후 서비스 업체는 클라우드 컴퓨팅을 한 단계 더 발전시켜 PaaS를 제공했다. PaaS는 애플리케이션을 구축하는 데 필요한 모든 것을 임대해 준다. 여기에는 서버뿐만 아니라 운영체제, 프로그래밍 언어 환경, 데이터베이스 및 데이터베이스 관리 툴이 포함된다.

IaaS를 이용하면 임대한 서버의 관리자가 되지만, PaaS 업체는 소프트웨어 설치나 보안 업데이트와 같은 서버 관리 작업을 넘겨 받고, 때로는 코드의 환경 요구사항을 예측하려고 한다. PaaS의 목표는 애플리케이션 배치를 위한 손쉬운 방법을 제공하는 것이다. IaaS보다 한 단계 더 발전한 PaaS는 개발자가 시스템 관리 업무에서 벗어나 가장 중요한 것, 즉 애플리케이션에 집중할 수 있게 해준다. 

SaaS(Software-as-a-Service)
SaaS는 일반적으로 다양한 구독을 통해 이용할 수 있는 온라인으로 호스팅하는 애플리케이션을 가리킨다. 이들 애플리케이션은 클라우드에서 완전히 작동하며 인터넷과 브라우저를 통해 접속한다. 본질적으로, 클라우드에서 실행되고 가입 기반의 가격책정 모델을 갖는 모든 애플리케이션이 SaaS 애플리케이션으로 간주된다.

SaaS 애플리케이션에는 2가지 유형이 있다. 최종 사용자에게 초점을 맞춘 서비스와 개발자에게 초점을 맞춘 서비스가 그것이다. 후자는 다른 애플리케이션을 위한 기반을 제공한다. 최종 사용자에게 초점을 맞춘 SaaS 애플리케이션의 대표적인 예는 지메일, 드롭박스, 지라, 비트버킷, 슬랙 등이며, 스트라이프(Stripe)와 슬라스크(Slaask)처럼 자사 SaaS 솔루션을 기업 자체 애플리케이션에 통합할 수 있는 API를 제공하는 곳도 있다.

CaaS(Container as a Service)
컨테이너 플랫폼은 IaaS의 최신 구현 방식이다. CaaS 업체는 완전한 서버 호스트를 제공하는 대신 기업이컨테이너 내에서 서비스나 애플리케이션을 호스팅할 수 있도록 해주고, 컨테이너를 대신 관리한다. 컨테이너는 가상머신보다 기반 호스트 자원을 더 효율적으로 활용할 수 있다. ‘작은 가상머신’이라고 생각할 수도 있다. 컨테이너는 실행도 빠르고, 단일 서버에서 여러 인스턴스를 실행할 수 있다.

CaaS 업체는 서버에 컨테이너를 배치하고 컨테이너 인스턴스 수를 늘리고 줄이는 툴을 제공한다. 가장 진보적인 솔루션은 기반 서버를 완벽하게 관리하므로, 기업이 인프라 대신 코드(또는 컨테이너)에 집중할 수 있게 해준다.

CaaS는 금방 PaaS와 SaaS의 빌딩 블록 중 하나로 자리 잡으며 계층화 아키텍처를 구성한다. 하나의 플랫폼이 모든 애플리케이션 요구 사항을 제공할 만큼 유연하지는 않기 때문에, 복잡한 애플리케이션은 여전히 SaaS, PaaS 및 CaaS의 조합으로 이루어져 있다.
 
많은 복잡한 애플리케션이 SaaS와 PaaS, CaaS의 조합으로 이루어진다. ⓒ Fauna
 
SaaS에 대한 의존도를 최대한 높이면 프로비저닝 및 확장성에 대한 우려에서 벗어날 수 있다. 하지만 SaaS가 소화할 수 없는 나머지 부분은 보통 컨테이너에 자리를 잡는데, 이는 여전히 환경 구성과 프로비저닝에 대한 우려를 가지고 있다는 것을 의미한다.

이런 우려를 줄이기 위해 다섯 번째 해법인 서버리스 아키텍처가 탄생한 것이다. 
 

서버리스 아키텍처

FaaS(Function as a Service)
FaaS를 사용하면 확장, 서버 또는 컨테이너에 대한 생각 없이 코드를 업로드하고 실행할 수 있다. 그런 점에서 FaaS는 기존 계층화 아키텍처의 사용 편의성 기준을 능가한다. FaaS의 가장 큰 장점은 확장이다. FaaS는 PaaS나 CaaS보다 더 세밀한 단위로 확장할 수 있으며, 확장에 따르는 환경 구성이 필요없다. 또한 사용하지 않는 것에 대해서는 비용을 지불하지 않는다. 물론, PaaS만큼은 아니지만, 한계는 있다. 
 
  • 단위의 세밀성(Granularity) : PaaS 애플리케이션은 일반적으로 애플리케이션별로만 확장되는 반면, CaaS를 기반으로 구축된 애플리케이션은 컨테이너별로만 확장된다. FaaS 애플리케이션은 별도의 기능으로 세분화되어 기능별로 확장된다. 단점은 자주 애플리케이션의 아키텍처를 다시 생각해야 한다는 것이다. 하나의 애플리케이션이나 몇 개의 컨테이너를 관리하는 대신 더 소규모 작업을 수행하는 많은 기능을 관리해야 하므로 많은 오케스트레이션 작업이 필요할 수 있다.
 
  • 환경 구성(Configuration) : 확장할 때 보통은 환경을 구성해야 하거나 실행해야 하는 애플리케이션과 컨테이너의 인스턴스 수를 수동으로 설정해야 하는 곳에서도 FaaS는 환경을 다시 구성하거나 특정 리소스를 프로비저닝할 필요가 없다.
 
  • 비용 모델 : 코드가 실제로 실행되는지 여부와 관계없이 비용을 지불하는 컨테이너 배치(CaaS)와 달리, FaaS는 각각의 기능을 호출할 때만 비용이 부과된다. 이렇게 사용한 만큼 지불하는 요금 모델은 서서히 서버리스 환경의 가장 중요한 측면으로 자리 잡고 있다.
 
  • 한계 : 일반적인 애플리케이션에서는 코드에 대한 메모리 제한 또는 실행 시간 제한을 정의할 수 있다. FaaS 업체는 기업이 이런 식으로 리소스를 구성할 수 있도록 지원하지만, 서비스 업체가 이를 최적화하는 데는 상한선이 있기 마련이다. 10GB의 RAM으로 기능을 생성하거나 몇 시간 동안만 실행한다면, 몇 대의 서버를 확보해야 할지 생각해보면, FaaS 업체가 자원을 최대한 효율적으로 사용하는 것이 얼마나 어려운 일인지 알 수 있다. 
 

새로운 엣지 아키텍처

서버리스 아키텍처는 프로비저닝과 확장에 대한 우려는 없앴지만 분산은 여전히 어려운 문제로 남아 있다. 이상적으로 보면, 지연 시간을 줄이기 위해서는 코드를 최종 사용자에게 가장 가까운 곳에서 실행하는 것이 좋다. 하지만 최근까지 애플리케이션을 구축해 온 방식에는 여러 가지 문제가 있다.
 



X