[오늘가챠] 프론트-DB 직결 시대의 필수 보안: Supabase RLS 적용기
·
◈ Yermi Project/오늘가챠🃏
BaaS(Backend as a Service)의 등장으로 프론트엔드에서 API를 거치지 않고 DB를 직접 쿼리하는 일이 잦아졌습니다. 이는 개발 속도를 비약적으로 높여주지만, 자칫하면 대형 보안 사고로 이어질 수 있습니다. 이를 방어하기 위해 Supabase의 핵심 기능인 RLS(Row Level Security)를 적극 활용한 경험을 공유합니다.1. BaaS의 편리함 이면에 숨겨진 보안 취약점'오늘가챠' 앱에서는 유저가 카드를 뽑으면 cards 테이블에 데이터가 저장됩니다.만약 프론트엔드 클라이언트가 Supabase anon 키(익명 접속용 퍼블릭 키)를 이용해 직접 DB 쿼리를 날린다면 어떨까요?// 프론트엔드에서 직접 DB를 찌르는 코드 (위험함)const { data } = await supab..
[오늘가챠] 서버리스 DB의 한계 극복: Supabase 커넥션 풀 고갈 해결
·
◈ Yermi Project/오늘가챠🃏
백엔드 배포 직후, 앱에 트래픽이 몰리자 에러가 쏟아졌습니다. 서버리스 환경에서 맞닥뜨린 DB 커넥션 풀(Connection Pool) 고갈 에러의 원인과, HikariCP를 튜닝하여 이를 극복한 과정입니다.1. 런타임 에러 발생: Connection is not available기능 구현을 마치고 테스트를 진행하자 백엔드에서 예외가 발생하며 서버가 뻗어버렸습니다.java.sql.SQLTransientConnectionException: HikariPool-1 - Connection is not available, request timed out after 30000ms.이 에러는 Spring Boot 서버가 DB와 통신하기 위해 커넥션 풀(Connection Pool)에서 커넥션을 빌리려 했으나 남..