๐Ÿ–๏ธ[SKT Devocean Young] ๋ชจ๋˜ ๋ฆฌ์•กํŠธ Deep Dive ๋„์„œ ์Šคํ„ฐ๋”” ํ›„๊ธฐ ๐ŸŒŠ

ํ˜œํ˜œยท2024๋…„ 11์›” 2์ผ
0

๋Œ€์™ธํ™œ๋™

๋ชฉ๋ก ๋ณด๊ธฐ
12/13
post-thumbnail

๐Ÿ’ก ๊ธธ๊ณ  ๊ธด ๋ชจ๋˜ ๋ฆฌ์•กํŠธ Deep Dive ์Šคํ„ฐ๋””๊ฐ€ ๋์ด ๋‚ฌ๋‹ค! ์ฒ˜์Œ ๊ฒฉ์ฃผ๋กœ ์ง„ํ–‰ํ•  ๋•Œ๋Š” ์ด ๋‘๊บผ์šด ์ฑ…์„ ๊ณผ์—ฐ ๋‹ค ๋๋‚ผ ์ˆ˜ ์žˆ์„๊นŒ ์‹ถ์—ˆ๋Š”๋ฐ ๋ง‰์ƒ ๋˜ ๋๋‚˜๋‹ˆ๊นŒ ๋„ˆ๋ฌด ์•„์‰ฌ์šด ๋งˆ์Œ์ด ๋“œ๋Š” ๊ฒƒ ๊ฐ™๋‹ค ๐Ÿ˜‚ ์ •๋ง ์ข‹์€ ๋ถ„๋“ค๊ณผ ํ•จ๊ป˜ํ•  ์ˆ˜ ์žˆ์—ˆ๊ณ  ๋งŽ์ด ๋ฐฐ์›Œ๊ฐˆ ์ˆ˜ ์žˆ์—ˆ๋˜ ์Šคํ„ฐ๋””์˜€๋‹ค! ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ๋„์„œ ์Šคํ„ฐ๋”” ํ›„๊ธฐ๋ฅผ ์งง๊ฒŒ ๋‚จ๊ฒจ๋ณด๋ ค๊ณ  ํ•œ๋‹ค ๐Ÿ˜€

โœ… ๋ชจ๋˜ ๋ฆฌ์•กํŠธ Deep Dive

๋ชจ๋˜ ๋ฆฌ์•กํŠธ Deep Dive ๊ตฌ๋งค ๋งํฌ

๋ชจ๋˜ ๋ฆฌ์•กํŠธ Deep Dive๋Š” ๊น€์šฉ์ฐฌ๋‹˜์ด ์ถœํŒํ•˜์‹ , ๋ฆฌ์•กํŠธ๋ฅผ ์ž˜ ์“ฐ๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ํ•ต์‹ฌ์ ์ธ ์ง€์‹๋“ค์„ ์ •๋ฆฌํ•œ ์ฑ…์ด๋‹ค. ๋ฌด๋ ค 952ํŽ˜์ด์ง€(...)์˜€์ง€๋งŒ ์™„๋…ํ•˜๊ณ  ๋‚˜์„œ ๋ณด๋ฉด ๋ญ ํ•˜๋‚˜ ๋บ„ ๊ฒŒ ์—†์„ ์ •๋„๋กœ ์ •๋ง ์•Œ์ฐฌ ๋‚ด์šฉ์ด๋‹ค.
์ฝ์–ด ๋ณธ ์‚ฌ๋žŒ์ด๋ผ๋ฉด ๋‹ค๋“ค ์•Œ๊ฒ ์ง€๋งŒ ๋ฆฌ์•กํŠธ๋ฅผ ์ž…๋ฌธํ•˜๋Š” ์‚ฌ๋žŒ๋ณด๋‹ค๋Š”, ๋ฆฌ์•กํŠธ๋ฅผ ์–ด๋Š ์ •๋„ ์‚ฌ์šฉํ•ด ๋ณธ ๊ฒฝํ—˜์ด ์žˆ๋Š” ์‚ฌ๋žŒ๋“ค์ด ์ฝ๊ธฐ์— ์ ํ•ฉํ•˜๋‹ค. ๋‚˜๋Š” React๋ฅผ ์‚ฌ์šฉํ•œ์ง€ 2๋…„ ์ •๋„ ๋˜์—ˆ๋Š”๋ฐ๋„ ์ƒˆ๋กญ๊ฒŒ ์•Œ๊ฑฐ๋‚˜ ์–ด๋ ต๊ฒŒ ๋Š๊ปด์ง€๋Š” ๊ฐœ๋…๋“ค์ด ๊ฝค ์žˆ์—ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค๐Ÿคฃ ๊ทธ๋ž˜๋„ ์—„์ฒญ ์‹ฌํ™”์ ์ธ ๋‚ด์šฉ์ด๋ผ๊ธฐ๋ณด๋‹ค๋Š” ์ตœ๋Œ€ํ•œ ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ฒŒ ์ ํ˜€ ์žˆ๋Š” ๋Š๋‚Œ์ด๋ผ์„œ ์ฝ๊ณ  ์Šต๋“ํ•˜๋Š” ๋ฐ ์–ด๋ ค์›€์€ ์—†์—ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค!

โœ… ์Šคํ„ฐ๋”” ์ง„ํ–‰ ๋ฐฉ์‹

์šฐ๋ฆฌ ์Šคํ„ฐ๋””์˜ ์ง„ํ–‰ ๋ฐฉ์‹์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

โœ”๏ธ ๊ธฐ๋ณธ ๋ฐฉ์‹

  • ๊ธฐ๊ฐ„ : 2์ฃผ์— ํ•œ ๋ฒˆ
  • ๋ฐฉ์‹ : ์˜คํ”„๋ผ์ธ
  • ์žฅ์†Œ : SKTํƒ€์›Œ
  • 2๋ช…์”ฉ ๋Œ์•„๊ฐ€๋ฉด์„œ ๊ฐ์ž ๋งก์€ ํŒŒํŠธ๋ฅผ ๋ฐœํ‘œํ•˜๋Š” ๋ฐฉ์‹

โœ”๏ธ Notion

  • ๊ฒฉ์ฃผ ์Šคํ„ฐ๋”” ์ „๋‚ ๊นŒ์ง€ ์Šคํ„ฐ๋””์› ์ „์›์ด ์ด๋ฒˆ ํŒŒํŠธ๋ฅผ ๊ณต๋ถ€ํ•˜๊ณ  ์ •๋ฆฌํ•œ ๋ฌธ์„œ ์—…๋กœ๋“œ

โœ”๏ธ GitHub

๋ชจ๋˜ ๋ฆฌ์•กํŠธ Deep Dive ์Šคํ„ฐ๋”” GitHub

  • ์Šคํ„ฐ๋””๊ฐ€ ๋๋‚˜๋ฉด ํ•ด๋‹น ์ฃผ์— ๋ฐœํ‘œ๋ฅผ ๋งก์€ ํŒ€์›์ด ์ •๋ฆฌํ•ด์„œ GitHub ๋ ˆํฌ์— ์—…๋กœ๋“œ

โœ”๏ธ ์Šคํ„ฐ๋”” ์‹œ๊ฐ„

  • ์Šคํ„ฐ๋””๋Š” ๋‹จ์ˆœํ•˜๊ฒŒ ํ•ด๋‹น ํŒŒํŠธ๋ฅผ ๋งก์€ ํŒ€์›์ด ๋ฐœํ‘œ๋ฅผ ํ•˜๊ณ , ์„œ๋กœ ๊ถ๊ธˆํ–ˆ๋˜ ์ ์ด๋‚˜ ์˜๊ฒฌ์„ ๋‚˜๋ˆ„๋Š” ์‹์œผ๋กœ ์ง„ํ–‰๋œ๋‹ค!
  • ์Šคํ„ฐ๋”” ๋‚ด์šฉ์€ ๋‹จ์ˆœํžˆ ์ฑ…์˜ ๋‚ด์šฉ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, ์ฑ…์„ ์ฝ์œผ๋ฉด์„œ ์ถ”๊ฐ€์ ์œผ๋กœ ์ฐพ์•„๋ณธ ์ •๋ณด๋‚˜ ์ตœ์‹  ํŠธ๋ Œ๋“œ๋„ ํ•จ๊ป˜ ๋„ฃ์–ด์„œ ๊ตฌ์„ฑ๋˜์—ˆ๋‹ค ๐Ÿ˜€

โœ… ๊ฐ ์ฑ•ํ„ฐ ์š”์•ฝ

01์žฅ: ๋ฆฌ์•กํŠธ ๊ฐœ๋ฐœ์„ ์œ„ํ•ด ๊ผญ ์•Œ์•„์•ผ ํ•  ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ

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

๐Ÿ’ก ์ƒˆ๋กญ๊ฒŒ ์•Œ๊ฒŒ ๋œ ์ 
1. Symbol์„ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋Š” ๋ญ˜๊นŒ | symbol usage
2. ์›์‹œ ํƒ€์ž…์€ ๋ถˆ๋ณ€ ํ˜•ํƒœ์˜ ๊ฐ’์œผ๋กœ ์ €์žฅ, ๊ฐ์ฒด๋Š” ๋ณ€๊ฒฝ ๊ฐ€๋Šฅํ•œ ํ˜•ํƒœ๋กœ ๊ฐ’์„ ์ €์žฅ
3. ๋ฆฌ์•กํŠธ์—์„œ๋Š” Object.is ๋งค์ปค๋‹ˆ์ฆ˜์œผ๋กœ ๊ฐ’์˜ ๋น„๊ต๊ฐ€ ์ด๋ฃจ์–ด์ง

02์žฅ: ๋ฆฌ์•กํŠธ ํ•ต์‹ฌ ์š”์†Œ ๊นŠ๊ฒŒ ์‚ดํŽด๋ณด๊ธฐ

2์žฅ์€ ์ œ๋ชฉ ๊ทธ๋Œ€๋กœ ๋ฆฌ์•กํŠธ์˜ ๊ธฐ๋ฐ˜์ด ๋˜๋Š” ํ•ต์‹ฌ ์š”์†Œ๋“ค์„ ๋œฏ์–ด๋ณด๋Š” ์ฑ•ํ„ฐ์˜€๋‹ค. ๋‹จ์–ด๋งŒ ๋“ค์–ด๋ดค๋˜ ๋ฆฌ์•กํŠธ ํŒŒ์ด๋ฒ„๋‚˜ Reconciliation ๋“ฑ์— ๋Œ€ํ•ด ์ •๋ง ์ž์„ธํžˆ ์•Œ ์ˆ˜ ์žˆ๋Š” ์ฑ•ํ„ฐ์˜€๊ณ , ์ œ๋Œ€๋กœ ์ดํ•ดํ•˜๋ ค๋ฉด ์ œ์ผ ์–ด๋ ค์šด ์ฑ•ํ„ฐ ์ค‘์— ํ•˜๋‚˜์˜€๋˜ ๊ฒƒ ๊ฐ™๋‹ค ๐Ÿฅน ์ด๊ฑด ๋‘๋ฒˆ ์„ธ๋ฒˆ ์ฝ์–ด์•ผ ์ฐจ์ฐจ ์ดํ•ดํ•ด๋‚˜๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๊ฐœ๋…๋“ค์ด ์•„๋‹๊นŒ ์‹ถ๋‹ค ใ… .ใ… !!ใ…‹ใ…‹

๐Ÿ’ก ์ƒˆ๋กญ๊ฒŒ ์•Œ๊ฒŒ ๋œ ์ 
1. JSX๋Š” ๋ฆฌ์•กํŠธ์— ์ข…์†์ ์ด์ง€ ์•Š์€ ๋…์ž์ ์ธ ๋ฌธ๋ฒ•
2. DOM๊ณผ ๋ธŒ๋ผ์šฐ์ € ๋ Œ๋”๋ง ๊ณผ์ •
3. ๋ฆฌ์•กํŠธ ์ž‘์—…์„ ์ž‘์€ ๋‹จ์œ„๋กœ ๋ถ„ํ• ํ•˜๊ณ  ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋งค๊ฒจ ์‹คํ–‰ํ•˜๋Š” '๋ฆฌ์•กํŠธ ํŒŒ์ด๋ฒ„'!

03์žฅ: ๋ฆฌ์•กํŠธ ํ›… ๊นŠ๊ฒŒ ์‚ดํŽด๋ณด๊ธฐ

3์žฅ์€ ๋‚ด๊ฐ€ ์ฒซ ๋ฐœํ‘œ๋ฅผ ๋งก์€ ์žฅ์œผ๋กœ, ๋ฆฌ์•กํŠธ์—์„œ ์ค‘์š”ํ•œ ๊ฐœ๋… ์ค‘ ํ•˜๋‚˜์ธ hook์— ๋Œ€ํ•ด ์ž์„ธํ•œ ์†Œ๊ฐœ๊ฐ€ ๋‚˜์™€ ์žˆ๋Š” ์ฑ•ํ„ฐ์˜€๋‹ค. ์ž์ฃผ ์“ฐ๋Š” hook๋ถ€ํ„ฐ ์ƒ์ „ ํ•œ ๋ฒˆ๋„ ์‚ฌ์šฉํ•ด ๋ณธ ์  ์—†๋Š” ์ด๋ฆ„์กฐ์ฐจ ์ƒ์†Œํ•œ hook๋“ค๊นŒ์ง€ ์–ด๋–ค ๊ธฐ๋Šฅ์„ ํ•˜๊ณ , ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•˜๋Š”์ง€ ์ž์„ธํžˆ ์„ค๋ช…๋˜์–ด ์žˆ์—ˆ๋‹ค. ๊ฐœ์ธ์ ์œผ๋กœ ์ฒซ ๋ฐœํ‘œ๋ฅผ ๋งก์€ ํŒŒํŠธ๋ผ์„œ ๊ทธ๋Ÿฐ์ง€ ๊ฐ€์žฅ ๊ธฐ์–ต์— ๋‚จ๋Š” ์ฑ•ํ„ฐ์ธ ๊ฒƒ ๊ฐ™๋‹ค.

๐Ÿ’ก ์ƒˆ๋กญ๊ฒŒ ์•Œ๊ฒŒ ๋œ ์ 
1. useState์™€ useRef์˜ ์ฐจ์ด์ 
2. useState์— ๋ณ€์ˆ˜ ๋Œ€์‹  ํ•จ์ˆ˜๋ฅผ ๋„˜๊ฒจ state๊ฐ€ ์ฒ˜์Œ ๋งŒ๋“ค์–ด์งˆ ๋•Œ๋งŒ ์‚ฌ์šฉ๋˜๊ฒŒ ํ•˜๋Š” ๊ฒƒ์„ '๊ฒŒ์œผ๋ฅธ ์ดˆ๊ธฐํ™”'๋ผ๊ณ  ํ•จ!
3. useEffect๋Š” ์ƒ๋ช…์ฃผ๊ธฐ ๋ฉ”์„œ๋“œ๋ฅผ ๋Œ€์ฒดํ•˜๊ธฐ ์œ„ํ•ด ๋งŒ๋“ค์–ด์ง„ ํ›…์ด ์•„๋‹ˆ๋‹ค! ์ปดํฌ๋„ŒํŠธ์˜ ์—ฌ๋Ÿฌ ๊ฐ’๋“ค์„ ํ™œ์šฉํ•ด ๋™๊ธฐ์ ์œผ๋กœ ๋ถ€์ˆ˜ ํšจ๊ณผ๋ฅผ ๋งŒ๋“œ๋Š” ๋งค์ปค๋‹ˆ์ฆ˜ โญ

04์žฅ: ์„œ๋ฒ„ ์‚ฌ์ด๋“œ ๋ Œ๋”๋ง

4์žฅ์€ ์ œ๋ชฉ ๊ทธ๋Œ€๋กœ ์„œ๋ฒ„ ์‚ฌ์ด๋“œ ๋ Œ๋”๋ง(SSR), ๊ทธ๋ฆฌ๊ณ  Next.js์— ๋Œ€ํ•œ ๋‚ด์šฉ์ด ๋‹ด๊ฒจ ์žˆ์—ˆ๋‹ค. CSR๊ณผ SSR, SPA์™€ MPA์— ๋Œ€ํ•œ ๊ฐœ๋…์€ ๋ช…ํ™•ํžˆ ์•Œ๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋Š”๋ฐ ์ตœ๊ทผ์— ๊ธฐ์ˆ  ๋ฉด์ ‘์— ์ด ๋ถ€๋ถ„์— ๋Œ€ํ•œ ๋Œ€๋‹ต์„ ์ด์ƒํ•˜๊ฒŒ ํ•œ ์ ์ด ์žˆ์–ด์„œ ๋„์„œ ์Šคํ„ฐ๋””๋ฅผ ํ•  ๋•Œ ์ด ๋ถ€๋ถ„์„ ์ง‘์ค‘ํ•ด์„œ ๊ณต๋ถ€ํ• ๊ฑธ...๐Ÿฅน ํ•˜๋Š” ํ›„ํšŒ๊ฐ€ ์žˆ์—ˆ๋‹ค(ใ… ใ… ) ๊ทธ๋งŒํผ ์ค‘์š”ํ•˜๊ณ  ์•Œ์•„์•ผ ํ•˜๋Š” ๊ฐœ๋…์ด๋ผ๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค.

๐Ÿ’ก ์ƒˆ๋กญ๊ฒŒ ์•Œ๊ฒŒ ๋œ ์ 
1. CSR๊ณผ SSR์˜ ์žฅ๋‹จ์ 
2. ๋›ฐ์–ด๋‚œ SPA๋Š” MPA๋ณด๋‹ค ๋‚ซ๋‹ค โญ
3. Next.js paga router์˜ ์ „์ฒด์ ์ธ ๊ตฌ์กฐ

๐Ÿ”ฅ ์ฑ…์— ์—†๋Š” ์ถ”๊ฐ€์ ์ธ ์˜๊ฒฌ
1. redirect vs rewrite

  1. SSR์ด ์ ์šฉ๋˜์ง€ ์•Š๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์ฃผ์˜ํ•ด์•ผ ํ•œ๋‹ค!

05์žฅ: ๋ฆฌ์•กํŠธ์™€ ์ƒํƒœ ๊ด€๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

5์žฅ์—์„œ๋Š” ์ƒํƒœ ๊ด€๋ฆฌ๋ฅผ ์™œ ํ•ด์•ผ ํ•˜๋Š”์ง€, ์ƒํƒœ ๊ด€๋ฆฌ๋Š” ์–ด๋–ค ์‹์œผ๋กœ ๋ฐœ์ „๋˜์–ด ์™”๋Š”์ง€, ๊ทธ๋ฆฌ๊ณ  ์ƒํƒœ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ ๋„๊ตฌ๋“ค์„ ์–ด๋–ค ๊ฒƒ๋“ค์ด ์žˆ๋Š”์ง€ ์•Œ์•„๋ณด๋Š” ์ฑ•ํ„ฐ์˜€๋‹ค. ํŠนํžˆ ์ด๋Ÿฌํ•œ ์ƒํƒœ ๊ด€๋ฆฌ ๋„๊ตฌ๊ฐ€ ์™œ ๊ฐœ๋ฐœ๋˜๊ณ  ๋ฐœ์ „๋˜์—ˆ๋Š”์ง€์— ๋Œ€ํ•œ ๋ฐฐ๊ฒฝ์„ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์—ˆ๋˜ ๋‚ด์šฉ์ด์—ˆ๋‹ค. ์ƒํƒœ ๊ด€๋ฆฌ ๋„๊ตฌ๋ฅผ ์ด๊ฒƒ์ €๊ฒƒ ์จ ๋ณด๋Š” ๊ฑธ ์ข‹์•„ํ•ด์„œ ๊ฐœ์ธ์ ์œผ๋กœ ์žฌ๋ฐŒ๋Š” ์žฅ์ด์—ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค โ˜บ๏ธ

๐Ÿ’ก ์ƒˆ๋กญ๊ฒŒ ์•Œ๊ฒŒ ๋œ ์ 
1. ๋‹จ๋ฐฉํ–ฅ ๋ฐ์ดํ„ฐ ํ๋ฆ„์„ ๊ฐ€์ง€๋Š” 'Flux ํŒจํ„ด'
2. Context API๋Š” ์ƒํƒœ ๊ด€๋ฆฌ๊ฐ€ ์•„๋‹Œ '์ฃผ์ž…'์„ ๋„์™€์ฃผ๋Š” ๊ธฐ๋Šฅ์ด๋‹ค!
3. Recoil๊ณผ Jotai์˜ ์ฐจ์ด์  (ํ‚ค ๊ด€๋ฆฌ ์œ ๋ฌด, ์ •์‹ ๋ฒ„์ „ ์—ฌ๋ถ€ ๋“ฑ)

06์žฅ: ๋ฆฌ์•กํŠธ ๊ฐœ๋ฐœ ๋„๊ตฌ๋กœ ๋””๋ฒ„๊น…ํ•˜๊ธฐ

'๋ฆฌ์•กํŠธ ๊ฐœ๋ฐœ ๋„๊ตฌ'๋ž€ ๋ฌด์—‡์ด๋ฉฐ, ์–ด๋–ป๊ฒŒ ํ™œ์šฉํ•ด์•ผ ํ•˜๋Š”์ง€์— ๋Œ€ํ•œ ๋‚ด์šฉ์ด์—ˆ๋‹ค. ์ปดํฌ๋„ŒํŠธ์™€ ํ”„๋กœํŒŒ์ผ๋Ÿฌ ํƒญ์—์„œ ๊ฐ๊ฐ ์–ด๋–ค ๋‚ด์šฉ์„ ์ œ๊ณตํ•˜๋Š”์ง€์— ๋Œ€ํ•œ ์„ค๋ช…์ด ๋‚˜์™€ ์žˆ์—ˆ๋‹ค.

๐Ÿ’ก ์ƒˆ๋กญ๊ฒŒ ์•Œ๊ฒŒ ๋œ ์ 
1. ์ปดํฌ๋„ŒํŠธ๋ฅผ ๊ธฐ๋ช… ํ•จ์ˆ˜๋กœ ์„ ์–ธํ•˜๋ฉด, ๋ฆฌ์•กํŠธ ๊ฐœ๋ฐœ ๋„๊ตฌ์—์„œ ์‰ฝ๊ฒŒ ์‹๋ณ„ ๊ฐ€๋Šฅํ•˜๋‹ค!
2. ๋ฆฌ์•กํŠธ๊ฐ€ ๋ Œ๋”๋งํ•˜๋Š” ๊ณผ์ •์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์ƒํ™ฉ์„ ๊ฐœ๋ฐœ ๋ชจ๋“œ์—์„œ ํ™•์ธํ•˜๊ฒŒ ํ•ด์ฃผ๋Š” 'ํ”„๋กœํŒŒ์ผ๋Ÿฌ'
3. 'ํ”„๋กœํŒŒ์ผ๋Ÿฌ'์—์„œ๋Š” ๋ Œ๋” ์ปค๋ฐ‹๋ณ„๋กœ ์–ด๋– ํ•œ ์ž‘์—…์ด ์ผ์–ด๋‚ฌ๋Š”์ง€์™€ ์‹œ๊ฐ„์˜ ํ๋ฆ„์— ๋”ฐ๋ผ ๋ฆฌ์•กํŠธ๊ฐ€ ์ž‘๋™ํ•˜๋Š” ๋‚ด์šฉ์„ ์ธก์ • ๊ฐ€๋Šฅ

07์žฅ: ํฌ๋กฌ ๊ฐœ๋ฐœ์ž ๋„๊ตฌ๋ฅผ ํ™œ์šฉํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ถ„์„

ํฌ๋กฌ ๊ฐœ๋ฐœ์ž ๋„๊ตฌ์˜ ๊ฐ ํƒญ์— ์–ด๋–ค ๋‚ด์šฉ์ด ๋‹ด๊ฒจ ์žˆ๊ณ , ๊ทธ๋Ÿฌํ•œ ๋‚ด์šฉ๋“ค์„ ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ํ•ด์„ํ•ด์•ผ ํ•˜๋Š”์ง€์— ๋Œ€ํ•œ ๋‚ด์šฉ. ์ด ์žฅ์—์„œ๋Š” ํŠน๋ณ„ํžˆ Next.js ํ™˜๊ฒฝ์„ ์–ด๋–ป๊ฒŒ ๋””๋ฒ„๊น… ํ•ด์•ผ ํ• ์ง€์— ๋Œ€ํ•œ ๋‚ด์šฉ๋„ ๋‹ด๊ฒจ ์žˆ์–ด์„œ ์ข‹์•˜๋‹ค!

๐Ÿ’ก ์ƒˆ๋กญ๊ฒŒ ์•Œ๊ฒŒ ๋œ ์ 
1. '์†Œ์Šค' ํƒญ์—์„œ๋Š” ๊ฐ์‹œํ•˜๊ณ  ์‹ถ์€ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•ด ์ถ”์ ํ•˜๊ฑฐ๋‚˜ ํŠน์ • ์ค‘๋‹จ์ ์—์„œ์˜ ์ฝœ์Šคํƒ๋„ ํ™•์ธ ๊ฐ€๋Šฅ (์ž˜ ํ™œ์šฉํ•˜๋ฉด ์ผ์ผ์ด console.log๋ฅผ ์ฐ์ง€ ์•Š๊ณ  ๋ณ€์ˆ˜๊ฐ’๋“ค์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค!)
2. '๋„คํŠธ์›Œํฌ' ํƒญ์—์„œ๋Š” ๋ฆฌ์†Œ์Šค๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๋Š” ์†๋„๊ฐ€ ์ ์ ˆํ•œ์ง€, ์˜ฌ๋ฐ”๋ฅธ ์šฐ์„ ์ˆœ์œ„๋กœ ๋‹ค์šด๋กœ๋“œ ๋˜๋Š”์ง€ ๋“ฑ์„ ํ™•์ธํ•ด ๋ณด๋ฉด ์ข‹๋‹ค
3. '๋ฉ”๋ชจ๋ฆฌ' ํƒญ์—์„œ๋Š” ์Šค๋ƒ…์ƒท์„ 2๊ฐœ ์ด์ƒ ์ดฌ์˜ํ•˜๊ณ , ์ฐจ์ด๋ฅผ ๋น„๊ตํ•˜๋Š” ์‹์œผ๋กœ ํ™œ์šฉํ•˜๋ฉด ์ข‹๋‹ค

๐Ÿ”ฅ ์ฑ…์— ์—†๋Š” ์ถ”๊ฐ€์ ์ธ ์˜๊ฒฌ

  • ๊ฐœ๋ฐœ์ž์˜ ์ปดํ“จํ„ฐ๋Š” ๋ณดํ†ต ์‚ฌ์šฉ์ž์˜ ๊ธฐ๊ธฐ๋ณด๋‹ค ์„ฑ๋Šฅ์ด ์ข‹๊ธฐ ๋•Œ๋ฌธ์—, ์˜๋„์ ์œผ๋กœ ๋„คํŠธ์›Œํฌ๋ฅผ ๋Š๋ฆฌ๊ฒŒ ํ•ด์„œ ์ฒด๊ฐ ์„ฑ๋Šฅ์„ ํ™•์ธํ•ด ๋ณด๋Š” ๊ฒŒ ์ข‹๋‹ค!

08์žฅ: ์ข‹์€ ๋ฆฌ์•กํŠธ ์ฝ”๋“œ ์ž‘์„ฑ์„ ์œ„ํ•œ ํ™˜๊ฒฝ ๊ตฌ์ถ•ํ•˜๊ธฐ

8์žฅ์€ ์‰ฝ๊ฒŒ ๋งํ•ด 'ํ…Œ์ŠคํŠธ'์— ๊ด€ํ•œ ์žฅ์ด์—ˆ๋‹ค. ESLint๋ฅผ ํ™œ์šฉํ•œ ์ •์  ์ฝ”๋“œ ๋ถ„์„๊ณผ ํ…Œ์ŠคํŒ… ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ™œ์šฉํ•œ ํ…Œ์ŠคํŠธ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ๋Œ€๋žต์ ์ธ ์†Œ๊ฐœ๋ฅผ ํ•˜๋Š” ์žฅ์ด์—ˆ๋‹ค.

๐Ÿ’ก ์ƒˆ๋กญ๊ฒŒ ์•Œ๊ฒŒ ๋œ ์ 
1. ESLint๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ๋ฅผ ๋ฌธ์ž์—ด๋กœ ์ฝ์–ด, ํŒŒ์„œ(parser)๋กœ ์ฝ”๋“œ๋ฅผ ๊ตฌ์กฐํ™”ํ•œ ํ›„, ์ด AST๋ฅผ ๊ทœ์น™๊ณผ ๋Œ€์กฐํ•œ๋‹ค
2. eslint-config ํŒจํ‚ค์ง€์—๋Š” ์œ ๋ช…ํ•œ eslint-config-airbnb ์™ธ์—๋„ ํ•œ๊ตญ ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ ๊ฐœ๋ฐœ ๋ฐ ๊ด€๋ฆฌ๋˜๋Š” @titicaca/triple-config-kit๋„ ์žˆ๋‹ค
3. ํ…Œ์ŠคํŠธ์˜ ์ตœ์šฐ์„  ๊ณผ์ œ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๊ฐ€์žฅ ์ทจ์•ฝํ•˜๊ฑฐ๋‚˜ ์ค‘์š”ํ•œ ๋ถ€๋ถ„์„ ํŒŒ์•…ํ•˜๋Š” ๊ฒƒ

๐Ÿ”ฅ ์ฑ…์— ์—†๋Š” ์ถ”๊ฐ€์ ์ธ ์˜๊ฒฌ

  • ๋ฐฑ์—”๋“œ์—์„œ api๊ฐ€ ์•„์ง ๋‚˜์˜ค์ง€ ์•Š์•˜์„ ๋•Œ ํ…Œ์ŠคํŠธ๋ฅผ ์‹œ๋„ํ•ด ๋ณผ ์ˆ˜ ์žˆ๋Š” msw, jsonServer

09์žฅ: ๋ชจ๋˜ ๋ฆฌ์•กํŠธ ๊ฐœ๋ฐœ ๋„๊ตฌ๋กœ ๊ฐœ๋ฐœ ๋ฐ ๋ฐฐํฌ ํ™˜๊ฒฝ ๊ตฌ์ถ•ํ•˜๊ธฐ

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

๐Ÿ’ก ์ƒˆ๋กญ๊ฒŒ ์•Œ๊ฒŒ ๋œ ์ 
1. tsconfig.json์—์„œ strict๊ฐ€ 'true'๋ฉด ์ •ํ™•ํžˆ ์–ด๋–ค ๊ฐ’๋“ค์ด ์ ์šฉ๋˜๊ฒŒ ๋˜๋Š”์ง€
2. ๊นƒํ—ˆ๋ธŒ ์•ก์…˜์˜ ๊ธฐ๋ณธ ๊ฐœ๋…๊ณผ ์ด๋ฅผ ์ด์šฉํ•ด์„œ CI๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•
3. ๋ฆฌ์•กํŠธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋„์ปค๋ผ์ด์ฆˆ ํ•˜๋Š” ๋ฐฉ๋ฒ• โญ

10์žฅ: ๋ฆฌ์•กํŠธ 17๊ณผ 18์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ ์‚ดํŽด๋ณด๊ธฐ

์ด๊ฑธ ๊ณต๋ถ€ํ•˜๊ณ  ์žˆ์„ ๋•Œ์ฏค์€ ์ด๋ฏธ ๋ฆฌ์•กํŠธ 19 ๋ฒ„์ „์ด ๋‚˜์™”์„ ๋•Œ์˜€๋‹ค... ์•„๋ฌดํŠผ ๋ฆฌ์•กํŠธ 17๊ณผ 18 ๋ฒ„์ „์€ ์–ด๋–ค ์ฐจ์ด๊ฐ€ ์žˆ๋Š”์ง€, ๋ฆฌ์•กํŠธ๋Š” ์ƒˆ๋กœ์šด ์—…๋ฐ์ดํŠธ์—์„œ ์–ด๋–ค ๊ด€์ ์œผ๋กœ ์‹ ๊ธฐ๋Šฅ์„ ์ถœ์‹œํ•˜๋Š”์ง€์— ๋Œ€ํ•œ ๋‚ด์šฉ์ด ์ ํ˜€ ์žˆ๋Š” ์žฅ์ด์—ˆ๋‹ค. ๋‹จ์ˆœํžˆ ๋ฆฌ์•กํŠธ์— ์žˆ๋Š” ๋‚ด๊ฐ€ ๋ชจ๋ฅด๋Š” ๊ธฐ๋Šฅ๋“ค์„ ๋ฐฐ์šฐ๋Š” ๊ฒƒ์„ ๋„˜์–ด, ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์ด ์–ด๋–ค ๋ฐฐ๊ฒฝ์—์„œ ๋‚˜์™”๋Š”์ง€๋ฅผ ์•Œ์•„์•ผ ํ•ด๋‹น ๊ธฐ๋Šฅ์„ ์ ์ ˆํ•œ ์šฉ๋„๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์„ ์ƒˆ๋กญ๊ฒŒ ๊นจ๋‹ซ๊ฒŒ ํ•ด์ฃผ๋Š” ๋‚ด์šฉ์ด์—ˆ๋‹ค.

๐Ÿ’ก ์ƒˆ๋กญ๊ฒŒ ์•Œ๊ฒŒ ๋œ ์ 
1. ๋ฆฌ์•กํŠธ 18์—์„œ ์ƒˆ๋กญ๊ฒŒ ์ถ”๊ฐ€๋œ ๊ธฐ๋Šฅ๋“ค
2. ๋ฆฌ์•กํŠธ 17์—์„œ 18๋กœ ๋„˜์–ด๊ฐˆ ๋•Œ, ๊ฐ€์žฅ ํฐ ๋ณ€๊ฒฝ์ ์€ ๋ฐ”๋กœ '๋™์‹œ์„ฑ ์ง€์›'!

๐Ÿ”ฅ ์ฑ…์— ์—†๋Š” ์ถ”๊ฐ€์ ์ธ ์˜๊ฒฌ
1. React 19 ๋ฒ„์ „

  1. useID hook
  • ๋ฆฌ์•กํŠธ 18 ๋ฒ„์ „์—์„œ ์ƒˆ๋กญ๊ฒŒ ๋“ฑ์žฅํ–ˆ๋˜ useID()๊ฐ€ ์žˆ์–ด์•ผ ํ•˜๋Š” ์ด์œ ์— ๋Œ€ํ•ด ๋‹ค๊ฐ™์ด ๊ฒ€ํ† ํ•ด ๋ณด์•˜๋‹ค.
  • useID์˜ ์ฃผ์š” ์ด์ ์€ ์„œ๋ฒ„ ์‚ฌ์ด๋“œ ๋ Œ๋”๋ง๊ณผ ํ•จ๊ป˜ ์ž‘๋™ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ณด์žฅํ•œ๋‹ค๋Š” ๊ฒƒ!
  • useID - React

11์žฅ: Next.js 13๊ณผ ๋ฆฌ์•กํŠธ 18

11์žฅ์€ ์ œ๋ชฉ ๊ทธ๋Œ€๋กœ Next.js 13๊ณผ ๋ฆฌ์•กํŠธ 18 ๋ฒ„์ „์— ๋Œ€ํ•œ ๋‚ด์šฉ์ด์—ˆ๋‹ค. ๋ฆฌ์•กํŠธ 18์—์„œ ์ฒ˜์Œ ๋“ฑ์žฅํ•œ ๋ฆฌ์•กํŠธ ์„œ๋ฒ„ ์ปดํฌ๋„ŒํŠธ์™€ Next.js๊ฐ€ ์ œ๊ณตํ•˜๋Š” SSR์— ๋Œ€ํ•ด ๋น„๊ตยท๋ถ„์„ํ•˜๋Š” ๋‚ด์šฉ์„ ์ฃผ๋กœ ๋‹ค๋ฃจ๊ณ  ์žˆ๋‹ค. ๊ฐœ์ธ์ ์œผ๋กœ ์ตœ๊ทผ์— ๋ฉด์ ‘ ์งˆ๋ฌธ์œผ๋กœ๊นŒ์ง€ ์งˆ๋ฌธ ๋ฐ›์•˜๋˜ ๋‚ด์šฉ์ด๋ผ ํ™•์‹คํžˆ ์š”์ฆˆ์Œ ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž๋“ค์ด ์ฃผ๋ชฉํ•ด ๋ณด๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค!

๐Ÿ’ก ์ƒˆ๋กญ๊ฒŒ ์•Œ๊ฒŒ ๋œ ์ 
1. page router์ด ๊ฐ€์ง€๋Š” ๋ ˆ์ด์•„์›ƒ์˜ ํ•œ๊ณ„๋ฅผ ๊ทน๋ณตํ•˜๊ธฐ ์œ„ํ•ด ๋“ฑ์žฅํ•œ ๊ฒŒ app router
2. ๋ฆฌ์•กํŠธ ์„œ๋ฒ„ ์ปดํฌ๋„ŒํŠธ๋Š” ์„œ๋ฒ„ ์‚ฌ์ด๋“œ ๋ Œ๋”๋ง๊ณผ๋Š” ์™„์ „ํžˆ ๋‹ค๋ฅธ ๊ฐœ๋…์ด๋‹ค! (๋Œ€์ฒด์žฌ๊ฐ€ ์•„๋‹Œ, ์ƒํ˜ธ ๋ณด์™„์šฉ์ด๋‹ค)
3. ์›นํŒฉ์˜ ํ›„๊ณ„์ž 'ํ„ฐ๋ณดํŒฉ'

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

12์žฅ: ๋ชจ๋“  ์›น ๊ฐœ๋ฐœ์ž๊ฐ€ ๊ด€์‹ฌ์„ ๊ฐ€์ ธ์•ผ ํ•  ํ•ต์‹ฌ ์›น ์ง€ํ‘œ

์›น ์‚ฌ์ดํŠธ์—์„œ์˜ '์„ฑ๋Šฅ'๊ณผ ๊ตฌ๊ธ€์—์„œ ์š”์•ฝํ•œ ํ•ต์‹ฌ ์›น ์ง€ํ‘œ์ธ Core Web Vital์˜ ๊ฐ ํ•ญ๋ชฉ์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณด๋Š” ์žฅ์ด์—ˆ๋‹ค. ํ•ต์‹ฌ ์›น ์ง€ํ‘œ์ธ LCP, FID, CLS์™€ ํ•ต์‹ฌ๊นŒ์ง€๋Š” ์•„๋‹ˆ์ง€๋งŒ ํŠน์ • ๋ฌธ์ œ๋ฅผ ์ง„๋‹จํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ์œ ์šฉํ•œ ์ง€ํ‘œ์ธ TTFB, FCP์— ๋Œ€ํ•œ ์„ค๋ช…์ด ๋‚˜์™€ ์žˆ๋‹ค.

๐Ÿ’ก ์ƒˆ๋กญ๊ฒŒ ์•Œ๊ฒŒ ๋œ ์ 
1. ์•„๋ฌด๋ฆฌ ์ด๋ฏธ์ง€๋ฅผ ์ตœ์ ํ™” ํ•˜๋”๋ผ๋„ ๋‹น์—ฐํžˆ ํ…์ŠคํŠธ ๋กœ๋”ฉ์ด ํ›จ์”ฌ ๋น ๋ฅด๋‹ค โญ (์ฒซ ๋ทฐํฌํŠธ ์˜์—ญ์€ ๋˜๋„๋ก ํ…์ŠคํŠธ๋กœ ์ฑ„์šฐ๋Š” ๊ฒŒ ์ข‹๋‹ค)
2. ์‹คํ–‰์„ ์™„๋ฃŒํ•˜๋Š” ๋ฐ ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋Š” Long task๋“ค์€ ๊ผญ ์›น ํŽ˜์ด์ง€์—์„œ ํ•ด์•ผ ํ•˜๋Š” ์ž‘์—…์ธ์ง€์— ๋Œ€ํ•œ ๊ณ ๋ฏผ์ด ํ•„์š”ํ•˜๋‹ค
3. ์ตœ์ดˆ ๋ฐ”์ดํŠธ๊นŒ์ง€์˜ ์‹œ๊ฐ„, ์ฆ‰ TTFB๋Š” ํŠนํžˆ SSR์—์„œ ์ฃผ์˜๊นŠ๊ฒŒ ๋ด์•ผ ํ•  ์ง€ํ‘œ(ํŽ˜์ด์ง€๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„œ๋Š” '์„œ๋ฒ„'์—์„œ ์ž‘์—…์„ ํ•ด์•ผ ํ•˜๊ณ , ์„œ๋ฒ„ ์ž‘์—…์ด ๋งŽ์•„์งˆ์ˆ˜๋ก HTML์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ์ž‘์—… ์‹œ๊ฐ„์ด ๊ธธ์–ด์ง€๊ธฐ ๋•Œ๋ฌธ์—)

13์žฅ: ์›นํŽ˜์ด์ง€์˜ ์„ฑ๋Šฅ์„ ์ธก์ •ํ•˜๋Š” ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•

12์žฅ์— ์ด์–ด ์›น ํŽ˜์ด์ง€์˜ '์„ฑ๋Šฅ'์— ๋Œ€ํ•œ ๋‚ด์šฉ์ด์—ˆ๊ณ , ์„ฑ๋Šฅ์„ ์ธก์ •ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด๋‚˜ ์‚ฌ์ดํŠธ๋ฅผ ์†Œ๊ฐœํ•˜๋Š” ์žฅ์ด์—ˆ๋‹ค. ๊ฐœ์ธ์ ์œผ๋กœ ๊ตฌ๊ธ€ ๋ผ์ดํŠธํ•˜์šฐ์Šค๋งŒ ์‚ฌ์šฉํ•˜๋‹ค๊ฐ€ ์ƒˆ๋กœ์šด ์œ ์šฉํ•œ ํˆด์„ ์•Œ๊ฒŒ ๋˜์–ด์„œ ์ข‹์•˜๋‹ค ๐Ÿ‘€

๐Ÿ’ก ์ƒˆ๋กญ๊ฒŒ ์•Œ๊ฒŒ ๋œ ์ 
1. create-next-app์—์„œ๋Š” Next.js๋งŒ์˜ ์„ฑ๋Šฅ ์ธก์ • ๋ฉ”์„œ๋“œ์ธ NextWebVitalMetric์„ ์ œ๊ณตํ•˜๊ณ , ํ•ต์‹ฌ ์›น ์ง€ํ‘œ ์™ธ์— Next.js์— ํŠนํ™”๋œ ์‚ฌ์šฉ์ž ์ง€ํ‘œ(Next.js-hydration, Next.js-route-change-to-render, Next.js-render)๋“ค์„ ์ œ๊ณตํ•œ๋‹ค!
2. ์›น ์‚ฌ์ดํŠธ ์„ฑ๋Šฅ ๋ถ„์„ ๋„๊ตฌ๋กœ ๊ฐ€์žฅ ๋„๋ฆฌ ์•Œ๋ ค์ง„ ๋„๊ตฌ๋Š” WebPageTest์ด๋ฉฐ, ๋ฌด๋ฃŒ ๋ฒ„์ „๋งŒ์œผ๋กœ ์ถฉ๋ถ„ํ•  ๋งŒํผ ๋‹ค์–‘ํ•œ ์„ฑ๋Šฅ ๋ถ„์„ ๊ฒฐ๊ณผ๋ฅผ ์ œ๊ณตํ•œ๋‹ค
3. ํฌ๋กฌ ๊ฐœ๋ฐœ์ž ๋„๊ตฌ์—์„œ ์‹คํ—˜ ๋ชจ๋“œ๋กœ ์ œ์ž‘๋˜์—ˆ๋˜ '์„ฑ๋Šฅ ํ†ต๊ณ„' ํŒจ๋„์€ ์˜ฌํ•ด ์•ˆ์— ์‚ญ์ œ๋  ์˜ˆ์ • ๐Ÿฅฒ

๐Ÿ”ฅ ์ฑ…์— ์—†๋Š” ์ถ”๊ฐ€์ ์ธ ์˜๊ฒฌ

  • ์ฑ…์—์„œ๋Š” Titme to Interactive๊ฐ€ '๋ณด์—ฌ์ง€๋Š” ํŽ˜์ด์ง€ ์š”์†Œ์˜ ๋Œ€๋ถ€๋ถ„์— ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๊ฐ€ ๋ถ€์ฐฉ๋˜๋Š” ์‹œ์ '์ด๋ผ๊ณ  ๋‚˜์™€ ์žˆ์—ˆ๋Š”๋ฐ, "๋Œ€๋ถ€๋ถ„"์˜ ๊ธฐ์ค€์„ ๋ชจ๋ฅด๊ฒ ์–ด์„œ ์ฐธ๊ณ  ์ž๋ฃŒ๋ฅผ ์ฐพ์•„๋ณด์•˜๋‹ค!
  • Chrome for Developers - ์ƒํ˜ธ์ž‘์šฉ ์‹œ์ž‘ ์‹œ๊ฐ„
  • ๊ณต์‹ ๋ฌธ์„œ์—๋Š” '์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๊ฐ€ ๊ฐ€์žฅ ๋งŽ์ด ๋ณด์ด๋Š” ํŽ˜์ด์ง€ ์š”์†Œ์—์„œ ๋™์ž‘ํ•  ๋•Œ'๋ผ๊ณ  ์ ํ˜€ ์žˆ๋‹ค โญ

14์žฅ: ์›น์‚ฌ์ดํŠธ ๋ณด์•ˆ์„ ์œ„ํ•œ ๋ฆฌ์•กํŠธ์™€ ์›นํŽ˜์ด์ง€ ๋ณด์•ˆ ์ด์Šˆ

๋‹ค๊ฐ™์ด ์–ด๋ ค์›Œ ํ–ˆ๋˜ ๋ณด์•ˆ ๊ด€๋ จ ์žฅ์ด๋‹ค(ใ… ใ… ) ์›นํŽ˜์ด์ง€์—์„œ์˜ ๋ณด์•ˆ ์ด์Šˆ์—๋Š” ์–ด๋–ค ๊ฒƒ๋“ค์ด ์žˆ๊ณ , ์–ด๋–ค ๋ฐฉ๋ฒ•์œผ๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š”์ง€์— ๋Œ€ํ•œ ๋‚ด์šฉ์„ ๋‹ด์•˜๋‹ค. ์ด๋ฆ„๊ณผ ๊ฐœ๋…๋งŒ ์–ด๋ ดํ’‹์ด ์•Œ์•˜๋˜ ๋ณด์•ˆ ์ด์Šˆ๋“ค์— ๋Œ€ํ•ด ์ž์„ธํžˆ ๋“ค์—ฌ๋‹ค ๋ณผ ์ˆ˜ ์žˆ์—ˆ๊ณ , ์ด๋ฅผ ๋‹จ์ˆœํžˆ HTML ํ”„๋กœํผํ‹ฐ๋กœ ํ•ด๊ฒฐํ•˜๋Š” ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•๋ถ€ํ„ฐ HTTP ๋ณด์•ˆ ํ—ค๋”๋กœ ํ•ด๊ฒฐํ•˜๋Š” ์ƒ์„ธํ•œ ๋ฐฉ๋ฒ•๊นŒ์ง€๋ฅผ ๋ฐฐ์šธ ์ˆ˜ ์žˆ์—ˆ๋‹ค.

๐Ÿ’ก ์ƒˆ๋กญ๊ฒŒ ์•Œ๊ฒŒ ๋œ ์ 
1. dangerouslySetInnerHTML ์†์„ฑ์ด ์กด์žฌํ•˜๋Š” ์ด์œ ๋Š”, ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ฆฌ์•กํŠธ์—์„œ๋Š” XSS๋ฅผ ๋ฐฉ์–ดํ•˜๊ธฐ ์œ„ํ•œ ์ด์Šค์ผ€์ดํ”„ ์ž‘์—…์ด ์กด์žฌํ•˜๊ณ , ์ด ์†์„ฑ์ด๋‚˜ props๋กœ ๋„˜๊ฒจ๋ฐ›๋Š” ๊ฐ’์˜ ๊ฒฝ์šฐ์—๋Š”, ๊ฐœ๋ฐœ์ž์˜ ํ™œ์šฉ๋„๋ ˆ ๋”ฐ๋ผ ์›๋ณธ ๊ฐ’์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด์Šค์ผ€์ดํ”„ ์ž‘์—…์ด ์ˆ˜ํ–‰ ์•ˆ ๋œ๋‹ค!
2. <a> ํƒœ๊ทธ์˜ href ๊ฐ’์— ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ๊ฐ€ ์กด์žฌํ•˜๋ฉด ์ด๋ฅผ ์‹คํ–‰ํ•ด๋ฒ„๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์—, ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ๊ฐ’์œผ๋กœ ์ด๋™ํ•˜์ง€ ์•Š๋„๋ก ์ ์ ˆํ•œ ์ œํ•œ์„ ๋‘ฌ์•ผ ํ•œ๋‹ค
3. OWASP์—์„œ ์ฃผ๊ธฐ์ ์œผ๋กœ ๊ณต๊ฐœํ•˜๋Š” 10๋Œ€ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ทจ์•ฝ์ ์„ ์ฃผ๋ชฉํ•˜์ž โญ

๐Ÿ”ฅ ์ฑ…์— ์—†๋Š” ์ถ”๊ฐ€์ ์ธ ์˜๊ฒฌ
1. '์ด์Šค์ผ€์ดํ”„ ์ž‘์—…'์ด๋ž€?

  • ํŠน์ • ๋ฌธ์ž๊ฐ€ ํ•ด์„๋˜๋Š” ๋ฐฉ์‹์„ ๋ณ€๊ฒฝํ•˜์—ฌ ์ฝ”๋“œ๊ฐ€ ์•…์šฉ๋˜์ง€ ์•Š๋„๋ก ํ•˜๋Š” ์ž‘์—…
  • ๋ฆฌ์•กํŠธ์—์„œ ์ด์Šค์ผ€์ดํ”„ ์ž‘์—…์€ HTML ํƒœ๊ทธ๋‚˜ JavaScript ์ฝ”๋“œ ๊ฐ™์€ ํŠน์ˆ˜๋ฌธ์ž๋ฅผ '๋ฌธ์ž ๊ทธ๋Œ€๋กœ' ํ‘œ์‹œํ•˜๋„๋ก ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ!
  1. target="_blank"์˜ ์œ„ํ—˜์„ฑ
  • ์ด ์†์„ฑ๊ฐ’์„ ์‚ฌ์šฉํ•  ๋•Œ๋Š” Tabnabbing ํ”ผ์‹ฑ ๊ณต๊ฒฉ์— ๋…ธ์ถœ๋  ์ˆ˜ ์žˆ๋Š” ์œ„ํ—˜ ์กด์žฌ
  • Tabnabbing ํ”ผ์‹ฑ ๊ณต๊ฒฉ: HTML ๋ฌธ์„œ ๋‚ด์— ๋งํฌ๋ฅผ ํด๋ฆญํ–ˆ์„ ๋•Œ ์ƒˆ๋กญ๊ฒŒ ์—ด๋ฆฐ ํƒญ์—์„œ ๊ธฐ์กด์˜ ๋ฌธ์„œ์ธ location์„ ํ”ผ์‹ฑ ์‚ฌ์ดํŠธ๋กœ ๋ณ€๊ฒฝํ•ด ์ •๋ณด๋ฅผ ํƒˆ์ทจํ•˜๋Š” ๊ณต๊ฒฉ ๊ธฐ์ˆ 
  • rel="noopener noreferrer"์„ ์ถ”๊ฐ€ํ•˜์—ฌ ์œ„ํ—˜์„ ๋ฐฉ์ง€ํ•˜์ž
  • target="_blank" ์‚ฌ์šฉ ์ด์Šˆ ๋ฐ ํ•ด๊ฒฐ
  1. content sniffing
  • ๋ธŒ๋ผ์šฐ์ €๋Š” Content-Type ํ—ค๋”์— ์ง€์ •๋œ MIME ํƒ€์ž… ์‚ฌ์šฉ
  • IE๋Š” ์ธํ„ฐ๋„ท ์˜ต์…˜์— ๋”ฐ๋ผ MIME ํƒ€์ž…์ด ์•„๋‹Œ ๋‚ด์šฉ์„ ๋ณด๊ณ  ํŒŒ์ผ ํ˜•์‹์„ ์œ ์ถ”ํ•˜๊ธฐ๋„ ํ•จ
  • ์ฆ‰, html๊ณผ javascript๊ฐ€ ์ ํ˜€ ์žˆ์œผ๋ฉด ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ํŒŒ์ผ ํ˜•์‹์„ ์ถ”์ธกํ•˜์—ฌ ์‹คํ–‰์„ ํ•ด๋ฒ„๋ฆฌ๊ธฐ๋„ ํ•จ โ†’ content sniffing
  • X-Content-Type-Options: nosniff๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ์œ„ํ—˜์„ ๋ฐฉ์ง€ํ•˜์ž
  • https: MIME ํƒ€์ž…๊ณผ Content-Type, ๊ทธ๋ฆฌ๊ณ  nosniff

15์žฅ: ๋งˆ์น˜๋ฉฐ

๋ฆฌ์•กํŠธ ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•  ๋•Œ ๊ณ ๋ คํ•ด์•ผ ํ•˜๋Š” ์‚ฌํ•ญ๊ณผ ํ–ฅํ›„ ํ”„๋ก ํŠธ์—”๋“œ ํŠธ๋ Œ๋“œ ์†์—์„œ ๋ฆฌ์•กํŠธ๋Š” ์–ด๋–ป๊ฒŒ ๋ณ€ํ™”ํ• ์ง€์— ๋Œ€ํ•œ ๋‚ด์šฉ์ด๋‹ค. ์ด ์žฅ์—์„œ๋Š” ํŠนํžˆ ์ง€๊ธˆ๊นŒ์ง€ ๋ฐฐ์šด ๋‚ด์šฉ์„ ์ ๊ฒ€ํ•ด ๋ณผ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ๋“ค์ด ์กด์žฌํ–ˆ๋Š”๋ฐ ์Šคํ„ฐ๋””์›๋ถ„๋“ค๊ณผ ๊ฐ™์ด ํ’€์–ด๋ณด๋Š” ์‹œ๊ฐ„์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์–ด์„œ ์ข‹์•˜๋‹ค ๐Ÿ˜‹

โœ… ํ›„๊ธฐ

์ข‹์•˜๋˜ ์ 

1. ๋™๊ธฐ ๋ถ€์—ฌ

์„œ๋‘์—์„œ๋„ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด ์ด ์ฑ…์€ 952ํŽ˜์ด์ง€๋‹ค(!) ๋“ค๊ณ  ๋‹ค๋‹ˆ๊ธฐ๋„ ํž˜๋“ค ์ •๋„๋กœ ๋ฌด๊ฑฐ์šด ์ฑ…์ด๊ณ , ์ตœ๊ทผ์— 400ํŽ˜์ด์ง€์งœ๋ฆฌ ์ฑ…๋„ ๊ฒจ์šฐ ์™„๋…ํ–ˆ๋˜ ๋‚˜์—๊ฒŒ๋Š” ํ˜ผ์ž ์ฝ๊ธฐ ๋ฒ„๊ฑฐ์šด ๋‘๊ป˜์˜€๋‹ค. ํ•˜์ง€๋งŒ ๊ฒฉ์ฃผ๋กœ ์Šคํ„ฐ๋””๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ ์ฝ๋‹ค ๋ณด๋‹ˆ ์ ˆ๋Œ€ ๋ชป ์ฝ์„ ๊ฒƒ ๊ฐ™์•˜๋˜ ์ด ์ฑ…๋„ ๋๊นŒ์ง€ ์ฝ์–ด๋‚ผ ์ˆ˜ ์žˆ์—ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค. ์•„์ง๋„ 'ํ˜ผ์ž ํ–ˆ์—ˆ์œผ๋ฉด ์ด๊ฑธ ๋‹ค ์ฝ์„ ์ˆ˜ ์žˆ์—ˆ์„๊นŒ??'๋ผ๋Š” ์ƒ๊ฐ์ด ๋งจ๋‚  ๋“œ๋Š” ๊ฒƒ ๊ฐ™๋‹ค ใ…‹ใ…‹ ์„ฑ์‹คํ•œ ๋ถ„๋“ค๊ณผ ํ•จ๊ป˜ํ•ด์„œ ๋๊นŒ์ง€ ๋‹ฌ๋ ค๊ฐˆ ์ˆ˜ ์žˆ์—ˆ๊ณ , ์™„๋… ์ž์ฒด๋งŒ์œผ๋กœ ๋‚˜ํ•œํ…Œ๋Š” ํฐ ์˜๋ฏธ๊ฐ€ ๋˜์–ด์คฌ๋˜ ๊ฒƒ ๊ฐ™๋‹ค.

2. ์˜๊ฒฌ ๊ณต์œ 

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

์•„์‰ฌ์› ๋˜ ์ 

1. ๋ฐœํ‘œ ๋งก์€ ํŒŒํŠธ๊ฐ€ ์•„๋‹ˆ๋ฉด ์ค€๋น„๋ฅผ ์†Œํ™€ํžˆ ํ•˜๊ฒŒ ๋œ๋‹ค...

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

2. ํ•œ๋ฒˆ ๋ณธ ๊ฑฐ ๊ฐ€์ง€๊ณ  ์™„๋ฒฝํ•˜๊ฒŒ ์ดํ•ดํ•˜๊ธฐ๋Š” ์–ด๋ ต๋‹ค!

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

์ดํ‰

์•„๋งˆ ์ด ์Šคํ„ฐ๋””์—์„œ ๋‚ด๊ฐ€ ์ œ์ผ ์‹ค๋ ฅ์ด ๋ถ€์กฑํ•˜๋‹ค๊ณ  ๋งํ•ด๋„ ๊ฒธ์†์ด ์•„๋‹ ์ •๋„๋กœ ์ •๋ง ์šฐ์ˆ˜ํ•˜๊ณ  ์—ด์ •์ ์ธ ํŒ€์›๋“ค๊ณผ ํ•จ๊ป˜ํ•  ์ˆ˜ ์žˆ์—ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค. ๋‚ด๊ฐ€ ๋ฐฐ์›Œ๊ฐ€๋Š” ๊ฒŒ ์ •๋ง ๋งŽ์•„์„œ ๋‚˜๋„ ๋‚ด ๋ฐœํ‘œ ์‹œ๊ฐ„์— ์ƒˆ๋กœ์šด ๋‚ด์šฉ๋“ค์„ ๊ฐ€์ ธ์™€ ๋ณด๋‹ตํ•˜๋ ค๊ณ  ๋งŽ์ด ๋…ธ๋ ฅํ–ˆ๋˜ ๊ฒƒ ๊ฐ™๊ณ , ๊ทธ ๊ณผ์ •์—์„œ ๋‚˜ ์Šค์Šค๋กœ ์•Œ๊ฒŒ ๋œ ๊ฒƒ๋„ ๋˜ ์•„์ฃผ ๋งŽ์•˜๋˜ ๊ฒƒ ๊ฐ™๋‹ค ๐Ÿ˜€ ์‚ฌ์‹ค ๋„์„œ ์Šคํ„ฐ๋””๋ผ๋Š” ๊ฒŒ ์ž˜ ์ง„ํ–‰๋˜๊ธฐ๊ฐ€ ์€๊ทผํžˆ ์ •๋ง ํž˜๋“ค๋‹ค๋Š” ๊ฑธ ์•Œ๊ณ  ์žˆ๋Š”๋ฐ(ํŠนํžˆ ์ฑ…์ด ๋‘๊บผ์šธ์ˆ˜๋ก) ์ด๋ ‡๊ฒŒ ๋๊นŒ์ง€ ์ง„ํ–‰๋  ์ˆ˜ ์žˆ์—ˆ๋˜ ๊ฑด ๊ฐ์ž์˜ ์—ญํ• ์„ ์ž˜ ์ง€์ผœ์ฃผ๊ณ  ๋ฐ”๋น ๋„ ์„ฑ์‹คํ•˜๊ฒŒ ์ฐธ์—ฌํ•ด ์ค€ ํŒ€์›๋“ค ๋•๋ถ„์ด ์•„๋‹๊นŒ ์‹ถ๋‹ค. ๋ฐ๋ณด์…˜ ์˜ ํ™œ๋™ ์ค‘์— ์ œ์ผ ์ž˜ํ•œ ํ™œ๋™ ์ค‘์— ํ•˜๋‚˜์˜€๋˜ ๊ฒƒ ๊ฐ™๋‹ค! ๋‚˜์ค‘์— ๊ฐ™์€ ๋ถ„๋“ค๊ณผ๋„ ๋‹ค๋ฅธ ๋ถ„๋“ค๊ณผ๋„ ์Šคํ„ฐ๋””๋ฅผ ๋” ์ง„ํ–‰ํ•ด ๋ณด๊ณ  ์‹ถ๋‹ค โ˜บ๏ธ ๋ฆฌ์•กํŠธ ๊ณ ์ˆ˜๊ฐ€ ๋˜๋Š” ๊ทธ๋‚ ๊นŒ์ง€ ๐Ÿ‘Š๐Ÿ‘Š

profile
์‰ฝ๊ฒŒ๋งŒ์‚ด์•„๊ฐ€๋ฉด์žฌ๋ฏธ์—†์–ด๋น™๊ณ 

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

comment-user-thumbnail
2024๋…„ 11์›” 10์ผ

4๋ช…์˜ ๋ฉค๋ฒ„๊ฐ€ ๋„ˆ๋ฌด ์ž˜ ๋ชจ์˜€๋˜๊ฑฐ๊ฐ™์•„์š” ใ… ใ…  ๋ณด๊ธฐ ์ข‹์•„๋ณด์˜€์–ด์š” ใ… ใ… 

1๊ฐœ์˜ ๋‹ต๊ธ€

๊ด€๋ จ ์ฑ„์šฉ ์ •๋ณด