문제
AIM은 Todo, Workout, Mandalart, Nutrition이 동시에 동작하는 구조라서 기능마다 상태와 저장 규칙이 쉽게 분산됩니다.
초기에는 화면 단위 개발 속도는 빨랐지만, 계산 로직이 클라이언트에 퍼지면 데이터 일관성이 깨질 위험이 컸습니다.
해결 방향
단순 CRUD는 Supabase client에서 처리하고, 트랜잭션이나 계산은 Edge Function으로 강제하는 정책을 기준으로 삼았습니다.
- 클라이언트: 화면 상태, 입력 검증, 낙관적 업데이트
- Edge Function: 다중 테이블 트랜잭션, 진행도 계산, AI 호출
- PostgreSQL: 무결성 제약과 RLS로 최종 안전망 구성
핵심 규칙
아래 규칙을 문서화해 신규 기능 추가 시에도 같은 기준을 유지했습니다.
결과
복잡한 연산 경로가 서버로 고정되면서 클라이언트의 회귀 범위가 줄었고, 기능 확장 시 영향도 분석이 쉬워졌습니다.
특히 Todo 완료와 Mandalart 진행도 연동 같은 시나리오에서 데이터 일관성이 크게 개선됐습니다.