구독해서 새 게시물에 대한 알림을 받으세요.

Cloudflare Workers: 빠른 서버리스 플랫폼

2021-09-13

6분 읽기
이 게시물은 English, 繁體中文, 日本語, Português, Español, Рyсский简体中文로도 이용할 수 있습니다.

Cloudflare에서는 약 4년 전에 에지에서 직접 실행되는 서버리스 플랫폼인 Cloudflare Workers를 발표했습니다.

이번 주 내내, 저희는 Cloudflare에서 이미 웹에 존재하는 애플리케이션을 더 빠르게 만드는 데 도움이 되는 다양한 방법에 대해 이야기할 예정입니다. 하지만 오늘이 여러분이 아이디어를 실현하기로 결정한 날이라면, Cloudflare 에지에서 프로젝트를 구축하고 인터넷 튜브에 직접 배포하는 것이 위치와 관계없이 모든 사용자에게 항상 빠른 애플리케이션을 보장할 수 있는 가장 좋은 방법입니다.

Cloudflare Workers가 성능 측면에서 다른 서버리스 플랫폼과 어떻게 비교되는지 이야기한 지 몇 년이 지났으므로, 저희는 이제 업데이트할 때가 되었다고 결정했습니다. 지난 몇 년 동안 Workers 플랫폼에 대한 저희 작업은 대부분 새로운 기능, API, 스토리지, 디버깅, 통합 가시성 도구 도입 등 플랫폼을 더욱 강력하게 만드는 데 집중되었지만, 성능도 소홀히 하지 않았습니다.

현재 Workers는 P90에서 3년 전보다 30% 더 빠릅니다. 또한 Lambda@Edge에서는 210%, Lambda에서는 298% 더 빠릅니다.

아, 참, 콜드 스타트도 없앴습니다.

서버리스 플랫폼의 성능은 어떻게 측정하세요?

저는 과거에 CDN 간에 수백 개의 성능 벤치마크를 실행했습니다. 공식은 간단합니다. Catchpoint라는 도구를 사용하여 전 세계 노드에서 동일한 자산에 대한 요청을 하고 각 위치에서 응답을 반환하는 데 걸린 시간을 보고합니다.

서버리스 성능을 측정하는 것은 조금 다릅니다. 비교 대상이 정적 자산이 아니라 컴퓨팅 성능이므로 저희는 모든 기능이 동일한 작업을 수행하는지 확인하기를 원했습니다.

속도 테스트에 대한 저희 2018년 블로그에서는 각 함수가 단순히 현재 시간을 반환하도록 했습니다. 이 테스트의 목적을 위해, 해당 작업을 수행할 수 있는 최소 기준을 충족하지 못한 '서버리스' 제품은 자격 미달 처리되었습니다. 이 테스트에 사용된 서버리스 제품은 동일한 기능과 동일한 계산 복잡성을 실행하여 정확하고 공정한 결과를 보장했습니다.

저희가 무엇을 측정하는지 살펴보는 것도 중요합니다. 성능이 중요한 이유는 실제 최종 고객의 경험에 영향을 주기 때문입니다. DNS , 네트워크 혼잡, 콜드 스타트 등 대기 시간의 원인이 무엇인지는 중요하지 않습니다. 고객은 소스가 무엇이든 상관하지 않고 애플리케이션 로딩을 기다리며 시간을 낭비하는 것에만 신경을 씁니다.

따라서 최종 사용자 경험의 관점에서 엔드투엔드 성능을 측정하는 것이 중요하며, 따라서 저희는 글로벌 벤치마크를 사용하여 성능을 측정합니다.

아래 결과에는 북미, 남미, 유럽, 아시아, 오세아니아에 걸쳐 전 세계의 50개 노드에서 실행된 테스트가 나와 있습니다.

파란색: Cloudflare Workers 빨간색: Lambda@Edge 녹색: Lambda

(결과에 대한 링크).

결과에서 확인할 수 있듯이, 사용자가 전 세계 어디에 있든 Workers는 속도와 관련하여 최고의 경험을 보장할 수 있습니다.

Workers의 경우 전 세계적으로 최고의 성능을 얻는 데는 개발자 측의 추가 노력이 필요하지 않습니다. 개발자는 추가 부하 분산이나 지역 구성을 수행할 필요가 없습니다. 모든 배포가 Cloudflare의 광범위한 에지 네트워크에서 즉시 이루어집니다.

전 세계 고객을 대상으로 하지 않고 고객 기반이 미국 동부 해안에 편리하게 위치해 있더라도 Workers에서 모든 요청에 대해 가장 빠른 응답을 보장할 수 있습니다.

위에는 워싱턴 DC에서 가장 가까운 지역인 us-east-1에서 얻은 결과가 나와 있습니다. 다시 한 번 강조하지만, Workers는 최적화 없이도 34% 더 빠릅니다.

그 이유는 무엇일까요?

서버리스 플랫폼의 성능은 무엇에 따라 정의될까요?

최종 사용자 관점에서 볼 때, 코드 자체의 성능 외에도 서버리스 애플리케이션 성능은 근본적으로 두 가지 변수의 함수입니다. 즉, 애플리케이션이 사용자로부터 떨어져서 실행되는 거리와 런타임 자체가 시작되는 데 걸리는 시간입니다. 사용자로부터의 거리가 멀어질수록 애플리케이션 성능에 병목 현상이 발생한다는 사실을 인식하고서 많은 서버리스 벤더가 에지 부문을 점점 더 강화하고 있습니다. 최종 사용자와 가까운 에지에서 애플리케이션을 실행하면 성능이 향상됩니다. 5G가 온라인화되면서 이러한 추세는 더욱 가속화될 것입니다.

하지만 서버리스 분야의 많은 클라우드 벤더가 더 빠른 성능을 위해 경쟁하면서 이 문제에 대처하면서 심각한 문제에 직면합니다. 그 문제는 제품을 구축할 때 사용하는 레거시 아키텍처가 에지에 내재하는 한계와 잘 맞지 않는다는 것입니다.

서버리스 모델의 목표는 기본 아키텍처를 의도적으로 추상화하는 것이므로 AWS와 같은 레거시 클라우드 공급자가 Lambda 등의 서버리스 제품을 어떻게 만들었는지 모든 사람이 명확하게 알지는 못합니다. 레거시 클라우드 공급자는 코드에 대한 컨테이너화된 프로세스를 가동하여 서버리스 제품을 제공합니다. 해당 공급자는 백그라운드에서 모든 다양한 프로세스의 크기를 자동으로 조정합니다. 컨테이너가 실행될 때마다 코드뿐만 아니라 전체 언어 런타임도 함께 실행됩니다.

글로벌 성능을 측정하는 첫 번째 그래프를 해결하기 위해 벤더들은 애플리케이션과 최종 사용자 간의 거리를 좁히기 위해 대규모 중앙 집중식 아키텍처(소수의 빅데이터 센터)에서 분산형 에지 기반 세계(전 세계 곳곳의 더 많은 소규모 데이터 센터)로 전환을 시도하고 있습니다. 하지만 이들 접근 방식에는 문제가 있습니다. 데이터 센터가 작을수록 더 적은 수의 컴퓨터와 더 적은 메모리가 사용됩니다. 벤더가 에지에 더 가까운 곳에서 운영하기 위해 작지만 많은 데이터 센터 전략을 추구할 때마다 개별 프로세스에서 콜드 스타트 발생 가능성이 높아집니다.

이로 인해 컨테이너 기반 아키텍처의 서버리스 애플리케이션에 대한 성능 한계가 사실상 발생합니다. 소규모 데이터 센터를 보유한 기존 벤더가 여러분의 애플리케이션을 에지(및 사용자)에 더 가깝게 이동시키는 경우, 서버 수도 줄어들고 메모리도 줄어들며 애플리케이션에 콜드 스타트가 필요할 가능성이 높아집니다. 그러한 가능성을 줄이려고 기존 벤더들은 보다 중앙 집중화된 모델로 돌아갔지만, 그것은 몇 개의 대규모 중앙 집중화된 데이터 센터 중 하나에서 애플리케이션을 실행한다는 것을 의미합니다. 이와 같이 더 큰 중앙 집중식 데이터 센터는 정의에 따라 거의 항상 사용자와 더 멀리 떨어지게 됩니다.

Lambda@Edge에서 실행할 때 테스트 결과를 살펴보면 위 그래프에서 이것이 어떻게 작용하는지 확인할 수 있습니다. 최종 사용자와의 근접성이 감소했음에도 불구하고 컨테이너가 더 자주 시작되어야 하므로 p90 성능은 Lambda의 성능보다 느립니다.

컨테이너를 기반으로 구축된 서버리스 아키텍처는 경계를 오르내릴 수는 있지만, 궁극적으로 그 경계의 곡선을 바꿀 방법은 많지 않습니다.

Workers가 그처럼 속도가 빠른 이유는?

Workers는 처음부터 에지 우선 서버리스 모델을 위해 설계되었습니다. Cloudflare에서는 중앙화된 대규모 데이터 센터의 컴퓨팅을 에지로 푸시하는 것이 아니라 분산된 에지 네트워크로 시작했으므로, 이러한 제약 아래서 작업하면서 혁신을 해야 했습니다.

이전 블로그 게시물 중 하나에서 저희는 이 혁신이 Workers 아키텍처가 모든 요청에 콜드 스타트를 도입하지 않고도 빠르게 실행할 수 있는 가벼운 V8 격리 기반으로 구축됨으로써 새로운 패러다임 전환으로 어떻게 전환되는지 논의한 바 있습니다.

별도의 격리 조치를 실행하자마자 이점이 제공된 것은 물론, V8이 더 좋아지면서 플랫폼 성능도 개선되었습니다. 예를 들어, V8에서 WASM용 컴파일러인 Liftoff를 발표했을 때 모든 WASM Workers가 즉시 더 빨라졌습니다.

마찬가지로 Cloudflare의 네트워크(예: 새로운 데이터 센터 추가)나 스택(예: HTTP/3와 같은 새로운 고속 프로토콜 지원)이 개선될 때마다 Workers는 즉시 그 이점을 누릴 수 있습니다.

또한, 저희는 항상 Workers 자체를 개선하여 플랫폼을 훨씬 더 빠르게 만들려고 노력하고 있습니다. 예를 들어, 작년에 저희는 고객을 위해 콜드 스타트를 없애는 데 도움이 되는 개선 사항을 발표했습니다.

Workers에서 성능 격차를 확인하고 해결하는 데 도움이 되는 주요 이점은 운영 규모입니다. 오늘날 Workers는 취미로 일하는 사람부터 기업인에 이르기까지 전 세계의 수십만 명의 개발자에게 서비스를 제공하며 초당 수백만 건의 요청을 처리합니다. 저희가 고객 한 명을 위해 무언가를 개선할 때마다 전체 플랫폼이 더 빨라집니다.

성능이 중요합니다

서버리스 모델의 궁극적인 목표는 개발자가 가장 잘하는 일인 사용자를 위한 경험을 구축하는 데 집중하도록 지원하는 것입니다. 즉시 사용 가능한 최고의 성능을 제공할 수 있는 서버리스 플랫폼을 선택하면 개발자가 걱정할 일이 하나 줄어듭니다. 여러분이 콜드 스타트를 최적화하는 데 시간을 쓰고 있다면, 고객을 위한 최고의 기능을 구축하는 데 시간을 쓰고 있는 것은 아닙니다.

개발자들이 애플리케이션의 성능을 개선하여 그들의 사용자에게 최상의 경험을 제공하고자 하는 것처럼, Cloudflare에서는 Workers로 구축하는 개발자들의 경험을 개선하기 위해 지속해서 노력하고 있습니다.

고객이 느린 응답을 기다리려고 하지 않듯이 개발자는 느린 배포 주기를 기다리기를 원하지 않습니다.

바로 이 부분에서 Workers 플랫폼이 다시 한 번 뛰어난 성능을 발휘합니다.

Cloudflare Workers에서는 모든 배포 작업이 전 세계에 걸쳐 전파되는 데 1초도 걸리지 않으므로 코드 배포를 기다리며 시간을 낭비할 필요가 없고 사용자가 최대한 빠르게 변경 사항을 확인할 수 있습니다.

물론 배포 시간 자체가 중요한 것이 아니라 전체 개발 주기의 효율성이 중요하며, 이는 가입부터 디버깅에 이르기까지 모든 단계에서 저희가 항상 개선하기 위해 노력하고 있는 이유입니다.

저희 말만 듣고 판단하지는 마세요.

말할 필요도 없이, 중립을 유지하려고 아무리 노력해도 항상 약간의 편향은 있을 수밖에 없습니다. 다행히도, 여러분은 Cloudflare에서 하는 말을 모두 믿을 필요는 없습니다.

가입하고 지금 바로 첫 Worker를 배포하시도록 초대합니다. 몇 분밖에 걸리지 않습니다!

Cloudflare TV에서 보기

Cloudflare에서는 전체 기업 네트워크를 보호하고, 고객이 인터넷 규모의 애플리케이션을 효과적으로 구축하도록 지원하며, 웹 사이트와 인터넷 애플리케이션을 가속화하고, DDoS 공격을 막으며, 해커를 막고, Zero Trust로 향하는 고객의 여정을 지원합니다.

어떤 장치로든 1.1.1.1에 방문해 인터넷을 더 빠르고 안전하게 만들어 주는 Cloudflare의 무료 앱을 사용해 보세요.

더 나은 인터넷을 만들기 위한 Cloudflare의 사명을 자세히 알아보려면 여기에서 시작하세요. 새로운 커리어 경로를 찾고 있다면 채용 공고를 확인해 보세요.
Speed WeekCloudflare WorkersServerless제품 뉴스속도 및 신뢰성개발자Developer Platform

X에서 팔로우하기

Rita Kozlov|@ritakozlov_
Cloudflare|@cloudflare

관련 게시물