[오늘가챠] 프론트-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)에서 커넥션을 빌리려 했으나 남..
[오늘가챠] 프로젝트 오버뷰: 왜 이 스택을 선택했는가?
·
◈ Yermi Project/오늘가챠🃏
'오늘가챠'는 유저가 찍은 평범한 일상 사진을 화려한 TCG(Trading Card Game) 카드로 만들어주는 서비스입니다.단순한 이미지 업로드 게시판을 넘어서, 유저 간의 수집욕을 자극하고 실시간으로 카드를 뽑는 경험을 제공하는 것이 핵심 기획이었습니다. 이를 구현하기 위해 비용을 0원에 가깝게 유지하면서도 안정적이고 빠른 서비스를 제공할 수 있는 아키텍처 설계가 필요했습니다. 1. 기획의 제약 사항과 인프라의 조건1인 개발로 진행되는 사이드 프로젝트 특성상 다음과 같은 뚜렷한 제약 사항이 있었습니다.무자본 (비용 최적화): AWS EC2, RDS, S3를 깡통으로 세팅하면 월 최소 수만 원의 고정 비용이 발생합니다. 트래픽이 보장되지 않은 상태에서 이는 큰 부담입니다.개발 속도: 인프라 설정(Ngi..