내가 계속 만들고 있는 완벽주의 동행 앱 OneSmallThing (OST) 의 클로즈 베타 를 준비한다.
2주 동안 혼자 dogfooding 해봤고 이 정도면 쓸만하다 판단. 다만 다른 사용자 케이스 를 봐야 하는 시점이 됐다 — 나 혼자 쓸 때 안 보이는 문제가 반드시 있을 것.
오늘 한 것은 세 가지 — 에러 견고성 점검 · 개인정보 고지 초안 · 동의 게이트 구현.
Table of contents
Open Table of contents
1. 에러 견고성 — optimistic mutation 에 catch 가 하나도 없었다
먼저 mutation 흐름을 두 종류로 나눠서 훑었다:
- Pessimistic:
await → setState— 서버 응답을 받고 UI 반영 - Optimistic:
setState → await— UI 를 먼저 바꾸고 서버는 뒤에서 확인
Pessimistic 쪽은 에러 처리가 자연스럽게 들어가 있었다 (try / catch). 문제는 Optimistic. 코드를 훑어보니 catch 가 단 한 곳도 없었다.
즉 서버에서 실패해도 UI 는 “성공한 것처럼” 남아있다. rollback 로직 자체가 부재. 사용자가 “저장됐다” 고 착각하는 최악의 UX.
전부 순회하며 catch 추가 + 실패 시 이전 상태로 되돌리는 로직 심음. 낙관 갱신 = 실패 롤백이 필수 — 낙관을 쓴다는 건 실패 케이스를 명시적으로 처리하겠다는 계약인데, 그게 통째로 빠져 있었다.
2. 개인정보 고지 초안 — 클로즈베타 요건은 어디까지?
법률 쪽 지식이 부족해서 여기가 제일 걱정이었다. 확인해본 결과:
- 클로즈 베타 단계: 완전한 개인정보처리방침 까지는 불필요. 필수 항목에 대한 고지 + 동의 만 있으면 진행 가능
- 정식 출시: 개인정보처리방침 미작성 시 5천만원 이하 과태료 가능
OST 서비스 특성상 필요한 동의 항목 세 가지:
(1) 일반 개인정보 수집·이용 동의
이메일, 기록 내용, 사진 첨부, 작성 시각 등. AI 분석 목적 포함 명시.
(2) 민감정보 처리 동의
OST 는 “그때 마음” 이라는 형태로 감정·정서를 함께 기록한다. 감정 기록은 민감정보에 해당 할 수 있어 일반 동의와 별도로 받아야 한다.
(3) 개인정보 국외이전 동의
주간 AI 분석에 Anthropic API 를 쓴다 → 데이터가 미국으로 이전된다. 한국 리전이 있으면 국외이전 없이 처리 가능한데 아직 없다 (확인해봄).
→ 국외이전 고지 + 별도 동의 필수. 이건 선택 동의로 두고, 거부 시 주간 AI 분석 기능만 제한되도록 설계.
3. 개인정보위 · KISA 무료 컨설팅
법률 자문 비용이 얼마쯤 들지 검색하다가 알게 된 것 — 개인정보보호위원회 + KISA 가 중소기업·소상공인 대상 무료 컨설팅 을 제공한다.
- 개인정보처리방침 검토
- 수집·이용 동의문 검토
- 위·수탁 계약서 검토
1인 개발자도 대상. 변호사비 없이 정식 출시 전 검토 경로가 확보됐다. 클로즈 베타 동안은 자체 초안으로 진행하고, 정식 출시 전에는 이 채널을 태울 예정.
4. 동의 게이트 구현
개인정보 고지 초안을 만들고 나서 동의 게이트 를 붙였다. 기존 유저도 미동의 상태면 진입 직후 동의 화면이 뜨게. 나도 dogfooding 중이었지만 이 화면을 새로 만나서 클릭해야 했다.

- (필수) 일반 수집·이용 — 거부 시 서비스 이용 제한
- (필수) 민감정보 처리 — 거부 시 기록·분석 기능 제한
- (선택) 국외 이전 — 거부해도 저장·표시 기능은 그대로, 주간 AI 분석만 비활성
회고
오늘 얻은 것 세 가지:
- 낙관 갱신은 반드시 실패 롤백과 짝 — “낙관을 쓰겠다” 라고 결정한 순간 “실패 케이스를 명시적으로 처리하겠다” 는 계약이 함께 들어와야 한다. 오늘 발견처럼 catch 가 통째로 없는 상태는 낙관 갱신의 자격이 없다.
- 법률은 “몰라서 못 하는” 게 아니라 “몰라서 걱정만 하고 미루는” 문제 — 무료로 검토받을 수 있는 공적 경로 (KISA · 개인정보위) 가 명확히 존재한다. 클로즈 베타 요건도 검색해보면 명료하게 나뉜다.
- AI 서비스는 기본적으로 국외이전 이슈가 붙는다 — 한국 리전이 열리기 전까진 필수 항목. 처음부터 동의 흐름을 설계에 포함해야 한다.
남은 숙제
- 동의 철회 UX — 동의한 항목을 언제든 철회할 수 있어야 하는데 설정 화면이 아직 구현 안 됨. 다음 세션에서 이어서.
더 공부해볼 것
1. Optimistic mutation 패턴 심화
- TanStack Query 의
onMutate/onError/onSettledrollback 흐름 - 낙관 갱신에서 다중 mutation 동시 발생 시 race condition 처리
- 실패 시 사용자에게 어떤 UX 로 알릴지 (toast? inline error?)
2. 민감정보 판단 기준
- 개인정보보호법상 민감정보의 정확한 정의 (사상·신념·건강·성생활·유전정보·범죄경력·정치적 견해 등)
- “감정 기록” 이 민감정보에 해당하는지의 실제 사례 — 정신건강 앱 카테고리 참조
- 참고: 개인정보보호위원회 표준 개인정보처리방침 지침
3. Anthropic Zero Data Retention (ZDR) 옵션
- Anthropic 에 ZDR 계약이 있다면 저장 없이 처리로 국외이전 리스크 완화 가능한지
- 개인 개발자에게도 열려있는 옵션인지 (Enterprise only?)
4. 동의 철회 UX 표준 패턴
- 항목별 철회 시 즉시 데이터 처리 중단 → 파기 흐름
- “철회 후 얼마나 빨리 반영되는지” 를 사용자에게 명시하는 관행
- iOS · Android 앱스토어 심사 기준의 동의 관리 요구사항
5. KISA · 개인정보위 무료 컨설팅 신청 경로
- 실제 신청 프로세스와 소요 기간
- 컨설팅 결과가 법적 방어력을 갖는지 (참조 자료 vs 공식 검토)
- 참고: KISA 개인정보 컨설팅 안내