๐Ÿ—บ๏ธ Backend Developer Road-Map

2. ๋ธŒ๋ผ์šฐ๋‹ˆ ๋ง๊ณ  ๋ธŒ๋ผ์šฐ์ €

bell22 2022. 4. 9. 22:48

์ด๋ฒˆ์—๋Š” ์ง€๋‚œ๋ฒˆ์— ์ธํ„ฐ๋„ท ๊ณต๋ถ€ํ•˜๋‹ค๊ฐ€ ๋‚˜์˜จ

๋ธŒ๋ผ์šฐ์ €์™€ ์›น์˜ ๋™์ž‘์„ ๋‹ค๋ค„๋ณด๋ ค๊ณ  ํ•œ๋‹ค

 

์šฐ๋ฆฌ๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ํฌ๋กฌ, ํŒŒ์ด์–ดํญ์Šค ๋“ฑ๋“ฑ์ด ์›น ๋ธŒ๋ผ์šฐ์ €์ธ๋ฐ,

์ปดํ“จํ„ฐ๋ฅผ ํ‚ค๊ณ  ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉํ•˜์ง€ ์•Š์„๊นŒ ์‹ถ์€๋ฐ

์ •์ž‘ ์ด๊ฒŒ ๋ญ๋‹ค!๋ผ๊ณ  ์ •์˜ํ•  ์ผ์€ ์—†์—ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค

 

์•”ํŠผ ์ง€๊ธˆ ๋ด๋ณด๋Š”๊ฑธ๋กœ

 

์ธํ„ฐ๋„ท ๋™์ž‘์ด ๊ถ๊ธˆํ•˜๋‹ค๋ฉด ↓ ↓ ↓

https://mutpp.tistory.com/41

 

1. Internet ๋™์ž‘ ์›๋ฆฌ

์šฐ๋ฆฌ๊ฐ€ ์“ฐ๋Š” ์ธํ„ฐ๋„ท์€ ํ•œ ๋งˆ๋””๋กœ ์ •์˜ํ•˜์ž๋ฉด ์–ด๋–ค ๊ฑธ๊นŒ? ๋Œ€์ถฉ ์ธํ„ฐ๋„ท ๊ณต๋ถ€ํ•œ๋‹จ ๋ง 1. ์ธํ„ฐ๋„ท์ด๋ž€? ์ธํ„ฐ๋„ท์€ ์šฐ๋ฆฌ๊ฐ€ ๋ณด๋Š” ์›น ์‚ฌ์ดํŠธ!! ์˜ ํ•ต์‹ฌ์ด๋‹ค ๊ฐ€์žฅ ๊ธฐ๋ณธ ๊ฐœ๋…์€ ์ „ ์„ธ๊ณ„ ์‚ฌ๋žŒ๋“ค์ด ์ปดํ“จํ„ฐ๋‚˜ ๋ชจ

mutpp.tistory.com


1. ๋ธŒ๋ผ์šฐ์ € (Browser)๋ž€?

๋ธŒ๋ผ์šฐ์ €๋Š” ์›น ๋ธŒ๋ผ์šฐ์ € (web browser) ๋˜๋Š”

์ธํ„ฐ๋„ท ๋ธŒ๋ผ์šฐ์ €(internet browser)๋กœ ๋ถˆ๋ฆฐ๋‹ค

 

์œ„ํ‚ค๋ฐฑ๊ณผ์˜ ์ •์˜๋ฅผ ์ธ์šฉํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค

์›น ์„œ๋ฒ„์—์„œ ์ด๋™ํ•˜๋ฉฐ ์Œ๋ฐฉํ–ฅ์œผ๋กœ ํ†ต์‹ ํ•œ๋‹ค

HTML ๋ฌธ์„œ๋‚˜ ํŒŒ์ผ์„ ์ถœ๋ ฅํ•˜๋Š” ๊ทธ๋ž˜ํ”ฝ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค๋‹ค

 

์‰ฝ๊ฒŒ ๋งํ•˜๋ฉด ์›น ์„œ๋น„์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ๋„๊ตฌ๋ผ๊ณ  ๋งํ•  ์ˆ˜ ์žˆ๊ฒ ๋‹ค

 

์ฐธ๊ณ ๋กœ ์•„๋ž˜๋Š” ์›น ๋ธŒ๋ผ์šฐ์ € ์‹œ์žฅ ์ ์œ ์œจ์ธ๋ฐ

 

2015๋…„

์ดˆ๋ก์ƒ‰์ด ํฌ๋กฌ์ธ๋ฐ ใ„ทใ„ทํ•˜๋ˆ„

 

์—ฌ์ „ํžˆ ๋†’์€ ์ ์œ ์œจ์„ ๊ฐ–๊ณ  ์žˆ๋Š” ํฌ๋กฌ ์„ ์ˆ˜,,,

 

๋‚˜๋„ ํฌ๋กฌ์„ ๊ฐ€์žฅ ๋งŽ์ด ์“ฐ๋Š”๋ฐ

๋ชจ๋ฐ”์ผ๋กœ๋Š” ์‚ฌํŒŒ๋ฆฌ๋ฅผ ๋งŽ์ด ์“ฐ๊ณ , ์š”์ฆ˜์—” ๋„ค์ด๋ฒ„ ์›จ์ผ๋„ ๋งŽ์ด ์“ด๋‹ค ใ…‹

 

 

2. ๋ธŒ๋ผ์šฐ์ € ๊ธฐ๋Šฅ

๊ทธ๋Ÿผ ๋ธŒ๋ผ์šฐ์ € ๋™์ž‘์ด๋ผ๋Š” ๊ฒŒ ์–ด๋–ค ์˜๋ฏธ์ผ๊นŒ

์šฐ๋ฆฌ๊ฐ€ ์ฃผ์†Œ์ฐฝ์— www.google.com...  ์ด๋ ‡๊ฒŒ ์ž…๋ ฅํ–ˆ์„ ๋•Œ

์–ด๋–ค ๊ณผ์ •์„ ๊ฑฐ์น˜๊ธธ๋ž˜ ํ™”๋ฉด์— ๋ณด์ด๋‚˜...

๋ผ๊ณ  ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๊ฒ ๋‹ค

 

์‚ฌ์‹ค ๋ธŒ๋ผ์šฐ์ €์˜ ์ฃผ์š” ๊ธฐ๋Šฅ์€

์‚ฌ์šฉ์ž๊ฐ€ ์„ ํƒํ•œ ์ž์›์„ ์„œ๋ฒ„์— ์š”์ฒญํ•˜๊ณ  ๋ธŒ๋ผ์šฐ์ €์— ํ‘œ์‹œํ•˜๋Š” ๊ฒƒ์ผ ๋ฟ์ด๋‹ค

 

์šฐ๋ฆฌ๊ฐ€ ์›น ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋ณด์ด๋Š” ๋ชจ๋“  ๊ฒƒ์€ ์—ฌ๋Ÿฌ ํ˜•ํƒœ๋ฅผ ๊ฐ€์ง„

(HTML ๋ฌธ์„œ๋‚˜ ์ด๋ฏธ์ง€ ๋“ฑ๋“ฑ) ๋ธŒ๋ผ์šฐ์ €์˜ ์ž์›์ด๋‹ค

 

์ด ๋ชจ๋“  ์ž์›์€ ๊ฐ๊ฐ ๊ณ ์œ ํ•œ ์ด๋ฆ„์„ ๊ฐ€์ง€๋Š” ์ฃผ์†Œ๋กœ ๊ตฌ๋ถ„๋˜๋Š”๋ฐ,

์ด๊ฒƒ์ด ๋ฐ”๋กœ URI (Uniform Resource Identifier)์ด๋‹ค

์†Œ๋ฆ„ ใ„ทใ„ท

 

๋ธŒ๋ผ์šฐ์ €๋Š” ์ž‘์„ฑ๋˜์–ด์žˆ๋Š” HTML๊ณผ CSS์— ๋”ฐ๋ผ์„œ

์ด๋ฅผ ํ™”๋ฉด์— ํ‘œ์‹œํ•ด์ค€๋‹ค

์ด๋Ÿฐ ๊ทœ์น™์€ ์›น ํ‘œ์ค€ํ™” ๊ธฐ๊ตฌ์ธ W3C์—์„œ ์ •ํ•ด์ค€๋‹ค


* W3C (World Wide Web Consortium)๋ž€? *

WWW์„ ์œ„ํ•œ ํ‘œ์ค€์„ ๊ฐœ๋ฐœํ•˜๋Š” ์กฐ์ง

์›น์˜ ์„ฑ์žฅ์„ ๋„๋ชจํ•˜๋Š” ํ”„๋กœํ† ์ฝœ๊ณผ ๊ฐ€์ด๋“œ๋ผ์ธ์„ ๊ฐœ๋ฐœํ•จใ…‹

 

 

3. ๋ธŒ๋ผ์šฐ์ €์˜ ๊ตฌ์กฐ

๋ธŒ๋ผ์šฐ์ €์˜ ๊ตฌ์กฐ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค 

 

 

ํ•˜๋‚˜์”ฉ ๊ฐ„๋‹จํžˆ ๋ณด์ž..

 

(1) User Interface

๋ธŒ๋ผ์šฐ์ € ์ธํ„ฐํŽ˜์ด์Šค

์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค๋Š” ์ค„์—ฌ์„œ UI๋ผ๊ณ  ๋ถ€๋ฅด๋Š”๋ฐ

์ฃผ์†Œ ํ‘œ์‹œ์ค„, ์ด์ „/๋‹ค์Œ ๋ฒ„ํŠผ, ๋ถ๋งˆํฌ ๋ฒ„ํŠผ ๋“ฑ๋“ฑ

์š”์ฒญํ•œ ํŽ˜์ด์ง€๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ์ฐฝ์„ ์ œ์™ธํ•œ ๋‚˜๋จธ์ง€ ๋ถ€๋ถ„์ด๋‹ค

 

(2) Browser Engine

UI์™€ Rendering Engine ์‚ฌ์ด์˜ ๋™์ž‘์„ ์ œ์–ดํ•œ๋‹ค

 

(3) Rendering Engine

์š”์ฒญํ•œ ์ฝ˜ํ…์ธ ๋ฅผ ํ‘œ์‹œํ•ด์คŒ

HTML์ด๋ž‘ CSS๊ฐ€ ๋ญ” ๋‚ด์šฉ์ธ์ง€ ์ฝ์–ด์„œ ํ™”๋ฉด์— ๋ฟŒ๋ ค์คŒ

 

(4) Networking

HTTP ์š”์ฒญ ๊ฐ™์€ ๋„คํŠธ์›Œํฌ ํ˜ธ์ถœ์— ์‚ฌ์šฉ๋จ

๋„คํŠธ์›Œํฌ๋Š” ๋’ท๋‹จ(?)์—์„œ ๋™์ž‘ํ•˜๋Š” ๊ฑฐ๋ผ ํ”Œ๋žซํผ ํ•˜๋ถ€์—์„œ ์‹คํ–‰๋จ

ํ”Œ๋žซํผ ๋…๋ฆฝ์  ์ธํ„ฐํŽ˜์ด์Šค์ด๋‹ค

 


* ํ”Œ๋žซํผ์ด๋ž€? *

์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋  ์ˆ˜ ์žˆ๋Š” ๊ธฐ์ดˆ๋ฅผ ์ด๋ฃจ๋Š” ์ปดํ“จํ„ฐ ์‹œ์Šคํ…œ ๋˜๋Š” ํ™˜๊ฒฝ์„ ๋œปํ•จ.

OS, ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, GUI ๋“ฑ๋“ฑ์˜ ๊ตฌ์กฐใ…‹

(OS๋ž‘ ๋น„์Šทํ•œ๋ฐ OS๋Š” ์ปดํ“จํ„ฐ์™€ ์‚ฌ์šฉ์ž ์‚ฌ์ด์˜ ์ธํ„ฐํŽ˜์ด์Šค)

 

* ํ”Œ๋žซํผ ๋…๋ฆฝ์ /๋…๋ฆฝ์„ฑ์ด๋ž€? *

ํ”Œ๋žซํผ์ด window/linux/mac os ๋“ฑ๋“ฑ ํŠน์ • ์šด์˜์ฒด์ œ๋‚˜ ๊ธฐ๊ณ„์— ์˜์กดํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์„ ๋œปํ•จ


(5) JavaScript Interpreter

Javascript๋กœ ๋œ ์ฝ”๋“œ๋ฅผ ํ•ด์„ํ•˜๊ณ  ์‹คํ–‰ํ•ด์คŒ

 

(6) UI Backend

์ฝค๋ณด ๋ฐ•์Šค ๊ฐ™์€ ๊ธฐ๋ณธ์ ์ธ ๊ฒƒ๋“ค์„ ๊ทธ๋ ค์คŒ

OS ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค ์ฒด๊ณ„๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๋ฐ, ์ด๊ฒŒ ๋ฌด์Šจ ๋œป์ด๋ƒ๋ฉด

๋’ค๋กœ ๊ฐ€๊ธฐ๋‚˜ ํ™ˆ ๋ฒ„ํŠผ ์š”๋Ÿฐ ๊ฒŒ window๋ž‘ mac์—์„œ ๊ธฐ๋ณธ ๋ชจ์–‘์ด ๋‹ค๋ฅด๊ฒŒ ๋ณด์ด๋Š”๋ฐ

 

window์—์„œ์˜ ํฌ๋กฌ
mac์—์„œ ํฌ๋กฌ

์š”๋ ‡๊ฒŒใ…‹ ๋ชจ์–‘๋„ ์กฐ๊ธˆ์”ฉ ๋‹ค๋ฅด๊ณ  ์šด์˜์ฒด์ œ์—์„œ ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋ณธ ๋ชจ์–‘์ด ๋‹ค๋ฆ„

 

(7) Data Persistence

๋ง ๊ทธ๋Œ€๋กœ ์ž๋ฃŒ ์ €์žฅ์†Œ๋กœ, ์ฟ ํ‚ค ๊ฐ™์€ ์›น์—์„œ ์‚ฌ์šฉํ•œ ์ž์›๋“ค์ด ์ €์žฅ๋œ๋‹ค

 

 

4. Rendering Engine

๋ Œ๋”๋ง ์—”์ง„์€ ์œ„์—์„œ ์ž ๊น ์–˜๊ธฐํ•œ ๊ฒƒ์ฒ˜๋Ÿผ,

์š”์ฒญํ•œ ์ฝ˜ํ…์ธ ๋ฅผ ํŒŒ์‹ฑ ํ•˜์—ฌ ํ™”๋ฉด์— ๋ฟŒ๋ ค์ฃผ๋Š” ์—ญํ• ์„ ํ•œ๋‹ค

 

์ฐธ๊ณ ๋กœ ๋ Œ๋”๋งใ…‹

 

๋ Œ๋”๋ง (Rendering)

์ด๋ฏธ์ง€ ํ•ฉ์„ฑ์ด๋ผ๊ณ ๋„ ํ•˜๋Š”๋ฐ, ์ปดํ“จํ„ฐ ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ

์ด๋ฏธ์ง€๋‚˜ ์˜์ƒ์„ ๋งŒ๋“ค์–ด๋‚ด๋Š” ๊ณผ์ •์ด๋ž€ ๋œป์ด๋‹ค

 

์ฆ‰, ๋ Œ๋”๋ง ์—”์ง„์€ ๋ธŒ๋ผ์šฐ์ €์— ์ด๋ฏธ์ง€๋ฅผ ๋ฟŒ๋ ค์ฃผ๋Š” ์—ญํ• ์ด๋‹ค

 

๋ Œ๋”๋ง ์—”์ง„๋„ ์ข…๋ฅ˜๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐ€์ง€์ด๋‹ค

ํŒŒ์ด์–ดํญ์Šค๋Š” ๋ชจ์งˆ๋ผ์—์„œ ๋งŒ๋“  Gecko(? ๋„๋งˆ๋ฑ€๋ถ™์ด) ์—”์ง„์„ ์‚ฌ์šฉํ•˜๊ณ 

ํฌ๋กฌ/์‚ฌํŒŒ๋ฆฌ๋Š” Webkit(์›นํ‚ท) ์—”์ง„์„ ์‚ฌ์šฉํ•œ๋‹น

 


* Webkit (์›นํ‚ท) ์ด๋ž€? *

chrome developers์—์„œ ์ฝ์€ ๋ฌธ์„œ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋ Œ๋”๋ง ์—”์ง„์„ ์„ค๋ช…ํ•  ๊ฑฐ๋ผ,

์›นํ‚ท์„ ์‚ด์ง๋งŒ ์„ค๋ช…ํ•˜๊ฒ ๋‹ค

 

์›นํ‚ท์€ ์›น ๋ธŒ๋ผ์šฐ์ €๋ฅผ ๋งŒ๋“œ๋Š” ๊ธฐ๋ฐ˜์„ ์ œ๊ณตํ•˜๋Š” ์˜คํ”ˆ ์†Œ์Šค ํ”„๋ ˆ์ž„์›Œํฌ์ด๋‹ค

์›๋ž˜๋Š” ๋ฆฌ๋ˆ…์Šค ํ”Œ๋žซํผ์—์„œ ๋™์ž‘ํ•˜๊ธฐ ์œ„ํ•œ ์˜คํ”ˆ ์†Œ์Šค ์—”์ง„์ด์—ˆ์ง€๋งŒ

Apple์ด mac os์—์„œ ์‚ฌํŒŒ๋ฆฌ ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด ์ˆ˜์ •์„ ํ–ˆ๋‹ค๊ณ  ํ•œ๋‹ค

์ง€๊ธˆ์€ ์•ˆ๋“œ๋กœ์ด๋“œ ํ”Œ๋žซํผ์—๋„ ์‚ฌ์šฉ๋˜๋Š” ๋…€์„์ด๋‹ค


 

(1) Rendering Engine ๋™์ž‘ ๊ณผ์ •

๋ Œ๋”๋ง ์—”์ง„์€ Networking์œผ๋กœ ๋ฌธ์„œ์˜ ๋‚ด์šฉ์„ ์š”์ฒญํ•˜๊ณ 

์‘๋‹ต๋ฐ›์€ ๋ฌธ์„œ(HTML ๋“ฑ)๋ฅผ ํŒŒ์‹ฑ ํ•˜๊ณ 

์ด๋ฅผ ์‚ฌ์šฉ์ž๊ฐ€ ๋ณผ ์ˆ˜ ์žˆ๋„๋ก ์›น ํŽ˜์ด์ง€๋กœ ๋ณ€ํ™˜ํ•ด์ค€๋‹ค

 

 

 

 

๋ Œ๋”๋ง ์—”์ง„ ๋™์ž‘ ๊ณผ์ •์„ ํ•˜๋‚˜์”ฉ ๋ด๋ณด์ž

 

 

[ DOM(Document Object Model) ๊ตฌ์„ฑ ]

Network Request๋กœ ๋ฐ›์€ ๋ฌธ์„œ๋กœ HTML ๋ฌธ์„œ๋ฅผ ํŒŒ์‹ฑ ํ•˜๊ณ 

๊ฐ ์š”์†Œ์˜ ํƒœ๊ทธ๋ฅผ DOM์ด๋ž€ ๋…ธ๋“œ๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค


DOM์ด ๋ญ์–Œ

๋ฌธ์„œ ๊ฐ์ฒด ๋ชจ๋ธ๋กœ XML์ด๋‚˜ HTML ๋ฌธ์„œ์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋‹ค

์›น ๊ฐœ๋ฐœ์ž๊ฐ€ Javascript๋ฅผ ํ†ตํ•ด ์ƒํ˜ธ ์ž‘์šฉํ•  ์ˆ˜ ์žˆ๋Š”

๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ๋ฐ API ๋“ฑ์˜

ํŽ˜์ด์ง€์— ๋Œ€ํ•œ ๋ธŒ๋ผ์šฐ์ €์˜ ๋‚ด๋ถ€ ํ‘œํ˜„์ด๋‹ค


HTML ๋ฌธ์„œ๋ฅผ DOM์œผ๋กœ ๊ตฌ๋ฌธ ๋ถ„์„ํ•˜๋Š” ๊ฑด HTML ํ‘œ์ค€์„ ๋”ฐ๋ฅธ๋‹ค

์ฐธ๊ณ ๋กœ HTML์€ ์ž˜๋ชป๋œ ์ฝ”๋“œ๋ฅผ ์ ์–ด์„œ ์˜ค๋ฅ˜๊ฐ€ ์žˆ์–ด๋„

์ •์ƒ์ ์œผ๋กœ ์ฒ˜๋ฆฌ๋œ๋‹ค๋Š”๋ฐ ์ฐธ ์‹ ๊ธฐํ•œ ๊ธฐ๋Šฅ์ด๋‹ค ใ…‹

 

[ Render ํŠธ๋ฆฌ ๊ตฌ์ถ• ]

HTML ๋ฌธ์„œ๋ฅผ ํŒŒ์‹ฑ ํ•ด์„œ DOM ํŠธ๋ฆฌ๋ฅผ ๊ตฌ์ถ•์„ ํ–ˆ๋‹ค๋ฉด

CSS์™€ ์Šคํƒ€์ผ ์š”์†Œ๋“ค์€ ๋ Œ๋” ํŠธ๋ฆฌ๋ผ๋Š” ๋˜ ๋‹ค๋ฅธ ํŠธ๋ฆฌ๊ฐ€ ๋งŒ๋“ค์–ด์ง„๋‹ค

์–˜๋„ค๋“ค์„ ์™ธ๋ถ€ ๋ฆฌ์†Œ์Šค๋ผ๊ณ  ํ•˜๋Š”๋ฐ, ์ด๋ฏธ์ง€/CSS/JavaScript ๋“ฑ์ด ํ•ด๋‹น๋œ๋‹ค

์ƒ‰์ƒ์ด๋‚˜ ํฌ๊ธฐ ๊ฐ™์€ ์š”์†Œ๊ฐ€ ๋“ค์–ด์žˆ๋‹ค

์ด๋Ÿฐ ํŒŒ์ผ์€ ๋„คํŠธ์›Œํฌ/์บ์‹œ์—์„œ ๋กœ๋“œ๋ฅผ ํ•ด์•ผํ•œ๋‹น

 

[ Render ํŠธ๋ฆฌ ๋ฐฐ์น˜ ]

๋ Œ๋” ํŠธ๋ฆฌ๊ฐ€ ๋งŒ๋“ค์–ด์ง€๋ฉด,

๊ฐ ๋…ธ๋“œ๊ฐ€ ํ™”๋ฉด์˜ ์ •ํ™•ํ•œ ์œ„์น˜์— ํ‘œ์‹œ๋˜๋„๋ก ๋ฐฐ์น˜๊ฐ€ ๋œ๋‹ค

 

[ Render ํŠธ๋ฆฌ ๊ทธ๋ฆฌ๊ธฐ ]

๋ฐฐ์น˜๋œ ๋ Œ๋” ํŠธ๋ฆฌ๋Š” UI ๋ฐฑ์—”๋“œ์—์„œ ์ด๋ฏธ์ง€๊ฐ€ ๊ทธ๋ ค์ง„๋‹ค

 

๋ Œ๋”๋ง ๊ณผ์ •์€ ํ•œ ๋ฒˆ์— ๋˜ญ!! ํ™”๋ฉด์— ๊ทธ๋ ค์ง€๋Š” ๊ฒŒ ์•„๋‹ˆ๊ณ ,

์šฐ๋ฆฌ๊ฐ€ ์›นํŽ˜์ด์ง€๋ฅผ ๋ณผ ๋•Œ ๋จผ์ € ๋‚˜์˜ค๋Š” ๋ถ€๋ถ„์ด ์žˆ๊ณ 

์ „์ฒด ๋‹ค ํ™”๋ฉด์— ๋ฟŒ๋ ค์ง€๋Š” ๊ฑด ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋Š” ๊ฒฝํ—˜์ด ์žˆ์„ ํ…๋ฐ

๋ Œ๋”๋ง ๊ณผ์ •์ด ์ ์ง„์ ์œผ๋กœ ์ง„ํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค ใ…‹

๋จผ์ € ๋ฐ›์€ ๊ฒƒ๋“ค์„ ๋จผ์ € ๋ฟŒ๋ ค์ค€๋‹ค

 

5. Layout

๋ Œ๋”๋ง ๊ณผ์ •์„ ํ†ตํ•ด ๋ธŒ๋ผ์šฐ์ €์— ๋‚˜ํƒ€๋‚  ๋ฌธ์„œ์˜ ๊ตฌ์กฐ์™€

๋…ธ๋“œ์˜ ์Šคํƒ€์ผ์„ ์•Œ๊ณ ๋Š” ์žˆ์ง€๋งŒ

ํŽ˜์ด์ง€๋ฅผ ์™„๋ฒฝํ•˜๊ฒŒ ๋ Œ๋”๋ง ํ•˜๊ธฐ์—” ๋ญ”~๊ฐ€ ๋ถ€์กฑํ•˜๋‹ค

 

700

 

๋งŒ์•ฝ์— ์นœ๊ตฌํ•œํ…Œ ์ „ํ™”๋กœ ๊ทธ,, ๋นจ๊ฐ„ ์›์ด๋ž‘ ํŒŒ๋ž€ ๋„ค๋ชจ ๊ทธ๋ ค๋ด

ํ•˜๋ฉด ์–ด๋””์— ๊ทธ๋ ค์•ผ ํ•˜๋Š”๋ฐ? ๊ฐ€ ๋น ์ ธ์žˆ๋‹จ ์–˜๊ธฐ.

๊ทธ๋ž˜์„œ ํ•„์š”ํ•œ ๊ธฐ๋Šฅ์ด Layout (๋ฐฐ์น˜)์ด๋‹ค

 

HTML๊ณผ ์™ธ๋ถ€ ๋ฆฌ์†Œ์Šค๋กœ DOM ํŠธ๋ฆฌ๋ฅผ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ๊ณ ,

x/y ์ขŒํ‘œ๋‚˜ ํฌ๊ธฐ ๊ฐ™์€ ์ •๋ณด๊ฐ€ ์žˆ๋Š” Layout ํŠธ๋ฆฌ๋„ ์ƒ์„ฑ๋œ๋‹ค ใ…‹

 

 

๋ ˆ์ด์•„์›ƒ ํŠธ๋ฆฌ๋Š” ๊ตฌ์กฐ๋Š” DOM ํŠธ๋ฆฌ๋ž‘ ๋น„์Šทํ•œ๋ฐ

ํŽ˜์ด์ง€์— ํ‘œ์‹œ๋˜๋Š” ๊ฒƒ๊ณผ ๊ด€๋ จ๋œ ์ •๋ณด๋ฅผ ํฌํ•จํ•œ๋‹ค๊ณ  ํ•œ๋‹ค

 

 

6. Paint

๊ทผ๋ฐ ์•„์ง ๋ญ”๊ฐ€ ๋ถ€์กฑํ•˜๋‹ค... 

๊ท€์—ฝ๋ˆ„..

 

DOM, ์Šคํƒ€์ผ, ๋ ˆ์ด์•„์›ƒ์„ ๋‹ค ์•Œ์ง€๋งŒ...! ๊ทธ๋ ‡์ง€๋งŒ...!

๋™๊ทธ๋ผ๋ฏธ๋ถ€ํ„ฐ ๊ทธ๋ฆด์ง€ ๋„ค๋ชจ๋ถ€ํ„ฐ ๊ทธ๋ฆด์ง€ ์ˆœ์„œ๋Š” ๋ชจ๋ฅธ๋‹ค

 

 

๊ทธ๋ƒฅ ๋ญ ์•”๊ฑฐ๋‚˜ ๋จผ์ € ํ•˜๋ฉด ๋˜์ง€ ์•Š๋‚˜ ์‹ถ์ง€๋งŒ,,

์œ„ ๊ทธ๋ฆผ์ฒ˜๋Ÿผ ๋‹ค๋ฅธ ์š”์†Œ์˜ ์œ„์น˜๋ฅผ ๊ณ ๋ คํ•˜์ง€ ์•Š์œผ๋ฉด

๊ฐ€๋ ค์ง€๊ฑฐ๋‚˜ ์›๋ž˜ ์˜๋„ํ–ˆ๋˜ ๋Œ€๋กœ ๊ทธ๋ ค์ง€์ง€ ์•Š๋Š”๋‹ค

 

๊ทธ๋ฆฌ๊ณ  DOM ํŠธ๋ฆฌ, ๋ ˆ์ด์•„์›ƒ ํŠธ๋ฆฌ์™€ ๋”๋ถˆ์–ด์„œ

ํŽ˜์ธํŠธ ๋ ˆ์ฝ”๋“œ๋ผ๋Š” ๊ฒŒ ์ƒ์„ฑ๋œ๋‹ค

 

 

๋ฐ”๋กœ ์š”๋ ‡๊ฒœ

๊ทธ๋ฆฌ๊ณ  ์ฒ˜์Œ ํ™”๋ฉด ๋ง๊ณ  ๊ทธ๋‹ค์Œ ๋ณ€๊ฒฝ๋œ ๋‚ด์šฉ์„ ํ‘œ์‹œํ•  ๋•Œ๋Š”

Repaint๋ผ๋Š” ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋Š”๋ฐ,

์žฌ ์ƒ์„ฑ๋œ ๋ ˆ์ด์•„์›ƒ ํŠธ๋ฆฌ๋ฅผ ๋‹ค์‹œ ๋ ˆ์ด์•„์›ƒ์„ ๊ทธ๋ ค์ฃผ๋Š” ๊ณผ์ •์ด๋‹ค

 

์ฐธ๊ณ ๋กœ ์›นํ‚ท์€ ๋ฆฌํŽ˜์ธํŒ… ์ „์— ๊ธฐ์กด์˜ ์‚ฌ๊ฐํ˜•์„ ๋น„ํŠธ๋งต์œผ๋กœ ์ €์žฅํ•ด์„œ

์ƒˆ๋กœ ๊ทธ๋ ค์ง€๋Š” ์‚ฌ๊ฐํ˜•๊ณผ ๋น„๊ตํ•ด์„œ ์ฐจ์ด๊ฐ€ ์žˆ๋Š” ๋ถ€๋ถ„๋งŒ ๋‹ค์‹œ ๊ทธ๋ฆฐ๋‹ค

 

์š”๊ฑด ์ด๋ฏธ์ง€ ํ”„๋ ˆ์ž„ ๊ทธ๋ฆด ๋•Œ ๋™์ž‘์„ ์ฐธ๊ณ ํ•˜๋ฉด ์ดํ•ด๊ฐ€ ์‰ฌ์šธ ๊ฑฐ๋‹ค

 

 

7. Compositing

๊ทธ๋Ÿฌ๋ฉด ์ด์ œ ๋ฌธ์„œ์˜ ๊ตฌ์กฐ/์Šคํƒ€์ผ/ํŽ˜์ธํŠธ ์ˆœ์„œ ๋“ฑ์„ ์•Œ๊ณ  ์žˆ๋Š”๋ฐ

๊ทธ๋Ÿผ ๋ธŒ๋ผ์šฐ์ €๋Š” ์–ด๋–ป๊ฒŒ ์›นํŽ˜์ด์ง€๋ฅผ ๊ทธ๋ฆด๊นŒ? ๊ฐ€ ๋‚จ์•˜๋‹ค

์š”๋Ÿฐ ์ •๋ณด๋ฅผ ํ™”๋ฉด์˜ ํ”ฝ์…€๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ณผ์ •์„

Rasterizing (๋ž˜์Šคํ„ฐํ™”)๋ผ๊ณ  ํ•œ๋‹ค

 

๊ทธ๋ฆฌ๊ณ  ๋ž˜์Šคํ„ฐํ™” ๋œ Layer๋ฅผ ์ƒˆ ํ”„๋ ˆ์ž„์œผ๋กœ ํ•ฉ์„ฑํ•ด์ฃผ๋Š”๊ฑธ

Compositing(ํ•ฉ์„ฑ)์ด๋ผ๊ณ  ํ•œ๋‹ค

 

 

์Šคํฌ๋กค ๋‚ด๋ฆด ๋•Œ ํ™”๋ฉด์ด ์Šค๋ฅด๋ฅด ๋‚˜ํƒ€๋‚˜๋Š” ๊ฒŒ ์š” ํ•ฉ์„ฑ ๊ณผ์ •์„ ๊ฑฐ์ณค๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค

 

8. Rendering Engine Thread

๋ Œ๋”๋ง ์—”์ง„์€ Network๋ฅผ ์ œ์™ธํ•œ ๊ฑฐ์˜ ๋ชจ๋“  ๊ฒฝ์šฐ๊ฐ€

๋‹จ์ผ ์Šค๋ ˆ๋“œ๋กœ ๋™์ž‘ํ•œ๋‹ค๊ณ  ํ•œ๋‹ค

 

ํŒŒ์ด์–ดํญ์Šค/์‚ฌํŒŒ๋ฆฌ๋Š” ๋ Œ๋”๋ง ์—”์ง„ ์Šค๋ ˆ๋“œ๋Š”

๋ธŒ๋ผ์šฐ์ €์˜ ์ฃผ์š”ํ•œ ์Šค๋ ˆ๋“œ์— ํ•ด๋‹น๋˜๋Š”๋ฐ

ํฌ๋กฌ์€ ํƒฌ ํ”„๋กœ์„ธ์Šค์˜ ์ฃผ์š” ์Šค๋ ˆ๋“œ๋ผ๊ณ  ํ•œ๋‹ค

 

๊ฐ ๋ธŒ๋ผ์šฐ์ €๋งˆ๋‹ค ์ฃผ์š” ์Šค๋ ˆ๋“œ์˜ ๊ธฐ๋Šฅ์ด ๋‹ค๋ฅด๋‹ค๋Š” ๋œป

 

 

์ด๋ ‡๊ฒŒ ๋ฉ”์ธ ์Šค๋ ˆ๋“œ, ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์ผ์„ ์ฒ˜๋ฆฌํ•˜๋Š” Worker ์Šค๋ ˆ๋“œ์™€

Raster, Compositor ์Šค๋ ˆ๋“œ ๋“ฑ๋“ฑ์œผ๋กœ ๊ตฌ์„ฑ๋œ๋‹ค

 

 

9. Rendering Pipeline

 

 

๋ Œ๋”๋ง ํŒŒ์ดํ”„๋ผ์ธ์€ ์œ„ ๋ชจ๋“  ๊ณผ์ •์„ ๋งํ•˜๋Š” ๋‹จ์–ด๋‹ค

์ด ๊ณผ์ •์€ ํŠน์ดํ•œ ๊ฒŒ 

๊ฐ ๋‹จ๊ณ„์—์„œ ์ด์ „ ์ž‘์—…์˜ ๊ฒฐ๊ณผ๊ฐ€

์ƒˆ ๋ฐ์ดํ„ฐ๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐ ์‚ฌ์šฉ๋œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค

 

์˜ˆ๋ฅผ ๋“ค์–ด,,, ๋ ˆ์ด์•„์›ƒ ํŠธ๋ฆฌ๊ฐ€ ๋ณ€๊ฒฝ์ด ์ƒ๊ฒจ์„œ

๋ฌธ์„œ์˜ ์ผ๋ถ€๊ฐ€ ์˜ํ–ฅ์„ ๋ฐ›์œผ๋ฉด ํŽ˜์ธํŠธ ์ˆœ์„œ๋„ ์ƒˆ๋กœ ์ƒ์„ฑ๋˜์–ด์•ผ ํ•œ๋‹ค

 

๋ Œ๋”๋ง ํŒŒ์ดํ”„๋ผ์ธ ๊ณผ์ •์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š”

๋ Œ๋”๋Ÿฌ ํ”„๋กœ์„ธ์Šค์˜ ๋ฉ”์ธ ์Šค๋ ˆ๋“œ๊ฐ€ ๋ฐ”๋น ์ง€๋Š”๋ฐ

GPU ๋“ฑ์„ ๋งŽ์ด ์“ฐ๊ธฐ์— ๋ธŒ๋ผ์šฐ์ € ์„ฑ๋Šฅ์— ํฐ ์˜ํ–ฅ์„ ๋ฏธ์นœ๋‹น

์ด ๋ถ€๋ถ„์ด ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์„ ํƒํ•˜๋Š” ์ด์œ ๊ฐ€ ๋˜์ง€ ์•Š์„๊นŒ ์‹ถ๋‹ค

 


 

์ƒ๊ฐ๋ณด๋‹ค ์ •๋ฆฌํ•˜๋Š”๋ฐ ์˜ค๋ž˜ ๊ฑธ๋ ธ๋Š”๋ฐ;;;

์˜ˆ์ƒ์€ ํ–ˆ์ง€๋งŒ ๋ธŒ๋ผ์šฐ์ €์—๋Š” ๊ธฐ๋Šฅ์ด ์ •๋ง ๋งŽ๋‹ค

์ž๋ฃŒ๋ฅผ ์ฝ์œผ๋ฉด์„œ ์ƒ๋žตํ•œ ๋ถ€๋ถ„์ด ๋” ๋งŽ์€๋ฐ

๋ฐฑ์—”๋“œ ๋กœ๋“œ๋งต์„ ๊ณต๋ถ€ํ•˜๋ฉด์„œ ๋” ํŒŒ๋ณด๋ฉด ์žฌ๋ฐŒ์„ ๊ฒƒ ๊ฐ™๋‹ค

 


* ์ฐธ๊ณ  ๋งํฌ *

 

https://www.html5rocks.com/en/tutorials/internals/howbrowserswork/

 

How Browsers Work: Behind the scenes of modern web browsers - HTML5 Rocks

In this comprehensive primer, you will learn what happens in the browser between when you type google.com in the address bar until you see the Google page on the browser screen.

www.html5rocks.com

https://d2.naver.com/helloworld/59361

https://ko.wikipedia.org/wiki/%EC%9B%B9_%EB%B8%8C%EB%9D%BC%EC%9A%B0%EC%A0%80

 

์›น ๋ธŒ๋ผ์šฐ์ € - ์œ„ํ‚ค๋ฐฑ๊ณผ, ์šฐ๋ฆฌ ๋ชจ๋‘์˜ ๋ฐฑ๊ณผ์‚ฌ์ „

[1]์›น ๋ธŒ๋ผ์šฐ์ €(์˜์–ด: web browser), ์ธํ„ฐ๋„ท ๋ธŒ๋ผ์šฐ์ €(์˜์–ด: internet browser) ๋˜๋Š” ์›น ํƒ์ƒ‰๊ธฐ(webๆŽข็ดขๆฉŸ, ๋ฌธํ™”์–ด: ์—ด๋žŒ๊ธฐ)๋Š” ์›น ์„œ๋ฒ„์—์„œ ์ด๋™ํ•˜๋ฉฐ(navigate) ์Œ๋ฐฉํ–ฅ์œผ๋กœ ํ†ต์‹ ํ•˜๊ณ  HTML ๋ฌธ์„œ๋‚˜ ํŒŒ์ผ์„ ์ถœ๋ ฅํ•˜

ko.wikipedia.org

https://developer.chrome.com/blog/inside-browser-part3/#%EB%A0%8C%EB%8D%94%EB%9F%AC_%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4%EC%9D%98_%EB%82%B4%EB%B6%80_%EB%8F%99%EC%9E%91

 

Inside look at modern web browser (part 3) - Chrome Developers

Inner workings of a browser rendering engine

developer.chrome.com

 

'๐Ÿ—บ๏ธ Backend Developer Road-Map' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

4. DNA...์•„ ์•„๋‹ˆ DNS  (0) 2022.04.27
3. Domain Name ๋”๋„ด  (0) 2022.04.20
1. Internet ๋™์ž‘ ์›๋ฆฌ  (0) 2022.03.24