๐Ÿš€ ํŒ€ํ”„๋กœ์ ํŠธ ํšŒ๊ณ ๋ก #2

์„คํ•˜๋‚˜ยท2022๋…„ 9์›” 11์ผ
0

ํšŒ๊ณ ๋ก

๋ชฉ๋ก ๋ณด๊ธฐ
2/5
post-thumbnail

Day 2022-08-30, ํŒ€ํ”„๋กœ์ ํŠธ 2์ผ์ฐจย ย ๐Ÿ’ฌ

์˜ค๋Š˜ ํ•˜๋ฃจ ๋ชฉ๋ฃŒ

  • ERD entity ์ˆ˜์ •ํ•˜๊ธฐ
  • ๋ฐฐํฌ๋ฅผ ์œ„ํ•œ docker file ์„ธํŒ…
  • ํด๋” ๊ตฌ์กฐ ์ƒ์„ฑ

๋ชฉํ‘œ๋ฅผ ์ด๋ฃจ๊ธฐ ์œ„ํ•ด ํ•œ ๊ฒƒ

์•„์นจ์— ๋“ฑ์›ํ•˜๊ณ  ํŒ€์›๋“ค๊ณผ ์ •ํ•œ 11์‹œ์— ํšŒ์˜๋ฅผ ์ง„ํ–‰ํ–ˆ๋‹ค.
์„œ๋กœ์˜ ์ง„ํ–‰์ƒํ™ฉ์„ ๊ณต์œ ํ•˜๊ณ  ์˜ค๋Š˜ ๊ฐ์ž ํ•ด์•ผํ•  ์ผ์„ ๊ณต์œ ํ•˜๋Š” ์‹œ๊ฐ„์„ ๊ฐ€์กŒ๋‹ค.

์ˆ˜์—…์‹œ๊ฐ„์—๋Š” ์„œ๋น„์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ์œ„ํ•ด์„œ ์ƒํ’ˆ๊ณผ ์ƒํ’ˆ์˜ ์ •๋ณด๋ฅผ ๊ฒŒ์‹œํ•˜๋Š” ๊ฒŒ์‹œ๊ธ€ ํ…Œ์ด๋ธ”์„ ๋งŒ๋“ค์—ˆ์—ˆ๋Š”๋ฐ ์šฐ๋ฆฌ๊ฐ€ ๊ตฌํ˜„ํ•˜๋ ค๋Š” ์„œ๋น„์Šค๋Š” ๊ฐ•์•„์ง€ ์นดํŽ˜์˜ ์ •๋ณด๋ฅผ ์‰ฝ๊ณ  ํŽธ๋ฆฌํ•˜๊ฒŒ ์ œ๊ณตํ•˜๋Š” ์„œ๋น„์Šค๋‹ค ๋ณด๋‹ˆ,, ๊ฒŒ์‹œ๋ฌผ๊ณผ ์ƒํ’ˆ์˜ ์ •๋ณด๊ฐ€ ๊ตฌ๋ถ„๋˜์ง€ ์•Š์•˜๋‹ค.

์ฒ˜์Œ์—๋Š” ์ด ๋‘๊ฐ€์ง€๊ฐ€ ๊ตฌ๋ถ„๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์‚ฌ์‹ค์„ ๋ฐ›์•„๋“œ๋ฆฌ๊ธฐ๊ฐ€ ์–ด๋ ค์› ๋‹ค.
์ œ๊ณตํ•˜๊ธฐ๋กœํ•œ ์„œ๋น„์Šค์—์„œ๋Š” ์ƒํ’ˆ์ด ์นดํŽ˜์˜€๊ณ , ๊ฒŒ์‹œ๊ธ€ ๋˜ํ•œ ์นดํŽ˜์˜ ์ •๋ณด์˜€๋‹ค.
์ƒํ’ˆ์œผ๋กœ ์ •ํ•œ ์นดํŽ˜๊ฐ€ ์ƒ์„ฑ๋  ๋•Œ, ์นดํŽ˜์— ๋Œ€ํ•œ ์ƒ์„ธ์ •๋ณด๋ฅผ ์ž…๋ ฅํ•˜๊ณ , ๊ฒฐ๊ตญ ์ด ์ •๋ณด๋Š” ๊ฒŒ์‹œ๊ธ€ ์ž‘์„ฑํ•  ๋•Œ ์ž…๋ ฅํ•˜๋Š” ๋ถ€๋ถ„์ด๋ผ ๊ตณ์ด ๊ฒŒ์‹œ๊ธ€์ด ํ•„์š”์—†๋‹ค๋Š” ๊ฒƒ์ด์˜€๋‹ค.


๋‹ค์‹œ ๊ทธ๋ ค ๋†“์•˜๋˜ ERD ์ดˆ์•ˆ์—์„œ ์ˆ˜์ •์„ ํ•˜๊ณ , ํ•„์š”ํ•  ํ…Œ์ด๋ธ”์ด ๋˜ ๋ญ๊ฐ€ ์žˆ์„๊นŒ,, ์ˆ˜์ •์„ ๋˜ํ•˜๊ณ ,, ํ…Œ์ด๋ธ”๊ฐ„ ๊ด€๊ณ„๊ฐ€ ์ด๊ฒŒ ๋งž์„๊นŒ๋ผ๋Š” ์ƒ์˜๋ฅผ ํ•˜๋ฉฐ ๋˜ ์ˆ˜์ •ํ•˜๊ณ  ๋ฐ˜๋ณตํ•˜๋‹ค๋ณด๋‹ˆ ERD ์™„์„ฑ!


ERD๋ฅผ ์™„์„ฑํ–ˆ์œผ๋‹ˆ, ๊ฐ„๋‹จํ•˜๊ฒŒ nestํด๋”๊ตฌ์กฐ์—์„œ ๊ฐ ํ…Œ์ด๋ธ”๋งˆ๋‹ค ํด๋”๋ฅผ ๋งŒ๋“ค๊ณ  entity ํŒŒ์ผ์„ ๋งŒ๋“ค์—ˆ๋‹ค. ์˜ค๋žœ๋งŒ์— entityํŒŒ์ผ์„ ์ž‘์„ฑํ•˜๋ฉด์„œ N-M, 1-N, 1-1์„ ์ง€์ •ํ•˜๋ ค๋‹ค ๋ณด๋‹ˆ ์—„์ฒญ ํ—ท๊ฐˆ๋ ธ๋‹ค. ์‹ฌ์ง€์–ด ๊ฐ™์ด ํด๋”๊ตฌ์กฐ๋ฅผ ๋งŒ๋“ค๋˜ ์„ฑ์šด๋‹˜๊ณผ entity๋ฅผ ์ž…๋ ฅํ•˜๋˜ ๋ฐฉ๋ฒ•์ด ๋‹ฌ๋ผ์„œ ํ•ด๋‹น ๊ณผ์ •ํ•ด์„œ ์ด์•ผ๊ธฐ ํ•˜๋Š๋ผ ์‹œ๊ฐ„์„ ๋งŽ์ด ๋ณด๋ƒˆ๋˜๊ฑฐ ๊ฐ™๋‹ค.


ํด๋”๋Š” ๋‹ค ๋งŒ๋“ค์—ˆ์œผ๋‹ˆ, ์ด์ œ ๋ฐฐํฌ๋ฅผ ์‹œ์ž‘ํ–ˆ๋‹ค. ๋ฐฐํฌ๋Š” ๊ธฐ์กด์˜ ์ˆ˜์—…์‹œ๊ฐ„์— ์ผ๋˜ ๊ณ„์ •์ด ๋ฌด๋ฃŒ๋กœ ์“ธ ์ˆ˜ ์žˆ๋Š” ๊ธˆ์•ก์ด ๋‚จ์•„ ์žˆ์–ด ํ•ด๋‹น ๊ณ„์ •์œผ๋กœ ์ง„ํ–‰ํ–ˆ๋‹ค. ์ฒ˜์Œ๋ถ€ํ„ฐ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋กœ ๋ฌด์ค‘๋‹จ ๋ฐฐํฌ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด, ๊ธˆ์•ก์ด ๊ธˆ๋ฐฉ ์‚ฌ๋ผ์งˆ๊บผ๊ฐ™์•„์„œ ์ผ๋‹จ ์ธ์Šคํ„ด์Šค๋ฅผ ์ด์šฉํ•ด์„œ ๋ฐฐํฌ๋ฅผ ์ง„ํ–‰ํ–ˆ๋‹ค. ๋„๋ฉ”์ธ๋„ ๊ธฐ์กด์˜ ์‚ฌ์šฉํ•˜๋˜ ๋„๋ฉ”์ธ์„ ์ด์šฉํ•˜์˜€๋‹ค. docker-compose.yaml๊ณผ Dockerfile๋ฅผ ์ˆ˜์ •ํ•ด์„œ ๋ฐฐํฌ๋ฅผ ์ง„ํ–‰ํ–ˆ๊ณ  ์ •์ƒ์ ์œผ๋กœ ๋“ค์–ด๊ฐ€์ง€๋Š”๊ฑธ ๋ณด๊ณ  ํ‡ด๊ทผํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

๊ทธ๋ž˜๋„, ์˜ค๋Š˜ ๋ชฉํ‘œ๋กœ ํ•œ ๋ชจ๋“  ์ผ์€ ๋งˆ๋ฌด๋ฆฌ ํ•˜๊ณ  ํ‡ด๊ทผํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค ๐Ÿฅฒ

์ง„ํ–‰ํ•˜๋˜ ์ค‘ ์ƒ๊ธด ๋ฌธ์ œ

  1. OneToMany?? ManyToOne??
  2. ์ธ์Šคํ„ด์Šค๋กœ ๋Œ๋ฆด ๋•Œ, .gitignore์— ์žˆ๋Š” ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด ์ค˜์•ผํ•ด!!!

๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•

โœจ solution 1
์ด์ „์—๋Š” ManyToOne๋งŒ์„ ์‚ฌ์šฉํ•ด์„œ ํ…Œ์ด๋ธ”์„ ์—ฐ๊ฒฐํ–ˆ๋‹ค. ๊ทธ๋ž˜์„œ One์ด ๋˜๋Š” ํ…Œ์ด๋ธ”์—์„œ find๋ฅผ ํ•  ์ˆ˜๊ฐ€ ์—†์—ˆ๋‹ค..
์—ฐ๊ฒฐ๋˜๋Š” ์ •๋ณด๊ฐ€ ์—†์–ด์„œ ์ด๋Ÿด๋•Œ OneToMany๋ฅผ ์จ์ฃผ๋Š” ๊ฒƒ์ด์˜€๋‹ค. ๋”ฐ๋ผ์„œ ์ผ๋‹จ ManyToOne์œผ๋กœ๋งŒ ์จ๋†“๊ณ  ๋‚˜์ค‘์— ํ•„์š”์— ๋”ฐ๋ผ OneToMany๋ฅผ ์จ์ฃผ๊ธฐ๋กœ ํ•˜์˜€๋‹ค.

โœจ solution 2
์ธ์Šคํ„ด์Šค ํ„ฐ๋ฏธ๋„์— ๋“ค์–ด๊ฐ€์„œ ๋„์ปค๋ฅผ ๋Œ๋ฆฌ๋‹ˆ,, .env๊ฐ€ ์—†์–ด์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์—ฐ๊ฒฐ๋˜์ง€ ์•Š์•˜๋‹ค..
์ด๋Ÿฐ ๊ธฐ์ดˆ์ ์ธ ์‹ค์ˆ˜๋ฅผ ํ•˜๋‹ค๋‹ˆ..๋ฐ”๋กœ vim ๋ช…๋ น์–ด๋ฅผ ์ด์šฉํ•ด์„œ gitignore์— ์žˆ๋˜ ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด ์คฌ๋‹ค.
๊ทธ๋žฌ๋”๋‹ˆ ๋ฐ”๋กœ ํ•ด๊ฒฐ~

์•ž์œผ๋กœ์˜ ๊ณ„ํš

AWS๋„ ๊ณต๋ถ€ํ•˜๊ธฐ,,์•„์ง ๋…์Šค ์—ด์–ด๋ณด์ง€๋„ ๋ชปํ–ˆ์ง€๋งŒ ์ œ๋ฐœ ํ•œ ์ค„์ด๋ผ๋„ ์ฝ์–ด๋ณด์ž..!

์˜ค๋Š˜ ํ•˜๋ฃจ ํ•œ์ค„ ์š”์•ฝ

์˜ค๋Š˜๋„ ๋‚ด ์‹œ๊ฐ„์ด ์‚ฌ๋ผ์กŒ๋‹ค. ๋ฐฐํฌ ๋๋‚ด๊ณ ๋ณด๋‹ˆ ๋ง‰์ฐจ ์‹œ๊ฐ„์ด ๊ฐ€๊นŒ์›Œ์ง€๊ณ  ์žˆ์—ˆ๋‹ค. ํ•˜๋ฃจ๊ฐ€ 48์‹œ๊ฐ„์ด์˜€์œผ๋ฉด,,,

0๊ฐœ์˜ ๋Œ“๊ธ€