엔드포인트
유휴 시 일시 중지되는 Postgres 프런트엔드 — 유형, 수명 주기, 그리고 깨우기 의미론.
엔드포인트는 클라이언트 연결을 받는 Postgres 프로세스입니다. 엔드포인트는 임시적입니다: 유휴 시 일시 중지되고, 첫 패킷에 깨어나며, 프로젝트의 분리된 스토리지 계층 위에서 실행됩니다. 컴퓨트가 실제로 실행되는 초에 대해서만 지불합니다.
유형
| 유형 | 쓰기? | 사용 시점 |
|---|---|---|
rw | 예 | 기본값. 앱 트래픽, 마이그레이션, 변경을 일으키는 모든 것. 일반적인 워크로드에는 브랜치당 하나의 rw 엔드포인트로 충분합니다. |
ro | 아니오 | 읽기 복제본. 여러 ro 엔드포인트가 같은 브랜치에 연결되어 스토리지를 공유할 수 있으며, 로컬 캐시는 독립적으로 유지됩니다. 분석 트래픽을 앱 트래픽에서 격리하는 데 사용하세요. |
두 유형 모두 정확히 하나의 브랜치에 연결됩니다. 엔드포인트는 다른 브랜치로 이동할 수 없습니다. 대신 대상 브랜치에 새 엔드포인트를 생성하세요.
유휴 시 일시 중지
엔드포인트는 클라이언트 활동이 없는 구성 가능한 창이 지나면 일시 중지됩니다.
기본값은 300초(5분)입니다. 이를 재정의하려면 생성 시
suspend_after_seconds를 설정하세요. 새 창은 엔드포인트의 다음 유휴
기간에 적용됩니다.
일시 중지된 동안:
- 컴퓨트 파드가 사라집니다. CPU나 메모리가 청구되지 않습니다.
- 스토리지는 영향을 받지 않습니다 — 데이터는 pageserver에 내구성 있게 남습니다.
- 엔드포인트 id와 연결 문자열은 유효하게 유지됩니다.
깨우기
일시 중지된 엔드포인트에 패킷을 보내면 깨어납니다. 콜드 스타트 지연은 클러스터에 따뜻한 pageserver 캐시가 있으면 일반적으로 300–500 ms입니다. 긴 유휴 후(또는 새 프로젝트 후)의 맨 첫 깨우기는 pageserver 페이지 캐시가 따뜻해지는 동안 10–30초가 걸릴 수 있습니다. 표준 Postgres 드라이버는 일반적인 구성에서 이를 타임아웃으로 보지 않습니다 — 만약 그렇다면 문제 해결을 참조하세요.
일상적인 깨우기는 플랫폼이 수요에 앞서 컴퓨트 풀을 미리 따뜻하게 유지하기 때문에 빠릅니다: 깨우기는 보통 컴퓨트를 처음부터 부팅하기보다 이미 실행 중인 컴퓨트에 연결됩니다. 풀을 관리하거나 풀에 대해 지불하지 않습니다 — 엔드포인트가 얼마나 빨리 돌아오는지에만 영향을 줍니다.
상태 머신
엔드포인트는 다음을 거쳐 전이합니다:
Pending → Starting → Running → Stopping → Stopped → (Failed)- Pending — 컨트롤 플레인이 생성 요청을 수락했으며 컴퓨트 파드를 스케줄링하는 중입니다. 엔드포인트가 여기서 몇 초 이상 멈춰 있는 것이 보이면 문제 해결을 참조하세요.
- Starting — 컴퓨트 파드가 떴습니다. Postgres가 초기화하고 브랜치의 HEAD까지 WAL을 재생하는 중입니다.
- Running — 클라이언트 연결을 받는 중입니다.
- Stopping — 유휴 창이 지났습니다. 연결을 비우고 로컬 상태를 플러시하는 중입니다.
- Stopped — 일시 중지됨. 깨우기 위한 다음 패킷을 기다리는 중입니다.
- Failed — 종료 오류. 엔드포인트 카드가 이유를 노출합니다. 드물지만, 스케줄링이 실패하거나 컴퓨트 이미지가 시작할 수 없을 때 발생합니다.
연결 URI
와이어 형식은 연결 문자열에 문서화되어 있습니다:
postgresql://<role>:<pwd>@<endpoint_id>.kisenon.com:5432/<database>?sslmode=require호스트명은 프로젝트 id가 아니라 엔드포인트 id에서 파생됩니다 — 각 엔드포인트는 TLS를 독립적으로 종료합니다. TLS는 필수입니다.
생성
keon endpoints create --branch <branch-id> --type rw선택적 플래그:
- 기본 일시 중지 창을 재정의하려면
--suspend-after-seconds <n>. - 읽기 전용 엔드포인트의 경우
--type ro.
CLI는 엔드포인트 id와 연결 문자열을 반환합니다. 엔드포인트는 호출이 반환된
후 몇 초 이내에 Running 상태가 되어 연결을 받을 준비가 됩니다.
삭제
keon endpoints delete <endpoint-id>열려 있는 클라이언트 연결은 끊깁니다. 엔드포인트 id는 폐기되고 그 DNS 호스트명은 해석을 멈춥니다. 브랜치와 그 데이터는 영향을 받지 않습니다.