Sia Manager for Supabase 출시 공지

Sia Manager for Supabase 출시를 표현한 모바일 Supabase 관리 콘솔 생성형 이미지

Sia Manager for Supabase를 출시했습니다. 새로운 앱을 프로덕션에 올릴 때마다 후련함과 두려움이 동시에 찾아옵니다. 이 앱이 프로덕션에 충분한가, 내가 아직 발견하지 못한 오류는 없을까, 사람들에게 알려질 수 있을까, 그리고 앱에 녹여낸 토큰과 시간만큼 실제 수익으로 이어질 수 있을까. 이번에도 같은 질문을 오래 붙잡고 있었습니다.

Sia Manager for Supabase 출시를 표현한 모바일 Supabase 관리 콘솔 생성형 이미지
Sia Manager for Supabase 출시를 모바일 백엔드 운영 콘솔로 표현한 생성형 이미지

Sia Manager for Supabase를 출시하기까지

매번 새로운 앱을 출시할 때가 되면 마음이 가벼워지는 순간과 동시에, 아직 준비가 덜 된 것은 아닌지 의심하는 시간이 함께 옵니다. 이번 앱은 특히 더 심했습니다. Supabase의 다양한 기능을 하나의 앱 안에 구현하는 일은 생각보다 훨씬 복잡했고, 개발 중에는 수십 가지의 에러와 버그를 계속 마주쳐야 했습니다.

사용자가 원하는 기능, UI, UX를 어떤 흐름으로 묶어야 하는지도 계속 고민해야 했습니다. 단순히 데이터베이스 테이블을 보여주는 앱이라면 범위가 훨씬 작았겠지만, Sia Manager for Supabase는 Supabase 프로젝트 운영에 필요한 여러 영역을 한 앱에서 다루는 것을 목표로 했습니다. 그만큼 화면 구조, 권한, 키 관리, 상태 표시, 실패 처리까지 모두 신중하게 다시 봐야 했습니다.

가장 어려웠던 지점은 Supabase Cloud와 Supabase Self-hosted 서버의 기능 분화였습니다. 그 안에서도 HTTP와 HTTPS 환경에 따라 접근 가능한 기능과 동작 방식이 달라지는 부분이 있었고, 구조적인 결함으로 이어질 수 있는 지점을 찾기 위해 한 달 내내 전체 코드 리뷰를 반복했습니다. 아직 발견되지 못한 버그가 있을 수 있습니다. 분명 있을 것입니다. 그래도 어느 정도 준비가 되었다고 판단했고, 이번에는 더 미루지 않고 프로덕션 출시를 결정했습니다.

Android에서 Supabase 프로젝트를 관리하는 앱

Sia Manager for Supabase는 Android에서 Supabase 프로젝트, 데이터베이스, 백엔드 리소스를 관리하기 위한 모바일 운영 콘솔입니다. 단순한 데이터베이스 클라이언트가 아니라 Postgres, Auth, Storage, Realtime, Edge Functions, Reports 같은 Supabase의 주요 영역을 한 앱 안에서 확인하고 조작할 수 있도록 설계했습니다.

Sia Manager for Supabase가 데이터베이스 Auth Storage Realtime Edge Functions Reports 기능을 연결해 관리하는 구조를 표현한 생성형 이미지
데이터베이스, Auth, Storage, Realtime, Edge Functions, Reports를 한 앱에서 다루는 구조를 표현한 생성형 이미지

앱은 Kotlin, Jetpack Compose, Material 3 기반으로 제작했고, MVVM과 Repository 구조를 사용했습니다. 프로젝트 URL과 API 키만으로 접근하는 데이터 플레인 기능과, Supabase Cloud의 더 깊은 관리를 위해 Personal Access Token을 사용하는 Management API 플레인을 나누어 구성했습니다.

데이터 플레인에서 제공하는 기능

Cloud와 Self-hosted 환경 모두에서 프로젝트 URL과 API 키를 기반으로 기본 관리 기능을 사용할 수 있습니다. 대시보드에서는 사용자, 테이블, 버킷 현황을 확인하고 신규 가입 추이와 로그인 제공자 분포를 볼 수 있습니다.

  • 노출된 테이블 조회, 테이블 검색, 컬럼 수와 기본 키 확인
  • 행 데이터 조회, JSON 편집기를 통한 행 추가·수정·삭제
  • CSV 내보내기
  • Auth 사용자 목록, 확인/미확인 상태, 로그인 제공자 확인
  • 사용자 생성과 이메일 초대 전송
  • 공개·비공개 Storage 버킷과 객체 목록 확인
  • 비공개 객체의 signed URL 생성, 객체 미리보기, 시스템 파일 선택기를 통한 업로드

Management API에서 제공하는 기능

Supabase Cloud 프로젝트에 Personal Access Token을 연결하면 더 깊은 관리 기능을 사용할 수 있습니다. SQL Editor, RLS 정책, 보안·성능 Advisors, Reports, Log Explorer, 이메일 템플릿, Realtime 점검, 프로젝트 pause/restart, 데이터베이스 구조, Edge Functions 같은 관리 영역을 앱 안에서 확인하도록 구성했습니다.

Management 토큰이 없는 경우에는 해당 화면이 무리하게 동작하다가 실패하지 않도록, 토큰이 필요하다는 안내 상태를 보여주도록 만들었습니다. Self-hosted 프로젝트는 설계상 데이터 플레인 중심으로 지원합니다. 이 구분을 명확히 하지 않으면 사용자는 어떤 기능이 왜 보이지 않는지 알기 어렵고, 앱은 예외 상황을 계속 만들어내기 때문입니다.

Sia Manager for Supabase가 Supabase Cloud와 Self-hosted 환경을 서로 다른 기능 범위로 관리하는 모습을 표현한 생성형 이미지
Supabase Cloud와 Self-hosted 환경의 기능 범위를 분리해 관리하는 모습을 표현한 생성형 이미지

보안과 운영 경험에서 신경 쓴 부분

Supabase 프로젝트를 관리하는 앱은 민감한 키와 운영 정보를 다룰 수밖에 없습니다. 그래서 키는 불필요하게 해석하지 않고 opaque string으로 취급하도록 했고, sb_publishable_..., sb_secret_... 형태의 새 키도 고려했습니다. 프로젝트 ref는 URL에서 추출하고, secret key와 Management token은 Android Keystore 기반 AES-256-GCM으로 암호화해 기기의 앱 전용 DataStore에 저장합니다.

민감한 정보가 스크린샷이나 최근 앱 화면에 노출되는 상황을 줄이기 위해 Android의 FLAG_SECURE를 사용하는 화면 캡처 차단 기능도 준비했습니다. 다만 기본으로 켜지는 기능은 아니고, 사용자가 기기에 PIN이나 생체 인증을 등록한 뒤 앱 잠금을 켜면 설정에서 추가로 활성화할 수 있습니다. 그 외에도 시스템·다크·라이트 테마, 읽기 전용 모드, 클립보드 자동 삭제 기능을 넣었습니다.

프로젝트 상태 알림은 외부 푸시 서버 없이 기기 안에서 처리합니다. 30분 주기 WorkManager가 연결된 프로젝트의 paused 또는 failed 상태를 확인해 로컬 알림으로 알려주는 방식입니다. FCM이나 별도 백엔드를 거치지 않고, 사용자의 프로젝트 정보가 불필요하게 밖으로 나가지 않도록 설계했습니다.

아직 완성이라기보다 시작입니다

이번 출시는 완벽한 마침표라기보다, 실제 사용자 환경에서 검증을 시작하는 지점에 가깝습니다. Supabase는 기능 범위가 넓고, 프로젝트 설정과 배포 방식도 다양합니다. Cloud와 Self-hosted, HTTP와 HTTPS, 권한 설정, 키 종류, RLS 정책, Storage 공개 범위에 따라 앱이 마주치는 상황은 계속 달라질 수 있습니다.

Sia Manager for Supabase의 프로덕션 출시 전 코드 리뷰와 버그 수정 그리고 사용자 피드백 반영 과정을 표현한 생성형 이미지
프로덕션 출시 전 코드 리뷰, 버그 수정, 사용자 피드백 반영 과정을 표현한 생성형 이미지

발견하지 못한 버그가 있다면 알려주시면 신속히 확인하고 수정하겠습니다. 특히 이번 앱은 오랜 시간 공들여 제작한 앱인 만큼 많은 유저들이 애용했으면 하는 바람입니다. 부족한 부분은 숨기지 않고 고쳐 나가겠습니다. Sia Manager for Supabase가 Android에서 Supabase 프로젝트를 확인하고 관리해야 하는 분들에게 실질적으로 도움이 되는 도구가 되기를 바랍니다.

앱 소개 페이지: Sia Manager for Supabase
관련 글: Supabase 앱 백엔드: 초보자를 위한 활용법 9가지
앱 정책 페이지 만들기: GitHub Pages로 앱 개인정보처리방침과 이용약관 만들기
Supabase 참고 문서: Supabase 공식 문서

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다