MyStock - Google Drive Sync를 제거한 이유

MyStock 초기 개발 목적은 KIS Open API를 이용해 개인 투자 현황을 확인 했지만, 실제 사용 과정에서 단순 잔고 조회만으로는 부족한 부분이 있었다. CMA 잔액 변화, 투자 계좌 이동, 현금 흐름을 확인하고 싶었다. 그래서 당시에는 계좌 상태를 저장하는 Snapshot 구조와 Google Drive Sync를 설계했다.

KIS API
 ↓
계좌 Snapshot 생성
 ↓
Local JSON 저장
 ↓
Google Drive Sync
 ↓
상태 비교 및 관리

당시 판단은 합리적이었다. 데이터 보존, 여러 환경에서 동일 데이터 유지, Local과 Cloud 데이터 일치가 필요했기 때문이다.

하지만 Sync 구조는 점점 커졌다

기능이 추가되면서 단순 저장 기능이 아니라 동기화 시스템이 되었다.

  • cash_flow.json
  • Local Repository
  • Google OAuth
  • Sync Worker
  • Local/Cloud Merge
  • Schema Validation
  • Backup
  • Conflict 처리

문제는 오류가 아니라 필요성이었다

ChatGPT와 개발 대화방을 잃어버린 경험 때문에 MyStock 개발 맥락을 유지하기 위해 블로그에 개발 과정을 기록하고 있어, 과거 revision 실행 과정에서 Sync 관련 문제가 발생했다. 처음에는 json 형식 호환 코드 유지 방향을 생각했지만 다시 질문했다.

지금도 이 복잡한 동기화 구조가 필요한가?

개발이 진행되면서 MyStock에는 투자 현황, 투자 분석 기능이 추가되었다. 처음 질문은 "돈이 어디로 이동했는가"였지만, 현재 질문은 "현재 내 투자는 어떤 상태이며 어떤 판단을 해야 하는가"로 변했다.

Sync 개선이 아니라 제거를 선택하다

결과적으로 문제는 Sync 알고리즘이 아니었다. 현재 목적과 맞지 않는 구조를 계속 유지하는 것이 문제였다.

Google Drive Sync 개선
        ↓
        ❌

Google Drive Sync 제거
        ↓
        ⭕

내 판단은 현재 추가된 투자 현황과 투자 분석 기능을 통해 필요한 투자 상태와 자금 흐름을 확인할 수 있다는 것이었다. 또한 MyStock은 KIS OpenAPI 기반으로 온라인 상태에서 사용하는 구조이기 때문에, 클라우드를 사용하더라도 별도의 로컬 저장 구조를 유지할 필요성은 낮다고 판단했다.

 

이후 ChatGPT와 어떤 방향으로 구조를 정리할지 함께 검토했고, 아래와 같이 3단계 리팩토링으로 진행하기로 결정했다.

3단계 리팩토링

Phase 1 — Google Drive Sync 제거

  • Google OAuth 제거
  • Drive API 의존성 제거
  • Sync Worker 제거
  • Local/Cloud Merge 제거

Phase 2 — 현금 흐름 기능 제거

  • 현금 흐름 탭 제거
  • cash_flow.json 제거
  • Snapshot 저장 구조 제거

Phase 3 — Runtime 저장 구조 단순화

  • 사용자 상태 저장 구조 검토
  • 불필요한 persistence 제거
  • 정적 fixture와 metadata만 유지

Codex를 활용하면서 기능 구현 자체의 난이도는 많이 낮아졌지만 더 어려운 것은 이미 만든 기능이 지금도 필요한지 판단하는 것이다. 이번 작업은 Google Drive 기능을 단순히 삭제한 것이 아니다. 초기 요구사항에 맞춰 설계했던 구조를 실제 사용 방식에 맞게 다시 평가하고, 현재 목적에 맞지 않는 복잡도를 제거한 리팩토링이었다. 아래 화면은 현금 흐름 기능 제거 이후 정리된 MyStock 화면이다.

처음에는 데이터를 남기기 위한 구조가 필요했다. 하지만 지금 MyStock이 필요한 것은 과거 상태를 저장하는 것이 아니라 현재 투자 판단을 돕는 것이었다.