TestForge | Aidevops | ๐Ÿ“Š Plogger โœ๏ธ Blog ๐Ÿ“š Docs
plogger

AI DevOps Korea

AI ์„œ๋น„์Šค ๊ฐœ๋ฐœ, ์šด์˜, ์„ฑ๋Šฅ๊ฐœ์„ ์„ ํ•˜๋‚˜์˜ ๋ฃจํ”„๋กœ ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค

aidevops.kr์—์„œ LLMOps, RAG, AI Agent, ๊ด€์ธก์„ฑ, ํ‰๊ฐ€, ๋น„์šฉ-์„ฑ๋Šฅ ์ตœ์ ํ™”๋ฅผ ์‹ค์ „ ์šด์˜ ๊ด€์ ์œผ๋กœ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ–ฅ๏ธ Frontend / React ์•„ํ‚คํ…์ฒ˜

React ์•„ํ‚คํ…์ฒ˜

Frontend ์•ˆ์—์„œ ์„œ๋กœ ์—ฐ๊ฒฐํ•ด ์ฝ๊ธฐ ์ข‹์€ ๊ธ€์„ ์ด ๊ทธ๋ฃน์œผ๋กœ ๋ฌถ์—ˆ์Šต๋‹ˆ๋‹ค. ์ž…๋ฌธ, ๋น„๊ต, ์‹ฌํ™” ํƒ์ƒ‰์„ ํ•œ ํ๋ฆ„์œผ๋กœ ์ด์–ด๊ฐ€๊ธฐ ์ข‹์Šต๋‹ˆ๋‹ค.

์ด ๊ทธ๋ฃน์—๋Š” ํ˜„์žฌ 19๊ฐœ์˜ ๊ธ€์ด ์žˆ์Šต๋‹ˆ๋‹ค.

Start Here

์ด ๊ทธ๋ฃน์—์„œ ๋จผ์ € ์ฝ์œผ๋ฉด ์ข‹์€ ๊ธ€

React Server Components ์™„์ „ ์ •๋ณต โ€” RSC์™€ Server Actions

React Server Components๋ฅผ ๊ฐœ๋… ์†Œ๊ฐœ ์ˆ˜์ค€์ด ์•„๋‹ˆ๋ผ ์•„ํ‚คํ…์ฒ˜ ์„ ํƒ์˜ ๊ด€์ ์—์„œ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค. Client Component์™€์˜ ๊ฒฝ๊ณ„ ์„ค์ •, Server Actions, ์บ์‹ฑ, ์ŠคํŠธ๋ฆฌ๋ฐ, ์‹ค๋ฌด์—์„œ ์ž์ฃผ ๊ฒช๋Š” ํ•จ์ •๊นŒ์ง€ Next.js App Router ๊ธฐ์ค€์œผ๋กœ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

Group Archive

๊ทธ๋ฃน์— ์†ํ•œ ์ „์ฒด ๊ธ€

React Server Components ์™„์ „ ์ •๋ณต โ€” RSC์™€ Server Actions

React Server Components๋ฅผ ๊ฐœ๋… ์†Œ๊ฐœ ์ˆ˜์ค€์ด ์•„๋‹ˆ๋ผ ์•„ํ‚คํ…์ฒ˜ ์„ ํƒ์˜ ๊ด€์ ์—์„œ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค. Client Component์™€์˜ ๊ฒฝ๊ณ„ ์„ค์ •, Server Actions, ์บ์‹ฑ, ์ŠคํŠธ๋ฆฌ๋ฐ, ์‹ค๋ฌด์—์„œ ์ž์ฃผ ๊ฒช๋Š” ํ•จ์ •๊นŒ์ง€ Next.js App Router ๊ธฐ์ค€์œผ๋กœ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

์ŠคํŠธ๋ฆฌ๋ฐ UI์˜ ์‹คํŒจ ๋ณต๊ตฌ ํŒจํ„ด

๋ถ€๋ถ„ ๋ Œ๋”๋ง, ์„œ๋ฒ„ ์ŠคํŠธ๋ฆฌ๋ฐ, AI ์‘๋‹ต UI์—์„œ ์ค‘๊ฐ„ ์‹คํŒจ๋ฅผ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์œผ๋กœ ํก์ˆ˜ํ•˜๋Š” ์„ค๊ณ„ ๋ฐฉ๋ฒ•์„ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

Optimistic UI์˜ Reconciliation ๊ฒฝ๊ณ„

๋‚™๊ด€์  UI๋Š” ๋น ๋ฅด๊ฒŒ ๋А๊ปด์ง€์ง€๋งŒ, ์„œ๋ฒ„ ์ง„์‹ค๊ณผ ์ถฉ๋Œํ•˜๋Š” ์ˆœ๊ฐ„ ๋ณต์žก์„ฑ์ด ๋“œ๋Ÿฌ๋‚ฉ๋‹ˆ๋‹ค. ์–ด๋””๊นŒ์ง€ ๋‚™๊ด€์ ์œผ๋กœ ์ฒ˜๋ฆฌํ• ์ง€ ๊ฒฝ๊ณ„๋ฅผ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

React Activity์™€ View Transitions ๋„์ž… ํฌ์ธํŠธ

React์˜ ์ตœ์‹  Activity, View Transitions ํ๋ฆ„์€ ๋‹จ์ˆœํ•œ ์• ๋‹ˆ๋ฉ”์ด์…˜ ๊ธฐ๋Šฅ ์ถ”๊ฐ€๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. UI ์ƒํƒœ ๋ณด์กด๊ณผ ์ „ํ™˜ ๊ฒฝํ—˜์„ ์–ด๋–ป๊ฒŒ ๋‹ค์‹œ ์„ค๊ณ„ํ• ์ง€ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

ํ”„๋ก ํŠธ์—”๋“œ ํ•™์Šต ๊ฒฝ๋กœ: ์ž…๋ฌธ๋ถ€ํ„ฐ ๊ณ ๊ธ‰๊นŒ์ง€

์ปดํฌ๋„ŒํŠธ์™€ ์ƒํƒœ ๊ธฐ์ดˆ๋ถ€ํ„ฐ ๋ Œ๋”๋ง ์ „๋žต, ์„ฑ๋Šฅ, ์•„ํ‚คํ…์ฒ˜ ํŠธ๋ ˆ์ด๋“œ์˜คํ”„๊นŒ์ง€ ์ฒด๊ณ„์ ์œผ๋กœ ๋ฐฐ์šฐ๋Š” ํ”„๋ก ํŠธ์—”๋“œ ๋กœ๋“œ๋งต์ž…๋‹ˆ๋‹ค.

ํ”„๋ก ํŠธ์—”๋“œ ๋ Œ๋”๋งยท์บ์‹ฑยทHydration ์„ค๊ณ„ ๊ฐ€์ด๋“œ

๋Œ€๊ทœ๋ชจ ํ”„๋ก ํŠธ์—”๋“œ ์‹œ์Šคํ…œ์—์„œ SSR, SSG, ISR, RSC, hydration ๊ฒฝ๊ณ„, ๋ธŒ๋ผ์šฐ์ € ์บ์‹œ, CDN ์บ์‹œ, ๋ฐ์ดํ„ฐ ์บ์‹œ๋ฅผ ์–ด๋–ป๊ฒŒ ์กฐํ•ฉํ•ด์•ผ ํ•˜๋Š”์ง€ ์‹ค์ „ ๊ธฐ์ค€์œผ๋กœ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

React ์•„ํ‚คํ…์ฒ˜ ์„ค๊ณ„ ๊ฐ€์ด๋“œ

React ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์œ ์ง€๋ณด์ˆ˜ ๊ฐ€๋Šฅํ•œ ์‹œ์Šคํ…œ์œผ๋กœ ์„ค๊ณ„ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์ปดํฌ๋„ŒํŠธ ๊ฒฝ๊ณ„, ์ƒํƒœ ๊ณ„์ธต, ์„œ๋ฒ„ ์ƒํƒœ, ๋ Œ๋”๋ง ๋ชจ๋ธ, ํŒ€ ํ˜‘์—… ๊ตฌ์กฐ๊นŒ์ง€ ์‹ค๋ฌด ์ค‘์‹ฌ์œผ๋กœ ๋‹ค๋ฃน๋‹ˆ๋‹ค.

React ๋””์ž์ธ ์‹œ์Šคํ…œ ์•„ํ‚คํ…์ฒ˜ ๊ฐ€์ด๋“œ

React ๊ธฐ๋ฐ˜ ๋””์ž์ธ ์‹œ์Šคํ…œ์„ ์„ค๊ณ„ํ•  ๋•Œ ํ•„์š”ํ•œ ํ† ํฐ, ์ปดํฌ๋„ŒํŠธ ๊ณ„์ธต, ์ ‘๊ทผ์„ฑ, ๋ฐฐํฌ ์ „๋žต์„ ์‹ค๋ฌด ๊ด€์ ์—์„œ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

React + SSR/Streaming ์•„ํ‚คํ…์ฒ˜ ๊ฐ€์ด๋“œ

React ๊ธฐ๋ฐ˜ SSR๊ณผ ์ŠคํŠธ๋ฆฌ๋ฐ ๋ Œ๋”๋ง์„ ์„ค๊ณ„ํ•  ๋•Œ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ ํ๋ฆ„, ๊ฒฝ๊ณ„ ๋ถ„๋ฆฌ, ์บ์‹ฑ, ์ ์ง„์  ๋ Œ๋”๋ง ์ „๋žต์„ ์‹ค๋ฌด ๊ด€์ ์—์„œ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

React ์ƒํƒœ๊ด€๋ฆฌ ์ „๋žต ๊ฐ€์ด๋“œ

React ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋กœ์ปฌ ์ƒํƒœ, ์„œ๋ฒ„ ์ƒํƒœ, ์ „์—ญ ์ƒํƒœ๋ฅผ ์–ด๋–ป๊ฒŒ ๋ถ„๋ฆฌํ•˜๊ณ  ์„ค๊ณ„ํ•ด์•ผ ํ•˜๋Š”์ง€ ์‹ค๋ฌด ๊ด€์ ์—์„œ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

Vue vs React ์‹ฌํ™” ๋น„๊ต ๊ฐ€์ด๋“œ

Vue์™€ React๋ฅผ ๋ฌธ๋ฒ• ์ทจํ–ฅ์ด ์•„๋‹ˆ๋ผ ์•„ํ‚คํ…์ฒ˜, ์ƒํƒœ ๋ชจ๋ธ, ๋ Œ๋”๋ง ๋ฐฉ์‹, ํŒ€ ํ™•์žฅ์„ฑ, ์ƒํƒœ๊ณ„ ๊ด€์ ์—์„œ ๊นŠ์ด ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค. ์–ด๋–ค ์กฐ์ง๊ณผ ์ œํ’ˆ์— ๋” ์ž˜ ๋งž๋Š”์ง€ ์‹ค๋ฌด ๊ธฐ์ค€์œผ๋กœ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

React Hooks ์„ค๊ณ„ ๊ฐ€์ด๋“œ

React Hooks๋ฅผ ๋‹จ์ˆœ ๋ฌธ๋ฒ•์ด ์•„๋‹ˆ๋ผ ์ƒํƒœ์™€ ๋ถ€์ˆ˜ํšจ๊ณผ๋ฅผ ๋ถ„๋ฆฌํ•˜๋Š” ์„ค๊ณ„ ๋„๊ตฌ๋กœ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค. useState, useEffect, useRef, custom hook์„ ์–ธ์ œ ์–ด๋–ป๊ฒŒ ์จ์•ผ ํ•˜๋Š”์ง€ ์‹ค๋ฌด ๊ด€์ ์—์„œ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

React Context API๋กœ ์ „์—ญ ์ƒํƒœ ๊ด€๋ฆฌํ•˜๊ธฐ

Context API์˜ ๊ธฐ๋ณธ ์‚ฌ์šฉ๋ฒ•์„ ๋„˜์–ด ์–ธ์ œ ์ ํ•ฉํ•œ์ง€, ๋ฆฌ๋ Œ๋”๋ง ๋น„์šฉ์„ ์–ด๋–ป๊ฒŒ ํ†ต์ œํ• ์ง€, ์–ด๋–ค ์ƒํƒœ์—๋Š” ์“ฐ์ง€ ๋ง์•„์•ผ ํ•˜๋Š”์ง€๊นŒ์ง€ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

Next.js 14 App Router ์™„๋ฒฝ ๊ฐ€์ด๋“œ โ€” ์„œ๋ฒ„ ์ปดํฌ๋„ŒํŠธ๋ถ€ํ„ฐ ๋ผ์šฐํŒ…๊นŒ์ง€

Next.js App Router๋ฅผ ํด๋” ๊ตฌ์กฐ ์†Œ๊ฐœ๊ฐ€ ์•„๋‹ˆ๋ผ ๋ Œ๋”๋ง ๋ชจ๋ธ์˜ ๊ด€์ ์—์„œ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์„œ๋ฒ„ ์ปดํฌ๋„ŒํŠธ, ํด๋ผ์ด์–ธํŠธ ์ปดํฌ๋„ŒํŠธ, ๋ ˆ์ด์•„์›ƒ, ๋กœ๋”ฉ/์—๋Ÿฌ ์ฒ˜๋ฆฌ, ์บ์‹ฑ, Route Handler๊นŒ์ง€ ์‹ค๋ฌด ๊ธฐ์ค€์œผ๋กœ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

TanStack Query(React Query)๋กœ ์„œ๋ฒ„ ์ƒํƒœ ๊ด€๋ฆฌํ•˜๊ธฐ

TanStack Query๋ฅผ ๋‹จ์ˆœํ•œ fetch ํ—ฌํผ๊ฐ€ ์•„๋‹ˆ๋ผ ์„œ๋ฒ„ ์ƒํƒœ ๊ด€๋ฆฌ ๋ชจ๋ธ๋กœ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค. queryKey ์„ค๊ณ„, staleTime, invalidation, optimistic update, ์„œ๋ฒ„ ์ƒํƒœ์™€ ํด๋ผ์ด์–ธํŠธ ์ƒํƒœ์˜ ๊ฒฝ๊ณ„๊นŒ์ง€ ์‹ค๋ฌด ๊ด€์ ์—์„œ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

React + TypeScript ์„ค๊ณ„ ๊ฐ€์ด๋“œ

React ํ”„๋กœ์ ํŠธ์—์„œ TypeScript๋ฅผ ์‹ค๋ฌด์ ์œผ๋กœ ์ ์šฉํ•˜๋Š” ๊ธฐ์ค€์„ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค. Props ํƒ€์ž…, ์ด๋ฒคํŠธ ํƒ€์ž…, ์ œ๋„ค๋ฆญ ์ปดํฌ๋„ŒํŠธ, ์ƒํƒœ ๋ชจ๋ธ๋ง, ๊ณผ๋„ํ•œ ํƒ€์ž… ๋ณต์žก๋„๋ฅผ ํ”ผํ•˜๋Š” ๋ฐฉ๋ฒ•๊นŒ์ง€ ๋‹ค๋ฃน๋‹ˆ๋‹ค.