Skip to content

docs: Oracle 전환 설계안 + SSE Realtime 스켈레톤 (검토용 DRAFT) - #26

Open
coseung2 wants to merge 1 commit into
mainfrom
feat/oracle-sse-migration
Open

docs: Oracle 전환 설계안 + SSE Realtime 스켈레톤 (검토용 DRAFT)#26
coseung2 wants to merge 1 commit into
mainfrom
feat/oracle-sse-migration

Conversation

@coseung2

Copy link
Copy Markdown
Owner

개요

Supabase(Postgres/Storage/Realtime)에서 오라클 A1로 이전하는 검토용 설계안 + 시작 스켈레톤. 확정 전에 피드백 받으려는 초안입니다.

포함 내용

파일 설명
docs/migration-to-oracle.md DB / Storage / SSE 전환 범위, 가격·운영 트레이드오프, 마이그레이션 단계, 남은 결정 질문(Q1~Q3)
src/lib/realtime/sse-client.ts EventSource 구독 헬퍼 (Skeleton, 기존 useRealtimeInvalidation와 호환 시그니처)
src/lib/realtime/sse-publish.ts pg_notify 발행 헬퍼 (Skeleton, server-only)

설계 방향

  • DB: Prisma로 추상화됨 → DATABASE_URL만 자체 Postgres(오라클 A1)로 전환. Postgres 17 + 기존 pg_dump/pg_restore 백업 재사용.
  • Realtime: Supabase Broadcast → PostgreSQL pg_notify + SSE 푸시 메인. 폴링은 useRealtimeInvalidation의 기존 fallbackPollMs로 fallback만 유지.
  • 핵심 장점: useRealtimeInvalidation(단일 훅) + lib/realtime.ts(*ChannelKey/RealtimeEvent) + realtime-broadcast.ts(sendRealtimeBroadcast)로 transport가 분리돼 있어, 발행·구독 내부만 교체하면 92개 훅/발행 코드는 그대로.
  • Storage: OCI Object Storage로 교체 (upload/delete 계층만, URL 생성 로직 유지).

검증

  • npx tsc --noEmit 통과
  • 단, 스켈레톤 상태useRealtimeInvalidation 실제 연결, SSE Route Handler, DB 트리거 마이그레이션은 후속 PR 대상입니다.

남은 결정 (확정 전 필요)

  • Q1. Realtime 발행 주체: pg 트리거 vs play-server 명시 호출 (컨텐츠 보드=트리거 / 게임=명시 호출 하이브리드 권장)
  • Q2. Storage URL: OCI 공개 버킷 vs presigned
  • Q3. 게임(Kordle/Omok/Speed) SSE 단방향 지연 허용치

참고

  • 기존 오라클 운영 계약: infra/oracle/README.md
  • 이 PR은 코드 동작 변경 없음 (순수 설계 + 스켈레톤 추가).

검토용 초안(미확정). Supabase(Postgres/Storage/Realtime)에서
오라클 A1로 이전하는 범위와 방법 정리.

포함:
- docs/migration-to-oracle.md: DB/Storage/SSE 전환 설계, 가격·운영 트레이드오프, 마이그레이션 단계, 남은 결정 질문
- src/lib/realtime/sse-client.ts: EventSource 구독 스켈레톤 (useRealtimeInvalidation와 호환 시그니처)
- src/lib/realtime/sse-publish.ts: pg_notify 발행 스켈레톤 (server-only)

기존 Supabase 경로는 보존. useRealtimeInvalidation 실연결은 후속 PR.
- 타입체크: tsc --noEmit 통과
@supabase

supabase Bot commented Aug 19, 2026

Copy link
Copy Markdown

This pull request has been ignored for the connected project tiamqkwyldxdlwjvowxq because there are no changes detected in supabase directory. You can change this behaviour in Project Integrations Settings ↗︎.


Preview Branches by Supabase.
Learn more about Supabase Branching ↗︎.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant