서버리스 JavaScript의 작동 방식은? | 서비스 근무자와 Cloudflare Workers

서버리스 JavaScript는 대기 시간을 최소화하는 서버리스 웹 애플리케이션을 구축하는 데 사용됩니다.

학습 목표

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

  • 서버리스 JavaScript의 정의
  • 서버리스 JavaScript를 사용하여 대기 시간이 짧은 웹 애플리케이션을 구축하는 방법 이해하기
  • JavaScript가 VCL보다 효과적인 이유 알아보기
  • HTTP 캐싱과 HTTP 요청 이해하기
  • Service Workers, Cloudflare Workers, 이들 간의 차이점 알아보기

글 링크 복사

서버리스 JavaScript란?

서버리스 JavaScript는 JavaScript 코드로, 애플리케이션의 전체 또는 일부를 구성하고 요청이 있을 때만 실행되며 전용 서버에서 호스팅되지 않습니다. 서버리스 JavaScript 덕분에 개발자는 네트워크에서 실행되는 고성능, 저지연 서버리스 애플리케이션(예: JAMstack 애플리케이션)을 구축할 수 있으며 콜드 스타트와 같은 다른 서버리스 애플리케이션과 관련된 많은 문제를 피할 수 있습니다.

서버리스 JavaScript는 에지 네트워크에서 호스팅되거나 HTTP 요청에 신속하게 응답하기 위해 콘텐츠를 저장하는 HTTP 캐싱 서비스에서 호스팅됩니다.개발자는 HTTP 요청이 원본 서버로 이동하기 전에 이를 처리하는 JavaScript 함수를 작성하고 배포할 수 있습니다.

에지 서버의 서버리스 JavaScript

서버리스 JavaScript를 사용하면 에지에서 코드를 실행하여 기존 애플리케이션의 기능을 확장하고 사용자 경험을 개선하거나, 빠르고 확장성이 뛰어난 완전한 서버리스 애플리케이션을 새로 만들 수 있습니다.Cloudflare Workers는 서버리스 JavaScript 플랫폼입니다.

Varnish란?

Varnish는 웹 애플리케이션의 속도를 높이고 웹 사이트 성능을 개선하도록 설계된 웹 가속기입니다.역방향 프록시는 웹 서버 앞에 위치하여 웹 클라이언트가 자주 요청하는 콘텐츠를 캐싱하거나 저장하여 해당 서버와 주고받는 HTTP 트래픽을 가속하는 캐싱 HTTP입니다.Varnish 구성 언어(VCL)는 Varnish와 함께 사용되어 개발자가 Varnish가 웹 요청을 관리하는 방식을 사용자 지정할 수 있도록 합니다.

서버리스 아키텍처에서 VCL 대신 JavaScript를 사용하면 어떤 이점이 있을까요?

VCL은 바니시 캐시를 쉽게 구성할 수 있도록 설계된 구성 언어이며, 본격적인 프로그래밍 언어가 아닙니다. VCL은 강력한 애플리케이션을 구축하거나 확장할 정도로 충분히 유연하지 않습니다. VCL은 JavaScript에 비해 할 수 있는 일이 제한적입니다. 또한 VCL은 바니시 구현 외부에서는 사용되지 않으므로 대부분의 개발자가 이에 익숙하지 않습니다. 반면 JavaScript는 어디에나 존재하며 이미 애플리케이션 구축에 널리 사용되고 있습니다. 서버리스 아키텍처에서 JavaScript를 사용하면 개발자가 익숙한 언어로 전체 애플리케이션을 구축할 수 있습니다.

서버리스 JavaScript를 사용하면 더 많은 개발자가 에지에서 서버리스 컴퓨팅을 활용할 수 있으며, 이러한 개발자는 더욱 다양한 애플리케이션을 구축할 수 있습니다.

서버리스 JavaScript로 애플리케이션을 구축하면 대기 시간을 줄이는 데 어떻게 도움이 될까요?

서버리스 JavaScript는 원본 서버에서 호스팅되는 코드보다 최종 사용자에게 더 가까운 HTTP 캐싱 네트워크에서 실행됩니다. 그 결과 요청이 원본 서버까지 이동했다가 다시 돌아올 필요가 없으며 애플리케이션이 사용자와의 상호 작용에 훨씬 더 빠르게 응답합니다. 캐싱 네트워크의 에지 위치가 지리적으로 분산되어 있을수록 대기 시간이 더 많이 줄어듭니다.

서버리스 JavaScript는 언제 실행될까요?

서버리스 모델에서는 애플리케이션이 함수로 나뉘고 특정 이벤트에 대한 응답으로 함수 코드가 실행됩니다. 그렇지 않으면 실행되지 않습니다. 서버리스 JavaScript가 실행되도록 트리거하는 이벤트는 HTTP 요청입니다. 개발자는 JavaScript 함수가 응답하는 HTTP 요청의 종류와 HTTP 요청이 변경되거나 이행되는 방식을 사용자 정의할 수 있습니다.

HTTP 요청이란?

HTTP 요청은 하이퍼텍스트 전송 프로토콜(HTTP)을 통해 클라이언트에서 서버로 전송되는 요청입니다.브라우저는 하이퍼링크를 클릭하거나 양식을 제출하는 등의 사용자 동작을 HTTP 요청으로 변환합니다.그러면 요청이 서버로 전송되고 서버는 요청을 이행하기 위해 HTTP 응답을 보냅니다.애플리케이션이 API를 호출할 때도 HTTP 요청이 발생합니다.

HTTP 캐싱이란?

HTTP 캐싱은 서버나 브라우저가 향후 요청에 더 빠르게 응답하기 위해 사용자의 HTTP 요청에 대한 응답 사본을 저장하는 것을 말합니다.CDN 서버가 HTTP 캐시의 예입니다.일부 HTTP 캐싱 서비스는 개발자가 애플리케이션에 맞게 HTTP 캐싱 작동 방식을 사용자 지정할 수 있도록 지원합니다.

Cloudflare는 전 세계에 데이터 센터를 보유한 HTTP 캐싱 에지 네트워크로, 개발자가 네트워크 에지에서 자체 JavaScript를 작성하고 배포할 수 있습니다. Cloudflare 네트워크에서 HTTP 캐싱은 특정 서버에서 이루어지는 것이 아니라 HTTP 요청의 소스와 가장 가까운 데이터 센터 내에서 이루어집니다.

Service Workers란?

Service Workers는 브라우저에서 사용자에게 맞춤화된 환경을 만들기 위해 다운로드하여 실행하는 스크립트입니다. Service Workers 덕분에 푸시 알림, 백그라운드 동기화, 오프라인 기능 등의 기능을 브라우저에서 사용할 수 있습니다. Service Workers는 JavaScript로 작성되어 요청이 인터넷에 도달하기 전에 HTTP 요청을 가로채고 수정하여 응답합니다.

Service Workers가 HTTP 트래픽을 처리하는 두 가지 방법:

Service Worker 응답

Service Workers는 웹 서버에 접속하지 않고도 HTTP 요청에 응답할 수 있습니다.

Service Workers의 요청 수정

Service Workers는 HTTP 요청 및 응답을 수정할 수 있습니다.

Cloudflare Workers란?

Cloudflare Workers는 서버리스 기능을 최종 사용자에게 최대한 가깝게 실행할 수 있는 플랫폼입니다. 본질적으로 서버리스 코드 자체는 네트워크에 '캐시'되어 있다가 적절한 유형의 요청을 받으면 실행됩니다. Cloudflare Workers는 Service Workers API에 대해 JavaScript로 작성되었으므로 Service Workers가 제공하는 모든 기능을 사용할 수 있습니다. Cloudflare Workers는 실행을 위해 Chrome V8 엔진을 활용합니다. Cloudflare Workers 코드는 전 세계 Cloudflare의 방대한 데이터 센터 네트워크에서 호스팅됩니다.

Chrome V8이란?

Chrome V8, 일명 'V8'은 JavaScript 컴파일, 최적화, 실행을 위해 Google에서 개발한 JavaScript 엔진입니다.JavaScript 코드 실행에 V8을 사용하면 JavaScript Workers의 시작 시간이 크게 단축되어 대부분의 경우 '콜드 스타트' 문제가 발생하지 않습니다.또한 V8은 보안 취약점을 면밀히 분석하였으므로 JavaScript 코드를 안전하게 실행하는 데 이상적입니다.

Service Workers와 비교하여 Cloudflare Workers의 특유한 점은?

Service Workers를 사용하는 것과 Service Workers를 사용하는 것의 주요한 차이점 중 하나는 Service Workers는 클라이언트 측에서 실행되며 사용자의 브라우저에서 다운로드해야 하는 반면, Cloudflare Workers는 사용자와 나머지 인터넷 사이에 있는 Cloudflare 네트워크의 에지에서 실행되므로 네트워크 자체 내에서 효과적으로 실행된다는 것입니다.

Cloudflare Workers에 대해 자세히 알아보기, 그리고 Cloudflare Workers를 만든 이유.