Hyperdrive는 Workers가 벡터 검색을 위한 pgvector 확장을 사용하는 데이터베이스를 포함하여 PostgreSQL 데이터베이스와 직접 통신할 수 있게 해주는 관리형 커넥션 풀링(connection-pooling) 서비스입니다. 서버와 가까운 곳에 재사용 가능한 데이터베이스 연결 세트를 유지함으로써, Hyperdrive는 오랫동안 에지(edge) AI 워크로드를 저해해 온 핸드셰이크(handshake) 오버헤드를 줄여줍니다.
Workers와 PostgreSQL이 충돌하는 이유
Cloudflare Workers는 수십 개의 에지 위치에서 수명이 짧은 JavaScript 함수로 실행됩니다. 각 인입 요청은 새로운 프로세스를 시작하며, 일반적인 패턴은 백엔드 데이터베이스에 새로운 TCP 연결을 여는 것입니다. 그러나 PostgreSQL은 클라이언트 프로세스당 안정적인 연결을 기대하며, 동시 연결 총 개수를 제한합니다. 그 결과 두 가지 문제가 발생합니다.
- 높은 연결 비용 – 연결을 설정하려면 인증 및 프로토콜 협상을 위해 여러 번의 왕복(round trip)이 필요합니다. 이러한 왕복 과정은 모든 요청에 지연 시간(latency)을 추가합니다.
- 연결 제한 – Workers는 수천 개의 동시 실행으로 확장될 수 있으며, 이로 인해 PostgreSQL의 커넥션 풀이 빠르게 고갈되어 데이터베이스가 충돌할 수 있습니다.
Hyperdrive가 간극을 메우는 방법
Hyperdrive는 Worker와 데이터베이스 사이에 위치하며, PostgreSQL 인스턴스와 네트워크상으로 가까운 서버에 지속적인 연결 풀을 유지합니다. Worker 관점에서는 새로운 연결 문자열(connection string)을 사용하는 것 외에는 변경 사항이 없습니다. 내부적으로 프록시는 각 인입 쿼리에 대해 기존 연결을 재사용하여 핸드셰이크 비용을 제거합니다.
설정은 의도적으로 가볍게 설계되었습니다:
- Wrangler CLI(Cloudflare의 명령줄 도구)를 실행하여 원래의 데이터베이스 URL을 제공하고 Hyperdrive 인스턴스를 생성합니다.
- 생성된 Hyperdrive 바인딩을
wrangler.toml설정 파일에 추가합니다. - Worker 코드에서
node-postgres와 같은 호환 가능한 드라이버를 사용합니다. 드라이버는 Hyperdrive 엔드포인트를 일반적인 PostgreSQL 서버로 인식합니다.
데이터베이스 비밀번호는 Hyperdrive 설정에만 저장되므로 Worker 소스 코드에 노출되지 않아 공격 표면(attack surface)을 줄일 수 있습니다.
벡터 검색을 위한 실무 팁
pgvector를 사용하는 벡터 검색 워크로드는 쿼리마다 변경되는 경향이 있는 대규모 부동 소수점 배열을 포함합니다. Hyperdrive의 기본 동작에는 읽기 캐시(read cache)가 포함되어 있는데, 이는 끊임없이 변화하는 데이터와 충돌할 수 있습니다. 결과를 최신 상태로 유지하려면 캐싱을 비활성화한 두 번째 Hyperdrive 설정을 생성하십시오.
장시간 실행되는 트랜잭션 또한 주의해야 할 점입니다. 외부 AI 모델의 응답을 기다리는 동안 데이터베이스 연결을 유지하면 풀의 슬롯을 점유하게 되어 풀링의 목적을 상실하게 됩니다. 권장되는 패턴은 다음과 같습니다:
- 트랜잭션을 엽니다.
- 쿼리를 실행합니다.
- 즉시 커밋합니다.
- 트랜잭션 외부에서 AI 모델을 호출합니다.
pgvector 파라미터(예: 검색 정확도를 제어하는 hnsw.ef_search 설정)를 미세 조정하려면 짧은 트랜잭션 내에서 SET LOCAL 문을 사용할 수 있습니다. 이를 통해 변경 사항이 현재 쿼리에만 적용되고 풀을 공유하는 다른 Workers에 영향을 미치지 않도록 보장할 수 있습니다.
여전히 남아 있는 한계
Hyperdrive는 데이터베이스 자체를 이동시키지 않습니다. PostgreSQL 서버가 멀리 떨어진 클라우드 리전에 있다면, 지연 시간은 여전히 해당 물리적 거리에 의해 제한됩니다. Cloudflare의 “Smart Placement” 기능은 Hyperdrive 인스턴스가 있는 가장 가까운 에지 노드로 Workers를 라우팅하여 도움을 줄 수 있지만, 근본적인 네트워크 왕복을 제거할 수는 없습니다.
캐싱 레이어는 정적 읽기에는 유용하지만, 요청마다 변경되는 벡터 데이터의 경우 캐시 미스(cache miss)가 빈번하게 발생할 것입니다. 개발자는 캐시 히트(cache hit)와 검색 결과의 최신성 사이의 트레이드오프를 고려해야 합니다.
대안을 선택해야 할 때
애플리케이션에 관계형 조인(relational join) 없이 순수 벡터 저장소만 필요한 경우, Cloudflare는 Vectorize라는 전용 서비스를 제공합니다. Vectorize는 에지에서 직접 벡터를 저장하며 PostgreSQL 백엔드의 필요성을 제거합니다. 반면, 벡터를 사용자 프로필이나 거래 내역과 같은 기존 관계형 테이블과 조인해야 하는 경우에는 Hyperdrive가 더 나은 선택입니다.
요약
Hyperdrive는 에지 개발자에게 PostgreSQL 연결 제한을 초과하지 않고도 AI 기반 벡터 검색을 실행할 수 있는 실용적인 도구를 제공합니다. 핸드셰이크 지연 시간을 줄이고, 자격 증명을 중앙 집중화하며, 캐싱 및 트랜잭션 길이에 대한 세밀한 제어를 제공합니다. 이 서비스가 에지와 데이터베이스 사이의 근본적인 거리를 없애거나 캐시 미스 문제를 완전히 해결하는 것은 아니지만, 관계형 조인과 벡터 유사성이 모두 필요한 워크로드의 경우 Hyperdrive는 확장 가능하고 저지연인 에지 스택으로 가는 가장 직접적인 경로입니다.
