Skip to content

[DB-1009] feat: Supabase 운영 상태 감사 자동화 - #542

Open
guesung wants to merge 7 commits into
masterfrom
guesung/supabase에서-db-상태-사용-중인-edge-runtime-등을-관리하자

Hidden character warning

The head ref may contain hidden characters: "guesung/supabase\uc5d0\uc11c-db-\uc0c1\ud0dc-\uc0ac\uc6a9-\uc911\uc778-edge-runtime-\ub4f1\uc744-\uad00\ub9ac\ud558\uc790"
Open

guesung wants to merge 7 commits into
masterfrom
guesung/supabase에서-db-상태-사용-중인-edge-runtime-등을-관리하자

Conversation

@guesung

@guesung guesung commented Sep 20, 2026

Copy link
Copy Markdown
Owner

설명

저장소에 선언한 기대 상태와 운영 Supabase 프로젝트를 매일 및 PR마다 읽기 전용으로 대조합니다.
이상 유무만 검사하지 않고, 현재 DB 상태와 배포된 Edge Functions를 포함한 운영 인벤토리를 GitHub Actions Summary와 JSON 결과에 항상 표시합니다.
정기·수동 실행은 경고를 포함한 이상을 Slack으로 알리고, PR 실행은 필수 리소스 누락·서비스 비정상·함수 오류·관측 실패가 있으면 체크를 실패시킵니다.

관련 이슈

변경 유형

  • 기능 추가
  • CI/CD
  • 문서

감사 대상과 현재 상태 관리

영역 기록하는 현재 상태 오류 판정 경고 판정
프로젝트·DB 프로젝트 상태, PostgreSQL 버전 프로젝트 비정상, 버전 조회 실패 PostgreSQL major 차이
Supabase 서비스 DB·Auth·REST·Realtime·Storage의 이름과 건강 상태 필수 서비스 누락, 관측된 서비스 비정상 미선언 서비스 존재
migration history 운영에 기록된 전체 migration version 없음 선언한 기준선과 차이
앱 스키마 필수 테이블·컬럼·DB 함수 시그니처 20개 필수 객체 누락, 조회·권한 실패 없음
DB 자동화 Cron·앱 trigger·Database Webhook의 이름과 활성 상태 필수 항목 누락, 관측된 항목 비활성 미선언 항목 존재
Vault Vault key 이름 선언한 key 누락 미선언 key 존재
Edge Functions 배포된 전체 함수의 이름·배포 버전·상태 필수 함수 누락, 관측된 함수 비활성, 버전 확인 실패 미선언 함수, 고정한 기대 버전과 차이
Edge Function 오류 최근 24시간 HTTP 400 이상 건수와 error·UncaughtException 건수 한 건 이상 발생 없음
Edge Function secrets Supabase 기본 항목을 제외한 secret 이름 선언한 이름 누락 미선언 이름 존재
Edge Runtime 함수 배포 버전과 플랫폼 건강 상태를 대체 지표로 사용 없음 정확한 Edge Runtime·Deno 버전 관측 불가

migration 오탐 방지

  • 이 프로젝트는 Management API로 SQL을 직접 적용하므로 실제 스키마가 반영돼도 migration history에 기록되지 않을 수 있습니다.
  • migration history 차이는 경고로 표시하고, 실제 테이블·컬럼·DB 함수 시그니처 누락을 오류로 처리합니다.
  • 함수 본문, RLS 정책 정의, 인덱스 조건과 컬럼 기본값은 수집하지 않으므로 같은 시그니처의 내부 동작 변경까지 증명하지는 않습니다.

운영 기준선과 배포

  • 운영 함수 6개, Cron 5개, 앱 trigger 15개, Database Webhook 1개를 기준선으로 고정했습니다.
  • 함수 배포 버전을 고정하여 예상하지 않은 재배포를 경고로 감지합니다.
  • 누락됐던 send-signup-slack-notification을 운영에 배포했습니다: version 1, ACTIVE, verify_jwt=false.
  • Supabase 플랫폼 내부 trigger는 제외하되 auth·public의 앱 trigger는 계속 관측합니다.
  • secret·Vault 값, Webhook URL·header, Cron command, trigger 인자, 함수 본문, 로그 원문과 요청·응답 본문은 조회하거나 출력하지 않습니다.

실행 결과

  • PR 운영 감사: 오류 0개, 경고 1개로 통과했습니다.
  • 남은 경고는 공식 API에서 정확한 Edge Runtime·Deno 버전을 관측할 수 없다는 한계입니다.
  • 수동 운영 감사 실행 35492996633이 성공했고 Slack 알림 단계도 통과했습니다.
  • 상세 범위와 운영 절차는 docs/supabase-operations-audit.md에 기록했습니다.

체크리스트

  • pnpm type-check
  • pnpm type-check:scripts
  • pnpm check
  • Supabase 감사 관련 테스트 41개 통과
  • 변경된 JavaScript 문법 검사와 git diff --check
  • 독립 코드 리뷰 승인
  • 운영 Management API 재감사 통과
  • send-signup-slack-notification 운영 배포 확인
  • 수동 실행과 Slack 알림 단계 확인

이번 PR과 무관하게 발견한 것

  • 기존 코드에 Biome 경고 11건이 있으며 이번 변경 범위에는 포함하지 않았습니다.
  • get-categories-with-count, daily-article-reminder, Auth·Billing Cron 일부는 운영 기준선에 포함되어 있지만 현재 브랜치에는 생성 소스가 없습니다. 감사는 삭제·비활성·버전 변화를 감지하지만 소스 재현성은 보장하지 않습니다.

@notion-workspace

Copy link
Copy Markdown

This branch was successfully deployed

1 active deployment
Preview d8578f94 Deployed Sep 20, 2026 by vercel[bot]
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