Skip to content

Latest commit

ย 

History

History
293 lines (211 loc) ยท 13 KB

README.md

File metadata and controls

293 lines (211 loc) ยท 13 KB

Hits

๐Ÿ•๏ธ [CampUs] ๋‚ ์”จ ๊ธฐ๋ฐ˜ ์บ ํ•‘ ์žฅ์†Œ ์ถ”์ฒœ ์„œ๋น„์Šค

์–ด๋–ค ๋‚  ์–ด๋””๋กœ ์–ธ์ œ ์บ ํ•‘ ๊ฐˆ๊นŒ?

์บ ํ•‘์€ ์ €ํฌ CampUs ์™€ ํ•จ๊ป˜!

๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์˜ ํ›„๊ธฐ๋‚˜ ์›ํ•˜๋Š” ์บ ํ•‘ ์žฅ์†Œ์˜ ๋‚ ์”จ, ๊ทธ๋ฆฌ๊ณ  ์บ ํ•‘ ์žฅ์†Œ์˜ ์œ ํ˜•, ์šด์˜ ๊ธฐ๊ฐ„, ํŽธ์˜ ์‹œ์„ค, ํ…Œ๋งˆ ํ™˜๊ฒฝ, ์ฒดํ—˜ ํ”„๋กœ๊ทธ๋žจ ๋“ฑ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์บ ํ•‘ ์ •๋ณด๋ฅผ ํ™œ์šฉํ•ด ๋‚˜์—๊ฒŒ ์•Œ๋งž๋Š” ์บ ํ•‘ ๊ณ„ํš์„ ์„ธ์šฐ์‹œ๋Š” ๊ฑด ์–ด๋–จ๊นŒ์š”?

์„œ๋น„์Šค ์‹œ์—ฐ ์˜์ƒ - Clipchamp๋กœ ์ œ์ž‘

ํ˜„์žฌ๋Š” ๋ฐฑ์—”๋“œ ์„œ๋ฒ„์˜ ์ง€์›์ด ๋ถˆ๊ฐ€ํ•˜์—ฌ ์›ํ• ํ•œ ์„œ๋น„์Šค ์ด์šฉ์— ์ œ์•ฝ์ด ์žˆ์Šต๋‹ˆ๋‹ค.


Contents | ๋ชฉ์ฐจ

  1. โŒ› TimeLine | ํƒ€์ž„๋ผ์ธ
  2. ๐Ÿช› Architecture | ์•„ํ‚คํ…์ณ
  3. ๐Ÿ’กFeature | ๊ตฌํ˜„ ๊ธฐ๋Šฅ
  4. ๐Ÿ–ผ๏ธ ERD | ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋„
  5. ๐Ÿ› ๏ธ Stacks | ์‚ฌ์šฉ ์Šคํƒ
  6. โšฝ Trouble Shooting | ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ…
  7. ๐Ÿช› PATCH NOTES | ํŒจ์น˜ ๋…ธํŠธ
  8. ๐Ÿ‘จโ€๐Ÿ’ป๐Ÿ‘ฉโ€๐Ÿ’ปWho Made It | ์„œ๋น„์Šค๋ฅผ ๊ฐ€๊พผ ์‚ฌ๋žŒ๋“ค

โŒ› TimeLine | ํƒ€์ž„๋ผ์ธ

  • ์ด ํ”„๋กœ์ ํŠธ ๊ธฐ๊ฐ„ 11์›” 4์ผ ~ 12์›” 15์ผ (6์ฃผ)
  • 12์›” 10์ผ ๋ฐฐํฌ ๋ฐ ๋Ÿฐ์นญ
  • 24๋…„ 1์›” S3๋กœ ์žฌ๋ฐฐํฌ

๐Ÿช› Architecture | ์•„ํ‚คํ…์ณ

title


๐Ÿ–ผ๏ธ ERD | ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋„

ERD ๋ณด๊ธฐ
image

๐Ÿ’กFeature | ๊ตฌํ˜„ ๊ธฐ๋Šฅ

๐ŸŒง๏ธ ์บ ํ•‘์„ ๋– ๋‚˜๊ธฐ ์ „! ๊ฐ‘์ž๊ธฐ ๋น„๊ฐ€ ๋‚ด๋ฆฌ๋ฉด ์–ด๋–กํ•˜์ง€..?

๊ฑฑ์ •๋งˆ์„ธ์š”. CampUs์—์„œ๋Š” ์ง€์—ญ ๊ฒ€์ƒ‰์œผ๋กœ ์บ ํ•‘์žฅ ์กฐํšŒ ์‹œ, ๊ธˆ์ผ๋กœ๋ถ€ํ„ฐ ์ตœ๋Œ€ 8์ผ๊นŒ์ง€์˜ ๋‚ ์”จ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•ด๋“œ๋ฆฝ๋‹ˆ๋‹ค. 
๋ฏธ๋ฆฌ ํ™•์ธํ•˜์‹œ๊ณ  ๋”์šฑ ๋” ์ฆ๊ฑฐ์šด ์บ ํ•‘์ด ๋˜์‹ค ์ˆ˜ ์žˆ์„ ๊ฒ๋‹ˆ๋‹ค.

๐Ÿค” ์ด๋ฒˆ ์ฃผ๋ง.. ๋‚˜๋Š” ๋– ๋‚ ๊บผ์•ผ. ๊ทผ๋ฐ ์–ด๋””๊ฐ€ ๋– ๋‚˜๊ธฐ ์ข‹์€ ๊ณณ์ด์ง€?

์ €ํฌ ์„œ๋น„์Šค์—์„œ๋Š” ์ž์ฒด ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ†ตํ•ด ๊ธˆ์ฃผ ๋‚ ์”จ๊ฐ€ ๊ฐ€์žฅ ์ข‹์€ ์ง€์—ญ์„ ์ถ”์ฒœํ•ด์ฃผ๊ณ , ํ•ด๋‹น ์ง€์—ญ์˜ ์บ ํ•‘์žฅ๋“ค์„ 
์†Œ๊ฐœ์‹œ์ผœ ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

โ˜ ๋‚˜๋Š” ์ง€์—ญ๋ณ„ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ํ‚ค์›Œ๋“œ ํ˜•ํƒœ์˜ ์บ ํ•‘์žฅ ๋ชฉ๋ก์ด ๋ณด๊ณ ์‹ถ์–ด

CampUs์—์„œ๋Š” ์ง€์—ญ๋ณ„ ๊ฒ€์ƒ‰ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, ํ‚ค์›Œ๋“œ ๊ฒ€์ƒ‰, ์นดํ…Œ๊ณ ๋ฆฌ ๋ณ„ ์บ ํ•‘์žฅ ์กฐํšŒ, ๊ทธ๋ฆฌ๊ณ  ํ˜„์žฌ ์ธ๊ธฐ๊ฐ€ ๋งŽ์€ ์บ ํ•‘์žฅ์„ 
์ œ๊ณตํ•จ์œผ๋กœ์จ, ์บ ํ•‘๋“ค์˜ ์„ ํƒ์„ ๋‹ค์ฑ„๋กญ๊ฒŒ ํ•ด๋“œ๋ฆฝ๋‹ˆ๋‹ค.

๐Ÿ—บ๏ธ ๋นจ๋ฆฌ ๊ฐ”๋‹ค์˜ค๊ณ ์‹ถ์€๋ฐ.. ๊ทผ๊ต์— ์–ด๋”” ์ข‹์€ ์บ ํ•‘์žฅ ์—†๋‚˜?

ํ˜„ ์œ„์น˜ ์กฐํšŒ์— ๋™์˜ํ•˜์‹œ๋ฉด, ๋‚ด ์ฃผ๋ณ€ 30km ๋‚ด์˜ ์–ด๋–ค ์บ ํ•‘์žฅ์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด์š”!
๊ทผ๊ต์— ์œ„์น˜ํ•ด์žˆ๋Š” ์บ ํ•‘์žฅ ์ •๋ณด๋„ ์ œ๊ณตํ•ด๋“œ๋ ค์š”~

๐Ÿ™‹โ€โ™€๏ธ ์บ ํ•‘์žฅ ์ •๋ณด ์–ด๋””๊นŒ์ง€ ์•Œ์•„๋ณด๊ณ  ์˜ค์…จ์–ด์š”?

์ €ํฌ CampUs์— ์—ฐ๊ฒฐ๋œ ์บ ํ•‘์žฅ ์ •๋ณด๋Š” ์œ„์น˜, ์˜์—…๋‚ ์งœ, ๋ฐ˜๋ ค๋™๋ฌผ ๋ฐ˜์ž…, ๋ถ€๋Œ€์‹œ์„ค, ์ฃผ๋ณ€์ด์šฉ์‹œ์„ค ๋“ฑ์˜ ๋‹ค์–‘ํ•œ ์ •๋ณด๋ฅผ ์ œ๊ณต๋“œ๋ฆฌ๊ณ  
์žˆ์œผ๋ฉฐ,  ํ•ด๋‹น ์บ ํ•‘์žฅ์„ ์ด์šฉํ–ˆ๋˜ ์‚ฌ๋žŒ๋“ค์˜ ๋ฆฌ๋ทฐ๋ฅผ ๋ณด๊ณ , ๋ฐ˜๋Œ€๋กœ ์“ฐ๊ธฐ๋„ ๊ฐ€๋Šฅํ•ด์š”!

โœ๏ธ ์ด ์บ ํ•‘์žฅ์œผ๋กœ ์ด๋ฒˆ์ฃผ ํ† ์š”์ผ์— ๋– ๋‚  ์˜ˆ์ •์ธ๋ฐ ๋”ฐ๋กœ ๋ณผ ์ˆ˜ ์žˆ๊ฒŒ ๊ด€๋ฆฌํ•˜๊ณ  ์‹ถ์–ด์š”

๋งˆ์Œ์— ๋“œ๋Š” ์บ ํ•‘์žฅ์„ ์ฐœํ•ด์„œ ์ฑ™๊ฒจ์„œ๋ณด๊ณ , ๋” ๋‚˜์•„๊ฐ€ ์ •๋ง๋กœ ๊ฐ€๊ณ ์‹ถ์€ ์บ ํ•‘์žฅ์„ ์—ฌํ–‰์ผ์ •์œผ๋กœ ๋“ฑ๋กํ•ด ๋ณด์„ธ์š”! 
CampUs๊ฐ€ ์—ฌ๋Ÿฌ๋ถ„์˜ ์บ ํ•‘์ผ์ •์„ ๊ด€๋ฆฌํ•ด๋“œ๋ฆฝ๋‹ˆ๋‹ค.

๐Ÿ› ๏ธ Stacks | ์‚ฌ์šฉ ์Šคํƒ

Front End


๊ธฐ์ˆ ์  ์˜์‚ฌ๊ฒฐ์ •

Typescript
์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ๋™์ ํƒ€์ž…์˜ ์–ธ์–ด๋กœ ๋Ÿฐํƒ€์ž„ ์‹œ ๋ณ€์ˆ˜์˜ ํƒ€์ž…์ด ๊ฒฐ์ •๋˜๊ธฐ ๋•Œ๋ฌธ์—
์ฝ”๋“œ๋ฅผ ์‹คํ–‰ ์‹œํ‚ค๊ธฐ์ „๊นŒ์ง€ ์—๋Ÿฌ๋ฅผ ์•Œ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์น˜๋ช…์ ์ž…๋‹ˆ๋‹ค.
๊ทธ์— ๋ฐ˜ํ•ด TypeScript๋Š” ์ •์  ํƒ€์ž… ์–ธ์–ด๋กœ ์ปดํŒŒ์ผ ๋‹จ๊ณ„์—์„œ ์˜ค๋ฅ˜๋ฅผ ํฌ์ฐฉํ•  ์ˆ˜ ์žˆ๋Š” ์žฅ์ ์ด ์žˆ์œผ๋ฉฐ
๋ช…์‹œ์ ์ธ ์ •์  ํƒ€์ž… ์ง€์ •์€ ๊ฐœ๋ฐœ์ž์˜ ์˜๋„๋ฅผ ๋ช…ํ™•ํ•˜๊ฒŒ ์ฝ”๋“œ๋กœ ์ž‘์„ฑ ํ•  ์ˆ˜ ์žˆ๊ณ 
์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ์„ ๋†’์ด๊ณ  ์˜ˆ์ธกํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋ฉฐ ๋””๋ฒ„๊น…์ด ์‰ฝ๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
Recoil
props drilling์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค๋ฅธ์ปดํฌ๋„ŒํŠธ์— ์‚ฌ์šฉ๋˜๋Š” ์ „์—ญ์ƒํƒœ ๊ด€๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ํ•„์š”ํ•˜๋‹ค๊ณ  ํŒ๋‹จํ•˜์˜€์Šต๋‹ˆ๋‹ค. 
redux-thunk / redux-toolkit๋„ ์žˆ์—ˆ์ง€๋งŒ ์„œ๋ฒ„์ƒํƒœ ๊ด€๋ฆฌ๋ฅผ react-query๊ฐ€ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ข€ ๋” ๊ฐ€๋ณ๊ณ  ์ง๊ด€์ ์ธ recoil์„ ์„ ํƒํ•˜์˜€์Šต๋‹ˆ๋‹ค.
React Query
์บ ํ•‘์žฅ/๋‚ ์”จ api ๋ฐ์ดํ„ฐ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉ ํ•˜๊ธฐ์œ„ํ•ด์„œ ๋ฆฌ์•กํŠธ ์ฟผ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์˜€์Šต๋‹ˆ๋‹ค.
useState/useEffect ๋“ฑ ์ฝ”๋“œ๋“ค์˜ ์ค‘๋ณต๋„ ์ค„์—ฌ์ฃผ๊ณ , ์บ์‹ฑ์„ ํ•ด์ฃผ๊ธฐ๋•Œ๋ฌธ์— ๋” ๋‚˜์€ ์‚ฌ์šฉ์žํ™˜๊ฒฝ์„ ๋งŒ๋“ค์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

โšฝ Trouble Shooting | ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ…

์บ ํ•‘์žฅ / ๋‚ ์”จAPI ์‚ฌ์šฉ
1. ์š”๊ตฌ์‚ฌํ•ญ

1) ์‚ฌ์šฉ๊ฐ€๋Šฅํ•œ ์บ ํ•‘์žฅ / ๋‚ ์”จ api ์ฐพ๊ธฐ
2) ์„œ๋น„์Šค ๋ชฉ์ ์— ๋งž๋Š” api ์„ ๋ณ„.

2. ์„ ํƒ์ง€

์บ ํ•‘์žฅ : ๊ณต๊ณตData / gocamping.
๋‚ ์”จ : ๊ณต๊ณตData / openWetherAPI / accuweatherAPI

3. ์˜๊ฒฌ ์กฐ์œจ/๊ฒฐ์ •

- ์บ ํ•‘์žฅ

๊ณต๊ณตdata๋Š” ์ „๊ตญ ์บ ํ•‘์žฅ๋“ค์„ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๋ฐ์ดํ„ฐ๋กœ ํŒ๋‹จ์ด ๋˜์–ด goCamping api๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ๊ฒฐ์ •.
์ดํ›„ ์„œ๋น„์Šค ๋ชฉ์ ์— ๋งž๋Š” ๋ฐ์ดํ„ฐ๋“ค์„ ์„ ๋ณ„ํ•ด์„œ ์‚ฌ์šฉํ•จ.

- ๋‚ ์”จ

๊ณต๊ณตdata์˜ ๊ฒฝ์šฐ ์„œ๋น„์Šค ๋ชฉ์ ์— ๋งž๋Š” ๋ฐ์ดํ„ฐ๋ผ๊ธฐ ๋ณด๋‹ค๋Š” ๋ฐ์ดํ„ฐ๋ถ„์„์— ์•Œ๋งž๋Š” api๋กœ ์ƒ๊ฐ์ด ๋˜์—ˆ์Œ.
(์ ์„ค๋Ÿ‰, 5.0m์ง€์ค‘์˜จ๋„, ํ’์† ํ’ˆ์งˆ๊ฒ€์‚ฌ ๋“ฑ ๋ฐ์ดํ„ฐ๊ฐ€ ์˜ˆ๋ณด์™€๋Š” ๋งž์ง€ ์•Š๋‹ค๊ณ  ํŒ๋‹จํ•จ)
accuweather์˜ ๊ฒฝ์šฐ ์˜ˆ๋ณด์ผ์ด 5์ผ๋กœ openWeather๋ณด๋‹ค ์ƒ๋Œ€์ ์œผ๋กœ ์งง์•„์„œ ์ตœ์ข…์ ์œผ๋กœ openWeatherAPI๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ๊ฒฐ์ •.

ํ•ด์™ธ์˜ api์ด๋‹ค ๋ณด๋‹ˆ ์ขŒํ‘œ๊ฐ’ ์„ค์ •์ด ์„œ์šธ๋กœ ์ง€์ • ๋˜์–ด ์žˆ์–ด ์„œ๋น„์Šค์— ๋งž๊ฒŒ
์ „๊ตญ์„ ํŠน๋ณ„/๊ด‘์—ญ์‹œ์™€ ๋„๋กœ ๋‚˜๋ˆˆ ์ดํ›„ ์ขŒํ‘œ๊ฐ’์„ค์ •์„ ํ†ตํ•˜์—ฌ ์ง€์—ญ์— ๋งž๋Š” ๋‚ ์”จ์™€ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ api๋ฅผ ๊ฐ€์ ธ์˜ด
๋˜ํ•œ apiCall์ด ํ•˜๋ฃจ 1000๊ฑด์œผ๋กœ ์ œํ•œ์ด ๋˜์–ด ์žˆ์–ด, ํ”„๋ก ํŠธ์—์„œ ๊ณ„์† ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ
๋ฐฑ์—”๋“œ ์„œ๋ฒ„์— api์ •๋ณด๋“ค์„ ๋‹ด์•„์„œ FE๋Š” BE๋กœ apiํ˜ธ์ถœ์„ ํ•˜๊ณ , BE๋Š” ์ง€์ •๋œ ์‹œ๊ฐ„์— apiํ˜ธ์ถœ์„ ํ•˜์—ฌ ํšจ์œจ์ ์œผ๋กœ ์šด์˜ ํ•จ.
๋ฐ์ดํ„ฐ api์‚ฌ์šฉ / ์นด์นด์˜ค ๋งต ์ด์šฉ
 1. ๋ฌธ์ œ์ƒํ™ฉ

์นด์นด์˜ค๋งต ์‚ฌ์šฉ์‹œ X,Y์ขŒํ‘œ์— ์บ ํ•‘์žฅ ์ขŒํ‘œ๊ฐ€ ๋‹ด๊ธฐ์ง€ ์•Š๋Š” ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•จ.

2. ๋ฌธ์ œํ•ด๊ฒฐ๊ณผ์ •

1 ) useEffect๋กœ ์นด์นด์˜ค๋งต์ด ์‹คํ–‰์„ ํ•˜๋‹ค ๋ณด๋‹ˆ, ๋ฐฑ์—”๋“œ์—์„œ ์ขŒํ‘œ๊ฐ’์„ ๋ฐ›์•„์„œ ๋ณ€์ˆ˜๋กœ 
    ์ฒ˜๋ฆฌํ•ด ์ค€๋‹ค ํ•˜์—ฌ๋„ ๋งตcomponent๋Š” Mount๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋งต์ด ๋™์ž‘ํ•˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ํŒ๋‹จ.
2 ) useEffect์™ธ๋ถ€์—์„œ ๋ณ€์ˆ˜(X,Y)๊ฐ€ ๋ฐ”๋€”๋•Œ๋งˆ๋‹ค ์žฌ ๋žœ๋”๋ง์„ ํ• ์ˆ˜ ์žˆ๋„๋ก ์˜์กด์„ฑ๋ฐฐ์—ด์—
    ๋ณ€์ˆ˜ ๊ฐ’ ์ถ”๊ฐ€ ๋ฐ ์ผ์ •๊ธฐ๊ฐ„ ์ดํ›„์— ๋‹ค์‹œ ๋™์ž‘ํ•˜๋„๋ก setTimeoutํ•จ์ˆ˜ ๊ตฌํ˜„.
3 ) ๊ทธ๋Ÿผ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ๋™์ž‘ํ•˜์ง€ ์•Š๊ณ  ๋˜‘๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•จ.
4 ) ๋งตcomponent์˜ ์ขŒํ‘œ ๊ฐ’์— ํ•˜๋“œ์ฝ”๋”ฉ์œผ๋กœ ์ˆซ์ž๋ฅผ ๋„ฃ์–ด์ฃผ๋ฉด ์ž˜ ๋™์ž‘ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ํ™•์ธ ํ•œ ํ›„, ๋ฐฑ์—”๋“œ์—์„œ ๋ฐ›์•„์˜ค๋Š” api๋ฐ์ดํ„ฐ๋ฅผ ํ™•์ธ ํ•จ.

5-1 ) ํ”„๋ก ํŠธ : ๋ฐ์ดํ„ฐ๋ฅผ ํ•œ๋ฒˆ์— ๋ฐ›์•„์˜ค๋Š” ๊ฒƒ์ด ์•„๋‹Œ ํ•œ๋ฒˆ ๋ฐ›์•„์˜จ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์‹œ ๋ณ€์ˆ˜์— ๋‹ด์€ ํ›„ ์‚ฌ์šฉํ•˜์—ฌ undefined์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๊ฒŒ ๋˜์—ˆ๊ณ  ๊ฒฝ๋กœ๋„ ๋งž์ง€ ์•Š์Œ์„ ํ™•์ธ.
5-2 )๋ฐฑ์—”๋“œ : ๊ฒฝ๋กœ ์ˆ˜์ •์ด ๋˜์—ˆ์œผ๋‚˜ ํ”„๋ก ํŠธ์™€ ์†Œํ†ต์„ ํ•˜์ง€ ๋ชปํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ์Œ์„ ํ™•์ธ.
6 ) ๋ฐ์ดํ„ฐ ๊ฒฝ๋กœ ์ˆ˜์ •ํ•˜์—ฌ ๋งต ๊ตฌํ˜„ 

3. ์˜๊ฒฌ์กฐ์œจ ๋ฐ ๊ฒฐ์ •

1 ) ํ”„๋ก ํŠธ ์—์„œ๋Š” ๊ฐ€๋Šฅํ•˜๋ฉด ๋ฐ์ดํ„ฐ๋ฅผ 2์ค‘์œผ๋กœ ๋ฐ›์•„์˜ค์ง€ ์•Š๋„๋ก ํ•˜๊ธฐ๋กœ ํ•จ.
2 ) ๋ฐฑ์—”๋“œ ์—์„œ๋Š” ์‚ฌ์†Œํ•œ ๊ฒฝ๋กœ๋ณ€๊ฒฝ๋„ ์†Œํ†ต ํ›„ ์ˆ˜์ •ํ•˜๊ธฐ๋กœ ํ•จ.
openWether API request scheduling
 1. ์š”๊ตฌ์‚ฌํ•ญ

๋‚ ์”จ ์ •๋ณด๋Š” ๋งค์ผ ์—…๋ฐ์ดํŠธ ๋˜๋ฏ€๋กœ, ๋‹น์ผ+7์ผ์˜ ๋‚ ์”จ๋ฅผ ๋ฐ›์•„์˜ค๊ธฐ ์œ„ํ•ด ์ž๋™ํ™”์˜ ํ•„์š”์„ฑ

2. ๋ฌธ์ œ์ƒํ™ฉ
๋งค์ผ ์‚ฌ๋žŒ์ด ์ ‘์†ํ•˜์ง€ ์•Š๋Š” ์‹œ๊ฐ„์— request ์š”์ฒญ์„ ๋ณด๋‚ด๋Š”๊ฒƒ์€ ์„œ๋ฒ„๊ด€๋ฆฌ์™€ ์šด์˜์— ์žˆ์–ด์„œ ํšจ์œจ์ด ์ข‹์ง€ ๋ชปํ•จ

3. ์„ ํƒ์ง€ ๋ฐ ์˜๊ฒฌ์กฐ์œจ

ํ•œ์ ํ•œ ์‹œ๊ฐ„๋Œ€์ธ ์ƒˆ๋ฒฝ5์‹œ๋งˆ๋‹ค openWether API์— ์š”์ฒญ์„ ๋ณด๋‚ธ ํ›„ DB์‚ญ์ œํ›„ ์ƒˆ๋กœ ์ƒ์„ฑ
(๋งค์ผ ๊ธฐ์˜จ๊ณผ ๋‚ ์”จ ์ •๋ณด๊ฐ€ ๋ณ€ํ•˜๊ธฐ ๋–„๋ฌธ์— ์—…๋ฐ์ดํŠธ ๋Œ€์‹  ์‚ญ์ œํ›„ ์ƒ์„ฑ์œผ๋กœ ์„ ํƒ)
1) node-cron์„ ์ด์šฉํ•˜์—ฌ server.ts์— ์˜ˆ์•ฝ์ฝ”๋“œ๋ฅผ ๋„ฃ์–ด์„œ ์‹คํ–‰
2) node-schedule๋ฅผ ์ด์šฉํ•˜์—ฌ server.ts์— ์˜ˆ์•ฝ์ฝ”๋“œ๋ฅผ ๋„ฃ์–ด์„œ ์‹คํ–‰
์ง€์—ญ๋ณ„ ๋ฐ ์ฃผ์ œ๋ณ„ ์บ ํ•‘์žฅ ์กฐํšŒ์‹œ ์ด ์บ ํ•‘์žฅ ๊ฐฏ์ˆ˜ ์กฐํšŒ / ์„ฑ๋Šฅ ๊ฐœ์„ 
1. ์š”๊ตฌ์‚ฌํ•ญ

doNm:๋„์ด๋ฆ„, numOfRows : ํ•œ ํŽ˜์ด์ง€์— ๋“ค์–ด๊ฐˆ ๊ฐฏ์ˆ˜, pageNo : ํŽ˜์ด์ง€ ์ˆซ์ž, sort : ์ •๋ ฌ ๊ฐ’

์ง€์—ญ๋ณ„ ๋ฐ ์ฃผ์ œ๋ณ„ ์บ ํ•‘์žฅ ์กฐํšŒ์‹œ doNm, numOfRows, pageNo, sort์˜ ๊ฐ’์„ ๋ฐ›์•„ 
๋””๋น„์— ์ ‘๊ทผํ•˜์—ฌ ํ•ด๋‹น ์ปฌ๋Ÿผ์˜ ๋ชจ๋“  ์บ ํ•‘์žฅ์˜ ์ˆซ์ž์™€ ํŽ˜์ด์ง€๋„ค์ด์…˜ํ•ด์„œ ์บ ํ•‘์žฅ์˜ ์ •๋ณด๋ฅผ ๋ณด๋‚ด์ค€๋‹ค.

 2. ๋ฌธ์ œ์ƒํ™ฉ

์บ ํ•‘์žฅ ์กฐํšŒ์‹œ ํŽ˜์ด์ง€๋„ค์ด์…˜์„ ํ•ด์„œ ๋ณด๋‚ด๊ฒŒ ๋œ๋‹ค๋ฉด ์ด ์บ ํ•‘์žฅ์˜ ์ˆซ์ž๋ฅผ ๋ฝ‘์•„ ๋‚ผ ์ˆ˜ ์—†๋‹ค.

3. ์„ ํƒ์ง€ 

1) MySQL ์ฟผ๋ฆฌ๋ฌธ์œผ๋กœ ๊ตฌํ˜„
2) ์‹œํ€„๋ผ์ด์ฆˆ ORM์œผ๋กœ ๊ตฌํ˜„

4 . ์˜๊ฒฌ ์กฐ์œจ

1๋ฒˆ) MySQL ์ฟผ๋ฆฌ๋ฌธ์„ ์ „์ฒด์กฐํšŒ,ํŽ˜์ด์ง€๋„ค์ด์…˜ ์ฝ”๋“œ๋ฅผ ๋‚˜๋ˆ„์–ด ์ž‘์„ฑํ•˜์—ฌ ์ด ๊ฐฏ์ˆ˜๋ฅผ ์กฐํšŒ ํ•  ๋•Œ๋Š” ์ „์ฒด ์กฐํšŒ ์ฟผ๋ฆฌ๋ฌธ ์‚ฌ์šฉ, ํŽ˜์ด์ง€๋„ค์ด์…˜์„ ๊ตฌํ˜„ ํ•  ๋•Œ๋Š” ๋‘๊ฐœ์˜ ์ฟผ๋ฆฌ๋ฌธ์„ ํ•ฉ์ณ์„œ ์‚ฌ์šฉ

2๋ฒˆ) ์‹œํ€„๋ผ์ด์ฆˆ ORM์œผ๋กœ op.like๋กœ ์ „์ฒด์กฐํšŒ์™€,ํŽ˜์ด์ง€๋„ค์ด์…˜ ์ฝ”๋“œ๋ฅผ ๋‚˜๋ˆ„์–ด์„œ ๊ตฌํ˜„

5. ์˜๊ฒฌ ๊ฒฐ์ •

์‹œํ€„๋ผ์ด์ฆˆ ORM์„ ์‚ฌ์šฉ ํ•  ์‹œ ์ค‘๋ณต ์ฝ”๋“œ๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ ์ฝ”๋“œ๊ฐ€ ๊ธธ์–ด์ง€๊ธฐ ๋–„๋ฌธ์— 
์ค‘๋ณต์ฝ”๋“œ ์—†์ด ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅํ•œ MySQL ์ฟผ๋ฆฌ๋ฌธ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์„ ํƒ

๐Ÿช› PATCH NOTES | ํŒจ์น˜ ๋…ธํŠธ

  • ver.0.1 : 2022-12-10 / ๋ฒ ํƒ€ ๋ฒ„์ „ ๋Ÿฐ์นญ ๋ฐ ์œ ์ € ํ”ผ๋“œ๋ฐฑ ํ†ต๊ณ„
  • ver.1.0 : ์„ฑ๋Šฅ ์ตœ์ ํ™” ๊ฐœ๋ฐœ ์„œ๋ฒ„ ๋‹จ๊ณ„ ๋ฐฐํฌ (Develop)

๐Ÿ‘จโ€๐Ÿ’ป๐Ÿ‘ฉโ€๐Ÿ’ปWho Made It | ์„œ๋น„์Šค๋ฅผ ๊ฐ€๊พผ ์‚ฌ๋žŒ๋“ค

์ด๋ฆ„ ํฌ์ง€์…˜ Github or Email
๊น€์ง€ํ—Œ BackEnd (Leader) https://github.com/KJIHEON
๋ฌธ์ง€ํ˜„ BackEnd https://github.com/JiHyeunM
์ตœ์›์„  BackEnd https://github.com/wonsunny
์ด์ƒ์› FrontEnd (Sub Leader) https://github.com/buddle6091
๋ฐฐ์ธ์› FrontEnd https://github.com/wonstruckk
๊น€์ง€์› Designer [email protected]