내 앱의 데이터베이스를 Google Drive 폴더로 교체했습니다

딸의 음악 학습 진도를 기록하고 싶었습니다. 딸은 매주 선생님으로부터 오디오 클립과 노트를 받습니다. 저는 시간이 흐름에 따라 딸의 연습 과정을 듣고 싶었습니다. 새로운 녹음 파일이 기존 파일을 덮어쓰는 것은 원하지 않았습니다.

이를 해결하기 위해 앱을 하나 만들었습니다. 백엔드도 없고, 데이터베이스도 없습니다. 비용은 0원입니다.

대부분의 개발자는 Google Drive의 한 가지 기능을 간과합니다. 바로 버전 기록(revision history)입니다.

동일한 이름과 ID를 가진 파일의 새 버전을 업로드하면, Drive는 이전 버전을 보관합니다. 각 버전에는 타임스탬프가 찍히며 탐색도 가능합니다.

테이블과 외래 키(foreign keys)를 사용하는 복잡한 데이터베이스를 구축하는 대신, 저는 단순히 파일을 덮어씁니다. 버전 관리는 Drive가 처리합니다. 제 앱은 히스토리를 보여주기 위해 두 번의 API 호출을 사용합니다. 버전 관리 로직은 따로 작성하지 않았습니다.

폴더 구조가 데이터베이스 스키마 역할을 합니다:

• 각 노래는 고유한 폴더를 가집니다. • 파일은 teacher-audio 또는 student-practice와 같은 접두사를 사용합니다. • 구조를 설명하기 위해 JSON을 사용하지 않습니다. • 새 폴더를 추가하면 앱이 자동으로 업데이트됩니다.

노래에 태그를 달 방법도 필요했습니다. 이를 위해 JSON 파일을 사용하지 않고 Drive의 메타데이터 속성(metadata properties)을 사용했습니다. 폴더에 직접 키-값(key-value) 쌍을 추가할 수 있습니다. 덕분에 모든 것을 단 한 번의 API 호출로 처리할 수 있습니다.

설정:

• Hosting: GitHub Pages (무료) • Auth: Google Identity Services (클라이언트 측 전용) • Storage: Google Drive • Database: 없음. 폴더 구조가 모델 역할을 합니다. • 총 비용: $0.

팁 하나: Drive는 30일이 지나면 오래된 버전을 삭제합니다. 버전을 계속 보관하려면 keepRevisionForever 플래그를 설정해야 합니다.

이것은 대중을 위한 제품이 아닙니다. 저희 가족을 위한 개인적인 도구입니다.

목표는 단순히 돈을 아끼는 것이 아니었습니다. 2년 뒤에도 버튼 하나만 누르면 오늘 딸의 목소리가 어땠는지 들을 수 있도록 하는 것이 목표였습니다. 이 아키텍처 덕분에 추가적인 유지보수 없이도 이것이 가능해졌습니다.

인프라 구축을 위해 Drive의 버전 기록이나 속성(properties) 필드를 사용해 본 적이 있나요?

출처: https://dev.to/vankadn/replaced-my-apps-database-with-my-daughters-google-drive-folder-1455