# OnlyOffice Document Server 기술 분석 및 도입 타당성 검토 본 문서는 웹 브라우저 환경에서 오피스 문서(Word, Excel, PowerPoint)의 고정밀 뷰잉 및 실시간 편집 기능을 제공하는 오픈소스 솔루션인 **OnlyOffice Document Server**의 개념, 작동 원리, 장단점 및 본 프로젝트로의 도입 타당성을 상세히 비교 분석한 문서입니다. --- ## 1. OnlyOffice Document Server 란? **OnlyOffice Document Server**는 웹 브라우저 내에서 Microsoft Office 포맷(`.docx`, `.xlsx`, `.pptx`) 문서를 원본과 거의 100% 동일하게 렌더링하고, 다중 사용자 실시간 협업 편집까지 가능하게 지원하는 **엔터프라이즈급 웹 오피스 서버 솔루션**입니다. * **포지셔닝**: Google Docs, MS Office Online의 설치형 자립(Self-hosted) 대체제. * **통합성**: Nextcloud, ownCloud, Redmine 등 수많은 그룹웨어 및 문서 관리 시스템(DMS)과 플러그인 형태로 통합되어 사용됩니다. --- ## 2. 핵심 기술 및 렌더링 엔진 작동 원리 (HTML5 Canvas 방식) 기존의 오픈소스 라이브러리(Luckysheet, docx-preview)와 OnlyOffice의 가장 큰 차이점은 **렌더링 방식**에 있습니다. ``` [ Luckysheet / docx-preview ] 엑셀/워드 XML 파싱 ➔ HTML DOM 요소(Table, Div)로 변환 ➔ 브라우저 렌더링 (※ 단점: 브라우저 기본 CSS 영향 및 복잡한 도형/양식 렌더링 한계) [ OnlyOffice Document Server ] 서버에서 문서 구조 해석 ➔ 클라이언트에 레이아웃 정보 전달 ➔ HTML5 Canvas 픽셀 드로잉 (※ 장점: OS/브라우저 CSS와 무관하게 원본 폰트, 도형, 표 레이아웃을 100% 원본 그대로 표현) ``` * **HTML5 Canvas 렌더링**: 문서를 HTML 태그로 바꾸는 것이 아니라, 문서 한 페이지 한 페이지를 이미지/벡터 그리듯이 픽셀 단위로 Canvas 위에 그려줍니다. 따라서 엑셀의 도형, 화살표, 선, 차트 등 복잡한 개체들이 MS Excel 프로그램에서 볼 때와 똑같이 그려집니다. * **자체 서식 보존**: OOXML(Office Open XML) 규격을 모태로 개발되어 워드, 엑셀, PPT 파일 포맷과의 호환성이 현존하는 오픈소스 웹 오피스 중 가장 높습니다. --- ## 3. 주요 기능 (Key Features) 1. **고정밀 미리보기 (Viewing)**: 웹 뷰어 모드를 제공하여 폰트 장평, 자간, 표 너비, 삽입된 차트와 도형을 완벽하게 재현합니다. 2. **실시간 협업 편집 (Collaborative Editing)**: 한 문서를 여러 사용자가 브라우저에서 동시에 수정할 수 있는 공동 작업 기능(Co-editing)을 지원합니다. 3. **버전 관리 및 변경 추적**: 문서 내 수정 내역 추적(Track Changes) 및 이전 버전 복원 기능을 제공합니다. 4. **다양한 포맷 지원**: DOCX, XLSX, PPTX뿐만 아니라 ODT, ODS, ODP, TXT, CSV 및 PDF 열람을 통합 지원합니다. --- ## 4. 기존 아키텍처 vs OnlyOffice 비교 분석 | 비교 항목 | 현재 방식 (오픈소스 라이브러리 + PDF 폴백) | OnlyOffice Document Server 도입 방식 | | :--- | :--- | :--- | | **렌더링 방식** | 클라이언트 직접 파싱 (Luckysheet, docx-preview 등) + 실패 시 서버 PDF 렌더링 | 전용 OnlyOffice Document Server(독립 서버) 구동 + HTML5 Canvas 드로잉 | | **도형(Shapes) 지원** | ❌ **직접 뷰잉 시 도형 미지원** (PDF 변환 전환 후 확인 필요) | **도형, 화살표, 차트, 특수 서식 100% 완벽 지원** | | **편집 기능** | ❌ **조회 전용 (미리보기만 지원)** | **웹 브라우저 내 직접 수정 및 저장 지원 (협업 가능)** | | **서버 부하** | 낮음 (최초 1회 PDF 변환 시에만 서버 자원 소모) | 높음 (서버 상에 오피스 엔진 인스턴스가 상시 구동되어 메모리 소모량 큼) | | **시스템 복잡도** | 낮음 (Node.js 서버에 가벼운 CLI 변환기만 배치) | 높음 (OnlyOffice Document Server를 별도 서버/컨테이너로 추가 구축해야 함) | | **라이선스** | 무료 (오픈소스 + 자체 CLI 툴) | **AGPL v3** (오픈소스 버전은 최대 동시 편집 세션 20개 제한, 초과 시 상용 라이선스 필요) | --- ## 5. OnlyOffice Document Server 도입 연동 흐름 OnlyOffice를 프로젝트에 연동할 때의 기본적인 API 아키텍처 흐름입니다. ```mermaid sequenceDiagram autonumber actor User as 사용자 브라우저 participant Node as PM 백엔드 서버 (Node.js) participant OO as OnlyOffice Document Server participant Storage as MinIO 스토리지 User->>Node: 1. 문서 미리보기 요청 Node->>Node: 2. OnlyOffice 전용 연동 토큰(JWT) 및 문서 설정 JSON 생성 Node-->>User: 3. OnlyOffice Editor HTML/JS (설정값 포함) 반환 User->>OO: 4. 브라우저가 OnlyOffice JS 로드 및 문서 세션 요청 OO->>Storage: 5. MinIO로부터 원본 오피스 파일 다운로드 OO->>User: 6. Canvas 렌더링을 통한 고해상도 오피스 뷰어 화면 표출 ``` ### 필수 연동 API 개발 필요 사항 (Node.js 백엔드 구현) 1. **Document Config Generator**: OnlyOffice Editor가 구동되기 위해 필요한 파일 고유 키, 다운로드 URL, 유저 권한 정보 등을 담은 JSON 객체를 반환하는 API. 2. **Callback Handler API**: 사용자가 웹 오피스에서 문서를 수정하고 닫았을 때, OnlyOffice Server가 편집 완료된 파일을 백엔드로 전송(HTTP POST)해 주는데, 이를 수신하여 MinIO 및 DB에 갱신 저장하는 Callback API 개발 필요. --- ## 6. 결론 및 제안 * **도입 권장 경우**: 만약 프로젝트의 요구사항이 단순 "문서 미리보기"를 넘어 **"웹 브라우저 상에서 엑셀/워드 파일을 직접 수정하고 협업 편집하여 저장하는 기능"**까지 포함해야 한다면, OnlyOffice Document Server의 도입은 **필수적**입니다. 현존하는 오픈소스 대안 중 최고의 호환성을 자랑합니다. * **현재 프로젝트 기준의 조언**: 단순 미리보기 조회 환경에서는 OnlyOffice 구동을 위한 메모리(최소 4GB RAM 이상 독립 컨테이너 필요) 및 동시성 라이선스 제약(동시 접속 20대 이상 시 유료 라이선스 도입 필요)이 부담될 수 있습니다. 따라서, **조회 중심 서비스인 현재 구조에서는 기존의 `Luckysheet/docx-preview + PDF 상시 전환` 방식이 리소스 대비 최선의 효율**이며, 향후 **웹 오피스 직접 편집 기능**이 비즈니스 요구사항으로 추가될 때 OnlyOffice 도입을 검토하는 아키텍처 로드맵이 가장 합리적입니다.