[독일어 학습 앱 개발기 17편] 학습 데이터 저장 전략 – 무엇을 저장하고, 무엇을 버릴 것인가

2026. 1. 29. 05:17AI Product Building/HalloGerman

반응형

이 글의 핵심
- 언어 학습 앱에서 모든 데이터를 저장하지 않은 이유와 기준
- 학습 진도·복습·홈 화면을 유지하면서도 구조를 단순화한 저장 설계


16편에서 홈 화면 진도 모니터링을 다뤘다면, 이번 17편에서는 그 진도의 기반이 되는 학습 데이터 저장 전략을 설명한다.

HalloGerman를 만들면서 가장 많이 받은 질문 중 하나는 이것이었다. “왜 이 데이터는 저장하지 않나요?”

이 글의 결론은 단순하다. 저장할 수 있는 것과 저장해야 하는 것은 다르다.


1. 학습 앱에서 데이터는 왜 위험해질 수 있을까

학습 앱은 사용자의 행동을 매우 많이 만들어낸다.

  • 카드를 몇 번 넘겼는지
  • 몇 초 동안 봤는지
  • 발음을 몇 번 틀렸는지
  • 필기를 어떻게 했는지

기술적으로는 이 모든 것을 저장할 수 있다. 하지만 저장하는 순간,

  • 데이터 구조가 복잡해지고
  • 버그 가능성이 늘어나며
  • 유지보수 비용이 급격히 증가한다

그래서 HalloGerman에서는 처음부터 저장 범위를 강하게 제한했다.


2. 저장 전략의 기준: “다음 행동에 필요한가?”

데이터를 저장할지 말지 결정하는 기준은 하나였다.

이 데이터가 없으면 다음 학습 행동이 불가능한가?

이 질문에 “아니오”라면, 그 데이터는 저장 대상에서 제외했다.


3. HalloGerman에서 저장하는 핵심 데이터

HalloGerman이 실제로 저장하는 데이터는 많지 않다.

  • 단어 학습 로그(날짜, 타입)
  • 틀린 횟수
  • 마지막 학습 날짜
  • 연속 학습 일수

이 정보만으로도

  • 복습 대상 선정
  • 홈 화면 진도 표시
  • 알람 트리거 판단

이 모두가 가능하다.


3-1. 학습 로그 데이터 모델 예시


data class StudyLog(
    val word: String,
    val type: StudyType,
    val timestamp: Long
)

이 모델에는 시간, 단어, 학습 타입 외의 정보는 없다. 의도적인 최소화다.


4. 저장하지 않기로 한 데이터들

반대로, 다음 데이터들은 저장하지 않는다.

  • 필기 결과 이미지
  • 음성 인식 원본 텍스트
  • 플래시 카드 체류 시간
  • 부분 입력 중간 상태

이 데이터들은 학습 효과 대비 관리 비용이 너무 크다. 특히 음성·필기 데이터는 개인정보·보안 이슈로도 이어질 수 있다.


5. 로컬 저장을 선택한 이유

HalloGerman은 서버 기반 동기화를 초기 버전에서는 사용하지 않는다.

  • 오프라인에서도 학습 가능해야 하고
  • 초기 운영 비용을 줄여야 하며
  • 데이터 마이그레이션 리스크를 피하고 싶었기 때문이다

그래서 학습 데이터는 로컬 DB에만 저장한다.


5-1. Room 기반 저장 구조 예시


@Dao
interface StudyLogDao {
    @Insert
    fun insert(log: StudyLog)

    @Query("SELECT * FROM StudyLog WHERE date = :today")
    fun getTodayLogs(today: String): List<StudyLog>
}

Room을 사용하면 쿼리와 데이터 구조가 명확해지고, 향후 확장도 비교적 수월하다.


6. 데이터 삭제 정책도 설계의 일부다

데이터를 저장하는 것만큼 중요한 것이 언제, 어떻게 지울 것인가다.

HalloGerman에서는

  • 오래된 원본 로그는 주기적으로 정리하고
  • 집계된 결과만 남기며
  • 앱 재설치 시 완전 초기화를 허용한다

이 정책 덕분에 DB 크기와 복잡도가 일정하게 유지된다.


7. 이 저장 전략이 유지보수에 주는 이점

데이터를 최소화한 덕분에,

  • 버그 원인 추적이 쉬워지고
  • 구조 변경 시 영향 범위가 작으며
  • 기능 추가 시 판단이 명확해진다

저장 전략은 기술 문제가 아니라 제품 철학의 문제다.


8. 다음 편 예고

다음 18편에서는 앱이 커질수록 중요한 문제인 유지보수를 고려한 구조 설계를 다룬다. 기능이 늘어나도 구조가 무너지지 않게 한 기준을 설명할 예정이다.


참고 자료

 

 
반응형