2. ํ ๊ตฌ์ฑ
3. ๊ธฐ์ ์คํ
6. ์ํคํ ์ณ
7. ๋ชจ๋ํฐ๋ง
8. ์ต์ข ์ฑ๊ณผ
์ด ์ฝ๐์ด๋ ์ ์ฝ๐์ด๋ ๋งค์ผ ๋๊ฐ๋ค๊ณ ์ฃผ๋๋ฐ ๋ญ๊ฐ ๋๊ฐ๊ณ ์ด๋ค๊ฒ ๋ค๋ฅธ ๊ฑด์ง ๊ถ๊ธํ๋ค๋ฉด!
- ๐ Pillnuts๋ ์์ฝ(pill)๊ณผ ๋ ์ฝฉ(peanuts)์ ํฉ์ฑ์ด๋ก, ๋ ์ฝฉ์ ๊ป์ง์ ๊น์ ๋จน๋ ๊ฒ์ ๋ชจํฐ๋ธ๋ก ํ์ฌ โ์ฝ์ ์(์ฑ๋ถ)์ ํํค์ณ๋ณด์โ ๋ผ๋ ์๋ฏธ์ด๋ค.
- 2022๋ 12์ 30์ผ ~ 2023๋ 2์ 10์ผ
| Backend | ||
|
๊น์์ฌ(ํ์ฅ) Github |
๋
ธ์ฐ์ Github |
๊นํ๋ Github |
| ๊ธฐ์ ์คํ | ์ค๋ช |
|---|---|
| Node.js | ์๋ฐ์คํฌ๋ฆฝํธ ๋ฐํ์ |
| Express | ์น ํ๋ ์์ํฌ |
| MySQL | MySQL |
| MongoDB | NoSQL |
| Docker | ์ปจํ ์ด๋ ๊ด๋ฆฌ |
| Grafana | ์๊ฐํ ๋์๋ณด๋ |
| Github actions | WebServer CI/CD |
| Code pipeline | ChatServer CI/CD |
| swagger | API ๋ฌธ์ํ |
| ๋ผ์ด๋ธ๋ฌ๋ฆฌ | ์ค๋ช |
|---|---|
| axios | HTTP ๋น๋๊ธฐ ํต์ |
| bcrypt | ๋น๋ฐ๋ฒํธ ์ํธํ |
| cors | ๊ต์ฐจ ๋ฆฌ์์ค ๊ณต์ |
| dotenv | ํ๊ฒฝ๋ณ์ ๊ด๋ฆฌ |
| express | ์๋ฒ |
| express-rate-limit | ์์ฒญ ํ์ ์ ํ |
| joi | ์ ๋ ฅ๋ฐ์ดํฐ ๊ฒ์ถ |
| jsonwebtoken | ์๋ช ์ํธํ |
| mysql | MySQL |
| node-cron | ์ค์ผ์ฅด ์ ๋ฌด ์๋ํ |
| passport | User Authenticate |
| sequelize | MySQL ORM |
| sequelize-cli | MySQL ORM Console |
| ๋ผ์ด๋ธ๋ฌ๋ฆฌ | ์ค๋ช |
|---|---|
| socket.io/admin-ui | ์์ผ ๊ด๋ฆฌ UI |
| cors | ๊ต์ฐจ ๋ฆฌ์์ค ๊ณต์ |
| dayjs | ๋ ์ง ๋ผ์ด๋ธ๋ฌ๋ฆฌ |
| dotenv | ํ๊ฒฝ๋ณ์ ๊ด๋ฆฌ |
| express | ์๋ฒ |
| mongoose | ODM |
| socket.io | ์ค์๊ฐ ํต์ |
| winston | Log ํ์ผ ์์ฑ |
| winston-daily-rotate-file | Log ํ์ผ ๊ด๋ฆฌ |
- ์๋ฌธ ์๋ฌธ์, ์ซ์๋ฅผ ์ด์ฉํ์ฌ ์์ด๋์ ๋น๋ฐ๋ฒํธ๋ฅผ ์ค์ ํ ์ ์๋ค.
- ๋ค์ด๋ฒ, ๊ตฌ๊ธ, ์นด์นด์ค๋ฅผ ํตํด ์์ ๋ก๊ทธ์ธ์ ํ ์ ์๋ค.
- ๋ฌธ์๋ก ๋ณธ์ธ์ธ์ฆ์ ํ ์ ์๋ค.
- ์ฝ์ ์ ํ๋ช ๊ณผ ํ์ (์งํต, ์์ผ ๋ฑ)์ ํค์๋๋ฅผ ํตํด ๊ฒ์ ํ ์ ์๋ค.
- ๋ค๋ฅธ ์ ์ ๋ค์ด ์ ํธํ๋ ์์๋๋ก ๋ณด์ฌ์ค๋ค.
- ํ์ด์ง๋ค์ด์ ์ ํตํด ํ ํ์ด์ง์ ์ ๊ณต๋๋ ์ ๋ณด์ ์๋ฅผ ์ ํ ํ์๋ค.
- ์ฝ์ ์ฐํ๊ฑฐ๋ ๋ค๋ฅธ ์ฝ๊ณผ ๋น๊ตํ๊ธฐ ์ํด ๋ณด๊ดํจ์ ๋ด์ ์ ์๋ค.
- ์ฑ๋ถ์ ๊ทธ๋ํ๋ฅผ ํตํด ํ๋์ ํ์ ํ ์ ์๊ฒ ๋ณด์ฌ์ค๋ค.
- ์ฑ๋ถ์ ์์ธ ๋ด์ฉ์ ๊ฐ์ด ํ์ธ ํ ์ ์๋ค.
- ์ฝ์ ์ฐํ๊ฑฐ๋ ๋ค๋ฅธ ์ฝ๊ณผ ๋น๊ตํ๊ธฐ ์ํด ๋ณด๊ดํจ์ ๋ด์ ์ ์๋ค.
- ํจ๋ฅํจ๊ณผ, ์ฃผ์์ฌํญ๋ฑ์ ์ธ๋ถ ์ ๋ณด๋ฅผ ํ์ธ ํ ์ ์๋ค.
- ์์ฝ์ฒ api๋ฅผ ๊ฐ์ ธ์ ์ฌ์ฉํ์๋ค.
- ๋๊ฐ์ง ์ฝ์ ๊ฐ์ ํฌ๋งท์ผ๋ก ๋น๊ตํ ์ ์๋ค.
- ์ฑ๋ถ์ ์์ธ ๋ด์ฉ์ ๊ฐ์ด ํ์ธ ํ ์ ์๋ค.
- ํจ๋ฅํจ๊ณผ, ์ฃผ์์ฌํญ๋ฑ์ ์ธ๋ถ ์ ๋ณด๋ฅผ ๋น๊ตํ๋ฉฐ ํ์ธ ํ ์ ์๋ค.
- ์ฝ์ ์ฐํ๊ฑฐ๋ ๋ค๋ฅธ ์ฝ๊ณผ ๋น๊ตํ๊ธฐ ์ํด ๋ณด๊ดํจ์ ๋ด์ ์ ์๋ค.
- ์์ฝ์ฒ api๋ฅผ ๊ฐ์ ธ์ ์ฌ์ฉํ์๋ค.
- ๋๋ค์, ํ๋กํ์ด๋ฏธ์ง๋ฅผ ๋ณ๊ฒฝ ํ ์ ์๋ค.
- ์งํ๋๊ณ ์๋ ์ด๋ฒคํธ๋ฅผ ์ ์ ์๊ฒ ์๊ฐํ๋ค.
- ๊ฑด๊ฐ์ ๋ํ ํ์ค ๊ธ๊ท๋ฅผ ๋๋ค์ผ๋ก ์ ์ ์๊ฒ ์๊ฐ์์ผ์ค๋ค.
- ์ ์ ๊ฐ ์ฐํ ์์ฝํ์ ๋ชจ์์ ๋ณด์ฌ์ค๋ค.
- ํ์ํํด๋ฅผ ํ ์ ์๋ค.
- ์ ์ ๊ฐ ๊ฐ์ง ์๋ ๋ฅด๊ธฐ๋ฅผ ๋ฑ๋กํ์ฌ ํด๋น ์๋ ๋ฅด๊ธฐ ์ฑ๋ถ์ด ๋ ์ฝํ์ ํผํ ์ ์๋ค.
- ์๋ ๋ฅด๊ธฐ ๊ฒ์ ์ ์๋์์ฑ๊ธฐ๋ฅ์ด ์ ์ฉ๋์ด์๋ค.
- ์๋ ๋ฅด๊ธฐ ๋ฑ๋ก ์ ํด๋น ์ฑ๋ถ์ด ํฌํจ๋ ์ฝํ์ ์กฐํํ ๋ ์ํํ์๋ฅผ ํด์ค๋ค.
- ์ ์ ์ ๋ฐ๋ผ ์ฑํ ๋ฐฉ ์์ฑ์ด ๊ฐ๋ฅํ๋ค.
- ๋ก๊ทธ์ธ์ ํ์ง์์๋ ์ฑํ ์ด ๊ฐ๋ฅํ๋ฉฐ, ์ ์ ํ๋ ์ฑํ ์ ๋ถ๋ฌ์ต๋๋ค.
- ํค์๋๋ฅผ ์ ๋ ฅ ์ ํด๋นํ๋ ์ ๋ณด๋ฅผ ๋ต๋ณ์ผ๋ก ์ค๋ค.
- โ์ฑํ โ์ ์ ๋ ฅ ํ ์๋ด ์ฐ๊ฒฐํ๊ธฐ ๋ฒํผ์ ๋๋ฅด๋ฉด ๊ด๋ฆฌ์์ ์ค์๊ฐ ์๋ด์ด ๊ฐ๋ฅํ๋ค.
- ์ค์๊ฐ ์๋ด ์์ฒญ์ด ์์ ์ ์ฌ๋์ผ๋ก ์๋ฆผ์ด ๊ฐ๋ค.
์ถํ์ ์ถ๊ฐ
-
์ด๋ค ๋ฌธ์ ์ ์ ๊ฒช์๋๊ฐ?
CI/CD ๊ตฌ์ถ ํ ํ ์คํธ ์ค ECS ์๋น์ค ์ด๋ฒคํธ ์ฐฝ์์ ํธ์คํธํฌํธ๊ฐ ์ค๋ณต๋์๋ค๋ ์ด์ ๋ฐ์
-
์ ์ด๋ฐ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋๊ฐ?
๋ฌด์ค๋จ๋ฐฐํฌ๋ฅผ ํ๊ธฐ์ ๊ธฐ์กด์ ์ปจํ ์ด๋๊ฐ ๊บผ์ง๊ณ ์๋ก์ด ์ปจํ ์ด๋๊ฐ ์ผ์ง๋๊ฒ ์๋ ๋์์ ์ผ์ ธ์๋ ๊ฒฝ์ฐ๊ฐ ์๊ฒจ ํธ์คํธ๋ฒํธ๋ฅผ ์ง์ ํด์ค์์ ๊ฒน์น ์ ๋ฐ์ ์์
-
์ด๋ป๊ฒ ํด๊ฒฐํ๋๊ฐ?
๋์ ํฌํธ๋งคํ์ ์ด์ฉํ์ฌ ํธ์คํธ๋ฒํธ๋ฅผ 0์ผ๋ก ์ค์ ํ์ฌ ํ๋ฐ์ฑํฌํธ๋ฒํธ(49153~65535)์์ ๋๋คํ๊ฒ ๋งคํํด์ฃผ๊ณ ์๋น์ค์์ ๋ก๋๋ฐธ๋ฐ์ฑ ์ค์ ์ ํตํด ์ปจํ ์ด๋๋ฅผ ํ์ผ๊ทธ๋ฃน์ผ๋ก ๋ฐ๋ก ์ก์ ๋๋งค์ธ ์ฃผ์๋ก ๋ฌธ์ ์์ด ์ ์์ด ๊ฐ๋ฅ
- ์ด๋ค ๋ฌธ์ ์ ์ ๊ฒช์๋๊ฐ?
CI/CD ๊ตฌ์ถ ํ ํ
์คํธ ์ค ECS ์๋น์ค ์ด๋ฒคํธ ์ฐฝ์์ ์ฌ์ฉ๊ฐ๋ฅํ CPU, Memory๊ฐ ๋ถ์กฑํ๋ค๋ ์ด์ ๋ฐ์
-
์ ์ด๋ฐ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋๊ฐ?
-
๋ฌด์ค๋จ๋ฐฐํฌ๋ฅผ ํ๊ธฐ์ ๊ธฐ์กด์ ์ปจํ ์ด๋๊ฐ ๊บผ์ง๊ณ ์๋ก์ด ์ปจํ ์ด๋๊ฐ ์ผ์ง๋๊ฒ ์๋ ๋์์ ์ผ์ ธ์๋ ๊ฒฝ์ฐ๊ฐ ์๊ฒจ ์์ ์ ์์์ ์ค์ ํ
CPU, Memory * ๋์๊ฐ๋ ์ปจํ ์ด๋์ ์๊ฐ EC2์ Instance์ CPU, Memory๋ฅผ ๋์ด๊ฐ๋ฉด์ ์๊ธฐ๋ ์ด์ -
์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ์ํด ์ปจํ ์ด๋์ CPU, Memory๋ฅผ ๋๋ฌด ๋ฎ๊ฒ ์ก์ผ๋ฉด EC2์ ์ฌ์์ ์ ๋๋ก ๋ค ์ฌ์ฉํ์ง ๋ชป ํ๋ ์ํฉ
-
SeverLess์ธ ECS Fargate๋ฅผ ์ฐ๋ฉด ๋ฐ๋ก ์๋ฒ๊ด๋ฆฌ๊ฐ ํ์ํ์ง์๊ธฐ์ ํด๊ฒฐ๊ฐ๋ฅํ ๋ฌธ์ ์ง๋ง ๋น์ฉ์ด ๋น๊ต์ ๋น์
-
-
์ด๋ป๊ฒ ํด๊ฒฐํ๋๊ฐ?
-
์ปจํ ์ด๋์ CPU,Memory๋ฅผ EC2์ Instance์ CPU, Memory์ 1/4๋ก ํ ๋นํ๊ณ ์ปจํ ์ด๋๋ฅผ ๋๊ฐ ๋๋ฆฌ๋ ์ํฉ์์ CI/CD๋ฅผ ํ ์คํธ ํด๋ดค์ ๋ ๋กค๋ง๋ฐฐํฌ๊ฐ ์ ๋๋ ๊ฒ์ ํ์ธ
-
๋ถํํ ์คํธ๋ฅผ ํด๋ดค์ ๋, ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ ํฌ๊ฒ ๋์ง์๊ณ CPU ์ฌ์ฉ๋์ด ์ค๋ฒ๋์ด ์๋ฒ๊ฐ ํฐ์ง๋ ๊ฒ์ ํ์ธ
-
ECS์ ์ปจํ ์ด๋ CPU ์ฌ์ฉ๋์ด 40ํผ ์ด์์ด ๋์ด๊ฐ๋ฉด Scale-Out, 30ํผ ์ดํ๊ฐ ๋๋ฉด Scale-In์ด ๋๊ฒ ์ค์
-
Scale-Out์ด ๋์์ ๋ ๋ฐฐํฌ๋ฅผ ํผํด์ผํ๊ธฐ์ Cloud Watch Alarm - SNS - Lambda - discord WebHook์ ํตํด ์คํ ์ค์ผ์ผ๋ง์ด ์คํ๋ ๋ ๋์ค์ฝ๋๋ก ํด๋น ๋ก๊ทธ๊ฐ ์ ์ก๋จ
-
ํน์ ๋ชจ๋ฅผ ๊ฒฝ์ฐ๋ฅผ ๋๋นํด ํด๋ฌ์คํฐ์์ ์ฉ๋ ๊ณต๊ธ์๋ฅผ ์ค์ ํด Scale-Out์ด ๋์์์๋ ๋ถ๊ตฌํ๊ณ CPU ์ค์ฉ๋์ด ๋ถ์กฑํด์ง๋ฉด ๋ฏธ๋ฆฌ Task๋ฅผ ๊ณ์ฐํ๊ณ EC2๋ฅผ Scale-Out์ ํ์ฌ ์คํ๋๋ฉด ๊ณํ๋ Task๋ฅผ ๋ฐ๋ก ๋ฐฐ์น
-
-
์ด๋ค ๋ฌธ์ ์ ์ ๊ฒช์๋๊ฐ?
Dockerfile ๋ฅผ ๋น๋ํ ๊ฒฝ์ฐ,
.envํ์ผ์ ์ฐธ์กฐํด์ค์ง ๋ชปํด์ CI/CD ๋ฐฐํฌ ํ ์ปจํ ์ด๋์ ์ดํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ๋ํ๊ธฐ ์ํ.env๊ฐ ์๋ ์ด์ -
์ ์ด๋ฐ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋๊ฐ?
-
.env์ ๋ณด์์ ์๋ฏผํ ์ ๋ณด๋ฅผ ๋ด๊ณ ์์ด Public ์ ์ฅ์์ ์ฌ๋ฆด ์ ์์๋ค.์์ ์ ์์ ํ๊ฒฝ๋ณ์ ๊ฐ์ ๋ฃ์ ์ ์์ง๋ง ๊ทธ๋๋ก ๋ค ๋ ธ์ถ์ด ๋๋ ์ํฉ์ด ๋ฐ์
-
CD ๋จ๊ณ์์ DockerFile๋ฅผ buildํ ๋
.env๊ฐ ์์์ผ๋ฏ๋ก ๊ทธ ๊ฒฐ๊ณผ ํด๋น image๋ก ๋ง๋ ์ปจํ ์ด๋์์๋.env๊ฐ ์์๋ค.
-
-
์ด๋ป๊ฒ ํด๊ฒฐํ๋๊ฐ?
AWS Systems Manager Parameter Store๋ฅผ ์ด์ฉํ์ฌ env๊ฐ์ parameter๋ก ๋ฑ๋ก ํ arn์ ์์ ์ ์ secrets์ ์ฌ๋ฆฌ๋ ๋ฐฉ๋ฒ์ผ๋ก ํด๊ฒฐ
-
์ด๋ค ๋ฌธ์ ์ ์ ๊ฒช์๋๊ฐ?
์ฑํ ์๋ฒ๋ฅผ ์น์๋ฒ์ ๊ฐ์ ์๋ฒ์ ๋ฐฐํฌํ ์ ์น์๋ฒ๊ฐ ๋ค์ด๋๋ฉด ์ฑํ ์๋ฒ๋ ๊ฐ์ด ๋ค์ด๋์ด ๊ฐ์ฅ ํ์ํ ๋ ์ฐ์ง ๋ชปํ๋ ์ด์ ๋ฐ์
-
์ ์ด๋ฐ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋๊ฐ?
๊ฐ์ ์๋ฒ์ด๊ธฐ์ ์น, ์ฑํ ๋์ค ํ๋๋ง ๋ฌธ์ ๊ฐ ์๊ฒจ๋ ๋ ๋ค ๋ฌธ์ ๊ฐ ์๊ฒจ๋ฒ๋ฆฐ๋ค.
-
์ด๋ป๊ฒ ํด๊ฒฐํ๋๊ฐ?
์น์๋ฒ๋ฅผ t3a.small๋ก ๋ฐฐํฌํ๊ธฐ์ ํ๋ฆฌํฐ์ด์ธ t2.micro๋ฅผ ์ธ ์ ์์ด EC2 ํ๋ ๋ ์์ฑํ์ฌ ๋ฐฐํฌํ์๊ณ , ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๋ถ๋ฆฌํ์ฌ ์น์๋ฒ์ ์ด๋ค ๋ฌธ์ ๊ฐ ์๊ฒจ๋ ์ฑํ ์๋ฒ๋ ๋ฌธ์ ์์ด ๋์
-
์ด๋ค ๋ฌธ์ ์ ์ ๊ฒช์๋๊ฐ?
์ด๋ฉ์ผ & ํด๋ํฐ ์ธ์ฆ์ ๋ณธ ์๋ฒ์ ๋์ง์๊ณ ๋ฐ๋ก
AWS API Gateway - AWS Lambda๋ก ๋นผ๋ ์ํ์์ ๋๊ตฐ๊ฐ ์์ฒญ์ ์ ์์ ์ผ๋ก ๋ฌด์ ํ์ผ๋ก ๋ณด๋ด๋ฉด ๊ทธ๋๋ก ์๊ธ ํญํ์ ๋ง๋ ์ด์๊ฐ ์๊น -
์ ์ด๋ฐ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋๊ฐ?
์ฐ์ ํด๋ํฐ ์ธ์ฆ ์์ฒด๊ฐ ์ ๋ฃ ์๋น์ค๊ณ Lambda๋ ์ด ๋งํผ ๋ด๋ ์ ๋ฃ ์๋น์ค์ด๊ณ ๋ฐ๋ก ๊ถํ ์ค์ ์ ํ์ง์์ ์์ ์๋ฌด๋ ์์ฒญ์ ๋ณด๋ผ ์ ์๋ ์ํฉ
-
์ด๋ป๊ฒ ํด๊ฒฐํ๋๊ฐ?
Express-Rate-Limit ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํด IP ๋น ์์ฒญ์ ์ ํ, AWS API Gateway์ ์ค์ ์ ํตํด ๋ฉ์๋ ์ ํ, API KEY ์ค์ ์ ํตํด ์ด ์ฌ์ฉ๋ ์ ํ, API KEY๋ฅผ ๋ณด์์ ์ธ ์ด์ ๋ก ์ฌ์ฉํ๋ ๊ฒ์ ์ถ์ฒํ์ง์๊ธฐ์ ๋ฐ๋ก Lambda Authorizer ์ค์ ์ ํตํด ์์ฒญ ์ JWT ํ ํฐ์ ์์ฑํด ๊ฐ์ด ํค๋์ ๋ด์ API Gateway๋ก ์์ฒญ์ ๋ณด๋ด๊ณ ์ ํจํ๋ฉด allow, ์ ํจํ์ง์์ผ๋ฉด deny๋ฅผ ๋ฐํํด ์๋ฌ๋ฅผ ๋์ฐ๋ ๋ฐฉ์์ผ๋ก ๊ตฌ์ฑํ์๋ค.
-
์ด๋ค ๋ฌธ์ ์ ์ ๊ฒช์๋๊ฐ?
- ๋ก๊น & ๋ชจ๋ํฐ๋ง์ ๋ฐฐํฌ์๋ง ๋ณผ ์ ์๊ณ , ๋ค๋ฅธ ํ์๋ค์ ๋ณด์ง ๋ชป ํ๋ ๋ฌธ์
AWS Cloud Watch๋ฅผ ํตํด ๋ก๊น & ๋ชจ๋ํฐ๋ง์ ๊ตฌ์ฑํ์ง๋ง, ๊ฐ๋ ์ฑ์ด ๋จ์ด์ง๋ ์ํฉ
-
์ ์ด๋ฐ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋๊ฐ?
๋ฐ๋ก AWS ์กฐ์ง์ ๋ง๋ค์ด ๋ฐฐํฌํ๋ ๊ฒ์ด ์๋ ๊ฐ์ธ์ด ๋ฐฐํฌํ์ฌ ๋ฐฐํฌ์๋ง ๋ณผ ์ ์์ด์ ์๊ธฐ๋ ๋ฌธ์
-
์ด๋ป๊ฒ ํด๊ฒฐํ๋๊ฐ?
์๊ฐํ ํด์ธ Grafana๋ฅผ ์ค์นํ์ฌ EC2 ์๋ฒ์ ๋๋ฆฌ๊ณ , ํด๋น EC2 IP + 3000 ํฌํธ ๋ฒํธ๋ฅผ ์๋ ค์ฃผ์๊ณ ํ์๋ค๋ง ๋ณผ ์ ์์ด์ผํ๊ธฐ์ EC2์ ๋ณด์๊ทธ๋ฃน์ ์ธ๋ฐ์ด๋ ๊ท์น์ผ๋ก ํด๊ฒฐ
-
์ด๋ค ๋ฌธ์ ์ ์ ๊ฒช์๋๊ฐ?
๊ด๋ฆฌ์์ ์ ์ ๊ฐ 1๋1๋ก ์๋ด์ ํด์ฃผ๋ ์์คํ ์ด๋ฉฐ, ๊ด๋ฆฌ์๋ ์ ์ ๊ฐ ์๋ด ์์ฒญํ๋ ๊ฒ์ ์๋์ผ๋ก ํ์ธํด์ผ ์ฆ๊ฐ์ ์ธ ์๋ด์ด ๊ฐ๋ฅํ๊ธฐ์ ๋นํจ์จ์ ์
-
์ ์ด๋ฐ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋๊ฐ?
๋ฐ๋ก ์๋ ๊ธฐ๋ฅ์ ๋ง๋ค์ง ์์๊ณ , ์์ผ์ผ๋ก ์นํ์ด์ง์์ ์๋ ๊ธฐ๋ฅ์ ๋ง๋ค ์ ์์ผ๋ ์นํ์ด์ง๋ฅผ ์ผ๋์ง์๊ฑฐ๋ ์๋ฆฌ์ ์์ผ๋ฉด ๋ฌด์ฉ์ง๋ฌผ์
-
์ด๋ป๊ฒ ํด๊ฒฐํ๋๊ฐ?
MongoDB Atlas์ ํธ๋ฆฌ๊ฑฐ ๊ธฐ๋ฅ์ ํ์ฉํด ์ ์ ๊ฐ ์๋ด ์์ฒญ ์ Room ํ ์ด๋ธ์ Insert๊ฐ ๋๊ณ ํธ๋ฆฌ๊ฑฐ์ ์ํด AWS Event Bridge๋ก ์ด๋ฒคํธ๊ฐ ์์ฑ, ์์ฑ๋ ์ด๋ฒคํธ๋ฅผ AWS Lambda ํธ๋ฆฌ๊ฑฐ๋ก ์ด์ด์ Slack WebHook์ ํตํด ์๋ฆผ์ด ์ธ๋ ค ์นํ์ด์ง๋ฅผ ๋ณด๊ณ ์์ง์๋๋ผ๋, ๋ชจ๋ฐ์ผ๋ก๋ ํ์ธ์ด ๊ฐ๋ฅํ๊ฒ ๊ตฌ์ฑํ์๋ค.
-
์ด๋ค ๋ฌธ์ ์ ์ ๊ฒช์๋๊ฐ?
JWT Token์ ์ด๋ค ๋ฐฉ์์ผ๋ก ์ฌ์ฉํด์ผํ๋ ๊ฒ์ ๋ํ ์ด์ ๋ฐ์
-
์ ์ด๋ฐ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋๊ฐ?
Access Token๊ณผ Refresh Token ๋ ๋ค ์ฌ์ฉํ๊ณ ์๋๋ฐ, ์ฌ์ค์ Access Token์ ์ญํ ์ ์ ๋๋ก ํ๋ ๊ฒ ๊ฐ์ง ์์ ๋ฌธ์ ๊ฐ ๋ฐ์
-
์ด๋ป๊ฒ ํด๊ฒฐํ๋๊ฐ?
Token์ ํ๋๋ง ์ฌ์ฉํ ๊ฒฝ์ฐ, ์ 3์์๊ฒ ํ์ทจ ๋นํ์ ์์ ๋ณด์์ ์ทจ์ฝํ๋ค. ์ ํจ๊ธฐ๊ฐ์ด ์งง์ Token์ผ ๊ฒฝ์ฐ, ๊ทธ๋งํผ ์ฌ์ฉ์๋ ๋ก๊ทธ์ธ์ ์์ฃผ ํด์ ์๋ก์ด Token์ ๋ฐ๊ธ ๋ฐ์์ผ ํ๊ธฐ ๋๋ฌธ์ ๋ถํธํ๊ณ ๋ก๊ทธ์ธ์ ์๋ํ ๋๋ง๋ค DB์ ์๋ ์ ๋ณด๋ฅผ ๊ณ์ํด์ ๋ถ๋ฌ์์ผ ํ๊ธฐ ๋๋ฌธ์ ์ด๋ ์๋ฒ์ ๋ถํ๊ฐ ๊ฐ๊ฒ ๋๋ค. ๋ฐ๋๋ก Token์ ์ ํจ๊ธฐ๊ฐ์ ๋๋ฆฐ๋ค๋ฉด Token์ด ํ์ทจ ๋นํ์ ๊ฒฝ์ฐ, JWT๋ ๋ฐ๊ธํ ํ ์ญ์ ๊ฐ ๋ถ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ Token์ ํ๋ํ ์ฌ๋์ ๋๊ตฌ๋ Token์ ๊ธด ์ ํจ๊ธฐ๊ฐ๋์ ๊ถํ ์ ๊ทผ์ด ๊ฐ๋ฅํด ์ด๋ ๋ณด์์ ๋์ฑ ์ทจ์ฝํด์ง๊ฒ ๋๋ค. ๊ทธ๋ฌ๋ฏ๋ก Refresh Token์ ์ ํจ๊ธฐ๊ฐ์ ๊ธธ๊ฒ, Access Token์ ์ ํจ๊ธฐ๊ฐ์ ์งง๊ฒ ์ค์ ํ๊ณ , Access Token์ด ๋ง๋ฃ๋ ๋๋ง๋ค ์ฌ๋ฐ๊ธํด์ค์ผ๋ก์จ ๋ณด์์ ๋์ฑ ๊ฐํํ ์ ์๊ณ , ์ฌ์ฉ์์ ๋ถํธํจ๋ ์ค์ผ ์ ์๋ค๊ณ ํ๋จํ์ฌ Access Token๊ณผ Refresh Token ๋ ๋ค ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ผ๋ก ํด๊ฒฐ
- ๋ณ์ : lower case camel case
- function: camel case, ๋์ฌ+๋ช ์ฌ
- commit convention
- feat : ์๋ก์ด ๊ธฐ๋ฅ ์ถ๊ฐ
- fix : ๋ฒ๊ทธ ์์
- edit : ๊ธฐ๋ฅ ์์
- docs : ๋ฌธ์ ์์
- style : ์ฝ๋ ํฌ๋งทํ , ์ธ๋ฏธ์ฝ๋ก ๋๋ฝ, ์ฝ๋ ๋ณ๊ฒฝ์ด ์๋ ๊ฒฝ์ฐ
- refactor : ์ฝ๋ ๋ฆฌํฉํ ๋ง
- test : ํ ์คํธ ์ฝ๋, ๋ฆฌํฉํ ๋ง ํ ์คํธ ์ฝ๋ ์ถ๊ฐ
- chore : ๋น๋ ์ ๋ฌด ์์ , ํจํค์ง ๋งค๋์ ์์
- merge: pull ๋ฐ์ ํ ๋ฐ๋ก ํธ์๋ฅผ ํด์ผ๋ ๊ฒฝ์ฐ
- fire: ์ฝ๋ ์ ๋ฆฌ
- mig: migration
- ์ ๋ชฉ์ 50์ ๋ฏธ๋ง, ๋ฌธ์ฅ์ ๋์ ๋ง์นจํ ๋ฃ์ง ์์. ๊ณผ๊ฑฐ ์์ ์ฌ์ฉํ์ง ์๊ณ , ๋ช ๋ น์ด๋ก ์์ฑํ๋๋ก ํจ.
- ์ ๋ชฉ ์ธ์ ์ถ๊ฐ์ ์ผ๋ก ์ ๋ณด๋ฅผ ์ ๋ฌํ๊ณ ์ถ์ ๊ฒฝ์ฐ ๋ณธ๋ฌธ์ ์ถ๊ฐ ์ ๋ณด ๊ธฐ์
์์ : [feat] comment router CRUD ๊ธฐ๋ฅ ์ถ๊ฐ : ๋ณธ์ธ ์ด๋ฆ
- ๊ฐ ๊ธฐ๋ฅ ๋ธ๋์น์์ ์์
ํ push โ> develop ๋ธ๋์น์ merge๋ pull requests๋ฅผ ํตํด์ ํ๊ธฐ.
- ๋ชจ๋ pull requests๋ ํ์๋ค์ ํ์ธ ํ merge
- ์ด์๊ฐ ์๊ธธ ์ issue ํญ ํ์ฉ






