Confluence를 Markdown으로? Go CLI 도구로 해결!

by DD
1주 전
조회수 0

Confluence2md는 Confluence 위키를 Markdown으로 변환하는 Go CLI 도구로, 링크, 댓글, 첨부 파일을 포함하여 로컬 Markdown 파일로 미러링

XML 기반의 Confluence 저장 형식 변환의 어려움, 링크 재작성, 페이지네이션 처리 등 기술적 난관 극복

체크포인트 기반의 증분 업데이트를 통해 API 할당량 및 업데이트 속도 문제를 해결

오픈소스로 제공되어, Confluence 마이그레이션 및 위키 데이터 활용에 기여

Confluence to Markdown 변환의 기술적 난제

게시물에 따르면 Confluence의 저장 형식은 XML 기반으로, 매크로(Macro)와 다양한 예외 케이스를 포함하여 Markdown으로의 변환을 어렵게 만든다. 특히, 테이블, 서식 있는 텍스트 블록, 코드 조각, 매크로 출력 등은 Markdown으로의 정확한 변환을 복잡하게 만든다. 또한, 링크(Link) 처리, 댓글(Comment) 및 첨부 파일(Attachment) 관리도 중요한 과제로 제시된다. 이러한 문제 해결을 위해 저자는 정규화(Normalization), 참조 보존, 변환 명시화를 통해 해결했다.

증분 업데이트(Incremental Updates) 전략

게시물에서는 Confluence 공간의 대규모 페이지를 효율적으로 업데이트하기 위한 증분 업데이트 전략을 설명한다. 초기에는 CQL을 활용하려 했으나, 링크 그래프 변화, 인덱싱 지연 등의 문제로 인해 실패했다. 대신, 체크포인트(Checkpoint)와 결정적(Deterministic) 트래버설(Traversal) 방식을 활용하여 안정적인 업데이트를 구현했다. 이 방식은 완료된 체크포인트(Completed Checkpoint)오류 없는 체크포인트(Successful Checkpoint)를 분리하여 부분적인 실행으로 인한 문제를 방지한다.

Go 언어 선택의 기술적 의미

저자는 CLI 도구 개발에 Go 언어를 선택한 이유를 설명한다. Go는 빠른 시작 시간, 쉬운 동시성(Concurrency), 강력한 표준 라이브러리, 정적 바이너리(Static Binary)를 통한 간편한 배포를 제공한다. 이는 로컬 쉘(Local Shell), CI 작업, 다양한 개발 환경에서 도구를 실행하는 데 유리하다. 또한, Go의 모델은 크롤링(Crawling) 작업의 동시성 관리(Concurrency Management)Rate Limiting에 적합하여 코드베이스를 간결하게 유지하는 데 기여한다.

미러링된 Markdown의 활용 가치

게시물에서는 Confluence를 Markdown으로 미러링하는 것의 다양한 활용 가치를 제시한다. 첫째, 개인 또는 팀의 두 번째 두뇌(Second Brain)로 활용하여 검색 및 브라우징 도구를 활용할 수 있다. 둘째, 네트워크 연결이 제한된 환경이나 Confluence 장애 시 오프라인(Offline) 환경에서 유용하게 사용할 수 있다. 셋째, Git을 통한 버전 관리(Versioned Knowledge Management)를 통해 지식의 변화를 추적할 수 있다. 마지막으로, 머신 워크플로우(Machine Workflow)를 위한 기반을 마련하여 AI 시스템의 데이터 입력으로 활용할 수 있다.

How I Built a Confluence Crawler

댓글 0

첫 번째 댓글을 남겨보세요!