A Response To "Have Single-Page Apps Ruined the Web?"

Carson Gross

Rich Harris๋Š” ์ƒˆ๋กœ์šด ์‹ฑ๊ธ€ ํŽ˜์ด์ง€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜(SPA) ํ”„๋ ˆ์ž„์›Œํฌ์ธ Svelte.js๋ฅผ ๊ฐœ๋ฐœํ•œ ์œ ๋ช…ํ•œ ์›น ๊ฐœ๋ฐœ์ž์ž…๋‹ˆ๋‹ค.

2021๋…„ 10์›”, ๊ทธ๋Š” JamStack์—์„œ โ€œ์‹ฑ๊ธ€ ํŽ˜์ด์ง€ ์•ฑ์ด ์›น์„ ๋ง์ณค๋Š”๊ฐ€?โ€œ๋ผ๋Š” ์ฃผ์ œ๋กœ ๊ฐ•์—ฐ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ์ด ๊ฐ•์—ฐ์— ๋Œ€ํ•œ ์˜๊ฒฌ์„ ์š”์ฒญ๋ฐ›์•˜๊ณ , ์ด ์—์„ธ์ด๋Š” ๊ทธ์— ๋Œ€ํ•œ ์šฐ๋ฆฌ์˜ ์‘๋‹ต์ž…๋‹ˆ๋‹ค.

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

#SPA์˜ ๋ฌธ์ œ์ 

๊ฐ•์—ฐ์€ SPA์˜ ๋ช‡ ๊ฐ€์ง€ ํƒ€๋‹นํ•œ ๋น„ํŒ์œผ๋กœ ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค. ํŠนํžˆ Facebook์˜ ๋Œ€ํ‘œ์ ์ธ SPA ๊ตฌํ˜„์ธ Instagram์—์„œ ๋ฐœ๊ฒฌ๋˜๋Š” ์‚ฌ์šฉ์„ฑ ๋ฌธ์ œ์— ์ดˆ์ ์„ ๋งž์ถ”๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Š” SPA์˜ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋‹จ์ ๋“ค์„ ๊ณต์ •ํ•˜๊ฒŒ ๋‹ค๋ฃจ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค:

Instagram์˜ ์‚ฌ์šฉ์„ฑ ๋ฌธ์ œ๋ฅผ ๊ณ ๋ คํ•œ ํ›„, Harris ์”จ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋งํ•ฉ๋‹ˆ๋‹ค:

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

์—ฌ๊ธฐ์„œ ์šฐ๋ฆฌ๋Š” Harris ์”จ์™€ ๊ฐ•๋ ฅํ•˜๊ฒŒ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ๋‹จ, โ€œ์›น ํ”Œ๋žซํผโ€ ๋Œ€์‹  โ€œ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์›น ํ”Œ๋žซํผโ€œ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. Instagram์—์„œ๋Š” ๋ฐ”๋กœ ๊ทธ๊ฒƒ์ด ๋ฌธ์ œ๊ฐ€ ๋˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ๋˜ํ•œ SPA ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ์ข…์ข… ์›๋ž˜์˜ REST-ful ๋ชจ๋ธ์„ ๋‹จ์ง€ ๋ถ€ํŠธ์ŠคํŠธ๋žฉ ๋ฉ”์ปค๋‹ˆ์ฆ˜์œผ๋กœ๋งŒ ์‚ฌ์šฉํ•˜๋ฉด์„œ ์‹ค์ œ ์›น ํ”Œ๋žซํผ์„ ๋‹จ์ˆœํžˆ ๋ฌด์‹œํ•œ๋‹ค๋Š” ์ ์„ ๋ช…ํ™•ํžˆ ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

#MPA์˜ ๋ฌธ์ œ์ 

๊ทธ๋Ÿฐ ๋‹ค์Œ Harris ์”จ๋Š” โ€œ์ „ํ†ต์ ์ธโ€, ๋งํฌ๋ฅผ ํด๋ฆญํ•˜๋ฉด HTML ํŽ˜์ด์ง€๊ฐ€ ๋กœ๋“œ๋˜๋Š” ๋ฐฉ์‹์˜ MPA(Multi-Page Applications)์™€ ๊ด€๋ จ๋œ ๋ฌธ์ œ๋กœ ๋„˜์–ด๊ฐ‘๋‹ˆ๋‹ค. MPA๋Š” ์šฐ๋ฆฌ๊ฐ€ ๋ชจ๋‘ ์ต์ˆ™ํ•œ ๋ฐฉ์‹์ด๋ฉฐ, SPA์— ์˜ํ•ด ์–ด๋Š ์ •๋„ ๋Œ€์ฒด๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์•„๋ž˜์—์„œ ๊ทธ๋Š” โ€œํ‘œ์ค€โ€ MPA์™€ ๊ด€๋ จ๋œ ์—ฌ๋Ÿฌ ๋ฌธ์ œ๋ฅผ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ด๋“ค ๋ฌธ์ œ๋ฅผ ๊ฒ€ํ† ํ•˜๊ณ , ํ•˜์ดํผ๋ฏธ๋””์–ด ์ง€ํ–ฅ ๊ธฐ์ˆ ์ธ htmx์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ๊ฐ์˜ ๋ฌธ์ œ๋ฅผ ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์„ค๋ช…ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

#โ€œ๋„ค๋น„๊ฒŒ์ด์…˜ ์ค‘์— ๋น„๋””์˜ค๋ฅผ ์œ ์ง€ํ•  ์ˆ˜ ์—†๋‹คโ€

ํ‘œ์ค€ MPA์˜ ์ผ๋ฐ˜์ ์ธ ๋ฌธ์ œ๋Š” ๋ชจ๋“  ์š”์ฒญ์—์„œ ์ „์ฒด ํŽ˜์ด์ง€ ์ƒˆ๋กœ ๊ณ ์นจ์ด ๋ฐœ์ƒํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด ๋น„๋””์˜ค๋‚˜ ์˜ค๋””์˜ค ํ”Œ๋ ˆ์ด์–ด์™€ ๊ฐ™์€ ์ฝ˜ํ…์ธ ๊ฐ€ ์š”์ฒญ ์‹œ ๊ต์ฒด๋˜์–ด ์ค‘๋‹จ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋Š” htmx์˜ hx-preserve ์†์„ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ ์š”์ฒญ ๊ฐ„์— ํŠน์ • ์ฝ˜ํ…์ธ ๋ฅผ ์œ ์ง€ํ•˜๋„๋ก ํ•จ์œผ๋กœ์จ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

#โ€œ๋’ค๋กœ ๊ฐ€๊ธฐ ๋ฒ„ํŠผ ๋ฐ ๋ฌดํ•œ ์Šคํฌ๋กค์ด ์ž‘๋™ํ•˜์ง€ ์•Š๋Š”๋‹คโ€

๋ฌดํ•œ ์Šคํฌ๋กค ๋™์ž‘์ด ์žˆ๋Š” ๊ฒฝ์šฐ(์•„๋งˆ๋„ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ๊ตฌํ˜„๋จ) ๋’ค๋กœ ๊ฐ€๊ธฐ ๋ฒ„ํŠผ์ด MPA์—์„œ ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ „ํ†ต์ ์ธ MPA๋Š” ๋ฌดํ•œ ์Šคํฌ๋กค ๋Œ€์‹  ํŽ˜์ด์ง•์„ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ, MPA๋ผ๋Š” ์šฉ์–ด ์ž์ฒด๊ฐ€ ์˜๋ฌธ์‹œ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ ‡๊ธด ํ•˜์ง€๋งŒ, ๋ฌดํ•œ ์Šคํฌ๋กค์€ htmx๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•˜์ดํผ๋ฏธ๋””์–ด ์ง€ํ–ฅ์ ์ด๊ณ  ๋ช…ํ™•ํ•œ ๋ฐฉ์‹์œผ๋กœ ์‰ฝ๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. hx-push-url ์†์„ฑ๊ณผ ๊ฒฐํ•ฉํ•˜๋ฉด, ํžˆ์Šคํ† ๋ฆฌ์™€ ๋’ค๋กœ ๊ฐ€๊ธฐ ๋ฒ„ํŠผ์ด ๊ฐœ๋ฐœ์ž๊ฐ€ ๊ฑฐ์˜ ๋…ธ๋ ฅ์„ ๊ธฐ์šธ์ด์ง€ ์•Š๊ณ ๋„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ž‘๋™ํ•˜๋ฉฐ, ์ข…์ข… SPA ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ โ€œ๋”ฅ ๋งํฌโ€œ๋ผ๊ณ  ๋ถ€๋ฅด๋Š” ๋ฉ‹์ง„ ๋ณต์‚ฌ-๋ถ™์—ฌ๋„ฃ๊ธฐ ๊ฐ€๋Šฅํ•œ URL๋„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

#โ€œ๋ฉ‹์ง„ ๋‚ด๋น„๊ฒŒ์ด์…˜ ์ „ํ™˜์€ ์–ด๋–ป๊ฒŒ ๋˜๋Š”๊ฐ€?โ€

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

๊ทธ๋Ÿผ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ , htmx๋Š” ํ‘œ์ค€ CSS ์ „ํ™˜์„ ์‚ฌ์šฉํ•˜์—ฌ ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. ์ˆœ์ˆ˜ํ•œ CSS ๊ธฐ์ˆ ๋กœ ๋‹ฌ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์—๋Š” ํ•œ๊ณ„๊ฐ€ ์žˆ์ง€๋งŒ, ์ด ๋ฐฉ๋ฒ•์ด 80/20 ์ƒํ™ฉ์˜ 80%๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ๋ฏฟ์Šต๋‹ˆ๋‹ค. (์–ด์ฉŒ๋ฉด 95/5 ์ƒํ™ฉ์˜ 95%์ผ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.)

#โ€œMPA๋Š” ๋ชจ๋“  ์š”์ฒญ์—์„œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋กœ๋“œํ•œ๋‹คโ€

Harris ์”จ๋Š” โ€œ์—‰๋ง์ธ ๊ด‘๊ณ  ๊ธฐ์ˆ โ€œ์„ ์›น ์‚ฌ์šฉ์„ฑ ๋ฌธ์ œ์˜ ์ฃผ๋ฒ”์œผ๋กœ ๊ผฝ์œผ๋ฉฐ, ์˜ค๋Š˜๋‚  ๋Œ€๋ถ€๋ถ„์˜ ์›น์‚ฌ์ดํŠธ๊ฐ€ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ œ๊ณตํ•˜๋Š” 2.5MB์˜ ์ถ”์ ๊ธฐ, ์ŠคํŒŒ์ด์›จ์–ด, ์• ๋“œ์›จ์–ด๋ฅผ ๋ฐฉ์–ดํ•  ์ˆ˜ ์žˆ๋Š” ์‚ฌ๋žŒ์€ ์—†๋‹ค๊ณ  ์ง€์ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Š” SPA๊ฐ€ ์ด ๋ฌธ์ œ๋ฅผ ์™„ํ™”ํ•œ๋‹ค๊ณ  ์ง€์ ํ•˜๋ฉฐ, SPA๋Š” ์ด ์“ฐ๋ ˆ๊ธฐ ๋”๋ฏธ๋ฅผ ํ•œ ๋ฒˆ๋งŒ ๋กœ๋“œํ•˜๋ฉด ๋˜๋ฏ€๋กœ MPA์ฒ˜๋Ÿผ ๋งค๋ฒˆ ๋กœ๋“œํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค๊ณ  ๋งํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ์‹ค, ๊ธฐ๋ณธ์ ์ธ MPA๋Š” ์ฒซ ๋ฒˆ์งธ ์š”์ฒญ ํ›„์— ํ•ด๋‹น ์“ฐ๋ ˆ๊ธฐ๋“ค์„ ์บ์‹ฑํ•˜๋ฏ€๋กœ, ๋‹ค์šด๋กœ๋“œ ๋น„์šฉ์€ SPA์™€ ๊ฑฐ์˜ ๋™์ผํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ MPA๋Š” ๊ฐ ํŽ˜์ด์ง€์—์„œ ์ด ์“ฐ๋ ˆ๊ธฐ๋“ค์„ ๋‹ค์‹œ ์‹คํ–‰ํ•ด์•ผ ํ•˜๋ฏ€๋กœ, CPU๋ฅผ ์†Œ๋ชจํ•˜๊ณ  ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ์•…ํ™”์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ htmx๋กœ ๊ตฌ๋™๋˜๋Š” MPA๋Š” SPA์™€ ์ •ํ™•ํžˆ ๋™์ผํ•œ ํŠน์„ฑ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ด‘๊ณ  ์“ฐ๋ ˆ๊ธฐ๋Š” ์ฒซ ๋ฒˆ์งธ ์š”์ฒญ์—์„œ ํ•œ ๋ฒˆ๋งŒ ๋‹ค์šด๋กœ๋“œ๋˜๊ณ  ์‹คํ–‰๋˜๋ฉฐ, ๊ทธ ํ›„ ๋ชจ๋“  ์š”์ฒญ์€ ์ƒ๋Œ€์ ์œผ๋กœ ๊ฐ€๋ฒผ์šด DOM ์š”์†Œ ๊ต์ฒด๋กœ ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค.

#โ€œMPA๋Š” ๋„คํŠธ์›Œํฌ ์ง€์—ฐ ๋ฌธ์ œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹คโ€

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

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

#โ€œGitHub์—๋Š” UI ๋ฒ„๊ทธ๊ฐ€ ์žˆ๋‹คโ€

GitHub์—๋Š” ์‹ค์ œ๋กœ UI ๋ฒ„๊ทธ๊ฐ€ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๋Ÿฌํ•œ ๋ฒ„๊ทธ ์ค‘ ์–ด๋Š ๊ฒƒ๋„ ํ•ด๊ฒฐํ•˜๊ธฐ ์–ด๋ ค์šด ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค.

htmx๋Š” ํƒ€๊ฒŸ ์š”์†Œ ์ด์™ธ์˜ ์ฝ˜ํ…์ธ ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•˜๋ฉฐ, ์ด ๋ชจ๋“  ๋ฐฉ๋ฒ•์€ ๋งค์šฐ ๊ฐ„๋‹จํ•˜๊ณ  Harris ์”จ๊ฐ€ ์ง€์ ํ•œ UI ์ผ๊ด€์„ฑ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ํšจ๊ณผ์ ์ž…๋‹ˆ๋‹ค.

Harris ์”จ๊ฐ€ ์–ธ๊ธ‰ํ•œ Instagram์˜ UI ๋ฌธ์ œ์™€ ๋น„๊ตํ•ด๋ณด๋ฉด, Instagram ๋ฌธ์ œ๋Š” ํ›จ์”ฌ ๋” ์ •๊ตํ•œ ์—”์ง€๋‹ˆ์–ด๋ง ์ž‘์—…์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

#์ „ํ™˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜

Harris ์”จ๋Š” SPA์™€ MPA ๊ธฐ์ˆ ์ด ํ˜ผํ•ฉ๋œ โ€œ์ „ํ™˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜โ€ ๊ฐœ๋…์— ๋Œ€ํ•ด ๋…ผ์˜ํ•ฉ๋‹ˆ๋‹ค. ์ด ์šฉ์–ด๋Š” ํ•ฉ๋ฆฌ์ ์ด๋ฉฐ, ์ด ์šฉ์–ด๊ฐ€ ์—…๊ณ„์— ์ •์ฐฉ๋ ์ง€ ์ง€์ผœ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ์ข…์ข… htmx๋ฅผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋‹จ์ˆœํ•จ์„ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ด ์˜๋ฏธ ์žˆ๋Š” ๋ถ€๋ถ„์— ์‚ฌ์šฉํ•˜๊ณ , ๋‹ค๋ฅธ ๊ธฐ์ˆ ์„ ํ•„์š”์— ๋”ฐ๋ผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค: alpine.js, hyperscript, ์†Œ๊ทœ๋ชจ ๋ฐ˜์‘ํ˜• ํ”„๋ ˆ์ž„์›Œํฌ ๋“ฑ.

๊ทธ๋ž˜์„œ ์šฐ๋ฆฌ๋Š” ์—ฌ๊ธฐ์—์„œ Harris ์”จ์™€ ์–ด๋Š ์ •๋„ ๋™์˜ํ•˜๋ฉฐ, ์›น ๊ฐœ๋ฐœ์— โ€œ์ „ํ™˜โ€ ์ ‘๊ทผ ๋ฐฉ์‹์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์šฐ๋ฆฌ๋Š” ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ MPA/ํ•˜์ดํผ๋ฏธ๋””์–ด ์ชฝ์œผ๋กœ ๊ธฐ์šธ์ผ ๊ฒƒ์„ ๊ถŒ์žฅํ•˜๋ฉฐ, Harris ์”จ๋Š” SPA/์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ชฝ์œผ๋กœ ๊ธฐ์šธ์ผ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์•„ ๋ณด์ž…๋‹ˆ๋‹ค.

#๋ฐฉ ์•ˆ์˜ ์ฝ”๋ผ๋ฆฌ: ๋ณต์žก์„ฑ

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

Harris ์”จ๊ฐ€ ์–ธ๊ธ‰ํ•œ ์—ฌ๋Ÿฌ โ€œ์ „ํ™˜โ€ ๊ธฐ์ˆ ๋“ค, ์˜ˆ๋ฅผ ๋“ค์–ด React Server Components (๊ทธ๊ฐ€ โ€œHTML over the wire์™€ ๋น„์Šทํ•˜์ง€๋งŒ ํ›จ์”ฌ ๋” ์ •๊ตํ•œ ๊ฒƒโ€œ์ด๋ผ๊ณ  ๋ถ€๋ฅด๋Š” ๊ธฐ์ˆ ), Marko (๋ถ€๋ถ„์  ํ•˜์ด๋“œ๋ ˆ์ด์…˜์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ธฐ์ˆ ), Quik (์•„์ฃผ ์ ๊ทน์ ์œผ๋กœ ๊ฒŒ์œผ๋ฅด๊ฒŒ ๋กœ๋“œํ•˜๋Š” ๊ธฐ์ˆ ๋กœ ๋ณด์ž„) ๋“ฑ์€ ๋ชจ๋‘ ๋†€๋ผ์šด ์—”์ง€๋‹ˆ์–ด๋ง ์„ฑ๊ณผ์ด์ง€๋งŒ, ๋™์‹œ์— ๋งค์šฐ ๋ณต์žกํ•œ ๊ธฐ์ˆ ๋“ค์ด๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.

์•ˆํƒ€๊น๊ฒŒ๋„, ์ด๋Š” ํ˜„์žฌ ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ ๋ฌธํ™”์˜ ์ผ๋ถ€์ž…๋‹ˆ๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋ ˆ์ž„์›Œํฌ, ๋นŒ๋“œ ๋„๊ตฌ ์ฒด์ธ, ๋ฐฐํฌ ๋ชจ๋ธ ๋“ฑ์—์„œ ํ•˜๋Š˜ ๋†’์ด ์น˜์†Ÿ์€ ๋ณต์žก์„ฑ์„ ์šฉ์ธํ•˜๊ณ , ์ด๋Ÿฌํ•œ ๋ณต์žก์„ฑ์œผ๋กœ ์ธํ•ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ๋•Œ, ๋” ๋งŽ์€ ๋ณต์žก์„ฑ์ด ์ข…์ข… ํ•ด๊ฒฐ์ฑ…์œผ๋กœ ์ œ์‹œ๋ฉ๋‹ˆ๋‹ค.

โ€œ๋‹จ์ˆœํ•จโ€œ์€ ๊ฒฝ์‹œ๋˜๊ณ  โ€œ์ •๊ตํ•จโ€œ์€ ๋†’์€ ํ‰๊ฐ€๋ฅผ ๋ฐ›์Šต๋‹ˆ๋‹ค.

์ด ๋ณต์žก์„ฑ์€ ์˜ค๋Š˜๋‚  ๋งŽ์€ ๊ฐœ๋ฐœ์ž์™€ ๊ฐœ๋ฐœ ํŒ€์—๊ฒŒ ์••๋„์ ์ž…๋‹ˆ๋‹ค. Harris ์”จ ์ž์‹ ์ด Instagram์„ ๋…ผ์˜ํ•  ๋•Œ ์ง€์ ํ•œ ๊ฒƒ์ฒ˜๋Ÿผ, ์„ธ๊ณ„ ์ตœ๊ณ ์˜ ํ”„๋ก ํŠธ์—”๋“œ ์—”์ง€๋‹ˆ์–ด๋“ค์กฐ์ฐจ ๋ชจ๋“  ๊ฒƒ์„ ํ†ต์ œํ•  ์ˆ˜ ์—†๊ฒŒ ๋œ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์—๋Š” ๋ฌธํ™”์ ์ธ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ๊ธฐ์ˆ ์ ์ธ ๋ฌธ์ œ๋„ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

์ด ๊ธฐ์ˆ ์ ์ธ ๋ฌธ์ œ๋Š” โ€œํ•˜์ดํผ๋ฏธ๋””์–ด ์ ‘๊ทผ๋ฒ•โ€ ๋Œ€ โ€œ์›๊ฒฉ ํ”„๋กœ์‹œ์ € ํ˜ธ์ถœ (RPC) ์ ‘๊ทผ๋ฒ•โ€œ์œผ๋กœ ์š”์•ฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด MPA์—์„œ SPA๋กœ ์ „ํ™˜๋˜๋ฉด์„œ, ๊ฐœ๋ฐœ์ž๋“ค์€ ์ข…์ข… ๋ฌด์˜์‹์ ์œผ๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์— RPC ์ ‘๊ทผ ๋ฐฉ์‹์„ ์ฑ„ํƒํ–ˆ์Šต๋‹ˆ๋‹ค. AJAX๋Š” ๋ฐ์ดํ„ฐ ์ง๋ ฌํ™” ํ˜•์‹์œผ๋กœ JSON์œผ๋กœ ์ด๋™ํ–ˆ๊ณ , ๋Œ€์ฒด๋กœ (์ •๋‹นํ•˜๊ฒŒ) ํ•˜์ดํผ๋ฏธ๋””์–ด ๊ฐœ๋…์„ ๋ฒ„๋ ธ์Šต๋‹ˆ๋‹ค. ์ด ํ•˜์ดํผ๋ฏธ๋””์–ด ์ ‘๊ทผ๋ฒ•์˜ ํฌ๊ธฐ๋Š” ๋ฐ”๋‹๋ผ MPA์˜ ์‚ฌ์šฉ์„ฑ ๋ฌธ์ œ๋กœ ์ธํ•ด ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์ด๋Ÿฌํ•œ ์‚ฌ์šฉ์„ฑ ๋ฌธ์ œ๋Š” ์ข…์ข… ํ•˜์ดํผ๋ฏธ๋””์–ด ์ ‘๊ทผ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Œ์ด ๋ฐํ˜€์กŒ์Šต๋‹ˆ๋‹ค: RPC๋กœ ํ•˜์ดํผ๋ฏธ๋””์–ด๋ฅผ ํฌ๊ธฐํ•˜๋Š” ๋Œ€์‹ , ๋‹น์‹œ์™€ ์˜ค๋Š˜๋‚  ์šฐ๋ฆฌ๊ฐ€ ํ•„์š”๋กœ ํ•˜๋Š” ๊ฒƒ์€ ๋” ๊ฐ•๋ ฅํ•œ ํ•˜์ดํผ๋ฏธ๋””์–ด์ž…๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ๋ฐ”๋กœ htmx๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํ•˜์ดํผ๋ฏธ๋””์–ด ์ ‘๊ทผ๋ฒ•์œผ๋กœ ๋Œ์•„๊ฐ€๋ฉด, ๋Œ€๋ถ€๋ถ„์˜ ์ธ๊ธฐ ์žˆ๋Š” SPA ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ์š”๊ตฌํ•˜๋Š” ๋ณต์žก์„ฑ์˜ ์ผ๋ถ€๋กœ Harris ์”จ์˜ MPA์— ๋Œ€ํ•œ ๋งŽ์€ ์šฐ๋ ค๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ์ ๋‹นํžˆ ์ •๊ตํ•œ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฒŒ๋‹ค๊ฐ€ ๋งŽ์€ ์ƒ๊ฐ์„ ํ•˜์ง€ ์•Š์•„๋„, ์ง„์ •ํ•œ REST-ful ์•„ํ‚คํ…์ฒ˜์— ๋Œ€ํ•ด Roy Fielding์ด ์„ค๋ช…ํ•œ ๋ชจ๋“  ์ด์ ์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•˜์ดํผ๋ฏธ๋””์–ด ์•„ํ‚คํ…์ฒ˜๊ฐ€ ๋ชจ๋“  ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ ํ•ฉํ•ฉ๋‹ˆ๊นŒ? ๋ถ„๋ช…ํžˆ ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๋งŽ์€, ์•„๋งˆ๋„ ๋Œ€๋ถ€๋ถ„์˜ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ ํ•ฉํ•ฉ๋‹ˆ๊นŒ? ์šฐ๋ฆฌ๋Š” ์ ์–ด๋„ ์ผ๋ถ€์—์„œ ๊ทธ๋ ‡๊ฒŒ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

#์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ: ์ €ํ•ญ

์ด์ œ ๊ฐ•์—ฐ์—์„œ ์ œ๊ธฐ๋œ ๊ฐ€์žฅ ๊ฐ์ •์ ์œผ๋กœ ์ถฉ์ „๋œ ์ฃผ์žฅ์— ๋„๋‹ฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฐ”๋กœ โ€œ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ์‹œ๋Œ€๋Š” ์ด๋ฏธ ์ง€๋‚˜๊ฐ”๋‹คโ€œ๋Š” ์ฃผ์žฅ์ž…๋‹ˆ๋‹ค. Harris ์”จ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์•ž์œผ๋กœ ์›น ๊ฐœ๋ฐœ์—์„œ ์ง€๋ฐฐ์ ์ธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๊ฐ€ ๋  ๊ฒƒ์ด๋ผ๋Š” ์‚ฌ์‹ค์„ ๋ฐ›์•„๋“ค์—ฌ์•ผ ํ•œ๋‹ค๊ณ  ์ฃผ์žฅํ•ฉ๋‹ˆ๋‹ค.

Harris ์”จ๋Š” ์ตœ์ข…์ ์œผ๋กœ ๋‚จ์€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์— ๋Œ€ํ•œ ์ €ํ•ญ์„ ์—†์•จ ์ฃผ๋œ ๋™๋ ฅ์ด ์—ฃ์ง€ ์ปดํ“จํŒ…์ผ ๊ฒƒ์ด๋ผ๊ณ  ๋ฏฟ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ๊ทธ๋ ‡๊ฒŒ ํ™•์‹ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

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

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

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐœ๋ฐœ์ž

์ด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๊ฐ€ 2010๋…„๋Œ€ ์ค‘๋ฐ˜์— ์ •์ ์— ๋„๋‹ฌํ•œ ํŠธ๋ Œ๋“œ๋Š” GitHub์—์„œ๋„ ๊ด€์ฐฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐœ๋ฐœ์ž

๋ฌผ๋ก , ์ด๊ฒƒ์ด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๊ฐ€ ๊ฒฐ๊ตญ ํŒŒ์ด์ฌ์—๊ฒŒ โ€œํŒจ๋ฐฐโ€œํ•˜๊ณ  ์‚ฌ๋ผ์งˆ ๊ฒƒ์ด๋ผ๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค.

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ์›น์˜ ํ•ต์‹ฌ ๊ธฐ์ˆ ์ด๋ฉฐ ์˜์›ํžˆ ์šฐ๋ฆฌ์™€ ํ•จ๊ป˜ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—†์ด๋Š” htmx (๋˜๋Š” hyperscript)๋ฅผ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์—†์—ˆ์„ ๊ฒƒ์ด๋ฉฐ, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์— ๋Œ€ํ•ด ๋งค์šฐ ๊ฐ์‚ฌํ•˜๊ฒŒ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์ด๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๊ฐ€ ๋ฏธ๋ž˜์˜ ์›น์—์„œ ๋ฐ˜๋“œ์‹œ ์™„์ „ํžˆ ์ง€๋ฐฐ์ ์ด์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ์Œ์„ ์‹œ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” 5๋…„ ์ „๋งŒ ํ•ด๋„ ๊ทธ๋ ‡๊ฒŒ ๋ณด์˜€๋˜ ์ƒํ™ฉ๊ณผ๋Š” ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” HOWL ์Šคํƒ, ์ฆ‰ โ€œHypermedia On Whatever youโ€™d Likeโ€œ์— ๋Œ€ํ•ด ์ž์ฃผ ์ด์•ผ๊ธฐํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋” ๊ฐ•๋ ฅํ•œ ํ•˜์ดํผ๋ฏธ๋””์–ด ์•„ํ‚คํ…์ฒ˜๋กœ ๋Œ์•„๊ฐ€๋ฉด ์›ํ•˜๋Š” ๋ฐฑ์—”๋“œ ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์•„์ด๋””์–ด์ž…๋‹ˆ๋‹ค: Python, LISP, Haskell, GO, JAVA, C#, ๋ฌด์—‡์ด๋“  ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋„ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ๋ง์ด์ฃ .

์„œ๋ฒ„ ์ƒํ˜ธ์ž‘์šฉ์„ ์œ„ํ•ด ํ•˜์ดํผ๋ฏธ๋””์–ด์™€ HTML์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ๊ฑฐ๋Œ€ํ•œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ”„๋ก ํŠธ์—”๋“œ๊ฐ€ ๋ฐฑ์—”๋“œ์—์„œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ฑ„ํƒํ•˜๋„๋ก ํ•˜๋Š” ์••๋ ฅ์„ ๋Š๋ผ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ฌผ๋ก  ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์—ฌ์ „ํžˆ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค (์˜ˆ๋ฅผ ๋“ค์–ด alpine.js ํ˜•ํƒœ๋กœ). ๊ทธ๋Ÿฌ๋‚˜ ์ด๋ฅผ ์›๋ž˜ ์˜๋„๋œ ๋ฐฉ์‹์œผ๋กœ, ์ฆ‰ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํ–ฅ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•œ ๊ฐ€๋ฒผ์šด ํ”„๋ก ํŠธ์—”๋“œ ์Šคํฌ๋ฆฝํŒ… ์–ธ์–ด๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋˜๋Š” ์šฉ๊ฐํ•˜๋‹ค๋ฉด, ์ด๋Ÿฌํ•œ ํ•„์š”๋ฅผ ์œ„ํ•ด hyperscript๋ฅผ ์‹œ๋„ํ•ด ๋ณผ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

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

๊ฒฐ๋ก ์ ์œผ๋กœ,

Javascript Devs

</>