ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Microsoft 365 구독 해지와 AI 마이그레이션 — 556GB를 구출한 일주일
    IT 2026. 4. 19. 22:00
    Microsoft 365 구독 해지와 AI 마이그레이션 — 556GB를 구출한 일주일

    들어가며 — 구독을 끊기로 했다

    클라우드 구독 서비스의 편리함은 부정할 수 없다. 하지만 어느 순간 "이 데이터는 정말 내 것인가?"라는 질문이 떠오른다. Microsoft 365를 수년간 사용하면서 OneDrive에 쌓인 데이터가 556GB. 사진 3만 장, 문서 2천여 개. 구독을 해지하면 이 데이터는 어떻게 되는가?

    답은 간단했다 — 직접 꺼내서 로컬로 옮기면 된다. 다만 "간단한 답"과 "간단한 실행"은 전혀 다른 이야기다. 이 글은 일주일에 걸친 마이그레이션 과정에서 AI가 어떤 역할을 했는지를 기록한 것이다.

    전체 그림 — 무엇을 어디로 옮겼나

    마이그레이션은 크게 두 갈래로 진행됐다.

    데이터 유형 규모 출발지 도착지
    사진/동영상 ~30,000개 (521GB) OneDrive Immich (셀프호스팅)
    문서 ~2,300개 (6.4GB) OneDrive 개인 지식금고 (Markdown)

    단순 복사가 아니라 중복 제거 → 변환 → AI 가공까지 포함한 파이프라인이다. 각 단계에서 AI는 "단순 도구"가 아니라 "협업 파트너"에 가까운 역할을 했다.

    1단계: 사진 마이그레이션 — 3만 장의 중복을 걸러내다

    문제: 해시가 안 맞는다

    사진 마이그레이션의 핵심 난관은 중복 검출이었다. 이미 Immich에 수만 장의 사진이 있는 상태에서, OneDrive의 3만 장을 그냥 밀어넣으면 중복 지옥이 된다.

    일반적인 중복 검사는 파일 해시(SHA-1 등)를 비교하면 된다. 그런데 OneDrive는 SHA-1을 제공하지 않는다. Microsoft 고유의 QuickXorHash만 지원하고, Immich는 SHA-1을 쓴다. 두 시스템의 해시를 직접 비교할 수 없는 상황.

    AI와 함께 설계한 3단계 필터링

    이 문제를 Claude Code와 함께 풀었다. AI에게 상황을 설명하니 다음과 같은 전략을 제안했고, 함께 구현했다.

    1. 1차: 파일명 매칭 — Immich API로 기존 사진 33,000장의 파일명을 인덱싱하고, OneDrive 파일명과 대조. 이것만으로 80%인 24,000개의 중복을 잡아냈다.
    2. 2차: 퍼지 매칭 + 내부 중복 — 파일명이 미묘하게 다른 케이스(대소문자, 공백 등)와 OneDrive 내부 중복까지 추가로 55개 검출.
    3. 3차: SHA-1 전수검증 — 남은 5,800개는 실제로 파일을 다운로드해서 SHA-1 해시를 계산하고 Immich와 비교. 162개의 추가 중복 발견.

    AI는 각 단계의 Python 스크립트를 작성하고, 체크포인트 저장(중간에 끊겨도 이어서 진행), 병렬 처리(4 workers), 에러 핸들링까지 구현했다. 특히 3차 검증에서 타임아웃이 발생한 107건에 대해서는 "파일명+크기" 조합으로 추가 검증하는 폴백 로직까지 스스로 제안했다.

    결과

    최종적으로 약 24,200개의 중복을 제거하고, 5,650개의 신규 사진만 Immich에 업로드했다. OneDrive 사용량은 556GB에서 90GB로 줄었다. 단순 전량 다운로드 대비 460GB 이상의 네트워크 전송량과 스토리지를 절약한 셈이다.

    2단계: 문서 마이그레이션 — Office에서 Markdown으로

    변환 파이프라인

    OneDrive에는 다양한 형식의 문서가 2,300개 있었다.

    형식 개수 변환 도구
    PDF ~1,000 pymupdf
    DOCX ~480 python-docx
    PPTX ~260 python-pptx
    TXT ~290 직접 처리
    XLSX, HWP, DOC 등 ~270 LibreOffice headless

    AI가 각 형식별 변환 로직을 작성하고, 100건마다 체크포인트를 저장하는 배치 프로세서를 만들었다. 특히 HWP(한글 파일)는 Python 라이브러리가 마땅치 않아서 LibreOffice의 headless 모드로 우회하는 방법을 채택했다.

    그런데 Markdown으로 바꾸기만 하면 끝인가?

    여기서 재미있는 문제가 생긴다. Office 문서를 기계적으로 Markdown으로 변환하면, 형식은 바뀌지만 가치는 그대로다. 10년 전에 작성한 발표 자료의 글머리 기호가 Markdown 리스트로 바뀌었을 뿐, 맥락도 요약도 없는 날 것 그대로의 텍스트.

    이걸 "지식"으로 만드는 게 다음 단계였다.

    3단계: AI 가공 — 날 것을 지식으로

    3종 LLM 라우팅

    변환된 Markdown 문서를 분석하고 보강하는 데 세 종류의 LLM을 용도별로 나눠 투입했다.

    문서 특성 투입 모델 이유
    3KB 미만 간단한 문서 Gemma (로컬 GPU) 비용 0원, 충분한 품질
    3~20KB 중간 규모 Gemini 긴 컨텍스트 처리 능력
    20KB 초과 복잡한 문서 Claude 고품질 분석 필요

    각 LLM은 문서를 읽고 다음을 생성한다:

    • YAML frontmatter (제목, 카테고리, 태그, 한 줄 요약)
    • 문서 품질 점수 (vault_score) — 지식금고에 보관할 가치가 있는지 판단
    • 정리된 본문 — 핵심 내용 재구성, 불필요한 서식 제거

    Gemma의 역할 — 로컬 GPU의 위력

    전체 문서의 상당 부분이 간단한 메모나 짧은 노트였기 때문에, 로컬에서 돌아가는 Gemma가 큰 몫을 했다. API 호출 비용 없이 GPU만으로 수백 건을 처리할 수 있었다. 다만 GPU 자원 관리가 필요해서, 자체 제작한 GPU 스케줄러가 Gemma, VLM(비전 모델), 기타 GPU 작업 간의 우선순위를 자동으로 조율했다.

    한글 파일명 자동 변환

    원본 OneDrive 문서의 파일명은 대부분 영어이거나 의미 없는 이름이었다. Gemma가 문서 내용을 분석해서 적절한 한글 제목을 생성하고, 이를 기반으로 파일명을 자동 변경했다. meeting-notes-2024-03.md 같은 파일이 2024년-3월-프로젝트-킥오프-정리.md처럼 의미 있는 이름으로 바뀌는 것이다.

    4단계: 사진에도 AI를 — VLM 분석

    Immich에 올라간 사진도 그냥 두지 않았다. 로컬 GPU에서 돌아가는 Vision Language Model(VLM)이 사진을 분석해서:

    • 장면 설명 (description) 자동 생성
    • 태그 자동 부여
    • Immich의 검색 기능과 연동

    매일 새벽 크론잡으로 50장씩 자동 분석하도록 설정해 두었다. "바다가 보이는 카페에서 찍은 사진"처럼 자연어로 검색할 수 있게 된 것이 가장 체감이 큰 변화다.

    AI는 구체적으로 무엇을 했나

    이번 마이그레이션에서 AI의 역할을 정리하면 이렇다:

    단계 AI의 역할 구체적 기여
    전략 수립 문제 분석 & 설계 해시 불일치 문제에 대한 3단계 필터링 전략 제안
    스크립트 개발 코드 작성 중복 검사, 변환, 업로드 스크립트 전체 구현
    예외 처리 엣지 케이스 대응 타임아웃 폴백, k3g 확장자 문제, 체크포인트 설계
    문서 가공 LLM 분석 2,300개 문서의 분류, 요약, 메타데이터 생성
    사진 분석 VLM 처리 이미지 설명 및 태그 자동 생성
    파이프라인 자동화 크론잡 설계 일일 자동 분석, GPU 스케줄링

    특히 인상적이었던 건 "사람이 방향을 잡고, AI가 실행한다"는 협업 패턴이 자연스럽게 만들어졌다는 점이다. "OneDrive 해시가 안 맞는데 어떻게 하지?"라고 물으면 전략을 제안하고, 승인하면 즉시 코드로 구현한다. 에러가 나면 원인을 분석하고 수정안을 내놓는다. 마치 경험 많은 개발자와 페어 프로그래밍을 하는 느낌이었다.

    숫자로 보는 결과

    항목 Before After
    OneDrive 사용량 556 GB 0 GB (구독 해지)
    사진 중복 제거 ~24,200개 (460GB+)
    Immich 사진 추가 5,650개 (신규)
    문서 Markdown 변환 ~2,300개
    AI 분석/가공 문서 수백 건 (진행 중)
    월 구독비 ₩8,900/월 ₩0
    소요 기간 약 1주일

    돌아보며 — 구독 해지는 끝이 아니라 시작이었다

    Microsoft 365 구독 해지를 결심한 건 비용 절감이 목적이었다. 하지만 실제로 마이그레이션을 진행하면서 얻은 건 비용 절감 이상이었다.

    • 데이터 주권 — 내 사진과 문서가 로컬 서버에 있다. 서비스 정책 변경이나 가격 인상에 영향받지 않는다.
    • AI 인프라 구축 — 마이그레이션 과정에서 만든 도구들(중복 검사, 문서 변환, VLM 분석, GPU 스케줄러)이 지속적으로 활용되고 있다.
    • 지식의 재발견 — 10년 넘게 방치됐던 문서들이 AI 가공을 거쳐 검색 가능한 지식으로 변환됐다. "그때 그 자료 어디 있더라?"가 사라졌다.

    구독 해지는 "클라우드에서 나가는 것"이 아니라, "내 데이터를 AI와 함께 재구성하는 것"이었다. 그리고 그 과정에서 AI는 단순한 도구가 아니라, 556GB의 디지털 잔해를 의미 있는 자산으로 바꾸는 데 핵심적인 역할을 했다.


    이 글은 생성형 AI의 도움을 받아 작성되었습니다. 원본 자료를 기반으로 AI가 초안을 생성하고, 작성자가 검토·편집하였습니다.

Designed by Tistory.