ํ๋ก์ ํธ ์งํ ๊ธฐ๊ฐ
2024.01.08 ~ 2024.02.16 (6์ฃผ)
์ด ์ธ์
6๋ช
(Backend 4๋ช
/ Frontend 2๋ช
)
ํ๋ก์ ํธ ์๊ฐ
'๋ณ์๋ด๋ค'๋ ์ฌ์ฉ์๊ฐ ์์ ์ ์ด์ผ๊ธฐ๋ฅผ ๋ณ์๋ฆฌ๋ก ๋ง๋ค์ด๋๊ฐ๋ ๊ณผ์ ์ ์ง์คํ๊ฒ ํ์ฌ, ์์ ์ ์ถ์ ๋์ฑ ์ถฉ์คํ๊ฒ ์ด์๊ฐ๋ ๊ธฐํ๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ฌ์ฉ์๋ ์์ ์ ์ฌ์ง์ ์ ํํ๊ณ , ๊ทธ์ ๋ํ ์ค๋ช
๊ณผ ํ๊ทธ๋ฅผ ๋ด์ ํ๋์ '๋ณ'์ ๋ง๋ค์ด๋
๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ฐ '๋ณ'๋ค์ ๋ชจ์ ์์ ๋ง์ '๋ณ์๋ฆฌ'๋ฅผ ์ฐฝ์กฐํ๋ฉฐ, ๊ทธ๊ฒ์ ์์ ๋ง์ '๋ฐคํ๋'์ ๋ด์๋ ์ ์์ต๋๋ค.
์์ ์ ๋ฐคํ๋์์ ์ ์๋ ๋ณ์๋ฆฌ๋ค์ ํตํด ์์ ์ ์ถ์ต์ ๋์๋ณด๊ณ , ๊ทธ ์ด์ผ๊ธฐ๋ฅผ ๋ค๋ฅธ ์ฌ๋๋ค์๊ฒ ๊ณต์ ํจ์ผ๋ก์จ ์ถ์ ๋์ฑ ํ์๋กญ๊ฒ ๋ง๋ค ์ ์์ต๋๋ค. '๋ณ์ ๋ด๋ค'๋ ๋จ์ํ ์ฌ์ง์ ๊ณต์ ํ๋ ๊ฒ์ด ์๋, ์์ ์ ์ด์ผ๊ธฐ๋ฅผ ํตํด ์์ ๋ง์ ๋ฐคํ๋์ ๋ง๋ค์ด๊ฐ๋ ๊ณผ์ ์ ์ ๊ณตํจ์ผ๋ก์จ ์ฌ์ฉ์์๊ฒ ์๋ก์ด ๊ฒฝํ์ ์ ์ฌํ๋ ์๋น์ค์
๋๋ค.
๐ธ ์ฃผ์ ๊ธฐ์
Backend
โข
Spring Boot, Spring Data JPA
โข
MariaDB, Redis
โข
Swagger, MockMvc
Frontend
โข
React, React Router
โข
Three.js
Infra
โข
AWS EC2
๐ธ ๋ด๋น ์ญํ
Backend
โข
ERD ์ค๊ณ ๋ฐ API ๋ช
์ธ์ ์์ฑ
โข
Swagger๋ฅผ ํตํ API ๋ฌธ์ํ ๋ฐ ์๊ฐํ
โข
๋๊ธ ๋ฐ ๋๋๊ธ ๊ธฐ๋ฅ ์ ์ฒด ๊ตฌํ ๋ฐ DB ๊ด๋ฆฌ
โข
MockMvc๋ฅผ ํ์ฉํ ํตํฉ ํ
์คํธ ์ฝ๋ ์์ฑ
Frontend
โข
React๋ฅผ ํ์ฉํ ํผ๋ ๊ฒ์ ํ์ด์ง ๋ฐ ์ฌ์ฉ์ ์ค์ ํ์ด์ง ๊ฐ๋ฐ
๐ธ ERD
๐ธ ์์คํ ์ํคํ ์ณ
๐ธ ํธ๋ฌ๋ธ ์ํ ๋ฐ ๊ณ ๋ฏผ
๋ฌธ์ 1: ๋๋๊ธ(N:M ๋ฌดํ ์ฐธ์กฐ) ๋ฌธ์
โข
๋ฌธ์
: ๋๋๊ธ ๊ธฐ๋ฅ์ ๊ตฌํํ๋ ๊ณผ์ ์์ N:M ๊ด๊ณ๋ก ์ธํด ๋ฌดํ ์ฐธ์กฐ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค.
โข
์์ธ
: ๋๋๊ธ์ด ๋ถ๋ชจ ๋๊ธ์ ์ฐธ์กฐํ๊ณ , ๋ถ๋ชจ ๋๊ธ์ด ๋ค์ ์์ ๋๊ธ์ ์ฐธ์กฐํ๋ ์ํ ์ฐธ์กฐ๊ฐ ๋ฐ์ํ๋ฉฐ ๋ฌดํ ๋ฃจํ์ ๋น ์ง ์ํ์ด ์์์ต๋๋ค.
โข
ํด๊ฒฐ
: ์ํฐํฐ ์ค๊ณ ์ ์ง๋ ฌํ ๋ฐฉ์์ ์์ ํ๊ณ , @JsonManagedReference์ @JsonBackReference ์ด๋
ธํ
์ด์
์ ์ ์ฉํ์ฌ ์ง๋ ฌํ ๊ณผ์ ์ ๋ช
ํํ ๊ตฌ๋ถํ์ต๋๋ค. ์ด๋ฅผ ํตํด ๋ฌดํ ์ฐธ์กฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ณ ์์ ํ ๋๋๊ธ ๊ธฐ๋ฅ์ ๊ตฌํํ ์ ์์์ต๋๋ค.
๐ธ ํ๋ก์ ํธ ๋ฆฌ๋ทฐ
์ด๋ฒ ํ๋ก์ ํธ์์๋ Java์ Spring Boot๋ฅผ ์ฒ์์ผ๋ก ๋ค๋ฃจ๋ฉด์ ๊ธฐ๋ณธ๊ธฐ๋ฅผ ๋ค์ง ์ ์์์ต๋๋ค. ์ฃผ๋ง ๋์ ์ถ๋ ฅ๋ฌธ, ๋ฐ๋ณต๋ฌธ, ์ ๋ค๋ฆญ ๋ฑ Java์ ํต์ฌ ๋ฌธ๋ฒ์ ๋น ๋ฅด๊ฒ ํ์ตํ๊ณ , ์ดํ Spring Boot์ MVC ํจํด์ Django์ MTV ํจํด๊ณผ ๋น๊ตํด๊ฐ๋ฉฐ ์์ฐ์ค๋ฝ๊ฒ ์ตํ ์ ์์์ต๋๋ค.
์ผ๋ฐ ์์ฑ์ ๋์ ์ ์ ํฉํ ๋ฆฌ ๋ฉ์๋๋ฅผ ์ ์ฉํ์ฌ ๊ฐ์ฒด ์์ฑ ํจํด์ ํ์ตํ๊ณ , ์ ์ง๋ณด์์ฑ๊ณผ ๊ฐ๋
์ฑ์ ๋์ด๋ ์ค๊ณ ๋ฐฉ์์ ๋ํด ๊ณ ๋ฏผํ ์ ์์์ต๋๋ค. ๋ํ ๋๊ธ๊ณผ ๋๋๊ธ ๊ธฐ๋ฅ์ ๊ตฌํํ๋ฉด์ N:M ๊ด๊ณ ์ค๊ณ์ ์ํ ์ฐธ์กฐ ๋ฌธ์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ค์ตํ๋ฉฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค๊ณ์ ๋ํ ์ดํด๋ฅผ ๋์์ต๋๋ค.
MockMvc๋ฅผ ํ์ฉํด ํตํฉ ํ
์คํธ ์ฝ๋๋ฅผ ์์ฑํ๋ ๊ณผ์ ์์ ํ
์คํธ์ ์ค์์ฑ์ ์ฒ์์ผ๋ก ์ฒด๊ฐํ๊ณ , API ํ์ง ํฅ์์ ์ํด ์ฌ์ ์ ๊ฒ์ฆํ๊ณ ํ์ธํ๋ ์ต๊ด์ ๋ค์ด๊ฒ ๋์์ต๋๋ค.
๋น์ ๊ฐ๋ฐ์ ๋ํ ๋ฐฐ๊ฒฝ์ง์์ด ๋ถ์กฑํด ๊ธฐ๋ฅ ๊ตฌํ์ ์ง์คํ ๋๋จธ์ง ์ธํ๋ผ, ๋์ฉ๋ ์ฒ๋ฆฌ, Redis์ ๊ฐ์ ์ฑ๋ฅ ์ต์ ํ ์์๊น์ง ๊น์ด ๊ณ ๋ฏผํ์ง ๋ชปํ๋ ์ ์ด ์์ฌ์ ์ต๋๋ค. ๋ํ ์ฌ์ฉ์ ๊ฒฝํ(UX)๊ณผ ์ด์ ํจ์จ์ฑ์ ์ด๋ฐ๋ถํฐ ๊ณ ๋ คํ์ง ๋ชปํด ์์ฑ๋ ๋์ ๊ฒฐ๊ณผ๋ฌผ์ ๋ง๋ค๊ธฐ์๋ ๋ถ์กฑํจ์ด ์์์ต๋๋ค.
ํ์ง๋ง ์ด๋ฒ ํ๋ก์ ํธ๋ฅผ ํตํด ๋จ์ํ ๊ธฐ๋ฅ ๊ตฌํ์ ๋์ด, ๋ค์ํ ๊ธฐ์ ์ ๊น์ด๋ฅผ ๊ณ ๋ฏผํ๊ณ ์ฑ๋ฅ๊ณผ ์ฌ์ฉ์ ๊ฒฝํ๊น์ง ๊ณ ๋ คํด์ผ ํ๋ค๋ ๊ตํ์ ์ป์์ต๋๋ค. ์ดํ ํ๋ก์ ํธ๋ถํฐ๋ ๋ณด๋ค ๋์ ์์ผ๋ฅผ ๊ฐ์ง๊ณ ๊ฐ๋ฐ์ ์ํ๊ณ ์ ๋ค์งํ๊ฒ ๋์์ต๋๋ค.