|
26 | 26 |
|
27 | 27 | <br> |
28 | 28 |
|
29 | | -### 🕸️ 관계형 지식 관리 툴 |
| 29 | +### 🪡 관계형 지식 관리 툴 |
30 | 30 |
|
31 | | -🌱 마크다운, 이미지, 코드 등을 활용해서 간편하게 **문서 작성**이 가능합니다. <br> |
32 | | -🌱 작성한 문서들을 **연결**하고 **배치**하면서 새로운 아이디어를 쉽게 떠올릴 수 있습니다. |
| 31 | +📢 마크다운, 이미지, 코드 등을 활용해서 간편하게 **문서 작성**이 가능합니다. <br> |
| 32 | +📢 작성한 문서들을 **연결**하고 **배치**하면서 새로운 아이디어를 쉽게 떠올릴 수 있습니다. |
33 | 33 |
|
34 | 34 | https://github.com/user-attachments/assets/1ac81d56-a0ce-403c-9e3f-7ba092b6a5b6 |
35 | 35 |
|
36 | 36 | <br> |
37 | 37 |
|
38 | | -### 🧸 실시간 동시 편집 및 협업 기능 |
| 38 | +### 👥 실시간 동시 편집 및 협업 기능 |
39 | 39 |
|
40 | | -🌱 에디터에서 간편하게 **실시간 동시 편집**이 가능합니다. <br> |
41 | | -🌱 작성된 문서들도 **함께 연결하고 배치**해 보며 우리 팀만의 구조를 만들어 볼 수 있습니다. |
| 40 | +📢 에디터에서 간편하게 **실시간 동시 편집**이 가능합니다. <br> |
| 41 | +📢 작성된 문서들도 **함께 연결하고 배치**해 보며 우리 팀만의 구조를 만들어 볼 수 있습니다. |
42 | 42 |
|
43 | 43 | https://github.com/user-attachments/assets/86b0dcaf-3640-4836-8b91-207b39b17b05 |
44 | 44 |
|
45 | 45 | <br> |
46 | 46 |
|
47 | | -### ⛺️ 워크스페이스 초대 기능 |
| 47 | +### 📮 워크스페이스 초대 기능 |
48 | 48 |
|
49 | | -🌱 우리 팀만의 **워크 스페이스를 생성**하고 팀원들을 **초대**할 수 있습니다. <br> |
50 | | -🌱 워크 스페이스의 **공개 범위**를 설정해서 누구나 참여할 수 있는 공간도 생성이 가능합니다. |
| 49 | +📢 우리 팀만의 **워크 스페이스를 생성**하고 팀원들을 **초대**할 수 있습니다. <br> |
| 50 | +📢 워크 스페이스의 **공개 범위**를 설정해서 누구나 참여할 수 있는 공간도 생성이 가능합니다. |
51 | 51 |
|
52 | 52 | https://github.com/user-attachments/assets/0c096e40-bed4-4cee-bb8e-40f72a5d43f2 |
53 | 53 |
|
54 | 54 | <br><br><br><br> |
55 | 55 |
|
56 | | -<h1 id="주차별피드백">🌱 주차별 피드백을 통한 점진적 개선</h1> |
| 56 | +<h1 id="피드백">🏗️ 피드백을 반영한 점진적 개선</h1> |
57 | 57 |
|
58 | 58 | <br> |
59 | 59 |
|
@@ -123,89 +123,25 @@ https://github.com/user-attachments/assets/0c096e40-bed4-4cee-bb8e-40f72a5d43f2 |
123 | 123 |
|
124 | 124 | <br><br> |
125 | 125 |
|
126 | | -<h1 id="프로젝트타임라인">🗺️ 프로젝트 타임라인</h1> |
127 | | - |
128 | | - |
129 | | - |
130 | | -<br><br> |
131 | | - |
132 | | -<h1 id="프로젝트구조">🛠️ 프로젝트 구조</h1> |
133 | | - |
134 | | -### 🖥️ System Architecture |
135 | | - |
136 | | - |
137 | | - |
138 | | -<br> |
139 | | - |
140 | | -### 🐳 Sequence Diagram |
141 | | - |
142 | | -```mermaid |
143 | | -sequenceDiagram |
144 | | - participant Subscriber as 구독자 |
145 | | - participant OctoDocs as OctoDocs 워크스페이스 |
146 | | - participant Yjs as yjs 라이브러리 |
147 | | - participant YSocket as y-socketIO provider |
148 | | - participant WS_Server as websocket server (ysocketio) |
149 | | - participant PageModule as page 모듈 (node 모듈) |
150 | | - participant Redis as redis |
151 | | - participant Postgres as postgres |
152 | | - %% 웹소켓 연결 플로우 |
153 | | - note over Subscriber, YSocket: [웹소켓 연결 플로우] |
154 | | - Subscriber->>OctoDocs: Y.Doc 생성 요청 |
155 | | - OctoDocs->>Yjs: Y.Doc 생성 수행 |
156 | | - Yjs->>YSocket: Y.Doc 공유 요청 |
157 | | - alt [Y.Doc이 존재하지 않을 때] |
158 | | - YSocket->>WS_Server: 웹소켓 연결 |
159 | | - WS_Server->>PageModule: 데이터 조회 요청 |
160 | | - PageModule->>Redis: 데이터 조회 요청 |
161 | | - Redis->>PageModule: 데이터 조회 응답 |
162 | | - PageModule->>WS_Server: 데이터 조회 응답 |
163 | | - WS_Server->>YSocket: Y.Doc에 초기 데이터 셋팅 |
164 | | - YSocket->>Yjs: 웹소켓 연결 완료 |
165 | | - else [Y.Doc이 존재할 때] |
166 | | - YSocket->>WS_Server: 웹소켓 연결 |
167 | | - YSocket->>Yjs: 웹소켓 연결 완료 |
168 | | - end |
169 | | - %% 페이지 정보 변경 플로우 |
170 | | - note over OctoDocs, WS_Server: [페이지 정보 변경 플로우] |
171 | | - OctoDocs->>Yjs: Y.Doc 데이터 변경 |
172 | | - Yjs->>YSocket: 변경된 데이터 전달 |
173 | | - YSocket->>WS_Server: 소켓 요청 |
174 | | - WS_Server->>PageModule: 소켓 요청 |
175 | | - PageModule->>Redis: 변경 사항 저장 |
176 | | - Redis->>PageModule: 변경 사항 저장 알림 |
177 | | - PageModule-->>WS_Server: 저장 완료 알림 |
178 | | - WS_Server-->>YSocket: 변경된 데이터 전달 |
179 | | - YSocket-->>Yjs: 모든 참여자들에게 Y.Doc 데이터 변경 |
180 | | - %% 데이터베이스 영속화 플로우 |
181 | | - note over Redis, Postgres: [데이터베이스 영속화 플로우] |
182 | | - loop [스케줄러] |
183 | | - Redis->>Postgres: 변경 사항 저장 |
184 | | - Postgres->>Redis: 변경 사항 저장 알림 |
185 | | - end |
186 | | -``` |
187 | | - |
188 | | -<br><br> |
| 126 | +<h1 id="Octodocs 팀의 핵심 경험">🗜️ Octodocs 팀의 핵심 경험</h1> |
189 | 127 |
|
190 | | -<h1 id="문제와해결과정">🚧 문제와 해결과정</h1> |
191 | | - |
192 | | -### 🐙 실시간 편집 구현 과정 |
| 128 | +### 🗣️ 실시간 편집 구현 과정 |
193 | 129 |
|
194 | 130 | 실시간으로 여러 사용자가 동일한 문서를 편집할 때, 충돌 없이 동기화하는 것은 어려운 문제입니다. Octodocs 팀은 이를 직접 구현하는 대신 **YJS**와 **Socket.IO**를 결합하는 전략을 선택했습니다. 하지만 이 두 라이브러리를 통합하는 과정에서 예상치 못한 문제들을 어떻게 해결했을까요? |
195 | 131 |
|
196 | 132 | → [🔗 실시간 편집의 비밀, 지금 바로 확인하기](https://github.com/boostcampwm-2024/web15-OctoDocs/wiki/%EC%8B%A4%EC%8B%9C%EA%B0%84-%ED%8E%B8%EC%A7%91-%EA%B5%AC%ED%98%84-%EA%B3%BC%EC%A0%95) |
197 | 133 |
|
198 | 134 | <br> |
199 | 135 |
|
200 | | -### 🌊 데이터 흐름 변경 |
| 136 | +### ☄️ 데이터 흐름 변경 |
201 | 137 |
|
202 | 138 | Octodocs 팀은 기존 RESTful API 기반 상태 관리를 버리고 **YDoc 중심의 단일 Truth Source**와 **소켓 기반 단방향 흐름**으로 전환했습니다. 이로 인해 모든 상태가 YDoc을 통해 일관되게 관리되고, 데이터 흐름도 간소화되었습니다. 기존 방식을 버리고 이 변화를 선택한 이유는 무엇일까요? 또한, 중복 관리와 데이터 충돌을 줄이기 위한 **data flow 변화**의 핵심은 무엇이었을까요? |
203 | 139 |
|
204 | 140 | → [🔗 데이터 흐름에 몸을 맡겨보기](https://github.com/boostcampwm-2024/web15-OctoDocs/wiki/%EC%86%8C%EC%BC%93%EC%9C%BC%EB%A1%9C-%EC%9D%B8%ED%95%9C-%EC%83%81%ED%83%9C%EA%B4%80%EB%A6%AC%EC%9D%98-%EB%B3%B5%EC%9E%A1%EC%84%B1%EA%B3%BC-%EB%8D%B0%EC%9D%B4%ED%84%B0-%ED%9D%90%EB%A6%84-%EB%B3%80%EA%B2%BD) |
205 | 141 |
|
206 | 142 | <br> |
207 | 143 |
|
208 | | -### 🕸️ FE 프로젝트 구조 개선 과정 |
| 144 | +### 🛠️ FE 프로젝트 구조 개선 과정 |
209 | 145 |
|
210 | 146 | 짧은 기간의 스프린트를 빠르게 반복하여 개발했던 Octodocs 팀은 어느 순간부터 기능을 추가하고 유지보수하기 어렵다는 문제점을 마주하였습니다. 기존 **프로젝트 구조**의 문제점을 어떻게 파악했고, 어떤 방법으로 개선 했을까요? |
211 | 147 |
|
@@ -245,7 +181,21 @@ Octodocs 팀은 사용자 경험 향상은 물론, 일관된 코드 품질 유 |
245 | 181 |
|
246 | 182 | <br><br> |
247 | 183 |
|
248 | | -<h1 id="팀원소개">🧸 팀원 소개</h1> |
| 184 | +<h1 id="프로젝트구조">⚙️ 프로젝트 구조</h1> |
| 185 | + |
| 186 | +### 🖥️ System Architecture |
| 187 | + |
| 188 | + |
| 189 | + |
| 190 | +<br><br> |
| 191 | + |
| 192 | +<h1 id="프로젝트타임라인">🗺️ 프로젝트 타임라인</h1> |
| 193 | + |
| 194 | + |
| 195 | + |
| 196 | +<br><br> |
| 197 | + |
| 198 | +<h1 id="팀원소개">🍻 팀원 소개</h1> |
249 | 199 |
|
250 | 200 | | [J032\_김동준](https://github.com/djk01281) | [J075\_김현준](https://github.com/Tolerblanc) | [J097\_민서진](https://github.com/summersummerwhy) | [J162\_유성민](https://github.com/ezcolin2) | [J248\_진예원](https://github.com/yewonJin) | |
251 | 201 | | :--------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------: | |
|
0 commit comments