서버리스 컴퓨팅으로는 성능이 어떻게 개선될 수 있을까요? | Lambda 성능

서버리스 아키텍처에서는 더 많은 상호 접속 위치를 보유하면 성능에 긍정적인 영향이 크게 미칩니다.

학습 목표

이 글을 읽은 후에 다음을 할 수 있습니다:

  • AWS Lambda, Lambda@Edge, Cloudflare Workers에 대해 알아보기
  • 플랫폼 간 성능 차이 확인
  • 대기 시간 및 상호 접속 위치 이해하기

글 링크 복사

서버리스로 어떻게 성능이 향상될까요?

서버리스 컴퓨팅의 장점 중 하나는 어디서나 애플리케이션 코드를 실행할 수 있다는 점입니다.정의에 따라 서버리스 아키텍처에는 원본 서버가 없으므로 최종 사용자와 가까운 에지 위치에서 코드가 실행될 수 있습니다.이 기능과 그에 따른 대기 시간 감소를 활용하는 두 가지 서버리스 플랫폼은 AWS Lambda@Edge와 Cloudflare Workers입니다.Lambda 성능을 Cloudflare Workers 및 Lambda@Edge의 성능과 비교하여 측정함으로써 에지에서 서버리스 애플리케이션 배포의 효과를 관찰할 수 있습니다.테스트 결과(아래)에 따르면 Cloudflare Workers는 일반적으로 응답 속도가 더 빠릅니다.

AWS Lambda란?

AWS Lambda는 Amazon Web Services에서 제공하는 서버리스 인프라 서비스입니다. Lambda는 다양한 언어로 작성된 이벤트 중심 애플리케이션 함수를 호스팅하며, 필요할 때 이를 시작하고 실행합니다.

AWS Lambda는 어디에 배포될까요?

AWS는 전 세계에 걸쳐 배포할 수 있는 여러 지역을 제공합니다. 일반적으로 Lambda 호스팅 애플리케이션은 이러한 지역 중 한 곳에서만 호스팅됩니다.

AWS Lambda@Edge란?

AWS Lambda@Edge는 한 지역이 아닌 전 세계에 분산된 모든 AWS 지역에 배포된 Lambda입니다. Lambda는 여러 언어를 지원하지만, Lambda@Edge 함수는 JavaScript를 실행하기 위한 실행 시간 환경인 Node.js에서 실행됩니다. Lambda@Edge 함수가 트리거되면 트리거 이벤트의 출처와 가장 가까운 AWS 지역 내에서 실행되므로, 애플리케이션을 사용하는 사람이나 컴퓨터와 최대한 가까운 곳에서 실행됩니다.

예를 들어, 시카고에 있는 사용자가 서버리스 아키텍처를 사용하는 애플리케이션을 사용하여 정보를 요청한다고 가정해 보겠습니다. 서버리스 애플리케이션의 인프라가 미국 동부 1 지역(버지니아주)에서 AWS Lambda를 사용하여 호스팅되는 경우, 요청은 버지니아주의 AWS 센터까지 이동해야 하며 응답은 거기에서 시카고까지 다시 이동하게 됩니다. 그러나 애플리케이션이 AWS Lambda@Edge를 사용하여 호스팅되는 경우, 요청과 응답은 오하이오주에 있는 가장 가까운 AWS 지역인 미국 동부 2로만지역으 이동하면 됩니다. 이렇게 거리가 줄어들면 AWS Lambda에 비해 대기 시간이 줄어듭니다.

AWS Lambda@Edge와 Cloudflare Workers의 비교

AWS Lambda@Edge와 유사하게, Cloudflare Workers는 전 세계 데이터 센터에서 호스팅되는 이벤트 중심 JavaScript 함수입니다. 그러나 두 서버리스 인프라 서비스 간에는 중요한 차이점이 많습니다. Cloudflare Workers는 Node.js가 아닌 Chrome V8에서 직접 실행되며, Cloudflare는 전 세계 200개 도시에 데이터 센터를 보유하고 있습니다. Cloudflare Workers는 V8을 직접 사용하므로 다른 서버리스 플랫폼보다 훨씬 더 빠르게 시작하고 훨씬 적은 리소스를 소비할 수 있습니다. 앞서의 예에서 시카고의 사용자가 Cloudflare Workers로 구축된 애플리케이션으로부터 응답을 받으려는 경우, 요청은 오하이오가 아닌 시카고의 Cloudflare PoP로 이동합니다.

대기 시간이란? 대기 시간은 사용자 행동에 어떤 영향을 미칠까요?

네트워킹에서 '대기 시간'은 요청된 정보가 로드되기까지의 지연되는 시간을 의미합니다. 대기 시간이 길어지면 웹 페이지를 떠나는 사용자도 늘어납니다.

로딩 시간을 조금만 줄여도 사용자 참여도가 크게 향상됩니다. 예를 들어, Walmart의 연구에 따르면 페이지 로딩 시간이 1초 개선될 때마다 전환율이 2%씩 증가했습니다. 반대로 대기 시간이 길어지면 사용자는 웹 사이트나 애플리케이션 사용을 중단할 가능성이 높아집니다. 정보가 이동해야 하는 거리가 줄어들면 대기 시간이 짧아집니다.

상호 접속 위치(PoP)란?

상호 접속 위치(PoP)는 통신 네트워크가 상호 연결되는 장소로, 인터넷의 맥락에서는 사람들이 인터넷에 연결할 수 있게 해주는 하드웨어(라우터, 스위치, 서버 등)가 있는 곳입니다. 에지 네트워크에 대해 말할 때, 상호 접속 위치는 에지 서버 위치입니다. 에지에 PoP가 많을수록 사용자와 지리적으로 가까운 곳에 PoP가 있을 가능성이 높아지므로 더 많은 사용자에게 더 빠른 응답을 제공할 수 있습니다.

서버리스 기능은 평균적으로 얼마나 빠르게 응답할까요?

Cloudflare에서는 서버리스 응답성을 입증하고 여러 PoP에 걸쳐 서버리스 기능을 배포하는 효과를 테스트하기 위해 AWS Lambda, Lambda@Edge, Cloudflare Workers를 비교하는 테스트를 수행했습니다. (테스트 함수는 실행 시 현재 시간에 따라 응답하는 간단한 스크립트였습니다.)

아래 차트에는 AWS Lambda(파란색), AWS Lambda@Edge(녹색), Cloudflare Workers(빨간색)의 함수 응답 시간이 나와 있습니다. 이 테스트의 경우, AWS 람다 함수는 미국 동부 1 지역에서 호스팅되었습니다.

aws-lambda-대-cloudflare-workers

서버리스 아키텍처에서는 코드가 실행되는 위치(지리적인 관점에서)가 대기 시간에 영향을 미칩니다. 애플리케이션 코드가 사용자와 더 가까운 곳에서 실행되면 정보가 멀리 이동할 필요가 없으므로 애플리케이션의 성능이 향상되고 애플리케이션이 더 빠르게 응답합니다. 응답 시간은 세 서비스 모두 달랐지만, Cloudflare Workers의 응답이 일반적으로 가장 빨랐습니다. 다음으로 속도가 빨랐던 Lambda@Edge는 여러 위치에서 서버리스 기능을 실행할 때의 이점을 잘 보여주었습니다.

AWS 지역은 전 세계에 분산되어 있지만, Cloudflare에서는 더 많은 PoP를 보유하고 있습니다. 또한 Cloudflare는 북미로 제한된 테스트를 수행했으며, DNS 확인으로 인한 지연은 필터링되었습니다. 아래에 나와 있는 결과는 PoP가 더 많으면 대기 시간을 줄고 성능이 개선되는 또 하나의 예입니다. Cloudflare Workers의 경우 응답에 걸리는 시간이 가장 짧습니다.

lambda-대-workers

서버리스 콜드 스타트: 서버리스 아키텍처에서 새로운 프로세스가 얼마나 빠르게 응답할까요?

서버리스 컴퓨팅에서 '콜드 스타트'란 최근에 실행되지 않은 함수가 이벤트에 응답해야 하는 경우를 말합니다. 이러한 함수를 실행하려면 먼저 '스핀업'해야 하는데, 일반적으로 몇 밀리초가 걸립니다. 이로 인해 추가적인 지연 문제가 발생할 수 있습니다.

Cloudflare Workers는 콜드 스타트를 완전히 없앴으므로 스핀업 시간이 전혀 필요하지 않습니다. 이는 Cloudflare 전역 네트워크의 모든 위치에서 마찬가지입니다. 이와는 대조적으로, Lambda 및 Lambda@Edge 함수는 모두 콜드 스타트에서 응답하는 데 1초 이상 걸릴 수 있습니다.

이러한 차이점은 주로 Cloudflare Workers가 Node.js가 아닌 Chrome V8에서 실행된다는 사실에 기인합니다. Node.js는 Chrome V8을 기반으로 구축되어 스핀업하는 데 시간이 오래 걸리고 메모리 오버헤드가 더 큽니다. 일반적으로 V8 인스턴스는 스핀업하는 데 5밀리초도 걸리지 않습니다.

Cloudflare Workers에 대해 자세히 알아보세요.