Post

개발 블로그 마이그레이션 과정

Github를 통해 블로그를 운영하게 되었습니다.

개발 블로그 마이그레이션 과정

기존에 사용하던 플랫폼에서는 다음과 같은 문제를 겪었습니다.

  • 지속적인 서버 문제
    • 글 작성 불가
    • 글 작성 시 2번 작성되는 문제
    • 내 블로그를 접속할 때 빈번하게 페이지를 찾지 못함(404)
  • 고쳐지지 않는 버그
    • 이전에 정상적으로 사용하던 태그들이 먹통이 됨
    • 예를 들어, C# C++ 같은 태그들은 URL에 조합되면서 기호들이 생략, 둘 다 C로 인식되어 게시글을 찾을 수 없음
    • 태그의 대소문자가 확실하게 구분되지 않고 멋대로 변형됨
  • 사용하기 힘든 에디터
    • 에디터와 미리 보기의 스크롤이 동기화 되지 않아 개인적으로 불편함
    • 이미지 업로드 최대 용량이 작음

이를 해결하고 더 나은 환경을 구축하기 위해 개발 블로그 이전을 결정했습니다.

이전 과정

정말 운이 좋게도, velog는 markdown 형식으로 글을 작성하는 플랫폼이었고 마이그레이션 과정을 쉽게 자동화 할 수 있겠다고 생각했습니다. 아래는 마이그레이션 과정입니다

1. 크롤링

먼저, cjaewon님이 개발하신 velog-backup을 사용했습니다. 감사의 인사를 드립니다.

https://github.com/cjaewon/velog-backup

해당 툴을 사용하여 제 데이터를 자동으로 추출 해냈습니다.

2. 파일 네이밍 포맷 맞추기

https://github.com/cotes2020/jekyll-theme-chirpy/blob/master/_posts/2019-08-08-write-a-new-post.md

문서에서는 파일 네이밍을 아래와 같이 맞추도록 안내하고 있습니다.

Create a new file named YYYY-MM-DD-TITLE.EXTENSION and put it in the _posts of the root directory. Please note that the EXTENSION must be one of md and markdown. If you want to save time of creating files, please consider using the plugin Jekyll-Compose to accomplish this.

80개가 넘는 파일의 파일명을 모두 수동으로 포맷팅하는 것은 아주 어려울 것입니다. AI를 이용하여 파이썬 스크립트를 작성, 자동화 하였습니다.

3. Front Matter 포맷 맞추기

해당 블로그 테마 문서를 읽어보면 포스트 파일의 상단에 아래와 같은 Front Matter를 사용하도록 안내합니다.

1
2
3
4
5
6
---
title: TITLE
date: YYYY-MM-DD HH:MM:SS +/-TTTT
categories: [TOP_CATEGORY, SUB_CATEGORY]
tags: [TAG]     # TAG names should always be lowercase
---

크롤링된 데이터도 비슷한 형식으로 갖춰져 있었습니다.

1
2
3
4
5
6
7
---
title: "[C++] iterator, reverse_iterator의 차이점"
description: "iterator, reverse_iterator의 차이점에 대해 알아봤습니다"
date: 2026-07-26T09:29:10.269Z
tags: ["cpp"]
...
---

이 중에서도 Tag, Categories, Thumbnail이 포맷에 맞도록 수정이 필요했습니다. 또한, 문제가 있어서 설정하지 못했던 태그들도 수정이 필요했습니다. (e.g. cpp ⇒ C++)

1
2
3
4
5
6
7
8
9
---
title: "[C++] iterator, reverse_iterator의 차이점"
description: "iterator, reverse_iterator의 차이점에 대해 알아봤습니다"
date: 2026-07-26T09:29:10.269Z
tags: ["C++"]
image:
  path: /assets/images/old/0b2670e3-e473-479f-88a7-d1b4729f633f-image.png
categories: [C++]
---

4. 이미지 호스팅 결정하기

게임 클라이언트라는 특성 때문에 gif 또는 webp같은 움직이는 이미지를 올려야 하는 경우가 많았습니다. 하지만 velog의 경우에는 최대 용량이 작아 이미지를 업로드하기 어려운 환경이었습니다. 이를 해결하기 위해서 두 가지 방법을 생각했습니다

  1. Github repo에 그대로 업로드 하기
  2. Google Drive를 사용하기

처음 선택한 것은 구글 드라이브였습니다. 구글 드라이브는 기본적으로 15GB의 클라우드 스토리지를 제공하기 때문에 깃허브보다 용량이 큰 이미지나 비디오를 업로드하기 수월하다고 생각했습니다. 하지만, 기본적으로 클라우드 드라이브이기 때문에 CDN과 같은 기능을 고려하지 않았다는 점이 발목을 잡았습니다. 이미지를 사용하기 위해 API의 호환성이 유지될 것이라는 보장이 없고, 기본 용량이 조금 더 크다는 것을 제외하고는 깃허브와 비슷한 제한 사항을 갖고 있어서 큰 메리트가 없다고 생각했습니다. 또한, 블로그의 목적이 개인적인 스터디 또는 일지를 기록하는 것이기 때문에 방문자가 적다는 점도 한 몫 했습니다.

결국 구글 드라이브가 조금 더 매력적이었지만 업로드를 위한 자동화 과정 등, 리소스를 더 투자해야 할 만큼의 가치를 지닌 것은 아니라고 판단하여 깃허브를 먼저 사용하도록 했습니다.

5. 마이그레이션 완료

이렇게 귀찮은 작업들을 자동화하여 적은 시간 안에 마이그레이션을 완료할 수 있게 되었습니다. 다시 한번 블로그 레이아웃을 만들어 주신 분, 테마를 만들어 주신 분, 크롤링 도구를 만들어 주신 분들께 감사 인사를 전하고 싶습니다. 앞으로도 글쓰는 방식이나 형식 AI 활용 부분을 지속적으로 바꿔가며 다양한 시도를 진행할 예정입니다.

This post is licensed under CC BY 4.0 by the author.