Search

๋ณ„์„๋‹ด๋‹ค

๊ธฐ์ˆ ์Šคํƒ
Java
SpringBoot
React.JS
JPA
Docker
Jenkins
MariaDB
Gerrit
Jira
๊ธฐ๊ฐ„
2024.01~ 2024.02
1 more property

ํ”„๋กœ์ ํŠธ ์ง„ํ–‰ ๊ธฐ๊ฐ„

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)๊ณผ ์šด์˜ ํšจ์œจ์„ฑ์„ ์ดˆ๋ฐ˜๋ถ€ํ„ฐ ๊ณ ๋ คํ•˜์ง€ ๋ชปํ•ด ์™„์„ฑ๋„ ๋†’์€ ๊ฒฐ๊ณผ๋ฌผ์„ ๋งŒ๋“ค๊ธฐ์—๋Š” ๋ถ€์กฑํ•จ์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.
ํ•˜์ง€๋งŒ ์ด๋ฒˆ ํ”„๋กœ์ ํŠธ๋ฅผ ํ†ตํ•ด ๋‹จ์ˆœํ•œ ๊ธฐ๋Šฅ ๊ตฌํ˜„์„ ๋„˜์–ด, ๋‹ค์–‘ํ•œ ๊ธฐ์ˆ ์  ๊นŠ์ด๋ฅผ ๊ณ ๋ฏผํ•˜๊ณ  ์„ฑ๋Šฅ๊ณผ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜๊นŒ์ง€ ๊ณ ๋ คํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ตํ›ˆ์„ ์–ป์—ˆ์Šต๋‹ˆ๋‹ค. ์ดํ›„ ํ”„๋กœ์ ํŠธ๋ถ€ํ„ฐ๋Š” ๋ณด๋‹ค ๋„“์€ ์‹œ์•ผ๋ฅผ ๊ฐ€์ง€๊ณ  ๊ฐœ๋ฐœ์— ์ž„ํ•˜๊ณ ์ž ๋‹ค์งํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

On-care ์„œ๋น„์Šค ํ™”๋ฉด

์‚ฌ์ง„ ์—…๋กœ๋“œ

ํ”ผ๋“œ