비스캣의 개발자가 빠르게 프로덕트를 구현하는 방법
안녕하세요, 저희는 반려동물 돌봄 일지 서비스 '비스캣'을 만들고 있어요.
3주 안에 프로덕트를 런칭하여 아이디어를 빠르게 검증해보는 것을 목표로 시작하였는데 벌써 2주차가 되었네요.
‘비스캣’ 팀은 PM 1명과 개발자 1명으로 구성되어 있고, 기간과 구성원 모두 여유롭지는 않아서 빠른 속도가 중요한 상황이에요.
따라서 Supabase와 같은 BaaS (Backend as a Service)를 사용하여 빠르게 개발하는 방법을 선택했어요. (Supabase의 장점에 대해서는 저희 팀의 또 다른 프로덕트인 ‘드리핀’의 1주차 메이커로그에서 확인해보실 수 있어요.)
오늘은 Supabase를 사용함으로써 어떻게 프로덕트를 빠르게 구현할 수 있었는지 말씀드리려고 해요.
1. 인증 관리 (Policy)
Supabase를 통해 써드파티 로그인뿐만 아니라 인증 관리까지 간단하게 할 수 있어요.
서비스를 구현함에 있어서 인증과 만료 처리는 중요한 만큼 많은 리소스를 투입하게 되는데요.
저희는 Supabase의 도움을 받아 이 과정을 단축할 수 있었어요.
일단 Supabase는 테이블을 생성하면 기본적인 CRUD를 간단하게 진행할 수 있어요.
또한 테이블에 대한 정책을 관리할 수 있어서, 모든 데이터가 아닌 ‘나’의 데이터만 조회할 수 있게 설정할 수 있어요.

위의 예시는 사용자가 본인의 데이터만 조회할 수 있도록 제한하는 정책을 지정한 거예요.
해당 정책이 선언된 테이블은 read 작업 시 클라이언트에서 “내 데이터만 보여줘”라는 코드를 따로 작성하지 않아도 예외 없이 ‘나’의 데이터만 조회하게 되어요.
일반 사용자가 컨트롤할 수 없는 영역에서 정책이 설정되니, 클라이언트 코드 일부가 탈취되더라도 다른 사용자의 데이터를 볼 수는 없어요.
2. 복잡한 데이터를 다룰 때 (Database Function)
‘비스캣’은 MVP 런칭 후 점차 확장될 계획을 가지고 있어요.
따라서 데이터 유형이 유연할 필요가 있는데요.
이 과정에서 저희는 다음과 같은 고민을 하게 되었어요.
UI에 친화적인 데이터로 저장하기 vs 관리되기 좋은 형태의 데이터로 저장하기
UI에 친화적인 데이터로 저장하면 사용자가 저장한 값을 불러오고 화면에 보여주기는 편리하지만, 엑셀로 데이터를 뽑거나 다양하게 분류해서 보기는 어려울 것 같았어요.
반대로 관리되기 좋은 형태로 데이터를 저장하자니, 값을 저장하고 표출하는 데 많은 코드를 작성하고 테스트해봐야 할 것 같았어요.
두 가지 모두를 적절하게 충족시키는 선택지는 같은 기능을 두고 로직도 분리해야 하고 테스트도 여러 번 해야겠다는 판단이 들어서 보류했고요.
우선 저희에게 중요한 건 빠른 속도이기 때문에 UI에 친화적인 데이터로 저장하는 방법을 선택했어요.
사용자가 입력한 값 전체를 그대로 저장하고 그대로 표출해서 사용하는 방식이에요.
그 대신 우려되었던 점은 Supabase를 활용하여 보완할 수 있었어요.
첫 번째로 Supabase는 PostgreSQL을 기반으로 작동하고 있고, PostgreSQL은 Json 데이터를 잘 다룰 수 있는 명령어를 지원해요.
DB에 저장된 데이터를 분해할 수 있는 PostgreSQL 함수를 작성하고, 그 결괏값을 화면에 전달할 수만 있다면 데이터 관리가 수월해지는 거예요.
두 번째로 Supabase는 Database Function의 결괏값을 클라이언트에서 쉽게 사용할 수 있어요.
데이터베이스 상에서 함수를 만들면 클라이언트에서 해당 함수를 호출할 수 있거든요.

위 이미지는 Supabase에서 제공하는 예시인데요.
Remote Procedure Calls(원격 프로시저 호출)을 활용하여 웹에서 즉시 호출해서 사용할 수 있다보니 마치 DB에서 만든 API 같기도 해요.
구현이 빠른 형태로 클라이언트에 저장 로직을 두고, 가공된 데이터가 필요할 경우에는 Database Function을 사용하는 것. 여러분은 어떤가요?
이 외에도 ‘비스캣’은 Supabase의 많은 도움을 받아서 빠르게 구현하고 있는 중이에요.
짧은 시간 내에 프로덕트의 가치를 보여줄 수 있는 기능을 만들어야 하기 때문에 최대한 가볍고 단순하고 효율적인 것들을 찾아가고 있어요.
덕분에 Supabase라는 좋은 BaaS를 알게 되고 이렇게 소개할 수 있게 되어 기뻐요.
그럼 다음 주에는 ‘비스캣’의 MVP 런칭 소식으로 찾아뵐게요.
감사합니다. :)