모바일 앱 가이드
파트 3 · 안전하게 만들기4 분 읽기

프레임워크 비교표가 놓치는 것들을 만드세요

첫 앱을 위한 데이터, 오프라인, 보안, 실제 기기 테스트, 관측 가능성 체크리스트입니다.

프레임워크는 비교하기 쉬워 관심을 받습니다. 하지만 사용자를 괴롭히는 실패는 인증, 데이터, 권한, 불안정한 네트워크, 보이지 않는 운영 오류에서 더 자주 생깁니다.

성공 경로
무엇이 일어나야 하는가?

로딩, 완료 확인, 다음 유용한 행동까지 포함한 정상 여정입니다.

실패 경로
무엇이 잘못될 수 있는가?

네트워크, 권한, 만료된 인증, 중복, 일부 업로드, 잘못된 서버 상태입니다.

복구 경로
어떻게 계속하는가?

재시도, 이어하기, 수정, 재연결, 복원, 실행 취소, 문의, 안전한 중단입니다.

백엔드 경계 만들기

인증, 권한, 비즈니스 규칙, 비밀키, 사용량 제한, 결제 권리, 중요한 데이터는 직접 통제하는 서비스에 두세요. 각 화면이 여러 외부 서비스에 직접 연결되기보다 문서화된 API를 사용하게 합니다.

이 경계가 탈출구가 됩니다. 미래의 새 클라이언트도 같은 계약과 데이터를 재사용할 수 있습니다.

저장 한 번이 시스템을 지나는 과정

1의도

사용자가 저장을 한 번 누릅니다.

2로컬 상태

중복 입력을 막고 진행 상태를 보여줍니다.

3API

인증된 요청에 고유 작업 ID를 넣습니다.

4서버

권한과 업무 규칙을 한 번 실행합니다.

5확인

영구 저장 결과를 받고 UI를 맞춥니다.

고유 작업 ID는 멱등성을 돕습니다. 시간 초과된 요청을 반복해도 주문이나 결제가 두 번 생기지 않아야 한다는 뜻입니다. 모바일 네트워크의 많은 사고를 막는 패턴입니다.

오프라인 계약 정의하기

중요한 행동마다 적으세요.

  • 연결이 없을 때 무엇을 보여주는가?
  • 생성·수정·삭제가 가능한가?
  • 대기 중인 변경은 어디에 저장되는가?
  • 다른 기기에서 같은 데이터를 바꾸면 어떻게 하는가?
  • 동기화 상태와 실패를 어떻게 설명하는가?

“마지막 저장 우선”도 정책이지만 사용자의 작업을 조용히 없앨 수 있습니다. 의도적으로 정하세요.

충돌 전략잘 맞는 경우주요 대가
마지막 저장 우선가치가 낮은 환경설정앞선 수정이 조용히 사라짐
필드 병합필드가 독립적으로 바뀌는 기록같은 필드 충돌은 복잡함
사용자가 선택중요한 문서, 이해 가능한 충돌중단과 UI 작업이 늘어남
이벤트 추가 방식로그, 메시지, 거래현재 상태 계산과 순서 관리 필요
성공을 가장하지 마세요

낙관적 UI는 빠르게 느껴지지만 “이 기기에 저장”, “동기화 대기”, “서버 확인 완료”를 구분해야 합니다. 모두 같은 모습이면 사용자는 작업을 보호할 수 없습니다.

권한은 사용자의 선택입니다

카메라, 사진, 마이크, 알림, 위치, Bluetooth, 건강 정보 권한은 거부되거나 나중에 취소될 수 있습니다. 시스템 팝업 전에 가치를 설명하고, 필요한 순간에만 요청하고, 거부해도 쓸 수 있는 대안을 주세요.

실패 행렬로 테스트하기

핵심 흐름을 다음 조건에서 반복하세요.

  • 느림, 끊김, 다시 연결된 네트워크
  • 권한 거부 후 설정에서 허용
  • 만료된 로그인
  • 빠른 중복 탭과 반복 요청
  • 중간에 앱이 백그라운드로 가거나 종료됨
  • 저장 공간 부족과 구형 기기
  • 이전 운영 버전에서 업데이트

업데이트 테스트가 중요한 이유는 기존 사용자에게 새 설치에는 없는 상태가 있기 때문입니다.

기기와 조건 행렬 사용하기

테스트 대상정상 연결느림/끊김오프라인→온라인권한 거부업데이트
최신 iPhone
가장 오래된 지원 iPhone
일반 Android
보급형 Android

안정적인 로직과 핵심 여정은 자동화하되, 키보드, 제스처, 중단, 접근성, 플랫폼 동작은 탐색 테스트로 확인하세요.

운영을 보이게 만들기

출시 전에 크래시, API 오류, 성능, 출시 버전을 추적하고 위험한 기능을 원격으로 끌 수 있는 기능 플래그를 준비하세요. 비밀번호, 토큰, 결제 정보, 건강 데이터, 불필요한 개인정보는 로그에 남기지 않습니다.

누가 경고를 받고 어떤 오류가 긴급한지도 정하세요.

행동 가능한 경고의 네 요소

무엇이 깨졌는가, 누가 영향받는가, 언제 시작했는가, 어디를 봐야 하는가. “오류 증가”는 소음입니다. “Android 3.4.1에서 14:05부터 결제 확인 실패가 5% 초과, 결제는 성공하지만 이용 권한 저장 실패”라면 행동할 수 있습니다.

비개발자를 위한 보안 기준선

  • 클라이언트를 신뢰하지 말고 서버에서 권한을 다시 확인합니다.
  • 세션 토큰은 일반 로컬 저장소가 아닌 플랫폼 보안 저장소에 둡니다.
  • 최소 개인정보만 모으고 보관 기간을 정합니다.
  • 로그와 분석에서 민감 값을 가립니다.
  • 비싼 작업과 남용 가능한 행동에 속도 제한을 둡니다.
  • 외부 SDK 권한과 데이터 수집을 검토합니다.
  • 토큰 취소, 침해 대응, 강제 업데이트를 계획합니다.

AI에게 근거 요청하기

AI가 모바일 코드를 만들면 가정, 권한 상태, 오프라인 동작, 화면 종료 시 정리, 재시도 제한, 비밀키 처리, 테스트를 설명하게 하세요. 실제로 실행하고 플랫폼 공식 문서를 확인해야 합니다. 자연스러운 답이 플랫폼 검증을 뜻하지는 않습니다.

완료의 정의

지원하는 실제 기기에서 작동하고, 예상 실패를 견디며, 진단 정보를 남기고, 접근 가능한 복구 경로가 있고, 비밀 노출이나 데이터 손상 없이 바꿀 수 있어야 기능이 완료된 것입니다.

핵심 정리

운영 품질은 경계와 실패 동작에 있습니다. 이를 의도적으로 만들면 프레임워크는 본래 자리인 구현 세부사항으로 돌아갑니다.