/wellseecoding-front

๐Ÿ’ป [์›ฐ์‹œ์ฝ”๋”ฉ] IT ํ˜„์—…์ž๋“ค์„ ์œ„ํ•œ ์›น์•ฑ์ด๋ฉฐ, ํ•จ๊ป˜ ๋ชฉ์  ๋‹ฌ์„ฑ์„ ์ด๋ฃจ๊ธฐ ์œ„ํ•œ ์‚ฌ๋žŒ๋“ค์„ ๋งค์นญ ์‹œ์ผœ์ฃผ๋Š” ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค.

Primary LanguageTypeScript

๐Ÿถ wellseecoding

๐Ÿ“ ํ”„๋กœ์ ํŠธ ์†Œ๊ฐœ

๋จผ์ € ํ”„๋กœ์ ํŠธ๋ช… wellseecoding ์€ '์ฝ”๋”ฉ์„ ๊ณง ์ž˜ ์•Œ๊ฒŒ๋ ๊ฑฐ์•ผ' ๋ผ๋Š” ๋œป ์ž…๋‹ˆ๋‹ค.
IT์—…๊ณ„ ์ทจ์ค€์ƒ, ํ˜„์—…์ž๋“ค์„ ์œ„ํ•œ ์›น์•ฑ์ด๋ฉฐ, ํ˜ผ์ž ๊ณต๋ถ€ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ํ•จ๊ป˜ ๋ชฉ์ ๋‹ฌ์„ฑ์„ ํ•˜๊ธฐ ์œ„ํ•œ ์‚ฌ๋žŒ๋“ค์„ ๋งค์นญ ์‹œ์ผœ์ฃผ๋Š” ํ”Œ๋žซํผ ์ž…๋‹ˆ๋‹ค. ์ˆ˜๋งŽ์€ IT ์ปค๋ฎค๋‹ˆํ‹ฐ๋“ค๊ณผ ๋น„๊ต ํ•ด๋ดค์„ ๋•Œ, wellSeeCoding์ด ๋ฝ๋‚ผ๋งŒํ•œ ์ฐจ๋ณ„์ ์€ ์‹ค๋ช…์ œ๋กœ ํ•˜์—ฌ๊ธˆ ์Šคํ„ฐ๋””๋‚˜ ์‚ฌ์ด๋“œ ํ”„๋กœ์ ํŠธ๋ฅผ ๊ตฌํ•  ์‹œ, ๋ณด๋‹ค ๋” ์‹ ๋ขฐ๋„๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ๊ณผ ํ•จ๊ป˜ ํ•  ๊ตฌ์„ฑ์›๋“ค์„ ์Šคํ„ฐ๋””์žฅ์ด ์‹ ์ฒญ์ž์˜ ๋งˆ์ดํŽ˜์ด์ง€ ์ด๋ ฅ๋“ค์„ ๋ณด๊ณ  ํ•์ด ๋งž๋Š” ์‚ฌ๋žŒ์œผ๋กœ ์ปจํƒํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค. ๋˜ ๋‚ด์„ธ์šธ๋งŒ ํ•œ ์ฐจ๋ณ„์ ์ด๋ผ๋ฉด ์‚ฌ๋žŒ๋“ค์ด ์ด์šฉํ•˜๊ธฐ ํŽธ๋ฆฌํ•˜๋„๋ก ์ œ์ž‘๋œ UI/UX ์ž…๋‹ˆ๋‹ค.
(์‹ค์ œ๋กœ IT์—…๊ณ„์— ์ข…์‚ฌํ•˜๋Š” 50๋ช… ๋‚ด์™ธ์˜ ๋‹ค์–‘ํ•œ ์ง๊ตฐ์˜ ์‚ฌ๋žŒ๋“ค์„ ์ง์ ‘ ์„ค๋ฌธ์กฐ์‚ฌ ํ•œ ๊ฒฐ๊ณผ๋ฌผ์„ ์ฐธ๊ณ ํ•˜์—ฌ ์œ ์ €๋“ค์˜ ๋‹ˆ์ฆˆ์— ๋งž์ถฐ ๊ธฐํšํ•˜๊ณ  ๋””์ž์ธํ•˜๊ณ  ๊ฐœ๋ฐœํ–ˆ์Šต๋‹ˆ๋‹ค.)


โณ ์ž‘์—… ๊ธฐ๊ฐ„ (2021. 08 ~ 2021. 11)


โœจ ํŒ€ ์†Œ๊ฐœ

ํŒ€๋ช… MIC (May I clone?)
ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž ์ดํ˜„์ฃผ
ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž ์ด์ค€ํฌ
๊ธฐํš & UI/UX ๋””์ž์ด๋„ˆ ๋ฐ•์ง„์•„

๐Ÿ’ป Front ๊ธฐ์ˆ  ์Šคํƒ

์—ญํ•  ์Šคํƒ๋ช…
ํ”„๋ ˆ์ž„์›Œํฌ Next JS
CSS-in-JS Emotion
์ƒํƒœ๊ด€๋ฆฌ Redux
๊ธฐ๋ณธ ์–ธ์–ด TypeScript
ํฌ๋งทํŒ… ESLint
ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ € Yarn
ํ† ํฐ ๊ด€๋ฆฌ JWT
์„œ๋ฒ„ Nginx
๋ฒ„์ „ ์ปจํŠธ๋กค Git GitHub

๐Ÿ’ป Backend ๊ธฐ์ˆ  ์Šคํƒ

์—ญํ•  ์Šคํƒ๋ช…
ํ”„๋ ˆ์ž„์›Œํฌ Spring
์„œ๋ฒ„ Nginx
ํ† ํฐ ๊ด€๋ฆฌ JWT
๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค MySQL
CI/CD GitHub Actions Jenkins
API ๊ด€๋ฆฌ Postman
๋ฒ„์ „ ์ปจํŠธ๋กค Git GitHub

๐Ÿง‘๐Ÿปโ€๐Ÿ’ป ์—ญํ• ๋ถ„๋‹ด

์ž‘์—…์ž ์ž‘์—… ๋‚ด์šฉ
์ด์ค€ํฌ - ๋กœ๊ทธ์ธ ๋ฐ ์†Œ์…œ๋กœ๊ทธ์ธ(NAVER, KAKAO) ๊ด€๋ฆฌ
- ํ™ˆ/ ํ•จ๊ป˜ํ•ด์š”/ ์•Œ๋ฆผ/ ๊ฒ€์ƒ‰ ํŽ˜์ด์ง€์— ๋Œ€ํ•œ ๋ฐ˜์‘ํ˜• ์›น ํŽ˜์ด์ง€ ๊ตฌํ˜„
- ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ชจ๋‹ฌ ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„
- ํ•จ๊ป˜ํ•ด์š” ํŽ˜์ด์ง€ ๊ฒŒ์‹œํŒ CRUD ์ž‘์—…
- ๋Œ“๊ธ€ ํŽ˜์ด์ง€ ๊ด€๋ จ CRUD ์ž‘์—…
- ๊ฒ€์ƒ‰ ํŽ˜์ด์ง€ ๊ตฌํ˜„
- ๋ฉ”์ธ ํŽ˜์ด์ง€ ๊ธฐ๋Šฅ ๊ตฌํ˜„
- ์•Œ๋ฆผ ํŽ˜์ด์ง€ ๊ตฌํ˜„
- ์ƒํƒœ ๊ด€๋ฆฌ ๋ฐ ์ „๋ฐ˜์ ์ธ ํ๋ฆ„ ์ œ์–ด
- ์ฝ”๋“œ ๋ฆฌ๋ทฐ
- ๋ฐฑ์—”๋“œ API ๊ฐœ๋ฐœ ๋ฐ ์—ฐ๋™
์ดํ˜„์ฃผ - ์•„์ด๋””์–ด ๊ธฐํš ๋ฐ ํŒ€๋นŒ๋”ฉ ๊ตฌ์„ฑ
- ๋””์ž์ด๋„ˆ์™€ ํ•จ๊ป˜ ํ”Œ๋กœ์šฐ ์ฐจํŠธ ๊ธฐํš
- ์ „ ํŽ˜์ด์ง€ UI/UX ๋ ˆ์ด์•„์›ƒ ๋งˆํฌ์—… ์ž‘์—…
- ํšŒ์›๊ฐ€์ž… ํผ ์กฐ๊ฑด์— ๋”ฐ๋ผ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ
- ํšŒ์›๊ฐ€์ž… ์ ˆ์ฐจ (์œ ์ €์˜ ์ •๋ณด ์ž…๋ ฅํผ ์ž‘์—…)
- ํšŒ์›๊ฐ€์ž…์„ ํ†ตํ•ด POST์‹œํ‚จ ๋งˆ์ดํŽ˜์ด์ง€ ์ •๋ณด GET ์œผ๋กœ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ
- ๋งˆ์ดํŽ˜์ด์ง€ ์ˆ˜์ •
- ์ƒํƒœ ๊ด€๋ฆฌ ๋ฐ ํ๋ฆ„ ์ œ์–ด
- ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„

๐ŸŒŸ ์›ฐ์‹œ์ฝ”๋”ฉ ์ฃผ์š” ๊ธฐ๋Šฅ ์†Œ๊ฐœ

๋กœ๊ทธ์ธ

๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ์€ ์ด 3๊ฐ€์ง€์˜ ๊ฒฝ์šฐ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค

  • ์ด๋ฉ”์ผ๋กœ ๋กœ๊ทธ์ธ
  • ์นด์นด์˜ค๋กœ ๋กœ๊ทธ์ธ
  • ๋„ค์ด๋ฒ„๋กœ ๋กœ๊ทธ์ธ

ํšŒ์› ๊ฐ€์ž…

๊ฐ€์ž…ํ•œ ์ •๋ณด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์ž์‹ ์„ ์†Œ๊ฐœํ•  ์ˆ˜ ์žˆ๋Š” ์ •๋ณด๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

  • ํ˜„์žฌ ์ž์‹ ์˜ ์ƒํƒœ (ํ•™์ƒ/์ทจ์ค€์ƒ/ํ˜„์—… ๊ฐœ๋ฐœ์ž)
  • ๊ฐ„๋‹จํ•œ ์ž๊ธฐ์†Œ๊ฐœ
  • ์ž์‹ ์„ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋Š” ํฌํŠธํด๋ฆฌ์˜ค
  • ๊ฒฝ๋ ฅ ์ •๋ณด

๋“ฑ ์„ ๊ธฐ์ž…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค

ํ•จ๊ป˜ํ•ด์š”

ํ•จ๊ป˜ํ•ด์š” ํŽ˜์ด์ง€๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ๊ฒŒ์‹œ๊ธ€ ์ž‘์„ฑ์‹œ์— ์ƒ์„ฑํ•œ ํ•ด์‹œํƒœ๊ทธ ๋“ฑ์„ ๋ฐ”ํƒ•์œผ๋กœ ๋žœ๋ค์œผ๋กœ ๊ฒŒ์‹œ๊ธ€์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋Š” ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค.

์ž์‹ ์˜ ์ •๋ณด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ๊ธ€์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ž์‹ ์˜ ๊ธ€์— ๋Œ€ํ•œ ํ‚ค์›Œ๋“œ๋ฅผ ํ•ด์‹œํƒœ๊ทธ๋กœ ์ถ”๊ฐ€ํ•˜์—ฌ ๊ธ€์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ํ•œ๋ˆˆ์— ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ๋ชจ์ž„ '์ด๋ฆ„/ ์†Œ๊ฐœ / ํƒœ๊ทธ' ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ํ•œ ๊ฒŒ์‹œ๊ธ€์„ ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋กœ์ปฌ ์Šคํ† ๋ฆฌ์ง€์— ์ €์žฅ๋œ ์ •๋ณด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์ตœ๊ทผ ๊ฒ€์ƒ‰์–ด๋ฅผ ์œ ์ง€์‹œ์ผœ์ค๋‹ˆ๋‹ค.

ํ™ˆ

ํ™ˆ ํŽ˜์ด์ง€๋Š” ๋‚˜์˜ ํ™œ๋™์„ ํ•œ๋ˆˆ์— ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๋‚ด๊ฐ€ ๋งŒ๋“  ๋ชจ์ž„
  • ๋‚ด๊ฐ€ ๊ฐ€์ž…ํ•œ ๋ชจ์ž„,
  • ๋‚ด๊ฐ€ ๊ฐ€์ž… ์‹ ์ฒญํ•œ ๋ชจ์ž„
  • ์ข‹์•„์š” ํ•œ ๋ชจ์ž„

์„ ์„ธ๋ถ„ํ™”ํ•˜์—ฌ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ์•Œ๋ฆผ ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ๋‚˜์™€ ๊ด€๋ จ๋œ ์•Œ๋ฆผ์„ ๋ฐ›์•„ ์˜ต๋‹ˆ๋‹ค.

  • ๋‚ด ๊ฒŒ์‹œ๊ธ€์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€์— ๋Œ€ํ•œ ์•Œ๋ฆผ
  • ๋‚ด ๊ฒŒ์‹œ๋ฌผ์— ๊ฐ€์ž… ์‹ ์ฒญํ•œ ์‚ฌ๋žŒ์— ๋Œ€ํ•œ ์•Œ๋ฆผ
  • ๋‚ด๊ฐ€ ๊ฐ€์ž…์‹ ์ฒญํ•œ ๋ชจ์ž„์˜ ๊ฐ€์ž… ์—ฌ๋ถ€์— ๋Œ€ํ•œ ์•Œ๋ฆผ

์„ ์•Œ๋ฆผ ํŽ˜์ด์ง€์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋งˆ์ดํŽ˜์ด์ง€

ํšŒ์› ๊ฐ€์ž… ์‹œ์— ์ž‘์„ฑํ–ˆ๋˜ ์ •๋ณด๋ฅผ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋Š” ํŽ˜์ด์ง€์ž…๋‹ˆ๋‹ค.

์ถ”๊ฐ€์ ์œผ๋กœ ์ž์‹ ์˜ ์ •๋ณด๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ์ •๋ณด๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


์ฃผ์š” ๊ธฐ๋Šฅ ๋ณด๊ธฐ(.gif)

๐Ÿ”ธ ํšŒ์›๊ฐ€์ž… ํ˜„์ฃผ

์ด๋ฆ„, ์ด๋ฉ”์ผ, ๋น„๋ฐ€๋ฒˆํ˜ธ, ๋น„๋ฐ€๋ฒˆํ˜ธ ํ™•์ธ ๊นŒ์ง€ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋ฅผ ์ฒ ์ €ํžˆ ๋งˆ์นœ ํ›„ ํšŒ์›๊ฐ€์ž…์ด ์„ฑ๊ณต์ ์œผ๋กœ ์™„๋ฃŒ๋˜๋ฉด ๋งˆ์ดํŽ˜์ด์ง€์— ์†Œ๊ฐœ ๋  ํ”„๋กœํ•„์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.


๐Ÿ”ธ ํ•จ๊ป˜ํ•ด์š” ํŽ˜์ด์ง€ ์ค€ํฌ

๋žœ๋ค ํฌ์ŠคํŠธ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ

๊ฒŒ์‹œ๊ธ€ ์ž‘์„ฑํ•˜๊ธฐ

๊ฒŒ์‹œ๊ธ€ ์ˆ˜์ •ํ•˜๊ธฐ

ํ•จ๊ป˜ํ•ด์š” ๊ฐ€์ž… ํ˜„ํ™ฉ ๋ณด๊ธฐ

๐Ÿ”ธ ๊ฒŒ์‹œ๊ธ€ ๋Œ“๊ธ€ ๊ด€๋ จ ๊ธฐ๋Šฅ ๋ณด๊ธฐ ์ค€ํฌ

๋Œ“๊ธ€ ์“ฐ๊ธฐ / ์ˆ˜์ •ํ•˜๊ธฐ / ์‚ญ์ œํ•˜๊ธฐ / ๋‹ต๊ธ€ ์“ฐ๊ธฐ

๐Ÿ”ธ ๋ฉ”์ธ(ํ™ˆ) ํŽ˜์ด์ง€ ์ค€ํฌ

ํ™ˆ ๋ฉ”์ธ / ์•Œ๋ฆผ ๊ธฐ๋Šฅ

๋‚ด๊ฐ€ ์ž‘์„ฑํ•œ ๊ฒŒ์‹œ๊ธ€์— ๋ชจ์ž„ ๋งํฌ ์ถ”๊ฐ€ํ•˜๊ธฐ

๐Ÿ”ธ ๊ฒ€์ƒ‰ ํŽ˜์ด์ง€ ์ค€ํฌ

๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ ๊ตฌํ˜„ (์ตœ๊ทผ ๊ฒ€์ƒ‰์–ด ์ €์žฅ ํฌํ•จ)

๐Ÿ”ธ ๋งˆ์ดํŽ˜์ด์ง€ ํ˜„์ฃผ

ํšŒ์›๊ฐ€์ž… ์ ˆ์ฐจ์—์„œ ์ž…๋ ฅ๋œ ํ”„๋กœํ•„ ๋‚ด์šฉ๋ฌผ๋“ค์„ ๋งˆ์ดํŽ˜์ด์ง€์—์„œ ํ™•์ธํ•ด ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค ! ๐Ÿ™†๐Ÿปโ€โ™€๏ธ ์ถ”ํ›„์— ์ˆ˜์ • ์ž‘์—…๋„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

ํ”ผ๊ทธ๋งˆ ๋””์ž์ธ ๋ณด๊ธฐ

๋Š๋‚€์ 

๋ถ€์กฑํ•œ์ 

1. QA์˜ ๋ถ€์žฌ

์•„์ง ๊ฒฝํ—˜ํ•ด ๋ณด์ง€ ๋ชปํ•œ ๋ถ€๋ถ„์ด๋ผ ์กฐ์‹ฌ์Šค๋Ÿฝ๊ฒŒ ์ ์ง€๋งŒ, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ๋„ 'Jest'์™€ ๊ฐ™์€ ํ…Œ์ŠคํŒ… ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์กด์žฌํ•œ๋‹ค๊ณ  ์•Œ ์ˆ˜ ์žˆ๋‹ค. ๋‹น์žฅ ์šฐ๋ฆฌ๊ฐ€ ์‚ฌ์ด๋“œ ํ”„๋กœ์ ํŠธ๋กœ ๋งŒ๋“œ๋Š” ์„œ๋น„์Šค์˜ ๊ทœ๋ชจ๊ฐ€ ์•„๋‹Œ, ์‹ค์ œ๋กœ ์ˆ˜์‹ญ ์ˆ˜๋ฐฑ๋งŒ๋ช…์ด ์‚ฌ์šฉํ•˜๋Š” ์„œ๋น„์Šค๊ฐ€ ๋  ๊ฒฝ์šฐ ๋‚ด๊ฐ€ ๋กœ์ปฌ์—์„œ ๋ธŒ๋žœ์น˜๋ฅผ ๋”ฐ์„œ $ yarn build ๋งŒ์œผ๋กœ ์ด์ƒ ์—†์Œ์„ ํ™•์ธํ•˜๊ณ  ๋ฐฐํฌ ํ™˜๊ฒฝ์— ๋จธ์ง€ํ•˜์ง€๋Š” ์•Š์„ ๊ฒƒ์ด๋‹ค.

์ง€๊ธˆ๊นŒ์ง€๋Š” ๊ฒฝํ—˜ํ•˜์ง€ ๋ชปํ•œ ๋ถ€๋ถ„์ด๊ณ  ํ˜„์—…์— ๋“ค์–ด๊ฐ€๊ธฐ ์ „์— ํ•˜๊ธฐ์—๋Š” ์•„์ง ๋‚ด๊ฐ€ ๋ถ€์กฑํ•œ ๋ถ€๋ถ„์„ ๋ฉ”์šฐ๊ธฐ ์œ„ํ•ด ์šฐ์„ ์ˆœ์œ„์—์„œ๋Š” ๋ฐ€๋ ค์žˆ๋Š” ์ƒํ™ฉ์ด๋‹ค. ๋กœ์ปฌ์—์„œ ๋ฌธ์ œ๊ฐ€ ์—†๋˜ ๋ถ€๋ถ„๋“ค์ด ๋ฐฐํฌํ™˜๊ฒฝ์—์„œ ๋จธ์ง€๋์„ ๋•Œ ๊ฐ‘์ž‘์Šค๋Ÿฝ๊ฒŒ ๋ชจ๋“ˆ์„ ๋ชป์ฐพ๋Š” ๋“ฑ์˜ ๋ฌธ์ œ๋กœ ์ธํ•ด ๋ฉ”์ธ ๋ธŒ๋žœ์น˜์— ๊ธ‰ํžˆ hotfix ์ปค๋ฐ‹์„ ๋‚ ๋ฆฐ ๊ฒฝํ—˜์ด ์žˆ๋‹ค. ํ•ด๋‹น ๋ถ€๋ถ„์„ ํ˜„์—…์—์„œ ์‹ค๋ฌด๋กœ ๋ฐฐ์›Œ ๋‹ค์Œ ์‚ฌ์ด๋“œ ํ”„๋กœ์ ํŠธ ์ง„ํ–‰ ์‹œ์—๋Š” ๋ถˆํ•„์š”ํ•œ ์ปค๋ฐ‹๊ณผ ์—๋Ÿฌ๋ฅผ ์ค„์ด๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ๊ฐ€๊ณ  ์‹ถ๋‹ค

2. Next๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ ์ƒ๊ธด ๋ฌธ์ œ

Next ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ํ†ตํ•ด ์ดˆ๊ธฐ HTML ํŒŒ์ผ์— ๋Œ€ํ•œ ์„œ๋ฒ„ ์‚ฌ์ด๋“œ ๋ Œ๋”๋ง, SEO ๋“ฑ ์„ ์ ์šฉํ–ˆ์ง€๋งŒ, pre-render๋ฅผ ์œ„ํ•œ getServerSideProps ๋“ฑ์˜ ์ดˆ๊ธฐ ํ•จ์ˆ˜๋ฅผ ์„ค์ •ํ•˜์ง€ ๋ชปํ–ˆ๋‹ค. ๋˜ํ•œ ์„œ๋ฒ„ ์‚ฌ์ด๋“œ ๋ Œ๋”๋ง์„ ๋ฐ”ํƒ•์œผ๋กœ ๋กœ์ง์ด ์ œ์–ด๊ฐ€ ๋˜๋ฉด์„œ ์›น API์˜ ๊ธฐ๋Šฅ ๋“ฑ์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด useEffect ๋‚ด๋ถ€์— ๋ฐฉ์–ด ์ฝ”๋“œ๋ฅผ ๋งŽ์ด ์ ๊ฒŒ ๋˜์—ˆ๋‹ค.

useEffect(() => {
if (typeof window !== 'undefined') {
...
}
}, [])

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

3. ์ฝ”๋“œ๋ฆฌ๋ทฐ์˜ ๋ถ€์žฌ

1,2 ๋ฅผ ์ข…ํ•ฉํ•œ ๋‚ด์šฉ์ด๋‹ค. ๋‚ด ์Šค์Šค๋กœ๋Š” ๋‚˜์˜์ง€ ์•Š์€ ์ฝ”๋“œ๋ผ๊ณ  ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ํ‰๊ฐ€๋ฅผ ๋ฐ›์ง€ ์•Š๋Š”๋‹ค๋ฉด ๊ณ„์† ์šฐ๋ฌผ ์•ˆ ๊ฐœ๊ตฌ๋ฆฌ๋กœ ์‚ด ์ˆ˜๋ฐ–์— ์—†๋‹ค. ๋น„์Šทํ•œ ์‹ค๋ ฅ์„ ๊ฐ€์ง„ ๋™๋ฃŒ ๊ฐœ๋ฐœ์ž์™€ ์ž‘์—…์„ ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋‚ด ์ฝ”๋“œ์— ๋Œ€ํ•ด์„œ ์ œ๋Œ€๋กœ ์˜๊ฒฌ์„ ์ฃผ๊ฑฐ๋‚˜ ์กฐ์–ธ์„ ๋ฐ›์€ ๊ฒฝํ—˜์ด ์—†์—ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค. ์ง€๊ธˆ๊นŒ์ง€์˜ ๋ฐฐ์›€์˜ ์˜์ง€๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์ฝ”๋“œ ๋ฆฌ๋ทฐ๊ฐ€ ๋”ํ•ด์ง„๋‹ค๋ฉด ์ง€๊ธˆ๋ณด๋‹ค ํ›จ์”ฌ ๋” ์„ฑ์žฅํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋ผ ์ƒ๊ฐํ•œ๋‹ค.