


10๋ง๊ฑด์ ๋์ ์ฃผ๋ฌธ์์๋ ์ฒด๊ฒฐ์ด ์งํ๋๋ ๋ชจ์ต

- ์ฒ์ ํด๋ณด๋ ์ ์ ๋ค๋ ์ฝ๊ฒ ์ฐธ์ฌ๊ฐ ๊ฐ๋ฅํ ๋ชจ์ ์ฃผ์ ํฌ์ ์๋น์ค
- ๋์ฉ๋ ํธ๋ํฝ์์๋ ์์ ํ๊ฒ ์ฒด๊ฒฐ์ด ์งํ๋๋ ์๋ฒ
- ์ฃผ๋ฌธ์ ์์๊ฐ ๋ณด์ฅ๋๋ ๋ฉ์์ง ์ฒด๊ฒฐ(๋์์ฑ ์ ์ด)
- ์ค์๊ฐ ๋ชจ๋ํฐ๋ง์ผ๋ก ์๋ฒ์ ์ํ ํ์ธ ๋ฐ ์๋ฒ ์ด์ ์ ์ฌ๋์ผ๋ก ์๋
๊ตฌ๋ถ | ๋งํฌ |
STOCKING | |
![]() |
FE Github |
![]() |
BE Github |
๋ธ๋ก์์ด | |
![]() |
๋ฐํ ์์ |
![]() |
์๊ฐ ์์ |
๐๋ก๊ทธ์ธ & ํ์๊ฐ์
๐๊ฒ์ ์์คํ
- 12๋ถ ๋ง๋ค ๊ฒ์ ์์ ๊ฒ์์ ์์์ ์ฑํ ์์ ์๋ ค์ฃผ๋ฉฐ ๊ฐ์ข ์ด๋ฒคํธ์ ์ ๋ณด๋ฅผ ๋ณด์ฌ์ค
- ์ด๋ฒคํธ๊ฐ ํธ์ฌ์ธ์ง ์ ์ฌ์ธ์ง์ ๋ฐ๋ผ ๋๋ฏธ์ ์ฃผ๋ฌธ์ด ๋ฌ๋ผ์ง โ ๋ณด๋ค ์ค๊ฐ๋๋ ๋ชจ์ ์ฃผ์์ด ๊ฐ๋ฅ
- ์์ฅ๊ฐ/์ง์ ๊ฐ, ๋งค์/๋งค๋ ์ฃผ๋ฌธ์ ์์ฑ ๋ฐ ์ฃผ๋ฌธ ์ ์ , ์ญ์ ๊ฐ๋ฅ
- ์ข ๋ชฉ๋ณ/ ๋งค์/๋งค๋, ์ต์ ์/ ์ค๋๋์๊ณผ ๊ฐ์ด ์ํ๋ ์กฐ๊ฑด์ผ๋ก ์ฃผ๋ฌธ ์กฐํ ๊ฐ๋ฅ
- ์ฐจํธ์ ํธ๊ฐ์ฐฝ์ ์ด์ฉํด ์๊ฐ์ ์ผ๋ก ์ฃผ์์ ํ๋ฆ ํ์ ๊ฐ๋ฅ
- ๊ฒ์์ด ์งํ๋๋ ๋์ ๊ฐ์ฅ ๋ง์ ์์ต๋ฅ ์ ๋ธ ์ฌ๋์ด ์ฐ์น

๐๋ญํฌ ์์คํ
๐์ฑํ ์์คํ
์ญํ | ์ด๋ฆ | ๋ด๋น | GitHub | |
---|---|---|---|---|
ํ์ฅ | ์ ์์ด | BE/FE | [email protected] | soijeongg |
ํ์ | ์กฐ์ฑํ | BE/FE | [email protected] | jovid18 |
ํ์ | ์ต์คํ | BE/FE | [email protected] | norwegianwood97 |
ํ์ | ์คํ์ | BE/FE | [email protected] | nyeongsik13 |
์ฌ์ฉ ๊ธฐ์ | ๊ธฐ์ ์ค๋ช |
---|---|
Node.JS | JavaScript๋ฅผ ์ด์ฉํ๋ ๊ฐ์ฅ ๋์ค์ ์ธ ํ๋ ์์ํฌ์ธ Node.JS๋ฅผ ์ฌ์ฉํ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค. |
MySQL | MySQL์ ์ฌ์ฉ์๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฃจ์ ์ ๋ฌด๋ฃ๋ก ๊ฐ๋ฐํ๊ณ ๋ฐฐํฌํ ์ ์์ผ๋ฉฐ ACID ๊ท์ฝ์ ์ค์ํด ๋์ ์ ๋ขฐ์ฑ๊ณผ ์์ ์ฑ์ ๋ณด์ฅํ๊ณ , ๋ํ ์น ์ ํ๋ฆฌ์ผ์ด์ ์์ ๋น ๋ฅธ ์ฝ๊ธฐ์ ์ฐ๊ธฐ ์๋ ๋ฑ ๋ง์ ์ฅ์ ์ ๊ฐ์ ธ์ ์ฌ์ฉํ์์ต๋๋ค. |
Redis | Redis๋ ์ธ๋ฉ๋ชจ๋ฆฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ์๋๊ฐ ๋์คํฌ ๊ธฐ๋ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ณด๋ค ํจ์ฌ ๋น ๋ฅด๊ธฐ ๋๋ฌธ์ ๋ฆฌ์์ค ์๋ชจ์ DB ์๋ฒ์ ๋ถํ๋ฅผ ์ค์ด๊ธฐ ์ํด ์ฌ์ฉํ์ต๋๋ค. ์ด๋ฅผ ํตํด ์ฃผ๋ฌธ ์ฒ๋ฆฌ ์๋๋ฅผ ๋ํญ ๊ฐ์ ํ๊ณ ์ ๋ฐ์ ์ธ ์์คํ ์ฑ๋ฅ์ ํฅ์์ํฌ ์ ์์์ต๋๋ค. |
Session vs JWT | ์ธ์ ์ ๊ฒฝ์ฐ์๋ ๋ชจ๋ ์ธ์ฆ ์ ๋ณด๋ฅผ ์ธ์ ์์ ๊ด๋ฆฌํ๊ธฐ ๋๋ฌธ์ ๋ณด์ ์ธก๋ฉด์์ ์ ๋ฆฌํ๊ณ , ๋ง์ฝ ์ธ์ ์ด ํ์ทจ๊ฐ ๋์ด๋ ์๋ฒ์์ ํด๋น ์ธ์ ์ ๋ฌดํจํํ๋ฉด ๋์ง๋ง ํ ํฐ์๋ ์ ๋ณด๊ฐ ๋ค ๋ค์ด์์ด์ ํด๋น ํ ํฐ์ ๋ฌดํจํํ๋๋ผ๋ ์ ๋ณด ์ ์ถ์ ๋ง์ ์ ์์ต๋๋ค. ์ด์ ๋ฐ๋ผ ๋ณด์์ฑ์ด ๋ ๋ฐ์ด๋ ์ธ์ ์ ์ฐ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค. |
PRISMA | ํ๋ฆฌ์ฆ๋ง๋ ๊ฐ๋จํ ๊ตฌ๋ฌธ์ ์ฌ์ฉํด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ํธ์์ฉํ๋ ORM์ด๋ฉฐ ๋ค์ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋๋ผ์ด๋ฒ๋ฅผ ์ง์ํ์ฌ ์ฌ์ฉํ์์ต๋๋ค. |
ioredis vs redis | ioredis ํจํค์ง๋ redis ํจํค์ง์ ๋นํด ๋๊ท๋ชจ ๋ฐ ๋ณต์กํ ํ๊ฒฝ์์ ๋ ๋ง์ ๊ธฐ๋ฅ๊ณผ ์ ์ฐ์ฑ์ ์ ๊ณตํ์ฌ ์ฑํํ์์ต๋๋ค. |
passport | Passport๋ ๋ค์ํ ์ธ์ฆ ์ ๋ต์ ์ง์ํ์ฌ ๋ก์ปฌ ๋ก๊ทธ์ธ ์ธ์๋ Google, Kakao ๋ฑ ๋ค์ํ ํ๋ซํผ์ ์ธ์ฆ์ ํ์ฉํ ์ ์์ต๋๋ค. ๋ํ ๋ณต์กํ ์ธ์ฆ ๋ก์ง์ ๊ฐ๋จํ๊ฒ ๊ตฌํํ ์ ์์ด ๊ฐ๋ฐ ํธ์์ฑ๊ณผ ์์ ๋ก๊ทธ์ธ ๊ตฌํ์ ์ํด ์ฌ์ฉํ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค. |
Argon2 vs bcrypt | Argon2๋ bcrypt ๋ณด๋ค ์ต๊ทผ์ ๊ฐ๋ฐ๋์๊ณ , ํ์ฌ๊น์ง ๊ฐ๋ฐ๋ ์ํธํ ํจ์ ์ค ๊ฐ์ฅ ๊ฐ๋ ฅํ ๋ณด์์ฑ์ ์ ๊ณตํ์ฌ Argon2๋ฅผ ์ฑํํ์์ต๋๋ค. |
WebSocket vs socket.io | Socket.io์ ๋นํด ์๋์ ์ผ๋ก ๊ฒฝ๋ํ๋์ด์๋ WebSocket์ ์ ํํ์ฌ ๋ฉ๋ชจ๋ฆฌ์ CPU์ ์ฌ์ฉ์ ์ค์์ต๋๋ค. |
Jest | Jest๋ ์ค์ ์ด ๊ฐํธํ๊ณ , ์คํ ์๋๊ฐ ๋น ๋ฅด๋ฉฐ ์ค๋ ์ท ํ ์คํ ์ ํตํด ๋ณ๊ฒฝ์ฌํญ์ ์ฝ๊ฒ ํ์ธํ ์ ์์ต๋๋ค. ๋ํ ๋จ์ ํ ์คํธ์ ํตํฉ ํ ์คํธ์ ์ ํฉํ ๋ค์ํ ๋๊ตฌ๋ฅผ ์ ๊ณตํ๊ธฐ ๋๋ฌธ์ ์ฌ์ฉ์ด ํธ๋ฆฌํ์ฌ ํ ์คํธ ํจํค์ง๋ก jest๋ฅผ ์ฑํํ์์ต๋๋ค. |
Vercel | React ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ฝ๊ฒ ๋ฐฐํฌํ ์ ์๋ ์ต์ ํ๋ ํ๊ฒฝ์ ์ ๊ณตํ๋ฉฐ GitHub์ ๊ฐ์ด ์์ค ์ฝ๋ ์ ์ฅ์์ ํตํฉ์ ํตํด ์ฝ๋ ์ปค๋ฐ์ด ์ด๋ฌ์ด์ง ๋๋ง๋ค ์๋์ผ๋ก ๋น๋์ ๋ฐฐํฌ๊ฐ ์คํ๋๊ธฐ์ ๋ฐฐํฌ ํ๋ก์ธ์ค์ ๋ํ ๊ด๋ฆฌ ๋ถ๋ด์ ์ค์ด๊ณ , ์ฝ๋ ๋ณ๊ฒฝ ์ฌํญ์ ์ ์ํ๊ฒ ์ ์ฉํ ์ ์์ด ์ฌ์ฉํ์ต๋๋ค. |
Github Actions | GitHub Actions๋ ์ฌ์ฉ์ด ์ฝ๊ณ ๋ณต์กํ ์ ์ฐจ ์์ด GitHub๊ณผ ์ํํ๊ฒ ํตํฉ๋ ์ ์๋ ์ฅ์ ์ด ์์ต๋๋ค. ๋ํ, ๋ฐฐํฌ ๊ณผ์ ์ ๋์์ด ๋๋ ๋ค์ํ ํ ํ๋ฆฟ์ ์ ๊ณตํ์ฌ ํจ์จ์ ์ธ ์ํฌํ๋ก์ฐ๋ฅผ ๊ตฌ์ถํ ์ ์์ด ๋ฐฐํฌ์ Github Actions๋ฅผ ์ฌ์ฉํ์์ต๋๋ค. |
prettier/eslint | ๊ฐ์ ์์ฑํ ์ฝ๋์ ์คํ์ผ์ ์ผ์น์ํค๊ธฐ ์ํด prettier๋ฅผ ์ฌ์ฉํ์ฌ ์ธ๋ฏธ์ฝ๋ก , ์ค ๋ฐ๊ฟ๊ณผ ๊ด๋ จํ์ฌ ์๋์ผ๋ก ์กฐ์ ํ๊ณ ์ ํ์๊ณ , ESLint๋ฅผ ์ด์ฉํด prettier์ ์คํ์ผ์ ๋ง๊ฒ ์ฝ๋ ์คํ์ผ์ ์ผ์น์์ผฐ์ต๋๋ค. |
ALB | ALB๋ฅผ ์ฌ์ฉํจ์ผ๋ก์จ ์ฌ๋ฌ ์๋ฒ์ ๊ฑธ์ณ ํธ๋ํฝ์ ํจ๊ณผ์ ์ผ๋ก ๋ถ์ฐ์ํฌ ์ ์์์ต๋๋ค. ์ด๋ ๊ฐ ์๋ฒ์ ๊ณผ๋ถํ๋ฅผ ๋ฐฉ์งํ๊ณ ์๋ฒ๊ฐ ํธ๋ํฝ์ด ๊ณ ๋ฅด๊ฒ ๋ถ์ฐ๋๋ฉด์ ๊ฐ ์๋ฒ์ ๋ถํ๊ฐ ๊ฒฝ๊ฐ๋ฉ๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก, ์ด๋ ๊ฐ ์๋ฒ์์ ๋ ๋น ๋ฅด๊ณ ํจ์จ์ ์ธ ์ฒ๋ฆฌ๋ฅผ ๊ฐ๋ฅํ๊ฒ ํ์ฌ ์ต์ข ์ฌ์ฉ์ ๊ฒฝํ์ ํฌ๊ฒ ํฅ์์ํฌ ์ ์์ด ์ฌ์ฉํ์์ต๋๋ค. |
Docker | Docker๋ ์ปจํ ์ด๋ํ ๊ธฐ์ ์ ์ฌ์ฉํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํ ํ๊ฒฝ์ ๊ฒฉ๋ฆฌํ๋ฏ๋ก, Amazon EC2 ์ธ์คํด์ค ๋ด์์ ์ง์ ์๋ฒ๋ฅผ ๋ฐฐํฌํ๋ ๊ฒ๊ณผ ๋น๊ตํด ๋ ๋์ ํ๊ฒฝ์ ์ผ๊ด์ฑ๊ณผ ์ด์์ฑ์ ์ ๊ณตํฉ๋๋ค. ๋ํ Docker๋ฅผ ์ฌ์ฉํ๋ฉด CD ๊ณผ์ ์์ ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ๊ณ ,์ด๋ฅผ ๋ฐฐํฌํ๋ ๊ณผ์ ์ด ์ผ๊ด๋๊ฒ ์ด๋ฃจ์ด์ง๋ฏ๋ก, ๋ ๋น ๋ฅด๊ณ ํจ์จ์ ์ธ ๋ฐฐํฌ ํ๋ก์ธ์ค๋ฅผ ๊ตฌ์ถํ ์ ์์์ต๋๋ค. |
ECR vs Docker Hub | CD๋ฅผ ํตํด ๋ฐฐํฌ ํ๋ก์ธ์ค๋ฅผ ์๋ํํ๋ ๊ณผ์ ์์ ๊น ์ก์ ์ ํตํด ์ด๋ฏธ์ง๋ฅผ ๊ธฐ์กด์๋ ๋์ปค ํ๋ธ์ ์ฌ๋ ธ์ผ๋ ๋ณด์์ด ์ฐ๋ ค๋์ด ์ด๋ฏธ์ง ์ ์ฅ์๋ฅผ AWS์ ECR๋ก ๋ณ๊ฒฝํ์์ต๋๋ค. |
ECS | ECS๋ ์์ฝ๊ฒ ECR์ ์ด๋ฏธ์ง๋ฅผ ์ด์ฉํ์ฌ ECS ์ธ์คํด์ค๋ฅผ ์์ฑํด์ฃผ๋ ์ปจํ ์ด๋ ์ค์ผ์คํธ๋ ์ด์ ์๋น์ค๋ก ๋ฌ๋์ปค๋ธ๊ฐ ๋ฎ๊ณ , ์คํ ์ค์ผ์ผ๋ง ๋ฐ ๋ฌด์ค๋จ ๋ฐฐํฌ๊ฐ ์ง์๋๊ธฐ ๋๋ฌธ์ ECS๋ฅผ ์ฑํํ์์ต๋๋ค. |
Kafka vs Redis-Streams | ์ฌ์ฉ์์ ์ฃผ๋ฌธ์ ๋ํด ์์๋ฅผ ์งํค๋ฉฐ ์ฒ๋ฆฌํ๊ธฐ ์ํด ๋ฉ์์งํ ํต์ ์ ์ ํํ์์ต๋๋ค. ์ด์ ๋ฐ๋ผ Kafka์ Redis-Streams์ ์ฌ์ฉ์ ๊ณ ๋ฏผํ๊ณ Kafka๊ฐ ํ์ฅ์ฑ์ด ๋๊ณ ๋๊ท๋ชจ ํธ๋ํฝ์ ์ฒ๋ฆฌํ๋๋ฐ ์ต์ ํ ๋์ด ์์ด Kafka๋ฅผ ์ฑํํ์ฌ ์ฌ์ฉํ์ต๋๋ค. |
Jmeter | Jmeter๋ ์คํ์์ค์ด๋ฉฐ, csv์ ๋ค์ํ ํ ์คํธ ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํด ํ ์คํธ ์์ ์ ๊ฐ์ํ ํ ์ ์๋ ์ฅ์ ์ ๊ฐ์ง๊ณ ์์์ต๋๋ค. ๋ํ ๋ง์ ๋ ํผ๋ฐ์ค๊ฐ ์กด์ฌํด ์์ฝ๊ฒ ์ ์ฉํ ์ ์์๊ธฐ ๋๋ฌธ์ Jmeter๋ฅผ ์ฒดํํด ๋ถํ ํ ์คํธ์ ์ฌ์ฉํ์ต๋๋ค. |
node-exporter | node-exporter๋ ์๋ฒ ์์ค์์ ์์คํ ์ ์ํ๋ฅผ ์์งํฉ๋๋ค node-exporter๋ฅผ ์ฌ์ฉํ๋ฉด ์ง์ ๋งคํธ๋ฆญ์ ์์งํ๋ ์ฝ๋๋ฅผ ์ฐ์ง ์๊ณ ๋ ๊ฐํธํ๊ฒ ์์คํ ์ ๋งคํธ๋ฆญ์ ์์ง ํ ์ ์๊ธฐ ๋๋ฌธ์ node-exporter๋ฅผ ์ฌ์ฉํ์ต๋๋ค. |
Prometheus | ํ๋ก๋ฉํ ์ฐ์ค๋ ์คํ์์ค ๋ชจ๋ํฐ๋ง ๋ฐ ๊ฒฝ๊ณ ๋๊ตฌ๋ก, ์์คํ ๊ณผ ์๋น์ค์ ์ํ๋ฅผ ์ค์๊ฐ์ผ๋ก ๋ชจ๋ํฐ๋งํ๋ ๋ฐ ์ฌ์ฉํ์ต๋๋ค. ํ๋ก๋ฉํ ์ฐ์ค๋ ์์คํ ์ ์ฑ๋ฅ ์งํ๋ฅผ ์ค์๊ฐ์ผ๋ก ์์งํ๊ณ ๋น์นจํฌ์ ์ธ ๋ชจ๋ํฐ๋งํตํด ์๋น์ค๊ฐ ๋ชจ๋ํฐ๋ง ๊ณผ์ ์์ ๋ฐ์ํ ์ ์๋ ์ฑ๋ฅ ์ ํ๋ ์ค๋จ ์์ด ์ง์์ ์ผ๋ก ๋ฐ์ดํฐ ์์ง์ด ๊ฐ๋ฅํฉ๋๋ค. ์ด๋ฌํ ์ฅ์ ๋๋ฌธ์ Prometheus์ ์ ํํ์ฌ ์์คํ ๊ณผ ์๋น์ค์ ์ํ๋ฅผ ์ค์๊ฐ์ผ๋ก ๋ชจ๋ํฐ๋ง ํ์์ต๋๋ค. |
Grafana | Grafana๋ ์คํ์์ค ๋ฐ์ดํฐ์๊ฐํ ํด๋ก์จ ๋ค์ํ ๊ทธ๋ํ, ์ง์ค๋งต๋ฑ์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์๊ฐํ ํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๋ ์ง๊ด์ ์ผ๋ก ์ดํด ํ ์ ์๋ค๋ ์ ๊ณผ ์ฌ๋์ด๋ ๋ฉ์ผ์ ํตํด ์ฌ์ฉ์์๊ฒ ์๋ฆผ์ ๋ณด๋ผ ์ ์๋ค๋ ์ ๋๋ฌธ์ ์ฒดํํด ์ฌ์ฉํ์ต๋๋ค. |
์ ์ ์๋ ๋์ผํ๊ฒ 100๋ช ์ผ๋ก ํ ์คํธํ๊ณ , ๋ณธ ์๋น์ค์ ํต์ฌ์ธ ์ฃผ๋ฌธ ์์ฒญ์ ๋ํ ๋ถํ๋ฅผ ๊ฒ์ฆ
Jmeter๋ฅผ ์ด์ฉํ์ฌ ๊ฐ์์ ์ ์ ๊ฐ 1๋ฒ์ ํ์๊ฐ์ โ 1๋ฒ์ ๋ก๊ทธ์ธโ n๋ฒ์ ์ฃผ๋ฌธ โ 1๋ฒ์ ๋ก๊ทธ์์์ ์์ฒญํ๋ ์คํ์ดํฌ ํ ์คํธ๋ฅผ ์งํ



๐ ์ฑ๋ฅ ๊ฐ์ ๊ฒฐ๊ณผ
- STOCKING์ ์ฒด๊ฒฐ ๋ก์ง: ์ฃผ๋ฌธ ์ ํจ์ฑ ๊ฒ์ฆ โ ์ฃผ๋ฌธ ์์ฑ ๋ฐ ์ญ์ โ ์ฃผ๋ฌธ ๋งค์นญ โ ์ฃผ๋ฌธ ์ฒด๊ฒฐ
- Ver 3.0์ ์ฒด๊ฒฐ์๋ฒ( MySQL, ์ฃผ๋ฌธ ์ ํจ์ฑ ๊ฒ์ฆ โ ์ฃผ๋ฌธ ์์ฑ ๋ฐ ์ญ์ โ ์ฃผ๋ฌธ ๋งค์นญ โ ์ฃผ๋ฌธ ์ฒด๊ฒฐ)
- Ver 4.0์ ๋งค์นญ์๋ฒ( Redis, ์ฃผ๋ฌธ ์ ํจ์ฑ ๊ฒ์ฆ โ ์ฃผ๋ฌธ ์์ฑ ๋ฐ ์ญ์ โ ์ฃผ๋ฌธ ๋งค์นญ) , ์ฒด๊ฒฐ ์๋ฒ (MySQL, ์ฃผ๋ฌธ ์ฒด๊ฒฐ)
- ์ฆ, ver 3.0์ ์ฒด๊ฒฐ ์๋ฒ๋ก๋ถํฐ ์ฒด๊ฒฐ ๊ณผ์ ์ ์ผ๋ถ๋ฅผ Redis๋ฅผ ์ด์ฉํ๋ ๋งค์นญ ์๋ฒ๋ฅผ ๋ถ๋ฆฌํ์ฌ ์ฃผ๋ฌธ ์ฒ๋ฆฌ ์๋ ๊ฐ์
๐ ์ฑ๋ฅ ๊ฐ์ ๊ฒฐ๊ณผ
- ๋จ์ผ ์ฃผ๋ฌธ ์ฒ๋ฆฌ ์๊ฐ: 87.16msโ77.28ms (11.34% ๊ฐ์), 1๋ง๊ฑด์ ๋์ ์ฃผ๋ฌธ ์ด ์ฒ๋ฆฌ์๊ฐ: 796sโ601s (24.5% ๊ฐ์)
โ ๋จ์ผ ์ฃผ๋ฌธ ์ฒ๋ฆฌ ์๊ฐ ๋น๊ต
โ ๋์ ์ฃผ๋ฌธ 10000๊ฑด์ ์ด ์ฒ๋ฆฌ ์๊ฐ ๋น๊ต
- ๋ฌธ์ ์ํฉ
- ๊ธฐ์กด ์ฝ๋์ ๊ฒฝ์ฐ ์ฃผ๋ฌธ ์ฒ๋ฆฌ๋ฅผ ๋คํ ๋ค ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ์ฌ์ฉ์์๊ฒ ์๋ตํ๋ ๋ฐฉ์
- ์ด๋ก ์ธํด ์๋ต์ผ๋ก ์ธํ ์๊ฐ์ด ๋๋ฌด ๊ฑธ๋ฆผ
- ํด๊ฒฐ ๋ฐฉ๋ฒ
- ์ฃผ๋ฌธ ์ฒ๋ฆฌ๋ฅผ ๋๊ธฐํ์ง ์๊ณ , ์ฌ์ฉ์์๊ฒ๋ ์ฃผ๋ฌธ ์ ์์ ๋ํ ์ฑ๊ณต/์คํจ ์ฌ๋ถ๋ฅผ ๋ฐ๋ก ์ ๋ฌ
- ์ดํ ์ฃผ๋ฌธ ์ฒ๋ฆฌ์ ๊ฒฐ๊ณผ๋ ์์ผ ์ฑํ ์ฐฝ์ผ๋ก ๊ณต์ง
postOrder = async (req, res) => {
const { userId } = res.locals.user;
const orderData = req.body;
if (orderData.price) {
orderData.price = 10000 * Math.floor(+orderData.price / 10000);
}
try {
const result = await this.orderService.createOrder(userId, orderData);
return res.json({ message: result });
} catch (error) {
console.log(error.message);
const { message } = error.message ? error : { message: '์ฃผ๋ฌธ ์์ฑ ๋์ค ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค.' };
if (error.message) return res.status(400).json({ message });
}
};
- ๋ฌธ์ ์ํฉ
- ๊ฐ๋ น ์ฌ์ฉ์๊ฐ ํ์ฌ ์์ก์ด 1000๋ง์์ด ์๋ ์ํฉ์์ ํ์ฌ๊ฐ๋ณด๋ค ๋ฎ์ ๊ฐ๊ฒฉ์ผ๋ก ์ง์ ๊ฐ ๋งค์ 100๋ง์ ์ฃผ๋ฌธ์ 20๋ฒ ์ ์ฒญํ๋๋ผ๋ ์ด๋ฅผ ๋ฐฉ์งํ ์ ์์์
- ์ด๋ก ์ธํด, ์ฒด๊ฒฐ๊ณผ์ ์์ ํ์ฌ ์ฌ์ฉ์๊ฐ ์ฒด๊ฒฐ ๋น์ ํ๊ธ ๋๋ ์ฃผ์์ด ์๋์ง ์ฒดํฌ๋ฅผ ํ์ด์ผ ํ๊ณ ์ด๋ก ์ธํด ๋ถํ์ํ ๋ฆฌ์์ค๊ฐ ๋ญ๋น
- ํด๊ฒฐ ๋ฐฉ๋ฒ
- ์ฌ์ฉ์๊ฐ ๊ฐ์ฉ ๊ธ์ก, ๊ฐ์ฉ ์ฃผ์์ ๋์ ํ์ฌ ์์ง ์ฒด๊ฒฐ๋์ง ์์ ์ฃผ๋ฌธ์ด๋ผ๋ ๊ฐ์ฉ ๊ธ์ก/๊ฐ์ฉ ์ฃผ์์ด ๊ฐ์ํ์ฌ ์ฌ์ฉ์์ ํ์ฌ ์ํฉ์ผ๋ก๋ ๋ถ๊ฐ๋ฅํ ์ฃผ๋ฌธ์ ๋ฐฉ์ง
- ERD์ tradableQuantity, tradableQuantity๋ฅผ ๋์ ํ๊ณ ๊ทธ์ ๋ง๊ฒ ์ฒด๊ฒฐ ํจ์๋ฅผ ver 0.0์์ ver 1.0์ผ๋ก ๋ณ๊ฒฝ
- ๋ฌธ์ ์ํฉ
- ๋ฉ์ธ ์๋ฒ์ ์์ผ ์๋ฒ๊ฐ ๊ฐ์ ์ญํ ์ ๊ฒธํจ, ์ด๋ ์ฌ๋ฌ ์ฌ์ฉ์๊ฐ ์ ์ํด ์์ ๋ ๋ฉ์ธ ์๋ฒ์ ๋ถํ๋ฅผ ํค์ฐ๊ฒ ๋จ
- ํด๊ฒฐ ๋ฐฉ๋ฒ
- ๋ฉ์ธ ์๋ฒ๋ก๋ถํฐ ์์ผ ์๋ฒ๋ฅผ ๋ถ๋ฆฌํ์๊ณ , ALB๋ฅผ ์ด์ฉํด ๋ฉ์ธ ์๋ฒ๋ก ๊ฐ๋ ์์ฒญ(/api*)๊ณผ ์์ผ ์๋ฒ๋ก ๊ฐ๋ ์์ฒญ์ (/ws*) ๊ฒฝ๋ก ๊ธฐ๋ฐ ๋ผ์ฐํ ์ฒ๋ฆฌ
- ๋ฌธ์ ์ํฉ
- ver 2.0์์ ์์ผ ์๋ฒ๋ฅผ ๋ถ๋ฆฌํ์์ผ๋, ๋ง์ ์ฒด๊ฒฐ์ด ๋ชฐ๋ ธ์ ๋ CPU์์ API ์์ฒญ๊ณผ ๋ฉ์ธ ์ฒ๋ฆฌ๋ฅผ ๋ ๋ค ๋ด๋นํด์ผ ํ๋ ๋ฌธ์ ๊ฐ ๋ฐ์
- ํด๊ฒฐ ๋ฐฉ๋ฒ
- ์นดํ์นด ๋ฉ์์ง ํ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฉ์ธ ์๋ฒ์์ ์ฒด๊ฒฐ์ ์งํํ์ง ์๊ณ ์ฃผ๋ฌธ์ ๋ด์ฉ์ ์ง๋ ฌํ ํ์ฌ ๋ฉ์์ง๋ก ์ ๋ฌ
- ์ฒด๊ฒฐ ์๋ฒ์์๋ ํด๋น ๋ฉ์์ง๋ฅผ ์ญ์ง๋ ฌํ ํ์ฌ ์ฒด๊ฒฐ์ ์งํ
- ๋ฌธ์ ์ํฉ
- ํด๊ฒฐ ๋ฐฉ๋ฒ
- ๋งค์นญ ์๋ฒ์์ Redis๋ฅผ ์ด์ฉํ์ฌ ์ฃผ๋ฌธ ์ ํจ์ฑ ๊ฒ์ฆ ๋ฐ ๋งค์นญ ์์ ์ ์งํํ๊ณ , ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ฉ์์งํ๋ก ์ฒด๊ฒฐ์๋ฒ์ ์ ๋ฌ ์ฒด๊ฒฐ ์๋ฒ์์ ๋ฐ์ MySQL์ ์ด์ฉํ์ฌ ์ฃผ๋ฌธ์ ์ฒด๊ฒฐ
-
์์ ํจ๊ณผ
- ๋จ์ผ ์ฃผ๋ฌธ ์ฒ๋ฆฌ ์๋ ํฅ์
Redis์ string, hashset, sortedset์ ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ด์ฉํ์ฌ ๋งค์นญ ์๋ฒ์์๋ ์ฒด๊ฒฐ ์๋ฒ์ MySQL DB์ ๊ฐ์ด ์ ๋ณด๋ฅผ ์ ์ฅ

- ๋ฌธ์ ์ํฉ
- ๋ง์ ์ฌ์ฉ์์ API ์์ฒญ์ด ํ๋์ EC2 ์ธ์คํด์ค์์ ์ฒ๋ฆฌ
- ํด๊ฒฐ ๋ฐฉ๋ฒ
- Main ์๋ฒ์์ ๊ฒ์์ ๊ด๋ฆฌํ๋ ํํธ๋ฅผ ๋ถ๋ฆฌํ์ฌ ๊ฒ์ ์๋ฒ๋ฅผ ๋ง๋ค๊ณ Main ์๋ฒ์ EC2 ์ธ์คํด์ค๋ฅผ 3๋๋ก ๋๋ฆผ
- ALB๋ฅผ ํตํด ๋์ ๊ทธ๋ฃน์ ๋ฉ์ธ ์๋ฒ ์ธ์คํด์ค๋ฅผ 3๊ฐ ์ถ๊ฐํ์ฌ ๋ก๋๋ฐธ๋ฐ์ฑ์ ์งํ
- ๋ฌธ์ ์ํฉ
- ์ฌ์ฉ์์ ์์ฒญ์ ๊ด๊ณ ์์ด ๊ณ ์ ๋ EC2 ์ธ์คํด์ค์ ์๊ฐ ๋ณํ์ง ์์ ์์ฒญ์ด ์ ์ ๋์๋ ๋ฆฌ์์ค๊ฐ ๋ญ๋น๋๊ณ , ์์ฒญ์ด ๋ง์ ๋์๋ ์๋ฒ์ ๊ณผ๋ํ ๋ถํ๊ฐ ์ง์ค๋จ
- ํด๊ฒฐ ๋ฐฉ๋ฒ
- ๊ธฐ์กด์ CD ๊ณผ์ ์์ ECR์ ์ด๋ฏธ์ง๋ฅผ ์ ๋ก๋ ํ์๋๋ฐ, ์ด๋ฅผ ์ด์ฉํ์ฌ AWS์์ ์ ๊ณตํ๋ ์ปจํ ์ด๋ ์ค์ผ์คํธ๋ ์ด์ ์๋น์ค์ธ ECS๋ฅผ ์ด์ฉํ์ฌ ๋ฉ์ธ ์๋ฒ์ ์ฆ์ค ๋ฐ ๋ก๋ ๋ฐธ๋ฐ์ฑ, ์คํ ์ค์ผ์ผ๋ง, ๋ฌด์ค๋จ ๋ฐฐํฌ(๋กค๋ง ๋ฐฐํฌ)๋ฅผ ์ ์ฉ
- ๋ง์ผ ํ๋์ ๋ธ๋ก์ปค์ ์ฅ์ ๊ฐ ์๊ฒจ ์ญํ ์ ๋ชปํ๊ฒ ๋๋ค๋ฉด ์๋ฒ ์์ฒด๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ๋จ
- ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์นดํ์นด์ ๋ธ๋ก์ปค๋ฅผ 3๋๋ก ๊ตฌ์ถํ์ฌ ํ๋์ ๋ธ๋ก์ปค์ ์ฅ์ ๊ฐ ์๊ฒผ์๋ ๋ค๋ฅธ ๋ธ๋ก์ปค๋ค์ด ํด๋น ๋ธ๋ก์ปค์ ์ญํ ์ ๋์ ํด ์ฒ๋ฆฌ
- ์์คํ ์ ์ฒด๊ฐ ์ค๋จ๋๋ ๊ฒ์ ๋ฐฉ์งํ๊ณ ์ฅ์ ๊ฐ ๋ฐ์ํ ๋ธ๋ก์ปค ๊ฒฉ๋ฆฌ ๊ฐ๋ฅ

- RDS์ muiti-AZ ๋ฐฐํฌ ์ต์ ์ ์ฌ์ฉํด RDS์ ์๋ฌ์ ๋๋น ๊ฐ๋ฅ
- multil-AZ ๋ฐฐํฌ ์ต์ ์ฌ์ฉ์ RDS๋ ๋ง์คํฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋๊ธฐ์ ์ผ๋ก ๋ณต์ ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ณต์ ๋ณธ์ ๋ค๋ฅธ ๊ฐ์ฉ ์์ญ์ ์์ฑ
- ๋ง์คํฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฅ์ ๋ฐ์์ RDS๊ฐ ์๋์ผ๋ก ๋ณต์ ๋ณธ์ ๋ง์คํฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ์น๊ฒฉํด ๋ง์คํฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋๋ผ๋ ์๋น์ค๋ฅผ ๊ณ์ ์ ๊ณตํจ
- ์นดํ์นด์ ์ค๋ณต ๋ฉ์์ง๊ฐ ๋ค์ด๊ฐ๊ฒ ๋๋ฉด ์ค๋ณต๋ ๋ฉ์์ง๋ก ์ธํด ๋์ผํ ๋ฐ์ดํฐ๋ฅผ ์ฌ๋ฌ๋ฒ ์ฒ๋ฆฌํ๊ฑฐ๋ ์ด๋ฒคํธ ์์๋ฅผ ๋ฌด์ํ๊ฒ ๋จ
- ๋์ผํ ์์ ์ ์ฌ๋ฌ๋ฒ ์ํํด๋ ๊ฒฐ๊ณผ๊ฐ ๋์ผํ๊ฒ ์ ์ง๋๋ ํน์ฑ์ธ ๋ฉฑ๋ฑ์ฑ์ ์ด์ฉํด ์ค๋ณต ๋ฉ์์ง๋ฅผ ๋ฐฉ์ง
์ ์ฒด ๋ชฉ๋ก
Transaction API error
๋ก์ปฌ ๋ฉ์์ง ํ์์ ๋ฐ์ดํฐ๊ฐ ์์ฐจ์ ์ผ๋ก ์ฒ๋ฆฌ๋์ง ์๋ ์๋ฌ
ํ ์คํธ ์ค RDS ์ฐ๊ฒฐ์ด ๋๊ธฐ๋ ์ค๋ฅ
jmeter ๋ก์ปฌ ํ ์คํธ ์ค ๋ฐ์ํ ์ค๋ฅ
์๋ก๊ณ ์นจ์ ํ ๋๋ง๋ค ์ฐ๊ฒฐ๋๋ ํด๋ผ์ด์ธํธ๊ฐ ๋์ด๋๋ ์๋ฌ
๋ก์ปฌ์์ elastic cache ์ ์์ timeout
๋ฉ์ธ/์์ผ ์๋ฒ ๋ถ๋ฆฌ ์ดํ ์์ผ ์ฐ๊ฒฐ์ด ์๋๋ ์๋ฌ
EC2 ์ธ์คํด์ค์์ public IP๋ฅผ ํ๋ ฅ์ IP๋ก ์ฌํ ๋น ํ ์ดํ์ ์ ์์ด ์๋๋ ์ค๋ฅ
EC2์์ ๋ฐฐํฌ๋ ๋ฉ์ธ์๋ฒ๊ฐ ์์ผ์๋ฒ์ ์๋์ผ๋ก ์ฐ๊ฒฐ์ด ์ข ๋ฃ๋๋ ์ค๋ฅ
EC2์์ Jmeter๋ก ํ ์คํธ ์ WARNING์ด ๋จ๋ ์ค๋ฅ
๋ฐฐํฌ ์ดํ ๋ก์ปฌ์์ ์นดํ์นด ์ปจ์๋จธ๊ฐ ๋์ํ์ง ์๋ ์ค๋ฅ
์ฑํ ์ฐฝ ๊ด๋ จ ์ด์
Kafka ๊ด๋ จ ์ด์
์น์์ผ ์ฐ๊ฒฐ ์คํจ