배경
이 프로젝트 전까지 콘텐츠는 Django admin에 HTML로 저장되어 있었습니다. 2023년에 이를 대신할 시스템을 만들었습니다 — 자체 CMS와 제대로 된 에디터를 갖춘 사내 플랫폼, 그리고 이미 발행된 모든 글을 하나도 잃지 않고 옮기는 방법입니다.
사내 플랫폼 — 2023
Django admin을 대체하기 위해 2023년에 만든 사내 플랫폼입니다. Quasar 기반 자체 CMS와 직접 만든 Editor.js 블록 에디터, 그리고 기존 HTML을 그 블록 포맷으로 바꾸는 Node 마이크로서비스로 이루어집니다.
이 프로젝트 전까지 콘텐츠는 Django admin에 HTML로 저장되어 있었습니다. 2023년에 이를 대신할 시스템을 만들었습니다 — 자체 CMS와 제대로 된 에디터를 갖춘 사내 플랫폼, 그리고 이미 발행된 모든 글을 하나도 잃지 않고 옮기는 방법입니다.
두 가지입니다. Quasar 기반 자체 CMS — Editor.js를 중심으로 구성한 하나의 관리자 앱입니다. 블록 에디터이므로 페이지는 마크업 덩어리가 아니라 타입이 있는 블록의 목록이 됩니다. 그리고 기존 HTML을 블록 단위로 Editor.js JSON으로 바꾸는 Node 마이크로서비스입니다. Django admin에서 작성된 글도 처음부터 새 에디터에서 쓴 것처럼 열립니다.
구성은 세 부분입니다. 프런트엔드 역할의 Quasar 관리자, 콘텐츠 포맷인 Editor.js — 요소 하나당 타입이 있는 블록 하나로 구조화된 JSON, 그리고 HTML을 그 포맷으로 바꾸는 단방향 변환기인 Node 서비스입니다. 「콘텐츠 손실 없음」이 성립하려면 두 가지가 필요했습니다. 모든 HTML 구조가 블록에 대응되어야 했고, 변환기가 대응시키지 못한 것은 조용히 사라지는 대신 드러나야 했습니다. 변환을 에디터의 부수 효과로 두지 않고 별도 서비스로 분리한 덕분에 이를 검증할 수 있었습니다.
콘텐츠 이전은 빠짐없이 끝났습니다. Django admin에 있던 글은 하나도 잃지 않고 새 CMS로 옮겨졌습니다. 저장 형식은 HTML 원문에서 구조화된 JSON으로 바뀌었습니다.