
๐ฏ ์น ๊ธฐ๋ฐ ๋ฌธ์ ํธ์ง๊ธฐ ์ ์ ํ๋ก์ ํธ๋ฅผ ์ ์ํฉ๋๋ค.
๋ฌธ์ ํธ์ง๊ธฐ ํ๋ก์ ํธ๋ React์ Express๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๋๋ค. ์ฌ์ฉ์๋ ํ์๊ฐ์ ๋ฐ ๋ก๊ทธ์ธ์ ํตํด ๊ฐ์ธ ๋ ธํธ๋ฅผ ์์ฑํ๊ณ , ๋ธ๋ผ์ฐ์ ์์์ ์ง์ ๋ด์ฉ์ ์์ฑยทํธ์งยท์ ์ฅํ ์ ์์ต๋๋ค.
Tiptap ๊ธฐ๋ฐ์ ๋ฆฌ์น ํ ์คํธ ์๋ํฐ๋ฅผ ํ์ฉํ์ฌ ๋ฌธ์ ํธ์ง ํ๊ฒฝ์ ์ ๊ณตํฉ๋๋ค.

React, Express, MariaDB ๋ฑ ๋ฐฐ์ด ๊ธฐ์ ์ ์ข ํฉ์ ์ผ๋ก ํ์ฉ
๋ก๊ทธ์ธ๋ถํฐ ๋ฌธ์ ์์ฑ๊น์ง์ ์ฌ์ฉ์ ํ๋ฆ์ ํฌํจํ ์ค์ ์๋น์ค ๊ฐ๋ฐ
CI/CD ์๋ํ ํ์ดํ๋ผ์ธ, ์ปจํ ์ด๋ํ, ๋ฐฐํฌ ํ๊ฒฝ ์ค์ ๊น์ง ๊ฒฝํ
๊ฐ๋ฐํ๊ฒฝ๊ณผ ํ๋ก๋์ ํ๊ฒฝ์ ์ฐจ์ด๋ฅผ ๊ณ ๋ คํ ์ค๊ณ
์๊ตฌ์ฌํญ ๋ถ์๊ณผ ๊ตฌ์กฐ ์ค๊ณ
๋ฐฑ์๋ ์์ธ ์ค๊ณ์ ๊ฐ๋ฐํ๊ฒฝ ์ ์
ํ๋ก ํธ์๋ ์์ธ ์ค๊ณ์ ๊ฐ๋ฐํ๊ฒฝ ์ ์
๋จ์ํ ์คํธ์ ์ปจํ ์ด๋ํ
Selenium์ ์ด์ฉํ E2E ํ ์คํธ
AWS ๊ธฐ๋ฐ ๋ฐฐํฌ ํ๊ฒฝ ๊ตฌ์ฑ
CI/CD ํ์ดํ๋ผ์ธ ๊ตฌ์ถ
๋ชจ๋ํฐ๋ง๊ณผ ์๊ฐํ
| ์์ญ | ์ฌ์ฉ ๊ธฐ์ |
|---|---|
| Backend | - Main framework: Express.js - DB: MariaDB |
| Frontend | - Main framework: React.js - Editor: Tiptap - Auth: JsonWebToken (JWT) |
| ํ ์คํธ/์๋ํ | - ๋จ์ ํ
์คํธ: Jest - E2E ํ ์คํธ: Selenium |
| ๋ฐฐํฌ ์ธํ๋ผ | - AWS, Kubernetes, Minikube |
| CI/CD & IaC | - ์๋ํ ๋๊ตฌ: Jenkins - ์ธํ๋ผ ์ฝ๋ํ: Terraform |
Software Requirement Specification(SRS)๋ ์ํํธ์จ์ด๊ฐ ๋ฌด์์ ํด์ผ ํ๋์ง ์ ์ํ ๊ณต์ ๋ฌธ์๋ก, ๊ฐ๋ฐ์๊ฐ ๊ตฌํํ ๊ธฐ๋ฅ๊ณผ ์์คํ ์ ์ฝ ์กฐ๊ฑด์ ๋ช ํํ ํ๊ธฐ ์ํด ์ฌ์ฉ๋ฉ๋๋ค.
๊ธฐ๋ฅ์ ์๊ตฌ์ฌํญ : ์ํํธ์จ์ด๊ฐ ๊ฐ์ถ์ด์ผ ํ๋ ๊ธฐ๋ฅ
๋น๊ธฐ๋ฅ์ ์๊ตฌ์ฌํญ : ์ฑ๋ฅ, ์์ ์ฌ์ฉ๋ ๋ฑ์ ์กด์ฌํ๋ ์ฌ๋ฌ ์ธก๋ฉด ์ ์ฝ
์ํฐํด ๋ชจ๋ธ
SRS๋ ํ์ ์ฐ์ถ๋ฌผ
์ ์ฒด ์๊ตฌ์ฌํญ์ ๊ฐ๋ฐ ์ด์ ์ ๋ช ํํ ์ ์ํ๊ณ ๋ฌธ์ํ
์ ์์ผ ๋ชจ๋ธ
๋น ๋ฅธ ๋ฐ๋ณต๊ณผ ์ ์ฐํ ๋์์ ์ค์์
๋ฏผ์ฒฉ์ฑ์ ๋์ด๊ธฐ ์ํด SRS ๋ฌธ์๋ฅผ ์๋ตํ๊ฑฐ๋ ๊ฐ๋ตํํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์

๐ ์ธ์ฆ/๊ณ์ ๊ธฐ๋ฅ
| ๊ตฌ๋ถ | ๋ด์ฉ |
|---|---|
| ์๊ตฌ์ฌํญ ID | REQ-01-01 |
| ์๊ตฌ์ฌํญ๋ช | ๋ก๊ทธ์ธ |
| ๊ฐ์ (๋ชฉ์ , ๋ด์ฉ) | ๊ฐ์ ๋ ์ด๋ฉ์ผ๊ณผ ๋น๋ฐ๋ฒํธ๋ฅผ ์ด์ฉํด ๋ก๊ทธ์ธํ ์ ์๋ค. |
| ์ ๋ ฅ | ๋ก๊ทธ์ธํ์ง ์์ ์ํ์์ ์๋น์ค ๋ฐฉ๋ฌธ |
| ์ถ๋ ฅ | ๋ก๊ทธ์ธ ํ๋ฉด์ด ํ์๋จ |

| ๊ตฌ๋ถ | ๋ด์ฉ |
|---|---|
| ์๊ตฌ์ฌํญ ID | REQ-01-02 |
| ์๊ตฌ์ฌํญ๋ช | ํ์๊ฐ์ |
| ๊ฐ์ (๋ชฉ์ , ๋ด์ฉ) | ์ด๋ฉ์ผ๊ณผ ๋น๋ฐ๋ฒํธ๋ฅผ ์ด์ฉํด ํ์๊ฐ์ ์ ํ ์ ์๋ค. |
| ์ ๋ ฅ | ๋ก๊ทธ์ธ ํ๋ฉด์์ ํ์๊ฐ์ ๋ฒํผ ํด๋ฆญ |
| ์ถ๋ ฅ | ํ์๊ฐ์ ํ๋ฉด์ด ํ์๋จ |

| ๊ตฌ๋ถ | ๋ด์ฉ |
|---|---|
| ์๊ตฌ์ฌํญ ID | REQ-01-03 |
| ์๊ตฌ์ฌํญ๋ช | ๋ก๊ทธ์์ |
| ๊ฐ์ (๋ชฉ์ , ๋ด์ฉ) | ๋ก๊ทธ์์ํ ์ ์๋ค. ๋ก๊ทธ์์ ์ฑ๊ณต ํ์๋ ๋ก๊ทธ์ธํ๋ ์ฌ์ฉ์์ ์ ๋ณด๊ฐ ์ ์ง๋์ง ์์์ผ ํ๋ค. |
| ์ ๋ ฅ | ํ๋ฉด ์๋จ์ ๋ก๊ทธ์์ ๋ฒํผ ํด๋ฆญ |
| ์ถ๋ ฅ | ๋ก๊ทธ์์ ํ ๋ก๊ทธ์ธ ํ๋ฉด์ผ๋ก ๋ณต๊ท๋จ |


๐ ๋ ธํธ ๊ธฐ๋ฅ
| ๊ตฌ๋ถ | ๋ด์ฉ |
|---|---|
| ์๊ตฌ์ฌํญ ID | REQ-02-01 |
| ์๊ตฌ์ฌํญ๋ช | ๋ ธํธ ๋ชฉ๋ก ์กฐํ |
| ๊ฐ์ (๋ชฉ์ , ๋ด์ฉ) | ์์ฑ์ผ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌ๋ ๋ ธํธ ๋ชฉ๋ก์ด ํ์๋๋ค. |
| ์ ๋ ฅ | ๋ฉ์ธ ํ์ด์ง ๋ฐฉ๋ฌธ |
| ์ถ๋ ฅ | ํ๋ฉด ์ฌ์ด๋๋ฐ์ ํด๋ฆญ ๊ฐ๋ฅํ ๋ ธํธ ๋ชฉ๋ก์ด ํ์๋จ |

| ๊ตฌ๋ถ | ๋ด์ฉ |
|---|---|
| ์๊ตฌ์ฌํญ ID | REQ-02-02 |
| ์๊ตฌ์ฌํญ๋ช | ๋ ธํธ ์ ํ |
| ๊ฐ์ (๋ชฉ์ , ๋ด์ฉ) | ๋ ธํธ ๋ชฉ๋ก์์ ๋ ธํธ๋ฅผ ์ ํํ ์ ์๋ค. |
| ์ ๋ ฅ | ๋ ธํธ ๋ชฉ๋ก์์ ์ ํํ ๋ ธํธ๋ฅผ ํด๋ฆญ |
| ์ถ๋ ฅ | ๋ ธํธ ๋ชฉ๋ก์์ ์ ํํ ๋ ธํธ๊ฐ ํ์ด๋ผ์ดํธ๋จ |

| ๊ตฌ๋ถ | ๋ด์ฉ |
|---|---|
| ์๊ตฌ์ฌํญ ID | REQ-02-03 |
| ์๊ตฌ์ฌํญ๋ช | ๋ ธํธ ์กฐํ |
| ๊ฐ์ (๋ชฉ์ , ๋ด์ฉ) | ์ ํํ ๋ ธํธ์ ๋ด์ฉ์ ์กฐํํ ์ ์๋ค. |
| ์ ๋ ฅ | ์ฌ์ด๋๋ฐ ๋ ธํธ ๋ชฉ๋ก์์ ๋ ธํธ๋ฅผ ํด๋ฆญํ์ฌ ์ ํ |
| ์ถ๋ ฅ | ์ฐ์ธก ํ๋ฉด์ ๋ ธํธ์ ๋ด์ฉ์ด ํ์๋จ |

| ๊ตฌ๋ถ | ๋ด์ฉ |
|---|---|
| ์๊ตฌ์ฌํญ ID | REQ-02-04 |
| ์๊ตฌ์ฌํญ๋ช | ๋ ธํธ ์์ฑ |
| ๊ฐ์ (๋ชฉ์ , ๋ด์ฉ) | ์ ๋ ธํธ๋ฅผ ์์ฑํ ์ ์๋ค. |
| ์ ๋ ฅ | ํ๋ฉด ์๋จ์ ๋ ธํธ ์์ฑ ๋ฒํผ ํด๋ฆญ |
| ์ถ๋ ฅ | ๋ ธํธ ๋ชฉ๋ก์ ๊ฐ์ฅ ์์ ์ ๋ ธํธ๊ฐ ์ถ๊ฐ๋๊ณ , ํด๋น ๋ ธํธ๊ฐ ์ ํ ๋ฐ ์กฐํ๋๋ค. |

| ๊ตฌ๋ถ | ๋ด์ฉ |
|---|---|
| ์๊ตฌ์ฌํญ ID | REQ-02-05 |
| ์๊ตฌ์ฌํญ๋ช | ๋ ธํธ ํธ์ง |
| ๊ฐ์ (๋ชฉ์ , ๋ด์ฉ) | ์กฐํ ์ค์ธ ๋ ธํธ๋ฅผ ํธ์งํ ์ ์๋ค. |
| ์ ๋ ฅ | ์กฐํ ์ค์ธ ๋ ธํธ์ ๋ด์ฉ์ ํด๋ฆญ |
| ์ถ๋ ฅ | ์ปค์๊ฐ ๊น๋นก์ด๋ฉฐ, ํธ์ง ๊ฐ๋ฅํ ์ํ๊ฐ ๋๋ค. |

| ๊ตฌ๋ถ | ๋ด์ฉ |
|---|---|
| ์๊ตฌ์ฌํญ ID | REQ-02-06 |
| ์๊ตฌ์ฌํญ๋ช | ๋ ธํธ ๋ณ๊ฒฝ์ฌํญ ์ ์ฅ |
| ๊ฐ์ (๋ชฉ์ , ๋ด์ฉ) | ๋ ธํธ์ ๋ณ๊ฒฝ์ฌํญ์ ์ ์ฅํ ์ ์๋ค. |
| ์ ๋ ฅ | ํ๋ฉด ์๋จ์ ์ ์ฅ ๋ฒํผ์ ํด๋ฆญํ๋ค. |
| ์ถ๋ ฅ | ๋ ธํธ์ ๋ณ๊ฒฝ์ฌํญ์ด ์ ์ฅ๋๋ค. |

| ๊ตฌ๋ถ | ๋ด์ฉ |
|---|---|
| ์๊ตฌ์ฌํญ ID | REQ-02-07 |
| ์๊ตฌ์ฌํญ๋ช | ๋ ธํธ ์ญ์ |
| ๊ฐ์ (๋ชฉ์ , ๋ด์ฉ) | ์กฐํ ์ค์ธ ๋ ธํธ๋ฅผ ์ญ์ ํ ์ ์๋ค. |
| ์ ๋ ฅ | ๋ ธํธ๋ฅผ ์กฐํํ๊ณ , ํ๋ฉด ์๋จ์ ์ญ์ ๋ฒํผ์ ๋๋ฅธ๋ค. |
| ์ถ๋ ฅ | ๋ ธํธ๊ฐ ์ญ์ ๋๋ค. |

์ค์ ๊ฐ๋ฐ๋ถํฐ ๋ฐฐํฌ๊น์ง ํ๋์ ํ๋ฆ์ ๊ฒฝํํด๋ณผ ์ ์์ด์, ๋จ์ ๊ธฐ๋ฅ ๊ตฌํ์ ๋์ด์ ์ ์ฒด์ ์ธ ์น ๊ฐ๋ฐ ์ฌ์ดํด์ ์ดํดํ๋ ๋ฐ ํฐ ๋์์ด ๋ ๊ฒ ๊ฐ๋ค.