Quantcast
Channel: ๊ฐœ๋ฐœ ๋…ธํŠธ
Viewing all articles
Browse latest Browse all 303
โ†ง

GDG Korea WebTech ํ›„๊ธฐ

$
0
0

๋ฐฐ๋‹ฌ์˜ ๋ฏผ์กฑ์œผ๋กœ ์œ ๋ช…ํ•œ ์šฐ์•„ํ•œ ํ˜•์ œ๋“ค์—์„œ ํ›„์›์„ ํ•˜์—ฌ ์šฐ์•„ํ•œ ํ˜•์ œ๋“ค ํ‚ค์นœ์—์„œ ์„ธ๋ฏธ๋‚˜๊ฐ€ ์ง„ํ–‰๋˜์—ˆ๋‹ค. ํ–‰์‚ฌ ์žฅ์†Œ๊ฐ€ ์„์ดŒ ํ˜ธ์ˆ˜ ์ฃผ๋ณ€์ด์—ˆ๋Š”๋ฐ, ๋ฐ”๋กœ ์•ž์— ๋กฏ๋ฐ์›”๋“œ๊ฐ€ ์žˆ์–ด์„œ ํ•œ 10์—ฌ๋…„ ๋งŒ์— ๋ฉ€๋ฆฌ์„œ๋‚˜๋งˆ ๋กฏ๋ฐ์›”๋“œ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์—ˆ๋‹ค.

์žฅ์†Œ ์ฐพ๊ธฐ๊ฐ€ ํž˜๋“ค์–ด์„œ ์šฐ์—ฐ์ฐฎ๊ฒŒ ์šฐ์•„ํ•œ ํ˜•์ œ๋“ค ์‚ฌ๋ฌด์‹ค๊นŒ์ง€ ๊ฐ€๋ณด๊ฒŒ ๋˜์—ˆ๋Š”๋ฐ ์—ฌ๊ธฐ์ €๊ธฐ ์„ผ์Šค์žˆ๋Š” ๋ฌธ๊ตฌ๋“ค์ด ๋ˆˆ์— ๋„์—ˆ๊ณ , ๊ทผ๋ฌดํ™˜๊ฒฝ์ด ๋งค์šฐ ์ข‹์•„๋ณด์˜€๋‹ค. ์šฐ์•„ํ•œ ํ˜•์ œ๋“ค ํ‚ค์นœ์€ ์˜† ๊ฑด๋ฌผ ์ง€ํ•˜์— ์œ„์น˜ํ•ด ์žˆ์—ˆ๊ณ , ์ง์›๋“ค์ด ์‹์‚ฌ๋ฅผ ํ•˜๋Š” ์‹๋‹น์ด์—ˆ๋‹ค. ๊นŒํŽ˜ ๊ฐ™์€ ๋А๋‚Œ์œผ๋กœ ์ž˜ ๊พธ๋ฉฐ์ ธ ์žˆ์—ˆ๊ณ , ์ง์›๋“ค์˜ ๋ณต์ง€์— ์‹ ๊ฒฝ์„ ๋งŽ์ด ์“ฐ๋Š” ์ง€ ๋‹คํŠธ ๊ธฐ๊ณ„์™€ ์ปคํ”ผ ๋จธ์‹ ์ด ๋†“์—ฌ์ ธ์žˆ์—ˆ๋‹ค.

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

CPU์™€ GPU

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

CPU์™€ GPU๋Š” ์ „ํ˜€ ๋‹ค๋ฅธ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ์‚ฌ์šฉํ•˜๋Š”๋ฐ, CPU๋Š” Main Memory๋ฅผ, GPU๋Š” Video Memory๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. CPU๊ฐ€ Main Memory๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์–ด๋–ป๊ฒŒ ๊ทธ๋ฆด ๊ฒƒ์ธ์ง€๋ฅผ ํŒ๋‹จํ•˜๋ฉด ์ด ์ •๋ณด๋ฅผ GPU์—๊ฒŒ ์ „๋‹ฌํ•ด์•ผ ํ•˜๋Š”๋ฐ ์ด ๋•Œ ์ „๋‹ฌํ•ด์ฃผ๋Š” ์—ญํ• ์„ BUS๊ฐ€ ๋‹ด๋‹นํ•œ๋‹ค. BUS๋ฅผ ํ†ตํ•ด CPU๋กœ ๋ถ€ํ„ฐ ๋ช…๋ น์„ ๋ฐ›์€ GPU๋Š” Video Memory๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ทธ๋ฆฌ๋Š” ์—ญํ• ์„ ํ•˜๊ฒŒ ๋œ๋‹ค.

CPU๊ฐ€ ์•Œ๋ ค์ฃผ์ง€ ์•Š์œผ๋ฉด GPU๋Š” ๊ทธ๋ฆด ์ •๋ณด์— ๋Œ€ํ•ด ์•Œ ๋ฐฉ๋ฒ•์ด ์—†์œผ๋ฏ€๋กœ, ๊ทธ๋ ค์•ผ ํ•˜๋Š” ์ •๋ณด๊ฐ€ ์ˆ˜์ •๋˜๋ฉด ๋ฐ˜๋“œ์‹œ CPU๋Š” BUS๋ฅผ ํ†ตํ•ด GPU์—๊ฒŒ ์•Œ๋ ค์•ผํ•˜๋Š”๋ฐ, ์ด BUS์˜ ์ „์†ก ์†๋„๊ฐ€ CPU์™€ GPU์˜ ์—ฐ์‚ฐ์†๋„๋ณด๋‹ค ํ˜„์ €ํ•˜๊ฒŒ ๋А๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์— ๋ณ‘๋ชฉ๊ตฌ๊ฐ„์ด ๋  ์ˆ˜ ์žˆ๋‹ค. (CPU์™€ GPU๊ฐ„์˜ ๋ฐ์ดํ„ฐ ์ „์†ก ์‹œ๊ฐ„์€ โ€œ๋ฐ์ดํ„ฐ์˜ ํฌ๊ธฐ / BUS ์†๋„โ€๋กœ ๊ฒฐ์ •) ๊ทธ๋Ÿฌ๋ฏ€๋กœ ๊ทธ๋ ค์•ผํ•˜๋Š” ์ •๋ณด๊ฐ€ ์ž์ฃผ ๋ณ€๊ฒฝ์ด ๋œ๋‹ค๋ฉด ๊ทธ ๋•Œ๋งˆ๋‹ค CPU๊ฐ€ GPU์—๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜๋ฉด์„œ ์„ฑ๋Šฅ ์ €ํ•˜๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ณ€๊ฒฝํ•  ๋ถ€๋ถ„์„ ์ตœ์†Œํ™” ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค.

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

GPU์—์„œ ์ผ์–ด๋‚˜๋Š” ์ผ๋“ค

๊ฐ„๋‹จํ•˜๊ฒŒ 3D ๊ทธ๋ž˜ํ”ฝ์Šค์— ๋Œ€ํ•œ ๊ฐœ๋…์„ ์‚ดํŽด๋ณด๋ฉด, ์šฐ์„  Vertex์™€ Polygon์ด๋ผ๋Š” ๊ฒƒ์ด ์žˆ๋‹ค. Vertex๋Š” ๊ณต๊ฐ„ ์ขŒํ‘œ๋ฅผ ์˜๋ฏธํ•˜๊ณ , ์ด ์ขŒํ‘œ๋“ค์„ ์ด์–ด์„œ ํ•˜๋‚˜์˜ ๋„ํ˜•์„ ๋งŒ๋“ค๊ฒŒ ๋˜๋Š”๋ฐ, ์ด ๋•Œ ๋งŒ๋“ค์–ด์ง„ ๋„ํ˜•์ด Polygon์ด๋‹ค. ๋‹ค์Œ์œผ๋กœ Texture Mapping ์ž‘์—…์ด ์ˆ˜ํ–‰๋˜๋Š”๋ฐ, Texture๋Š” ๊ทธ๋ ค์งˆ ์ด๋ฏธ์ง€๋ฅผ ์˜๋ฏธํ•˜๊ณ  ์ด ์ด๋ฏธ์ง€๋ฅผ Polygon์— ์”Œ์šฐ๋Š” ์ž‘์—…์„ Texture Mapping์ด๋ผ๊ณ  ํ•œ๋‹ค. ์ด๋Ÿฌํ•œ ์ž‘์—…๋“ค์„ GPU๊ฐ€ ์ˆ˜ํ–‰ํ•˜๊ฒŒ ๋˜๋Š”๋ฐ Texture Mapping์„ ์ˆ˜ํ–‰ํ•˜๋ฉฐ ํ•ด๋‹น ๋„ํ˜•์„ ํšŒ์ „, ํ™•๋Œ€, ์ถ•์†Œ, ๊ธฐ์šธ์ž„ ๋“ฑ์˜ ๋ณ€ํ˜•(Transform)์„ ๋น ๋ฅด๊ฒŒ ์ ์šฉ ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด ๊ณผ์ •์„ ์š”์•ฝํ•ด๋ณด๋ฉด Vertex๊ฐ€ ๋ชจ์—ฌ์„œ Polygon์— Texture๋ฅผ ์ž…ํžˆ๊ณ , ๋””์Šคํ”Œ๋ ˆ์ด์— ์ด๋ฏธ์ง€๋กœ ์ถœ๋ ฅํ•˜๊ฒŒ ๋œ๋‹ค. (์ด ๊ณผ์ •์—์„œ ๋‹น์—ฐํžˆ Video Memory๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.)

GPU๊ฐ€ ์ž˜ํ•˜๋Š” ๊ฒƒ๊ณผ ๋ชปํ•˜๋Š” ๊ฒƒ

ํ•˜๋“œ์›จ์–ด ๊ฐ€์† ๋ Œ๋”๋ง์˜ ์„ฑ๋Šฅ ์ตœ์ ํ™”๋ฅผ ์œ„ํ•œ ์ฒซ๊ฑธ์Œ์€ GPU๊ฐ€ ์ž˜ํ•˜๋Š” ๊ฒƒ๊ณผ ๋ชปํ•˜๋Š” ๊ฒƒ์„ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

์ž˜ํ•˜๋Š” ๊ฒƒ

์œ„์—์„œ ์„ค๋ช…ํ–ˆ๋‹ค์‹œํ”ผ GPU๋Š” ์ˆ˜์‹ ๋œ ๋ฐ์ดํ„ฐ๋กœ ๋ฌด์–ธ๊ฐ€๋ฅผ ๊ทธ๋ฆฌ๋Š”๋ฐ ์ ํ•ฉํ•˜๋‹ค. ํ…์Šค์ณ๋ฅผ ๊ฐ€์ง€๊ณ  ์ด๋ฏธ์ง€๋ฅผ ๋น ๋ฅด๊ฒŒ ์ถœ๋ ฅํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๊ณ , ํ•œ๋ฒˆ ๊ทธ๋ ธ๋˜ ํ…์Šค์ณ์— ๋Œ€ํ•ด์„œ๋Š” ๋‹ค์‹œ ์š”์ฒญํ•˜์ง€ ์•Š๊ณ  ์žฌํ™œ์šฉํ•˜์—ฌ ์„ฑ๋Šฅ ์ €ํ•˜๋ฅผ ๋ฐฉ์ง€ํ•œ๋‹ค. Transform ์ž‘์—…(ํšŒ์ „, ํ™•๋Œ€, ์ถ•์†Œ, ๊ธฐ์šธ์ž„ ๋“ฑ)์„ ๋™์‹œ์— ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์—๋„ ์ตœ์ ํ™” ๋˜์–ด ์žˆ๋‹ค.

๋ชปํ•˜๋Š” ๊ฒƒ

๋น„๋””์˜ค ๋ฉ”๋ชจ๋ฆฌ๋กœ์˜ ์ „์†ก์†๋„๊ฐ€ ๋А๋ฆฌ๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค. ์ด๋Š” ์œ„์—์„œ ์„ค๋ช…ํ–ˆ๋‹ค์‹œํ”ผ CPU์—์„œ GPU๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•  ๋•Œ ์‚ฌ์šฉ๋˜๋Š” BUS์˜ ์ „์†ก์†๋„๊ฐ€ ๋А๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์— ์ด ๊ตฌ๊ฐ„์—์„œ ๋ณ‘๋ชฉ์ด ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๋ฐ์ดํ„ฐ ์ „๋‹ฌ ์‹œ์— GPU์—๊ฒŒ ๋‚ด๋ฆฌ๋Š” ๋ช…๋ น๊ณผ ๋ฒ„ํ…์Šค ๋ฐ์ดํ„ฐ๋Š” ํฐ ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š์ง€๋งŒ ์••๋„์ ์œผ๋กœ ํ…์Šค์ณ ์ด๋ฏธ์ง€์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ ํฌ๊ธฐ๊ฐ€ ํฌ๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฏธ์ง€ ๋ณ€๊ฒฝ์ด ์ž์ฃผ ์ผ์–ด๋‚˜๋ฉด ๊ทธ๋งŒํผ ์„ฑ๋Šฅ ์ €ํ•˜๊ฐ€ ๋ฐœ์ƒํ•˜๊ฒŒ ๋œ๋‹ค. ์ผ๋ฐ˜์ ์ธ ์ด๋ฏธ์ง€ ๋ฟ๋งŒ์•„๋‹ˆ๋ผ ํ…์ŠคํŠธ๋ฅผ ํฌํ•จํ•˜์—ฌ ํ™”๋ฉด์— ๊ทธ๋ ค์ง€๋Š” ๋ชจ๋“  ๊ฒƒ๋“ค์ด ๊ทธ๋ ค์•ผํ•˜๋Š” ์š”์†Œ๋“ค์ด๋‹ค.

๋˜ํ•œ CPU ์ฒ˜๋ฆฌ ์‹œ๊ฐ„๋„ ํฐ ์ด์Šˆ๊ฐ€ ๋œ๋‹ค. GPU์˜ ๋ฐ์ดํ„ฐ๋Š” CPU์—์„œ ์ƒ์„ฑ๋œ ํ›„์— ์ „์†ก์ด ๋˜๊ธฐ ๋•Œ๋ฌธ์— GPU์˜ ์ž์›์ด ์•„๋ฌด๋ฆฌ ์—ฌ์œ ๋กญ๋‹ค๊ณ  ํ•ด๋„ CPU๊ฐ€ ๋ฐ”์˜๋ฉด ๊ทธ๋งŒํผ ๋กœ๋”ฉ ์†๋„๊ฐ€ ๋А๋ ค์ง€๊ฒŒ ๋œ๋‹ค. ์ด ๋‚ด์šฉ๊ณผ๋Š” ๋ฌด๊ด€ํ•œ ๋‚ด์šฉ์œผ๋กœ, ๊ตฌ๊ธ€์—์„œ ๊ฐœ๋ฐœํ•œ webp๋ผ๋Š” ์ด๋ฏธ์ง€ ํฌ๋งท์ด ์žˆ๋‹ค. ์ด ํฌ๋งท์€ jpg๋‚˜ png์™€ ๊ฐ™์€ ์ด๋ฏธ์ง€ ํฌ๋งท๋ณด๋‹ค ์„ฑ๋Šฅ์ด ๋” ์ข‹๋‹ค๊ณ  ํ•˜์ง€๋งŒ ์ด๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ๋‹ค๋ฉด CPU๊ฐ€ ํ•ด๋‹น ํฌ๋งท์„ ํŒŒ์‹ฑํ•˜์—ฌ ๋น„ํŠธ๋งต ํ˜•ํƒœ๋กœ GPU์—๊ฒŒ ์ „๋‹ฌํ•ด์ฃผ์–ด์•ผ ํ•˜๋ฏ€๋กœ CPU์˜ ๋ถ€๋‹ด์ด ์ปค์ง€๊ฒŒ ๋˜๊ณ , ๊ทธ๋งŒํผ ์„ฑ๋Šฅ ์ €ํ•˜๊ฐ€ ๋ฐœ์ƒํ•˜๊ฒŒ ๋œ๋‹ค.

์›น ํŽ˜์ด์ง€์˜ ๋ Œ๋”๋ง (ํฌ๋กฌ)

์›น ํŽ˜์ด์ง€๋Š” ํŒŒ์‹ฑ์„ ํ†ตํ•ด์„œ HTML ํƒœ๊ทธ๋“ค์€ DOM tree์˜ ํ˜•ํƒœ๋กœ ๋ฉ”๋ชจ๋ฆฌ์— ์ ์žฌ๋˜๊ณ , css์˜ ๋‚ด์šฉ๋“ค๋„ Styles struct๋กœ ๋ฉ”๋ชจ๋ฆฌ์— ์ ์žฌ๋œ๋‹ค. ์ด ํ›„ DOM tree๋ฅผ Render tree๋กœ ์ƒ์„ฑํ•œ ํ›„์— ๊ฐ ๋…ธ๋“œ๋“ค์„ ๊ฐœ๋ณ„์ ์ธ ์ด๋ฏธ์ง€๋กœ ์ƒ์„ฑํ•œ๋‹ค. ํŠธ๋ฆฌ ๊ตฌ์กฐ ๋ฐ ์Šคํƒ€์ผ์— ๋”ฐ๋ผ ์ด๋ฏธ์ง€๋ฅผ ๋ฐฐ์น˜ ๋ฐ ํ•ฉ์„ฑํ•˜์—ฌ ์‹ค์ œ ๋””์Šคํ”Œ๋ ˆ์ด์— ์ถœ๋ ฅํ•˜๋Š” ๊ณผ์ •์„ ๊ฑฐ์น˜๊ฒŒ ๋œ๋‹ค.

์—ฌ๊ธฐ์„œ Render tree์˜ ๊ฐ ๋…ธ๋“œ๋“ค์„ ์ด๋ฏธ์ง€๋กœ ์ƒ์„ฑํ•˜๋Š” ๊ณผ์ •์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์ด๋ฏธ์ง€ ๋‹จ์œ„์˜ ์š”์†Œ๋“ค์„ ๋ ˆ์ด์–ด๋ผ๊ณ  ํ•œ๋‹ค. ์›น ํŽ˜์ด์ง€์—์„œ ์ด๋ฏธ์ง€๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ๊ณผ์ •์„ ๋ณด๋ฉด ๋ชจ๋“  ์ด๋ฏธ์ง€๊ฐ€ ์ค€๋น„๋œ ํ›„์— ์ถœ๋ ฅ๋˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋ถ€๋ถ„๋ถ€๋ถ„ ๋กœ๋”ฉ์ด ๋˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜๊ฐ€ ์žˆ๋Š”๋ฐ ์—ฌ๊ธฐ์„œ ๋ถ€๋ถ„๋ถ€๋ถ„ ์ถœ๋ ฅ๋˜๋Š” ์š”์†Œ๋“ค์ด ๋ ˆ์ด์–ด์ด๋‹ค. Render tree๋ฅผ ํ†ตํ•ด ์ƒ์„ฑ๋œ ์ด๋ฏธ์ง€ ๋ ˆ์ด์–ด๋“ค์ด ํ…์Šค์ณ๋กœ์„œ GPU์— ์—…๋กœ๋“œ ๋˜๊ณ , ๋ ˆ์ด์–ด๋“ค์„ ๋ฐฐ์น˜/ํ•ฉ์„ฑ ํ•˜์—ฌ ์ตœ์ข…์ ์ธ ์›น ํŽ˜์ด์ง€๊ฐ€ ํ‘œํ˜„๋œ๋‹ค. ์ฃผ์˜ํ•  ์ ์€ ๋ ˆ์ด์–ด์˜ ์ด๋ฏธ์ง€ ์ƒ์„ฑ์€ CPU๊ฐ€ ๋‹ด๋‹นํ•œ ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ์ด๋ ‡๊ฒŒ ์ƒ์„ฑ๋œ ๋ ˆ์ด์–ด๋“ค์„ ๋ฐฐ์น˜ํ•˜๊ณ  ํ•ฉ์„ฑํ•˜๋Š” ๊ณผ์ •์„ Composite ์ด๋ผ๊ณ  ํ•œ๋‹ค.

Reflow & Repaint ๋ฌธ์ œ

๋ ˆ์ด์•„์›ƒ์˜ ๋ณ€๊ฒฝ์ด ํŠธ๋ฆฌ๋ฅผ ๋”ฐ๋ผ ์ „ํŒŒ๋œ๋‹ค. ๋งŽ์€ ๊ฒฝ์šฐ์— ๋ ˆ์ด์–ด ์ด๋ฏธ์ง€ ๊ฐฑ์‹ ์ด ํ•„์š”ํ•˜๊ฒŒ ๋˜๋Š”๋ฐ ๋ ˆ์ด์–ด ์ด๋ฏธ์ง€๊ฐ€ ๋ณ€๊ฒฝ๋˜๋ฉด GPU์˜ Video Memory์˜ ํ…์Šค์ณ ๊ฐฑ์‹ ์ด ํ•„์š”ํ•˜๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ ๋ณ€๊ฒฝ๋˜๋Š” ์ •๋ณด๋ฅผ CPU์—์„œ ๊ณ„์‚ฐํ•˜์—ฌ BUS๋ฅผ ํ†ตํ•ด GPU์— ์•Œ๋ฆฌ๊ณ  ํ•ด๋‹น ์ •๋ณด๋ฅผ ๊ฐฑ์‹ ํ•˜์—ฌ ๋‹ค์‹œ ๊ทธ๋ ค์ฃผ๋Š” ์ž‘์—…์„ ๊ฑฐ์ณ์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

์ •๋ฆฌ

  1. DOM์œผ๋กœ๋ถ€ํ„ฐ ๋…ธ๋“œ๋“ค์„ ๊ฐœ๋ณ„์ ์œผ๋กœ ํ˜น์€ ๊ทธ๋ฃน์ง€์–ด ๋ ˆ์ด์–ด ๋‹จ์œ„๋“ค๋กœ ๋ถ„๋ฆฌ
  2. ๋ ˆ์ด์•„์›ƒ์„ ๊ณ„์‚ฐํ•˜๊ณ  ๊ฐ ๋ ˆ์ด์–ด๋“ค์ด ๊ทธ๋ ค์•ผํ•  ์˜์—ญ์˜ ํฌ๊ธฐ, ์œ„์น˜ ๋“ฑ์„ ๊ณ„์‚ฐ
    • ๊ทธ๋ ค์•ผํ•  ์˜์—ญ ๊ณ„์‚ฐ์„ ์œ„ํ•ด CPU์— ์˜ค๋ฒ„ํ—ค๋“œ ๋ฐœ์ƒ
  3. ๋ ˆ์ด์–ด๋“ค ๊ฐ๊ฐ์€ ๋ Œ๋”๋ง์„ ์œ„ํ•ด ๋น„ํŠธ๋งต์œผ๋กœ ์ถœ๋ ฅ
    • ๋ ˆ์ด์–ด ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด CPU์— ์˜ค๋ฒ„ํ—ค๋“œ ๋ฐœ์ƒ
  4. ์ƒ์„ฑ๋œ ๋น„ํŠธ๋งต์„ GPU์— ํ…์Šค์ณ๋กœ ์—…๋กœ๋“œ
    • GPU์˜ ๋น„๋””์˜ค ๋ฉ”๋ชจ๋ฆฌ๋กœ ์ „์†กํ•˜๋Š” ์˜ค๋ฒ„ํ—ค๋“œ ๋ฐœ์ƒ
  5. ๊ณ„์‚ฐ๋œ ๋ ˆ์ด์•„์›ƒ์œผ๋กœ ๋ ˆ์ด์–ด์˜ ํ…์Šค์ณ ์ด๋ฏธ์ง€๋“ค์„ ์ตœ์ข… ์Šคํฌ๋ฆฐ ์ด๋ฏธ์ง€๋กœ ๋ฐฐ์น˜, ํ•ฉ์„ฑ

ํฌ๋กฌ์—์„œ DOM ๋…ธ๋“œ๊ฐ€ ๋ ˆ์ด์–ด๋กœ ๋ถ„๋ฆฌ๋˜๋Š” ์กฐ๊ฑด๋“ค

  1. 3D ํ˜น์€ Perspective๋ฅผ ํ‘œํ˜„ํ•˜๋Š” CSS transform ์†์„ฑ์„ ๊ฐ€์ง„ ๊ฒฝ์šฐ
  2. ํ•˜๋“œ์›จ์–ด ๊ฐ€์† ๋””์ฝ”๋”ฉ์„ ์‚ฌ์šฉํ•˜๋Š” <video> ์—˜๋ฆฌ๋จผํŠธ
  3. 3D ์ปจํ…์ŠคํŠธ ํ˜น์€ ํ•˜๋“œ์›จ์–ด ๊ฐ€์† 2D ์ปจํ…์ŠคํŠธ๋ฅผ ๊ฐ€์ง€๋Š” <canvas> ์—˜๋ฆฌ๋จผํŠธ
  4. ํˆฌ๋ช…๋„(opacity) ์†์„ฑ, transform ์• ๋‹ˆ๋ฉ”์ด์…˜์˜ ์‚ฌ์šฉ
  5. ๊ฐ€์† ๊ฐ€๋Šฅํ•œ CSS ํ•„ํ„ฐ๋ฅผ ๊ฐ€์ง„ ๊ฒฝ์šฐ
  6. Compositing Layer๋ฅผ ํ•˜์œ„ ๋…ธ๋“œ๋กœ ๊ฐ€์ง„ ๊ฒฝ์šฐ
  7. ๋‚ฎ์€ z-index๋ฅผ ๊ฐ€์ง„ ํ˜•์ฒด ๋…ธ๋“œ๊ฐ€ Compositing Layer๋ฅผ ๊ฐ€์ง„ ๊ฒฝ์šฐ

๋ ˆ์ด์–ด๋กœ ๋ถ„๋ฆฌ๋˜๋ฉด ๋ณ€๊ฒฝ๋œ ๋ ˆ์ด์–ด๋งŒ ๋‹ค์‹œ ๊ทธ๋ฆฌ๋ฉด ๋˜๋ฏ€๋กœ ์„ฑ๋Šฅ์„ ๊ฐœ์„ ํ•  ์ˆ˜๊ฐ€ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ๋ ˆ์ด์–ด๊ฐ€ ๋„ˆ๋ฌด ์ž˜๊ฒŒ ์ชผ๊ฐœ์ง€๋Š” ๊ฒฝ์šฐ์—๋Š” ๊ทธ๋งŒํผ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋งŽ์ด ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฏ€๋กœ(๋ ˆ์ด์–ด ๋ถ„๋ฆฌ๋Š” ํ•„์—ฐ์ ์œผ๋กœ ํ…์Šค์ณ ์ด๋ฏธ์ง€ ๋ถ„๋ฆฌ๋ฅผ ์˜๋ฏธ) ๋ฉ”๋ชจ๋ฆฌ ํ•ด์ œ/ํ• ๋‹น์— ๋Œ€ํ•œ ์„ฑ๋Šฅ ์ €ํ•˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ฃผ์˜ํ•ด์•ผํ•œ๋‹ค.

Worker

  • ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ๋™์ž‘
  • ๋ชจ๋“  Worker๋Š” ์ž์‹ ๋งŒ์˜ ์Šค์ฝ”ํ”„๋ฅผ ๊ฐ€์ง„๋‹ค.

Web Worker

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” UI ์Šค๋ ˆ๋“œ์—์„œ ๋™์ž‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ๋ฃจํ”„๋ฅผ ๋Œ๊ฒŒ ๋˜๋ฉด UI ๋™์ž‘๋„ block ๋œ๋‹ค. Web Worker๋Š” UI ์Šค๋ ˆ๋“œ์™€ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์œ„ํ•œ ์Šค๋ ˆ๋“œ๋ฅผ ๋ถ„๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ์ด ๋ชฉ์ ์ด๋‹ค.

Shared Worker

๋‹ค์ˆ˜์˜ ๋ธŒ๋ผ์šฐ์ง• ์ปจํ…์ŠคํŠธ์—์„œ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” Worker

Service Worker

์ด๋ฒคํŠธ ๋“œ๋ฆฌ๋ธ ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, ์ง€์†์ ์ธ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ฒ˜๋ฆฌ๋ฅผ ํ•œ๋‹ค. ์—ฌ๊ธฐ์„œ ์ง€์†์ ์ด๋ผ๋Š” ์˜๋ฏธ๋Š” ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์—ด๋ ค์žˆ์ง€ ์•Š๋”๋ผ๋„ ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. (์˜ˆ๋ฅผ ๋“ค๋ฉด ํฌ๋กฌ์—์„œ ํŽ˜์ด์Šค๋ถ์˜ ์•Œ๋ฆผ ๊ธฐ๋Šฅ)

์›๊ฒฉ ํ‘ธ์‹œ ์•Œ๋ฆผ์ด๋‚˜ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ๋™๊ธฐํ™”์˜ ์ตœ์ดˆ ์ง„์ž…์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ์ ํ•ฉํ•œ๋ฐ, ๋ณด์•ˆ์— ์ทจ์•ฝํ•˜๊ธฐ ๋•Œ๋ฌธ์— Service Worker๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๋ฐ˜๋“œ์‹œ HTTPS๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

Service Worker๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด ์บ์‹œ๋ฅผ ๋งŽ์ด ํ™œ์šฉํ•˜๊ฒŒ ๋˜๋Š”๋ฐ ์บ์‹œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์„œ๋ฒ„์—์„œ ์—…๋ฐ์ดํŠธ ๋œ ๋‚ด์šฉ์„ ๋น ๋ฅด๊ฒŒ ๋ฐ˜์˜ํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ์œผ๋ฏ€๋กœ ํ”„๋ ˆ์ž„ ์ •๋ณด์™€ ๊ฐ™์€ ๋ณ€๊ฒฝ๋  ์†Œ์ง€๊ฐ€ ์ ์€ ๋ฐ์ดํ„ฐ๋“ค์€ ์บ์‹œ๋ฅผ ํ™œ์šฉํ•˜๊ณ (cache first), ์ปจํ…์ธ ์™€ ๊ฐ™์€ ์ž์ฃผ ๋ณ€๊ฒฝ๋  ์†Œ์ง€๊ฐ€ ์žˆ๋Š” ๊ฒƒ๋“ค์€ ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด(network first) ์ข‹๋‹ค.

์ด ์™ธ์— ์œ ์šฉํ–ˆ๋˜ ์ •๋ณด

  • ํฌ๋กฌ ๊ฐœ๋ฐœ์ž ๋„๊ตฌ
    • Timeline
    • Rendering
      • Paint Falshin์— ์ฒดํฌํ•ด๋ณด๋ฉด GPU๊ฐ€ ๋‹ค์‹œ๊ทธ๋ฆฌ๋Š” ์˜์—ญ ํ™•์ธ ๊ฐ€๋Šฅ
      • Layer Borders๋ฅผ ์ฒดํฌํ•˜๋ฉด ๋ ˆ์ด์–ด ์˜์—ญ ํ™•์ธ ๊ฐ€๋Šฅ
    • Profiler
      • ํ”„๋กœํŒŒ์ผ๋ง ์‹œ Profiler์™€ Timeline ์‹œ์ ์„ ์ง€์ •ํ•ด์ฃผ๋ฉด ํ”„๋กœํŒŒ์ผ ๊ฐ€๋Šฅ
      • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ•จ์ˆ˜๋กœ ์ œ๊ณต๋จ
  • css์˜ will-change ์†์„ฑ
    • GPU์—๊ฒŒ ๋ ˆ์ด์–ด๋กœ ์ž˜๋ผ์คฌ์œผ๋ฉด ์ข‹๊ฒ ๋‹ค๋Š” ์š”์ฒญ. ๋ ˆ์ด์–ด๋กœ ๊ตฌ๋ถ„๋  ์ˆ˜๋„ ์žˆ๊ณ  ์•ˆ๋  ์ˆ˜๋„ ์žˆ์Œ
  • link ํƒœ๊ทธ์˜ rel ์†์„ฑ (ํžŒํŠธ ์ œ๊ณต)
    • dns-prefetch
    • preconnect
    • preload
    • prefetch
  • script์˜ defer, async ์†์„ฑ
  • iframe์˜ data-src ์†์„ฑ
    • iframe์„ ๋ Œ๋”๋ง ํ•˜๋Š” ์ˆœ๊ฐ„ ์ž์‹ ์˜ ํŽ˜์ด์ง€ ๋กœ๋”ฉ์€ block๋˜๋Š”๋ฐ ์ด ์†์„ฑ์„ ์ด์šฉํ•˜๋ฉด ์ž์‹ ์˜ ํŽ˜์ด์ง€๋ฅผ ์šฐ์„ ์ ์œผ๋กœ ๋กœ๋”ฉํ•˜๊ณ  ์ด ํ›„์— iframe์„ ๋กœ๋”ฉํ•œ๋‹ค.
  • HTTP2์—์„œ๋Š” https๋งŒ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•˜๋‹ค.

์ฐธ๊ณ 


์ €์ž‘์ž ํ‘œ์‹œ๋น„์˜๋ฆฌ๋ณ€๊ฒฝ ๊ธˆ์ง€
โ†ง

Viewing all articles
Browse latest Browse all 303

Latest Images

Trending Articles


๋„˜์–ด์„  ์•ˆ๋  ์นœ๊ตฌ์—„๋งˆ์˜ ๋‘”๋• ๋‹จํŽธ


์• ํ”Œ ๋งค์งํ‚ค๋ณด๋“œ ๋งˆ์šฐ์Šค ์œˆ๋„์šฐ ๋“œ๋ผ์ด๋ฒ„


ํ‚ค์ƒท 2023.3 ์—…๋ฐ์ดํŠธ ์•ˆ๋‚ด


๊ฐ•์กฐ ํ‘œ์‹œ๋œ ์š”์†Œ ๊ฐ„์— ์›ํ˜• ์ฐธ์กฐ ์ฒด์ธ์ด ์žˆ์Šต๋‹ˆ๋‹ค.


์Šˆ๋กœ๋Œ€์— ํ‘์—ญ์‚ฌ๊ฐ€ ์ง„์งœ๋กœ ์ฐธ์ „!?


๊ฑด์ž์žฌ์—…์ฒด๏ผŒ๊ธฐ๋Šฅ์„ฑ ์ฐฝํ˜ธ ๊ฐœ๋ฐœ ์—ดํ’


๋“ฑ์‚ฐ์˜จ ์œ ๋ถ€๋…€๋“ค์—๊ฒŒ 18์–ต๋Œ€ ์‚ฌ๊ธฐ ์นœ '์ˆ˜๋ฝ์‚ฐ ์นด์‚ฌ๋…ธ๋ฐ”'


์ƒ์€ 1ํ™” ๋ฌด์‚ญ์ œ๋ถ€๋ถ„


[1.8.9] ๋งˆ์ธํฌ๋ž˜ํ”„ํŠธ ํ•œ๊ธ€ํŒจ์น˜ b79_189 ํฌ์ง€/๋ฐ”๋‹๋ผ


๋‹›์‚ฐํ๋ธŒ ์†Œ์Œ๊ธฐ์ˆ˜๋ฆฌ,ํ๋ธŒ๋จธํ”Œ๋Ÿฌ์ˆ˜๋ฆฌ,ํ๋ธŒ๋งˆํ›„๋ผ์ˆ˜๋ฆฌ.....์„œ์šธ,์ˆ˜์›,์ธ์ฒœ,์•ˆ์–‘,๊ตฐํฌ,์˜์™•,์•ˆ์‚ฐ,์ž๋™์ฐจ์†Œ์Œ๊ธฐ์ˆ˜๋ฆฌ,์ฒœ์ผ์นด์„ผํƒ€,์ฒœ์ผ์นด์„ผํ„ฐ


[์€ํ•˜์˜์›…์ „์„ค] ๋ธŒ๋ฅ€ํžํŠธ ๋””์ž์ธ ๋ชจ์Œ


(ํ† ๋งˆํ† ์นผ๋Ÿผ) ์ด์žฌ๋ช…์˜ '๋ฏผ์ƒ'๊ณผ '์–‘์•„์น˜ ๋ณ€ํ˜ธ์‚ฌ'


๊ฐ•๋‚จ ์ฐœ์งˆ๋ฐฉ ์ถ”์ฒœ jcm์ŠคํŒŒ์‚ฌ์šฐ๋‚˜ ๊นจ๋—ํ•œ ์—ญ์‚ผ ์ฐœ์งˆ๋ฐฉโ™ก


๋””์ง€๋ชฌ , ํŒฌ๋“ค๋Ÿผ ์ปฌ๋Ÿฌ ์นด๋“œ ๋ชจ๋“œ


์ผ€๋ชจ๋…ธ ํ”„๋ Œ์ฆˆ(๊ฒŒ์ž„ํŒ) ์žํŒŒ๋ฆฌ ํŒŒํฌ ์ง€ํ˜•


์†Œ๋‹ˆ (Sony) PSE-2500 ํ„ดํ…Œ์ด๋ธ” (Ortofon ๊ตฌํ˜• RMG 212 tonearm ์žฅ์ฐฉ)


ESP8266 WeMos D1 Mini ๋ฐฐํ„ฐ๋ฆฌ ์ „์•• ์ฝ๊ธฐ


์„œ๋ฉด์†Œ๋ฐฉ๊ณต๋ฌด์›์ฒด๋ ฅํ•™์› 25๋…„ ์†Œ๋ฐฉ ์ฐฝ์› ์—ฌ์ž๊ณต์ฑ„ 59์  1๋“ฑ ๋ฐฐ์ถœ!


์˜ค๋””์˜ค์™€ ์Œ์•…์„ ์ข‹์•„ํ•˜๋Š” ๊ด€๋ จ ์—…์ฒด ๊ฒฝ๋ ฅ์ž ๊ตฌ์ธ ๋ชจ์ง‘


์ธ๊ฒŒ์ด์ง€ ํ‚ค์Šค 7ํ™” ์‹œ์Šคํ„ฐ๋„ ๋ฒ—๋ƒ?ใ…‹ Engage kiss 7ํ™” ์˜ˆ๊ณ