# js-collaboration-ot

## Content

`js-collaboration-ot`는 **운영 변환(Operational Transformation, OT)** 기술을 기반으로 한 동시 작업 라이브러리로, `js-collaboration`의 실시간 동기화 기능을 강화하도록 설계되었습니다. OT 기술을 통해 여러 사용자가 동일한 데이터를 동시에 편집할 수 있습니다. 이 라이브러리는 클라이언트 측([js-collaboration-ot-client](/spreadjs/api/v19/collaboration/js-collaboration-ot-client/README#spreadjs-api))과 서버 측([js-collaboration-ot](/spreadjs/api/v19/collaboration/js-collaboration-ot/README#spreadjs-api))으로 구성됩니다.

## 적용 시나리오

다음과 같은 실시간 공동 편집이 필요한 애플리케이션에 적합합니다.

* 동시 작업 스프레드시트 편집
* 리치 텍스트 공동 작성
* 인터랙티브 차트 동시 작업

## 핵심 기능

* **사용자 정의 OT 타입**: 다양한 비즈니스 요구를 충족하기 위해 개발자가 사용자 정의 연산 타입을 정의할 수 있음
* **데이터 영속성**: 데이터베이스 저장소와의 통합을 위한 어댑터 인터페이스 제공
* **프래그먼트 메커니즘(Fragments)**: 대용량 문서의 동기화 성능 향상
* **충돌 해결**: OT 알고리즘을 통해 데이터 일관성 보장
* **미들웨어 및 훅**: 동시 작업 프로세스에 검증, 로깅 등의 로직을 삽입할 수 있도록 지원

## 설계상의 장점

* **모듈화**: OT 타입, 미들웨어, 어댑터가 독립적으로 설계되어 커스터마이징과 확장이 용이
* **효율성**: 프래그먼트 메커니즘을 통해 대용량 문서의 I/O 오버헤드 감소
* **유연성**: 비동기 미들웨어와 다양한 데이터베이스를 지원하여 복잡한 비즈니스 시나리오에 대응 가능

## 다음 단계

다음 단계별 튜토리얼을 따라 `js-collaboration`과 `js-collaboration-ot`를 사용하여 운영 변환(OT) 기반의 실시간 동시 작업 텍스트 편집기를 구축할 수 있습니다.

* [튜토리얼: 실시간 동시 작업 텍스트 편집기](/spreadjs/docs/v19/spreadjs-collaboration-server/collaboration-framework/js-collaboration-ot/tutorial-real-time-collaborative-text-editor)
* [튜토리얼: 히스토리 기능 추가](/spreadjs/docs/v19/spreadjs-collaboration-server/collaboration-framework/js-collaboration-ot/tutorial-real-time-collaborative-text-editor/tutorial-add-history-functionality)
* [튜토리얼: 데이터베이스 어댑터 구성](/spreadjs/docs/v19/spreadjs-collaboration-server/collaboration-framework/js-collaboration-ot/tutorial-real-time-collaborative-text-editor/tutorial-configure-database-adapter)

다음 항목을 포함하여 `js-collaboration-ot`의 핵심 개념과 API를 익힐 수 있습니다.

* [Operation (Op)](/spreadjs/docs/v19/spreadjs-collaboration-server/collaboration-framework/js-collaboration-ot/operation-op)
* [Conflicts and Transform](/spreadjs/docs/v19/spreadjs-collaboration-server/collaboration-framework/js-collaboration-ot/conflicts-and-transform)
* [OT Types](/spreadjs/docs/v19/spreadjs-collaboration-server/collaboration-framework/js-collaboration-ot/ottypes)
* [SharedDoc](/spreadjs/docs/v19/spreadjs-collaboration-server/collaboration-framework/js-collaboration-ot/shareddoc-class)
* [DocumentServices](/spreadjs/docs/v19/spreadjs-collaboration-server/collaboration-framework/js-collaboration-ot/constructing-and-using-documentservices)
* [Database Adapter](/spreadjs/docs/v19/spreadjs-collaboration-server/collaboration-framework/js-collaboration-ot/database-adapter)
* [OT Middleware](/spreadjs/docs/v19/spreadjs-collaboration-server/collaboration-framework/js-collaboration-ot/ot-middleware)
* [Fragment Mechanism](/spreadjs/docs/v19/spreadjs-collaboration-server/collaboration-framework/js-collaboration-ot/fragment)

각 모듈은 코드 예제를 통해 실제 사용 방법을 보여줍니다. 왼쪽 탐색 바에 있는 튜토리얼 경로를 따라 단계적으로 실습하는 것을 권장합니다.