[카테고리:] 미분류

  • FastAPI와 Google Drive API

    현대의 데이터 저장 및 관리 환경은 퍼블릭 클라우드 중심으로 빠르게 전환되었고, 그중에서도 Google Drive는 API 접근성과 생태계 통합성 측면에서 가장 광범위하게 활용되고 있다. 특히 개인 혹은 소규모 팀 단위의 개발자들에게 있어 Google Drive API는 단순한 파일 저장소를 넘어서, 사용자 맞춤형 갤러리나 파일 뷰어를 구축할 수 있는 기반이 된다. 이러한 시스템을 FastAPI와 HTML5 기반으로 구축하는 것은 기술적으로 비교적 단순하면서도 높은 유연성과 사용자 경험을 제공한다.

    Google Drive API의 핵심은 OAuth 2.0을 통한 인증 및 권한 위임이다. 사용자가 로그인 후 접근 권한을 부여하면, 애플리케이션은 access token을 발급받고 이를 통해 Drive 내 파일 정보에 접근할 수 있다. API 구조는 크게 files.list, files.get, files.export, files.generateIds 등으로 구성되어 있으며, 각각의 호출은 Google의 RESTful 엔드포인트를 통해 이루어진다. 특히 갤러리 시스템에서 주로 활용되는 것은 files.list로, 이 API를 통해 사용자는 자신의 Drive 내의 모든 파일 또는 특정 MIME type의 파일 목록을 JSON 형태로 가져올 수 있다.

    FastAPI는 비동기 처리를 기본적으로 지원하는 Python 기반의 웹 프레임워크로, 이와 같은 Google API와의 연동에 있어 매우 강력한 장점을 가진다. 먼저 서버 측에서는 Google의 google-auth-oauthlibgoogle-api-python-client 패키지를 활용하여 인증 플로우를 구성하며, RedirectResponse를 통해 Google OAuth 로그인 페이지로 리디렉션을 유도한다. 사용자가 승인한 후 code 값을 가진 콜백이 들어오면, 이를 통해 credentials를 구성하고 이후의 API 호출에 활용한다.

    프론트엔드는 HTML5와 간단한 JavaScript를 활용하여 구성한다. 인증이 완료된 후, FastAPI 서버는 /files 등의 endpoint를 통해 사용자 드라이브의 파일 리스트를 JSON으로 반환한다. 클라이언트 측에서는 이 데이터를 기반으로 DOM을 구성하여 이미지나 문서 등을 갤러리 형태로 나열한다. 파일의 미리보기를 위해 Google Drive는 https://drive.google.com/uc?export=view&id=FILE_ID와 같은 URL 포맷을 제공하며, 이를 활용하면 실제 파일을 서버에 다운로드하지 않고도 브라우저 내에서 직접 표시할 수 있다. 이러한 아키텍처는 서버 부하를 낮추면서도 사용자에게 즉각적인 피드백을 제공하는 데 매우 효과적이다.

    보안 측면에서 고려할 점도 명확하다. 인증 토큰은 서버 측에서 안전하게 저장되어야 하며, 가능하다면 세션 기반의 사용자 매핑 또는 짧은 만료 시간을 가진 액세스 토큰만을 활용해야 한다. refresh token의 장기 보관은 보안 이슈를 야기할 수 있으므로 사용자 재인증 전략을 고려해야 하며, frontend에서는 절대적으로 민감한 정보를 노출시키지 않도록 주의해야 한다.

    전체 시스템을 하나의 개인용 클라우드 갤러리 플랫폼으로 바라본다면, 이를 확장하여 다중 사용자 기반의 SaaS 플랫폼으로 전환하는 것도 가능하다. 사용자별 Drive 연동, 권한 분리, 업로드 기능 등은 구글 API와 FastAPI의 조합으로 충분히 커버 가능하다. 이를 통해 사용자는 자신의 클라우드 파일을 언제 어디서든 구조화된 형태로 탐색하고 감상할 수 있게 되며, 결과적으로 Google Drive라는 범용 플랫폼 위에 자신만의 UI/UX 계층을 구축하는 셈이다.

    이러한 기술 조합은 단순한 파일 뷰어를 넘어서, 사용자 친화적이고 고도로 맞춤화된 클라우드 콘텐츠 브라우저를 구현하는 데 매우 효과적인 접근이다. 특히 OAuth 기반 인증, RESTful API 응답 처리, 서버-클라이언트 간의 비동기 통신 등을 한 번에 경험하고 설계해볼 수 있다는 점에서, 학습 목적의 프로젝트로도 그 가치가 높다.