Skip to content

Commit 8334b6c

Browse files
authored
Merge: Revert "Revert "Refactor: 문서 썸네일 구현""
Revert "Revert "Refactor: 문서 썸네일 구현""
2 parents 1a85d9b + 2b40945 commit 8334b6c

104 files changed

Lines changed: 2442 additions & 411 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

README.md

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,20 +9,20 @@ Docsa는 문서의 변경 이력과 다양한 버전을 효율적으로 관리
99
이 프로젝트의 목표는 Git을 모르는 사용자도 손쉽게 버전 관리를 활용하여 문서를 편집하고 운용할 수 있도록 돕는 것입니다.
1010
<br><br>
1111
사용자는 그래프로 구현된 시각적인 UI를 통해 문서를 직접 편집하고, 다양한 버전 흐름을 한눈에 확인하며 관리할 수 있습니다.
12-
Docsa는 문서의 변경 사항을 기록(commit) 단위로 추적하고, 버전(branch) 를 분기하거나, 서로 다른 버전을 병합(merge) 할 수 있는 강력한 기능을 제공합니다. <br><br>
12+
Docsa는 문서의 변경 사항을 기록(commit) 단위로 추적하고, 브랜치(branch)를 생성하거나, 서로 다른 브랜치를 병합(merge) 할 수 있는 강력한 기능을 제공합니다. <br><br>
1313
이러한 기능은 editor.js 기반의 블록 단위 저장 방식을 통해 구현되며, 변경된 블록만을 감지하여 데이터베이스에 저장하고 이를 조합하여 기록함으로써 저장 효율성과 자원 활용도를 극대화합니다.
1414

1515
## 📌 주요 기능
1616
>*Git의 개념과 용어를 모르는 일반인 유저를 위해, Docsa에서는 일반적인 Git의 개념과 대응되는 용어를 다음과 같이 재정의합니다. <br>
17-
>(기록: commit, 버전: branch, 병합하기: merge)
17+
>(기록: commit, 브랜치: branch, 병합하기: merge)
1818
19-
### 문서 버전 관리
19+
### 문서 브랜치 관리
2020

21-
- 문서는 기록,저장과 버전을 가진 최상위 단위입니다. 문서마다 모든 변경 사항을 기록 단위로 저장하여, 원하는 시점의 기록을 조회 (checkout) 할 수 있으며, 메인화면에서 생성과 삭제가 가능합니다.
21+
- 문서는 기록, 저장과 브랜치를 가진 최상위 단위입니다. 문서마다 모든 변경 사항을 기록 단위로 저장하여, 원하는 시점의 기록을 조회(checkout) 할 수 있으며, 메인화면에서 생성과 삭제가 가능합니다.
2222

23-
### 버전(branch) 분기 및 병합
23+
### 브랜치(branch) 생성 및 병합
2424

25-
- 하나의 문서에서 여러 버전을 생성하여 자유롭게 분기해나갈 수 있으며, 브랜치 간 병합을 통해 작업 내용을 통합할 수 있습니다. main버전 이외 버전 단위의 삭제도 가능합니다.
25+
- 하나의 문서에서 여러 브랜치를 생성하여 자유롭게 작업을 분기할 수 있으며, 브랜치 간 병합을 통해 작업 내용을 통합할 수 있습니다. main 브랜치 이외 브랜치 단위의 삭제도 가능합니다.
2626

2727
### 저장(Save) 및 기록(Commit) 시스템
2828

@@ -32,9 +32,9 @@ Docsa는 문서의 변경 사항을 기록(commit) 단위로 추적하고, 버
3232

3333
- ‘비교하기’를 통해 현재 보고있는 기록과 다른 기록을 문단 단위로 비교할 수 있습니다.
3434

35-
### 시각화된 버전 그래프 UI
35+
### 시각화된 브랜치 그래프 UI
3636

37-
- 기록과 저장,브랜치 간의 관계를 트리 구조 그래프로 시각화하여, 문서의 버전 흐름을 직관적으로 확인할 수 있습니다.
37+
- 기록과 저장, 브랜치 간의 관계를 트리 구조 그래프로 시각화하여, 문서의 브랜치 흐름을 직관적으로 확인할 수 있습니다.
3838

3939
### 실시간 문서 편집
4040

@@ -156,4 +156,3 @@ Docsa는 문서의 변경 사항을 기록(commit) 단위로 추적하고, 버
156156

157157

158158

159-

build.gradle

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -45,24 +45,22 @@ dependencies {
4545
implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.8.8'
4646
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
4747

48-
implementation 'org.springframework.retry:spring-retry'
49-
implementation 'org.springframework:spring-aspects'
50-
5148
implementation 'io.micrometer:micrometer-registry-prometheus'
5249
implementation 'org.springframework.boot:spring-boot-starter-actuator'
5350

5451
compileOnly 'org.projectlombok:lombok'
55-
developmentOnly 'org.springframework.boot:spring-boot-devtools'
5652
runtimeOnly 'com.mysql:mysql-connector-j'
5753
annotationProcessor 'org.projectlombok:lombok'
5854
testImplementation 'org.springframework.boot:spring-boot-starter-test'
5955
testImplementation 'org.springframework.security:spring-security-test'
6056
testImplementation 'com.h2database:h2'
6157
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
62-
testImplementation 'org.awaitility:awaitility:4.2.0'
6358

6459
implementation 'com.github.gavlyukovskiy:datasource-proxy-spring-boot-starter:1.12.1'
6560

61+
implementation 'org.flywaydb:flyway-core'
62+
implementation 'org.flywaydb:flyway-mysql'
63+
6664
implementation platform('software.amazon.awssdk:bom:2.42.35')
6765
implementation 'software.amazon.awssdk:s3'
6866

infra/.env.example

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,3 +30,16 @@ MYSQL_ROOT_PASSWORD=
3030
# ------------ GRAFANA ------------
3131
GRAFANA_ADMIN=
3232
GRAFANA_PASSWORD=
33+
34+
# ------------ AWS ------------
35+
AWS_ACCESS_KEY_ID=
36+
AWS_SECRET_ACCESS_KEY=
37+
38+
AWS_BUCKET=
39+
AWS_PRESIGNED_EXPIRE_MIN=
40+
AWS_REGION=
41+
CDN_URL=
42+
43+
# ------------ FLYWAY ------------
44+
FLYWAY_BASELINE_ON_MIGRATE=
45+
FLYWAY_BASELINE_VERSION=

infra/docker-compose.stg.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,12 @@ services:
136136
image: prom/prometheus:latest
137137
container_name: prometheus-stg
138138
restart: unless-stopped
139+
command:
140+
- "--config.file=/etc/prometheus/prometheus.yml"
141+
- "--storage.tsdb.path=/prometheus"
142+
- "--web.enable-remote-write-receiver"
143+
ports:
144+
- "${PROMETHEUS_BIND_ADDR:-127.0.0.1}:9090:9090"
139145
depends_on:
140146
- cadvisor
141147
volumes:

perf/delete/README.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@
88

99
## Files
1010

11-
- `perf/delete/seed_dataset.js`
12-
- 유저별 문서/커밋/브랜치 데이터 생성
11+
- `perf/seed/seed_dataset.js`
12+
- 유저별 문서/커밋/브랜치 데이터 생성. delete/read/thumbnail E2E에서 공용으로 사용
1313
- `perf/delete/delete_only_benchmark.js`
1414
- 생성된 문서를 찾아 삭제만 수행
1515
- `perf/delete/compare_delete_summary.mjs`
@@ -69,7 +69,7 @@ USER_PREFIX=perfuser USER_DOMAIN=test.com USER_PASSWORD=Testtest1 \
6969
USER_COUNT=100 DOCS_PER_USER=3 \
7070
MAIN_COMMITS=6 FEATURE_COMMITS=4 BLOCKS_PER_COMMIT=20 \
7171
SEED_VUS=20 \
72-
k6 run perf/delete/seed_dataset.js
72+
k6 run perf/seed/seed_dataset.js
7373
```
7474

7575
생성 규칙:
@@ -103,7 +103,7 @@ k6 run perf/delete/delete_only_benchmark.js \
103103
1. 브랜치 checkout
104104
2. 서버 실행
105105
3. 유저 준비(`PERF_SEED_USER_COUNT`, `PERF_SEED_DOCS_PER_USER=0` 적용된 상태)
106-
4. 데이터 생성 (`seed_dataset.js`)
106+
4. 데이터 생성 (`perf/seed/seed_dataset.js`)
107107
5. 삭제 벤치 실행 (`delete_only_benchmark.js`)
108108
6. 결과 파일 저장
109109

perf/read/README.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
## Files
1010

11-
- `perf/delete/seed_dataset.js`
11+
- `perf/seed/seed_dataset.js`
1212
- 목록 테스트에 사용할 문서/브랜치/커밋 데이터를 생성
1313
- `perf/read/doc_list_benchmark.js`
1414
- `sidebar`, `full list`, `search` 읽기 성능 측정
@@ -35,7 +35,7 @@ PERF_SEED_DOCS_PER_USER=0
3535

3636
## 2) Seed dataset
3737

38-
삭제 벤치에서 쓰던 seed 스크립트를 그대로 재사용합니다.
38+
공용 seed 스크립트를 사용합니다.
3939
중요한 건 목록 조회 시 문서별 branch/commit이 충분히 많아지도록 데이터를 만드는 것입니다.
4040

4141
```bash
@@ -45,7 +45,7 @@ USER_PREFIX=perfuser USER_DOMAIN=test.com USER_PASSWORD=Testtest1 \
4545
USER_COUNT=50 DOCS_PER_USER=5 \
4646
MAIN_COMMITS=8 FEATURE_COMMITS=5 BLOCKS_PER_COMMIT=100 \
4747
SEED_VUS=20 \
48-
k6 run perf/delete/seed_dataset.js
48+
k6 run perf/seed/seed_dataset.js
4949
```
5050

5151
애플리케이션 initializer로 DB에 직접 주입할 수도 있습니다. 이 방식은 API 호출 비용 없이
@@ -89,7 +89,7 @@ SEARCH_PREFIX=PERF
8989

9090
결과 파일:
9191

92-
- `perf/read/results/doc_list_benchmark_<RUN_ID>.json`
92+
- `perf/read/results/<test-name>/.../*.json`
9393

9494
핵심 지표:
9595

perf/read/doc_list_benchmark.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ const USER_COUNT = Number(__ENV.USER_COUNT || 50);
1111
const DOCS_PER_USER = Number(__ENV.DOCS_PER_USER || 3);
1212
const PAGE_SIZE = Number(__ENV.PAGE_SIZE || 10);
1313
const RUN_ID = __ENV.RUN_ID;
14+
const DATASET_RUN_ID = __ENV.DATASET_RUN_ID || RUN_ID;
1415
const RESULT_DIR = __ENV.RESULT_DIR || 'perf/read/results';
1516
const SEARCH_PREFIX = __ENV.SEARCH_PREFIX || 'PDEL';
1617

@@ -19,6 +20,7 @@ if (!RUN_ID) {
1920
}
2021

2122
export const options = {
23+
summaryTrendStats: ['min', 'med', 'avg', 'p(90)', 'p(95)', 'p(99)', 'max'],
2224
scenarios: {
2325
sidebar_list: {
2426
executor: 'constant-vus',
@@ -70,9 +72,9 @@ function userEmail(userNo) {
7072

7173
function keywordForUser(userNo) {
7274
if (SEARCH_PREFIX === 'PERF') {
73-
return `PERF-${RUN_ID}-u${pad3(userNo)}`;
75+
return `PERF-${DATASET_RUN_ID}-u${pad3(userNo)}`;
7476
}
75-
return `${SEARCH_PREFIX}-${RUN_ID}u${pad3(userNo)}`;
77+
return `${SEARCH_PREFIX}-${DATASET_RUN_ID}u${pad3(userNo)}`;
7678
}
7779

7880
function headers(cookie) {
Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ const MAIN_COMMITS = Number(__ENV.MAIN_COMMITS || 6);
1313
const FEATURE_COMMITS = Number(__ENV.FEATURE_COMMITS || 4);
1414
const BLOCKS_PER_COMMIT = Number(__ENV.BLOCKS_PER_COMMIT || 20);
1515
const RUN_ID = __ENV.RUN_ID || Math.floor(Date.now() / 1000).toString(36);
16+
const RESULT_DIR = __ENV.RESULT_DIR || '';
1617

1718
const TOTAL_DOCS = USER_COUNT * DOCS_PER_USER;
1819

@@ -220,8 +221,13 @@ export default function () {
220221
}
221222

222223
export function handleSummary(data) {
223-
return {
224+
const summary = {
224225
stdout: `\n[seed-dataset] run_id=${RUN_ID}, users=${USER_COUNT}, docs_per_user=${DOCS_PER_USER}, total_docs=${TOTAL_DOCS}\n`,
225-
'perf/delete/results/seed_dataset_summary.json': JSON.stringify(data, null, 2),
226226
};
227+
228+
if (RESULT_DIR) {
229+
summary[`${RESULT_DIR}/seed_dataset_summary.json`] = JSON.stringify(data, null, 2);
230+
}
231+
232+
return summary;
227233
}

0 commit comments

Comments
 (0)