[]
        
(Showing Draft Content)

성능

목적

SpreadJS Collaboration Add-on은 다중 사용자 실시간 편집 시나리오를 위해 설계되었으며, 대규모 동시 작업을 효율적으로 지원하면서도 원활한 사용자 경험을 보장합니다.

본 보고서는 공신력 있는 테스트 방법론을 기반으로 다양한 고동시성 시나리오에서 SpreadJS Collaboration Server의 성능을 종합적으로 평가하고, 실제 데이터를 통해 제품의 기술적 역량을 제시합니다.

면책 조항

  1. 본 성능 테스트 보고서는 특정 구성에서 동시 작업 애드온의 성능을 이해하는 데 도움을 주기 위한 참고 자료입니다. 제시된 데이터는 참고 지표일 뿐이며, 제3자 환경에서의 실제 성능을 의미하지 않습니다.

  2. 모든 테스트 데이터는 특정 테스트 환경에서 수동 작업을 통해 수집되었으며, 해당 시나리오의 성능 특성만을 반영합니다.

  3. 본 보고서의 권장 구성은 참고용입니다. 실제 적용 여부는 각 비즈니스 시나리오, 기술 아키텍처, 배포 요구 사항에 따라 평가해야 합니다.

용어집

용어

정의

스냅샷(Snapshot)

특정 시점의 공유 데이터 상태를 저장한 것으로, 동시 작업 중 변경 사항 비교나 복구에 사용됨

문서(Document, Doc)

동시 작업에서 문서는 사용자 간 실시간 변경 사항을 동기화하는 공유 데이터 모델을 의미하며, 모든 참여자에게 일관성을 보장함

지연 시간 지표(pXX)

XX 백분위 지연 시간으로, XX%의 요청이 해당 시간 이하로 완료됨을 의미함. 예: p99는 99%의 요청이 해당 시간 내에 완료됨

랜덤 지연 시작(Random Delay Startup)

클라이언트가 [0~6]초 범위의 임의 지연 후 시작하여, 사용자가 점진적으로 참여하는 실제 시나리오를 시뮬레이션

연산(Operation, OP)

편집, 업데이트 등과 같이 모든 참여자에게 동기화되어야 하는 데이터 모델의 원자적 작업

submitSnapshotBatchSize

서버가 데이터베이스에 스냅샷을 기록하기 전까지 누적하는 연산(OP) 수

처리량(Throughput)

초당 처리되는 연산 수(op/s)

테스트 환경 및 서버 구성

구성 요소

사양

운영체제

Ubuntu 20.04 / 22.04 / 24.04 LTS

데이터베이스

PostgreSQL v16.9

Node.js

v22.18.0

서버 A

2코어 CPU, 4GB RAM

서버 B/C/D

4코어 CPU, 8GB RAM

배포 방식:

  • 동시 작업 서비스와 데이터베이스를 동일 머신 / 분리된 머신에 배포

  • 부하 분산 시나리오에서 Nginx 일관 해싱(Consistent Hashing) 사용

테스트 계획

사용자 행동 정의

테스트는 다음과 같은 사용자 동작을 시뮬레이션합니다.

  • 연결 설정(Establish Connection): 서버에 연결

  • 문서 로드(Load Document): 공유 문서 로드

  • 문서 편집(Edit Document): 셀 편집을 통한 문서 수정

  • 연결 해제(Disconnect): 편집 종료 후 서버 연결 해제

시뮬레이션 사용자 유형

역할

설명

Writer

공유 문서의 지정된 셀에 특정 문자열을 기록

Reader

Writer가 기록한 특정 문자열을 읽음

DummyWriter

동시 사용자 환경을 시뮬레이션하기 위해 임의 문자열을 기록

성능 지표

  • 지연 시간(Latency): 쓰기와 읽기 작업 간 시간 차이(ms)

    • p50: 중앙값 지연 시간

    • p95: 대부분 사용자에 대한 일반적인 성능

    • p99: 최악의 경우 성능

  • 처리량(Throughput): 초당 처리된 연산 수(op/s)

테스트 방법론

  • Node.js를 사용하여 sharedDoc API 호출 방식으로 사용자 행동 시뮬레이션

  • 시나리오별 테스트 시간: 3분

  • 클라이언트 시작 방식: 랜덤 지연 시작

기본 파라미터

파라미터

연산 빈도

6초마다 1회(0.16 op/s)

시트 스냅샷

빈 시트

submitSnapshotBatchSize

1

성능 임계값

지표

양호

경고

위험

p99 지연 시간

< 500ms

500~1000ms

> 1000ms

처리량

선형 확장

정체

감소

CPU 사용률

< 70%

70~90%

> 90%

주요 성능 결과

1. 단일 문서 다중 사용자 동시성

2코어, 4GB 서버

동시 사용자 수

p50 (ms)

p95 (ms)

p99 (ms)

처리량 (op/s)

50

8

18

25

9

100

13

31

39

17

200

52

415

613

34

300

82

624

820

48

380

208

1045

1564

59

image.be1051.png

4코어, 8GB 서버

동시 사용자 수

p50 (ms)

p95 (ms)

p99 (ms)

처리량 (op/s)

50

8

15

21

9

100

12

29

38

19

200

49

390

587

37

300

74

486

692

51

380

157

833

1248

62

image.f74488.png

요약

  • 단일 4코어 8GB 서버는 p99 지연 시간이 700ms 이하인 상태에서 약 300명 동시 사용자를 안정적으로 지원

  • 단일 룸 시나리오에서는 2코어 4GB에서 4코어 8GB로 업그레이드 시 성능 개선 효과가 제한적

2. 다중 문서 동시성

구성: 4코어 8GB 서버, 동시 작업 서비스와 데이터베이스 분리 배포

문서 수

p50 (ms)

p95 (ms)

p99 (ms)

처리량 (op/s)

500

8

25

35

159

1000

9

36

46

318

2000

16

155

209

647

3000

21

313

416

974

3500

105

1329

1874

1090

image.648bf0.png

요약

  • 단일 4코어 8GB 서버3,000개 동시 문서를 지원 가능

  • 3,500개 문서를 초과하면 지연 시간이 급격히 증가

3. 부하 분산 시나리오

구성: 4코어 8GB 동시 작업 서버 2대 + 4코어 8GB DB 1대 + 4코어 8GB Nginx 1대

image.2cbf8c.png

룸 수

p50 (ms)

p95 (ms)

p99 (ms)

처리량 (op/s)

500

8

18

24

157

1000

9

26

36

316

2000

10

35

48

644

3000

13

47

61

968

4000

16

62

84

1289

5000

31

157

208

1587

6000

107

1033

1437

1790

image.f38c3e.png

요약

  • 부하 분산 구성 시 약 4,000~5,000개 동시 문서 지원 가능

  • 처리량은 5,000개 문서까지 거의 선형적으로 확장

4. 스냅샷 크기의 영향

구성: 4코어 8GB 서버

참고: 스냅샷이 클수록 지원 가능한 최대 동시 사용자 수가 감소함

스냅샷 유형

최대 동시 사용자 수

p99 지연 시간 (ms)

처리량 (op/s)

빈 시트

400

372

67.6

4k 셀

300

157

50.9

10k 셀

225

114

38.5

요약

  • 빈 시트: 최대 400명 동시 사용자 지원

  • 4k 셀: 수용량 25% 감소

  • 10k 셀: 수용량 44% 감소

5. submitSnapshotBatchSize의 영향

구성: 4코어 8GB 서버, 10k 셀 스냅샷

참고: submitSnapshotBatchSize를 적절히 설정하면 처리량과 동시성 수용 능력을 크게 향상시킬 수 있음

배치 크기

최대 동시 사용자 수

p99 지연 시간 (ms)

처리량 (op/s)

1

225

114

38.5

100

300

138

51.0

요약

  • submitSnapshotBatchSize를 1에서 100으로 증가 시:

    • 동시 사용자 수 +33% (225 → 300)

    • 처리량 +32% (38.5 → 51 op/s)

권장 서버 구성

고동시성 환경에서 SpreadJS Collaboration Server의 안정성과 성능을 보장하기 위해 다음과 같은 배포 구성을 권장합니다.

구성 요소

권장 사항

동시 작업 서비스

4코어 이상, 8GB RAM 이상 서버에 배포. 메시지 압축, 충돌 해결, 스냅샷 캐시 성능 향상을 위해 고클럭 CPU와 대용량 메모리 우선 고려

데이터베이스

고빈도 읽기/쓰기 및 데이터 영속성을 위해 고 I/O 성능 장치(SSD/RAID)에 별도 배포. 동시 작업 서비스와의 자원 경합 방지

부하 분산

Nginx + 일관 해싱을 사용하여 수평 확장성과 엔터프라이즈급 대규모 동시 작업 요구 충족

수평 확장

더 높은 동시성을 위해 동시 작업 서비스 노드를 추가하여 선형 확장. 단, 데이터베이스·네트워크·Node.js 환경 제약의 영향을 받음

아키텍처 다이어그램

image.32c7c7.png