Quack 배포하기
Quack 배포하기 (Deploying Quack)
공개용 Quack 서버를 운영하기 위한 배포 방법을 모아 둔 페이지예요. 지금은 AWS EC2 레시피 하나가 준비되어 있고, 앞으로 더 추가될 예정이에요. 하나로 충분하다고요? 시작해 볼까요.
출처: 문서
본문
AWS EC2에서
공개용 Quack 서버를 띄우는 가장 빠른 방법은 익스텐션과 함께 관리되는 원클릭 AWS CloudFormation 템플릿을 쓰는 거예요. 이 템플릿은 DuckDB와 quack 익스텐션을 nginx와 Let's Encrypt TLS 뒤에서 실행하는 작은 EC2 인스턴스를 만들어 줘요. 그리고 출력으로 인스턴스별 토큰과 연결 URI(connection URI)를 보여줘요.
원클릭 실행 (One-Click Launch)
- Launch Stack URL을 엽니다.
- 오른쪽 아래의 Create stack을 클릭합니다.
CREATE_COMPLETE가 뜰 때까지 약 2분 정도 기다립니다.- 스택의 Outputs 탭을 엽니다.
ConnectURL값을 클릭하면 새 인스턴스에 미리 연결된 shell.duckdb.org 세션이 열리고,QuackURI와Token을 복사해서 로컬 DuckDB 세션에서 연결할 수도 있어요(아래 참고).
스택은 기본으로 t3.micro 인스턴스를 사용하며, 실행 시 Parameters 페이지에서 다른 크기를 선택할 수 있어요. 지원 리전: us-east-1, us-east-2, us-west-1, us-west-2, eu-west-1, eu-central-1, ap-northeast-1, ap-southeast-1.
로컬 DuckDB에서 연결하기
스택의 Outputs 탭에서 QuackURI와 Token을 복사해서 아래처럼 넣어 보세요:
-- 세션당 한 번 자격 증명을 등록합니다.
CREATE SECRET quack_credentials (
TYPE quack,
SCOPE '⟨uri⟩', -- 예: 'quack:54.1.2.3.nip.io:443'
TOKEN '⟨token⟩'
);
-- 방금 뭘 실행했는지 확인해 볼까요?
FROM quack_query('⟨uri⟩', 'FROM whoami()');
-- 평소 실행하던 다른 어떤 것이든 원격으로 그대로 전달돼요.
FROM quack_query('⟨uri⟩', 'SELECT 1 + 1');
ATTACH로 sticky session 만들기
ATTACH는 호출 사이에 서버 쪽 상태(임시 테이블, SET 변수)를 유지해 줘요. quack_query 단독으로는 이게 안 돼요.
ATTACH '⟨uri⟩' AS remote (TYPE quack);
-- 임시 테이블은 원격에 존재해요.
FROM quack_query_by_name('remote', 'CREATE TEMP TABLE t AS SELECT range AS x FROM range(10)');
FROM quack_query_by_name('remote', 'SELECT sum(x) FROM t');
-- 세션 설정도 유지돼요.
FROM quack_query_by_name('remote', 'SET threads = 8');
FROM quack_query_by_name('remote', 'SELECT current_setting(''threads'')');
해체하기 (Tearing Down)
인스턴스 사용이 끝나면 스택을 삭제하면 돼요:
aws cloudformation delete-stack --stack-name quack-demo --region us-east-1
아니면 CloudFormation 콘솔의 Delete 버튼을 눌러도 돼요.
스택이 만드는 것들
- DuckDB와 quack 익스텐션을 nginx와 Let's Encrypt TLS 뒤에서 실행하는 공개 AMI(템플릿에 리전별 매핑이 내장됨) 기반의
AWS::EC2::Instance. - 포트
80(ACME challenge)과443(HTTPS)을 여는AWS::EC2::SecurityGroup. - RPC 서버가 준비되면 시그널을 보내는
AWS::CloudFormation::WaitCondition. - 준비된 URI, 인스턴스별 토큰, 그리고 공유 가능한 두 개의 shell.duckdb.org URL(
QueryURL,ConnectURL)을 담은 CFNOutputs.
관리자를 위한 참고 (For Maintainers)
CloudFormation 템플릿, AMI 빌드 과정, 리전별 AMI 배포는 duckdblabs/duckdb-quack-infra에 있어요. AMI를 업데이트하거나 지원 리전 목록을 늘리는 작업은 거기서 이루어져요.
더 알아보기 (Learn more)
- Quack 관련 문서에서 서버 구축과 연결 전반을 더 살펴볼 수 있어요.