이제 애플리케이션 부하 분산기로 에지에서 커스텀 코드를 실행하세요
Arman Rye
Product Manager
Martijn Stevenson
Engineering Lead
* 본 아티클의 원문은 2024년 11월 8일 Google Cloud 블로그(영문)에 게재되었습니다.
애플리케이션 부하 분산기는 Google Cloud에서 안정적으로 웹 애플리케이션을 배포하는 데 필수입니다. Google Cloud의 부하 분산기가 폭넓은 맞춤설정을 제공하지만, 때로는 더 큰 프로그래밍 가능성(programmability)이 필요하기도 합니다.
Google Cloud는 최근 발표에서 애플리케이션 부하 분산기용 서비스 익스텐션 프로그램 플러그인 프리뷰 버전을 선보였습니다. 이제 완전 관리형 Google 환경을 사용해 최적의 지연 시간으로 요청/응답 경로에서 직접 자체 커스텀 코드를 실행하여 비즈니스 요구사항에 맞게 부하 분산기를 맞춤설정할 수 있습니다. 코드만 입력하면 나머지는 Google Cloud가 처리합니다. 무거운 컴퓨팅 작업을 직접 관리하고 싶다면 현재 애플리케이션 부하 분산기의 정식 버전으로 제공되는 서비스 익스텐션 프로그램의 개요를 살펴보세요.
서비스 익스텐션 프로그램 플러그인은 다음 사용 사례를 지원합니다.
-
헤더 추가: 애플리케이션이나 특정 고객에 적합한 새 헤더를 만들거나 요청 및 응답을 위한 새 헤더를 삽입합니다.
-
헤더 조작: 기존 요청 및 응답 헤더를 재작성합니다. 또는 백엔드로 전달되는 과정이나 클라이언트에게 응답하는 중에 클라이언트 헤더를 재정의합니다.
-
보안:클라이언트 요청 또는 응답 헤더에 기반한 커스텀 토큰 인증 등의 고급 보안 정책을 작성하고 플러그인 내에서 시행 결정을 내립니다.
-
커스텀 로깅: 사용자 정의 헤더나 커스텀 데이터를 Cloud Logging에 로깅합니다.
-
예외 처리: 특정 응답 클래스에 대해 클라이언트를 커스텀 오류 페이지로 리디렉션합니다.
HTML 재작성: Google reCAPTCHA 통합이나 Google 애널리틱스 태그 지정을 위해 원본에서 HTML을 재작성합니다.
코드를 실행할 수 있는 곳
서비스 익스텐션 프로그램은 전 세계에 분산된 Google 네트워크 에지의 요청 및 응답 경로에서 실행됩니다. 이제 서비스 익스텐션 프로그램 플러그인이 전역 외부 애플리케이션 부하 분산기의 기존 트래픽 익스텐션 프로그램에 포함되어 제공됩니다. 트래픽 익스텐션 프로그램은 Cloud CDN 및 Cloud Armor 다음에 실행되지만 트래픽이 백엔드에 도착하기 전에 실행됩니다. Cloud CDN의 서비스 익스텐션 프로그램 지원도 앞으로 출시될 예정입니다. 또한 서비스 익스텐션 프로그램 플러그인은 리전 간 내부 부하 분산기에서 경로 및 트래픽 익스텐션 프로그램의 일부로 지원됩니다.
서비스 익스텐션 프로그램 아키텍처
서비스 익스텐션 프로그램 플러그인은 애플리케이션 부하 분산기 요청/응답 경로의 일부로 실행되는 가벼운 컴퓨팅 작업을 위해 설계되었습니다. 플러그인은 WebAssembly(Wasm) 기반으로 빌드되어 다음과 같은 장점이 있습니다.
-
네이티브 수준의 실행 속도, 한 자릿수 밀리초 수준의 시작 시간
-
Rust와 C++를 비롯해 다양한 프로그래밍 언어 지원
-
플랫폼 간 이식성으로 다양한 배포에서 같은 플러그인을 실행하거나 로컬에서 실행해 테스트 가능
-
샌드박스 환경에서 플러그인 로직을 실행하는 등의 보안 기능
서비스 익스텐션 프로그램 플러그인은 Proxy-Wasm을 사용합니다. 이는 Wasm 모듈의 네트워크 프록시 연결을 위한 표준 API를 제공하는 Google 지원 오픈소스 프로젝트입니다.
서비스 익스텐션 프로그램 플러그인을 실행하기 위해 Google Cloud에서는 부하 분산기와 같은 대규모 멀티 테넌트를 지원하면서도 확장성이 유연한 컴퓨팅 플랫폼을 빌드했습니다. 플러그인은 완전 관리형이며 트래픽 수요를 충족하기 위해 동적 샤딩과 자동 확장 기능을 제공합니다. 이 아키텍처는 다음을 지원합니다.
-
확장성: 필요에 따라 트래픽 패턴의 변동에 맞춰 많은 Wasm 호스트로 수평 확장할 수 있습니다.
-
짧은 지연 시간: 부하 분산기와 Wasm 호스트 사이에 추가 프록시가 없습니다. 프록시리스이자 서버리스인 이 아키텍처로 경로의 지연 시간을 더욱 최적화할 수 있습니다.
다음 단계
서비스 익스텐션 프로그램 플러그인을 시작하려면 로컬 테스트 툴킷이 있는 샘플 저장소(계속 업데이트 예정)를 확인하고 문서의 빠른 시작 가이드를 따르세요.