Alexey Grachev: ํ”„๋ก ํŠธ์—”๋“œ๋กœ ์ด๋™

2018๋…„ XNUMX์›” Kyiv Go ๋ชจ์ž„:

Alexey Grachev: ํ”„๋ก ํŠธ์—”๋“œ๋กœ ์ด๋™

์ง„ํ–‰์ž : - ์•ˆ๋…•ํ•˜์„ธ์š” ์—ฌ๋Ÿฌ๋ถ„! ์—ฌ๊ธฐ ์žˆ์–ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ์˜ค๋Š˜ ์šฐ๋ฆฌ๋Š” Lyosha์™€ Vanya๋ผ๋Š” ๋‘ ๋ช…์˜ ๊ณต์‹ ์—ฐ์‚ฌ๋ฅผ ๋ชจ์…จ์Šต๋‹ˆ๋‹ค. ์‹œ๊ฐ„์ด ์ถฉ๋ถ„ํ•˜๋‹ค๋ฉด ๋‘ ๊ฐœ ๋” ์žˆ์„ ๊ฑฐ์˜ˆ์š”. ์ฒซ ๋ฒˆ์งธ ๋ฐœํ‘œ์ž๋Š” Alexey Grachev์ž…๋‹ˆ๋‹ค. ๊ทธ๋Š” GopherJS์— ๋Œ€ํ•ด ์„ค๋ช…ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Alexey Grachev(์ดํ•˜ โ€“ AG): โ€“ ์ €๋Š” Go ๊ฐœ๋ฐœ์ž์ด๊ณ  Go๋กœ ์›น ์„œ๋น„์Šค๋ฅผ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. ํ”„๋ŸฐํŠธ์—”๋“œ๋ฅผ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•  ๋•Œ๋„ ์žˆ๊ณ , ์ˆ˜๋™์œผ๋กœ ๋“ค์–ด๊ฐ€์•ผ ํ•  ๋•Œ๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ €๋Š” ํ”„๋ก ํŠธ์—”๋“œ์—์„œ Go์— ๋Œ€ํ•œ ์ €์˜ ๊ฒฝํ—˜๊ณผ ์—ฐ๊ตฌ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

์ „์„ค์€ ์ด๋ ‡์Šต๋‹ˆ๋‹ค. ๋จผ์ € Go๋ฅผ ํ”„๋ก ํŠธ์—”๋“œ์—์„œ ์‹คํ–‰ํ•˜๋ ค๋Š” ์ด์œ ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•œ ๋‹ค์Œ ์ด๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. Web Assembly์™€ GopherJS์˜ ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์†”๋ฃจ์…˜์˜ ์ƒํƒœ๋Š” ๋ฌด์—‡์ด๋ฉฐ ๋ฌด์—‡์„ ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

ํ”„๋ก ํŠธ์—”๋“œ์— ๋ฌด์Šจ ๋ฌธ์ œ๊ฐ€ ์žˆ๋‚˜์š”?

๋ชจ๋‘๊ฐ€ ํ”„๋ŸฐํŠธ์—”๋“œ์— ๋ฌธ์ œ๊ฐ€ ์—†๋‹ค๋Š” ๋ฐ ๋™์˜ํ•ฉ๋‹ˆ๊นŒ?

Alexey Grachev: ํ”„๋ก ํŠธ์—”๋“œ๋กœ ์ด๋™

ํ…Œ์ŠคํŠธ๊ฐ€ ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ? ๋Š๋ฆฐ ๋นŒ๋“œ? ์ƒํƒœ๊ณ„? ๊ดœ์ฐฎ์€.

ํ”„๋ก ํŠธ์—”๋“œ์— ๊ด€ํ•ด ๋‚˜๋Š” ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž ์ค‘ ํ•œ ๋ช…์ด ๊ทธ์˜ ์ฑ…์—์„œ ๋งํ•œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ธ์šฉ๋ฌธ์„ ์ข‹์•„ํ•ฉ๋‹ˆ๋‹ค.

Alexey Grachev: ํ”„๋ก ํŠธ์—”๋“œ๋กœ ์ด๋™

Javascript์—๋Š” ์œ ํ˜• ์‹œ์Šคํ…œ์ด ์—†์Šต๋‹ˆ๋‹ค. ์ด์ œ ์ž‘์—… ๊ณผ์ •์—์„œ ์ง๋ฉดํ•œ ๋ฌธ์ œ๋ฅผ ์–ธ๊ธ‰ํ•˜๊ณ  ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ ์œ ํ˜• ์‹œ์Šคํ…œ์€ Javasript์—์„œ ์œ ํ˜• ์‹œ์Šคํ…œ์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ฐ์ฒด ์œ ํ˜•์„ ๋‚˜ํƒ€๋‚ด๋Š” ์ค„์ด ์žˆ์ง€๋งŒ ์‹ค์ œ๋กœ ์ด๊ฒƒ์€ ์œ ํ˜•๊ณผ ๊ด€๋ จ์ด ์—†์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋Š” TypeScript(Javasript์˜ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ) ๋ฐ Flow(Javascript์˜ ์ •์  ์œ ํ˜• ๊ฒ€์‚ฌ๊ธฐ)์—์„œ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ํ”„๋ก ํŠธ์—”๋“œ๋Š” ์ด๋ฏธ Javascript์˜ ์ž˜๋ชป๋œ ์œ ํ˜• ์‹œ์Šคํ…œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ์ง€์ ์— ๋„๋‹ฌํ–ˆ์Šต๋‹ˆ๋‹ค.

Alexey Grachev: ํ”„๋ก ํŠธ์—”๋“œ๋กœ ์ด๋™

๋ธŒ๋ผ์šฐ์ €์—๋Š” ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋ธŒ๋ผ์šฐ์ €์—๋Š” ๋ช‡ ๊ฐ€์ง€ ๋‚ด์žฅ ๊ฐœ์ฒด์™€ "๋งˆ๋ฒ•" ๊ธฐ๋Šฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ Javascript์—๋Š” ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋Š” ์ด๋ฏธ jQuery์— ์˜ํ•ด ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค(๋ชจ๋‘๊ฐ€ ์ž‘์—…์— ํ•„์š”ํ•œ ๋ชจ๋“  ํ”„๋กœํ† ํƒ€์ž…, ๋„์šฐ๋ฏธ, ํ•จ์ˆ˜์™€ ํ•จ๊ป˜ jQuery๋ฅผ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค). ์ด์ œ ๋ชจ๋‘๊ฐ€ Lodash๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

Alexey Grachev: ํ”„๋ก ํŠธ์—”๋“œ๋กœ ์ด๋™

์ฝœ๋ฐฑ ์ง€์˜ฅ. ๋‚ด ์ƒ๊ฐ์— ๋ชจ๋“  ์‚ฌ๋žŒ๋“ค์ด ์•ฝ 5๋…„ ์ „์— Javascript ์ฝ”๋“œ๋ฅผ ๋ณธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์€ ์ฝœ๋ฐฑ์˜ ๋ฏฟ์„ ์ˆ˜ ์—†์„ ์ •๋„๋กœ ๋ณต์žกํ•œ "๊ตญ์ˆ˜"์ฒ˜๋Ÿผ ๋ณด์˜€์Šต๋‹ˆ๋‹ค. ์ด์ œ ์ด ๋ฌธ์ œ๋Š” ํ•ด๊ฒฐ๋˜์—ˆ์œผ๋ฉฐ(ES-15 ๋˜๋Š” ES-16 ์ถœ์‹œ๋กœ) Javascript์— Promise๊ฐ€ ์ถ”๊ฐ€๋˜์–ด ๋ชจ๋“  ์‚ฌ๋žŒ์ด ์ž ์‹œ ๋” ์‰ฝ๊ฒŒ ์ˆจ์„ ์‰ด ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

Alexey Grachev: ํ”„๋ก ํŠธ์—”๋“œ๋กœ ์ด๋™

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

Alexey Grachev: ํ”„๋ก ํŠธ์—”๋“œ๋กœ ์ด๋™

๋น„๋™๊ธฐ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Async/await๋Š” ๋‹ค์–‘ํ•œ ์–ธ์–ด์—์„œ ๊ฝค ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ๊ธฐ๋ณธ ์š”์†Œ์ž…๋‹ˆ๋‹ค. Python๊ณผ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์€ ์ด๋Ÿฐ ์ ‘๊ทผ ๋ฐฉ์‹์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฝค ์ข‹์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ ํ•ด๊ฒฐ๋จ.

์–ด๋–ค ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์ง€ ์•Š์•˜๋‚˜์š”? ํ”„๋ ˆ์ž„์›Œํฌ์˜ ๋ณต์žก์„ฑ, ์ƒํƒœ๊ณ„ ๋ฐ ํ”„๋กœ๊ทธ๋žจ ์ž์ฒด์˜ ๋ณต์žก์„ฑ์ด ๊ธฐํ•˜๊ธ‰์ˆ˜์ ์œผ๋กœ ์ฆ๊ฐ€ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

Alexey Grachev: ํ”„๋ก ํŠธ์—”๋“œ๋กœ ์ด๋™

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

  • ์ด ๋ชจ๋“  ๊ฒƒ์ด ์ƒํƒœ๊ณ„์— ํฐ ์˜ํ–ฅ์„ ๋ฏธ์น˜๋ฉฐ ์—„์ฒญ๋‚˜๊ฒŒ ์„ฑ์žฅํ–ˆ์Šต๋‹ˆ๋‹ค. ํŒจํ‚ค์ง€๋Š” ์„œ๋กœ ํ˜ธํ™˜๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ผ๋ถ€๋Š” Promise๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๊ณ  ์ผ๋ถ€๋Š” async/await๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋ฉฐ ์ผ๋ถ€๋Š” ์ฝœ๋ฐฑ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ๋˜ํ•œ ๋‹ค๋ฅธ ํŒจ๋Ÿฌ๋‹ค์ž„์œผ๋กœ ๊ธ€์„ ์”๋‹ˆ๋‹ค!
  • ์ด๋กœ ์ธํ•ด ํ”„๋กœ์ ํŠธ๋ฅผ ์œ ์ง€ ๊ด€๋ฆฌํ•˜๊ธฐ๊ฐ€ ์–ด๋ ค์›Œ์ง‘๋‹ˆ๋‹ค. ์ฝ”๋“œ๋ฅผ ์ฝ์„ ์ˆ˜ ์—†์œผ๋ฉด ๋ฒ„๊ทธ๋ฅผ ์ฐพ๊ธฐ๊ฐ€ ์–ด๋ ต์Šต๋‹ˆ๋‹ค.

์›น ์–ด์…ˆ๋ธ”๋ฆฌ๋ž€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

Mozilla ์žฌ๋‹จ๊ณผ ๋‹ค๋ฅธ ์—ฌ๋Ÿฌ ํšŒ์‚ฌ์˜ ์šฉ๊ฐํ•œ ์‚ฌ๋žŒ๋“ค์ด ์›น ์–ด์…ˆ๋ธ”๋ฆฌ์™€ ๊ฐ™์€ ๊ฒƒ์„ ์ƒ๊ฐํ•ด๋ƒˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒŒ ๋ญ”๊ฐ€์š”?

Alexey Grachev: ํ”„๋ก ํŠธ์—”๋“œ๋กœ ์ด๋™

  • ์ด๋Š” ๋ฐ”์ด๋„ˆ๋ฆฌ ํ˜•์‹์„ ์ง€์›ํ•˜๋Š” ๋ธŒ๋ผ์šฐ์ €์— ๋‚ด์žฅ๋œ ๊ฐ€์ƒ ๋จธ์‹ ์ž…๋‹ˆ๋‹ค.
  • ๋ฐ”์ด๋„ˆ๋ฆฌ ํ”„๋กœ๊ทธ๋žจ์ด ๋„์ฐฉํ•˜์—ฌ ๊ฑฐ์˜ ๊ธฐ๋ณธ์ ์œผ๋กœ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๋ธŒ๋ผ์šฐ์ €๋Š” ๋งค๋ฒˆ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ์˜ ๋ชจ๋“  "์š”์†Œ"๋ฅผ ๊ตฌ๋ฌธ ๋ถ„์„ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
  • ๋ชจ๋“  ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ง€์›์„ ์„ ์–ธํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ์ด๋Š” ๋ฐ”์ดํŠธ์ฝ”๋“œ์ด๋ฏ€๋กœ ๋ชจ๋“  ์–ธ์–ด์— ๋Œ€ํ•œ ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • XNUMX๊ฐœ์˜ ์ฃผ์š” ๋ธŒ๋ผ์šฐ์ €์—๋Š” ์ด๋ฏธ ์›น ์–ด์…ˆ๋ธ”๋ฆฌ ์ง€์›์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์šฐ๋ฆฌ๋Š” ๊ณง Go์—์„œ ๊ธฐ๋ณธ ์ง€์›์„ ๊ธฐ๋Œ€ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ƒˆ๋กœ์šด ์•„ํ‚คํ…์ฒ˜๋Š” ์ด๋ฏธ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค: GOARCH=wasm GOOS=js(๊ณง). ์ง€๊ธˆ๊นŒ์ง€ ์ œ๊ฐ€ ์ดํ•ดํ•œ ๋ฐ”๋กœ๋Š” ๊ธฐ๋Šฅ์ ์ด์ง€๋Š” ์•Š์ง€๋งŒ Go์—๋Š” ๋ฐ˜๋“œ์‹œ ํฌํ•จ๋  ๊ฒƒ์ด๋ผ๋Š” ์ง„์ˆ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ด์ œ ๋ฌด์—‡์„ ํ•ด์•ผ ํ• ๊นŒ์š”? ๊ณ ํผJS

์›น ์–ด์…ˆ๋ธ”๋ฆฌ๋Š” ์ง€์›๋˜์ง€ ์•Š์ง€๋งŒ GopherJS์™€ ๊ฐ™์€ ํŠธ๋žœ์ŠคํŒŒ์ผ๋Ÿฌ๋Š” ์žˆ์Šต๋‹ˆ๋‹ค.

Alexey Grachev: ํ”„๋ก ํŠธ์—”๋“œ๋กœ ์ด๋™

  • Go ์ฝ”๋“œ๋Š” "์ˆœ์ˆ˜ํ•œ" Javascript๋กœ ๋ณ€ํ™˜๋ฉ๋‹ˆ๋‹ค.
  • ๋ชจ๋“  ๋ธŒ๋ผ์šฐ์ €์—์„œ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ์ตœ์‹  ๋ธŒ๋ผ์šฐ์ €์—์„œ๋งŒ ์ง€์›๋˜๋Š” ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์€ ์—†์Šต๋‹ˆ๋‹ค(์ด๊ฒƒ์€ ๋ชจ๋“  ๋ธŒ๋ผ์šฐ์ €์—์„œ ์‹คํ–‰๋˜๋Š” Vanilla JS์ž…๋‹ˆ๋‹ค).
  • ๊ณ ๋ฃจํ‹ด๊ณผ ์ฑ„๋„์„ ํฌํ•จํ•˜์—ฌ Go๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฑฐ์˜ ๋ชจ๋“  ๊ฒƒ์— ๋Œ€ํ•œ ์ง€์›์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ๋„ˆ๋ฌด๋‚˜ ์‚ฌ๋ž‘ํ•˜๊ณ  ์•Œ๊ณ  ์žˆ๋Š” ๋ชจ๋“  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
  • ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ง€์›ํ•˜๋Š” ๊ฒƒ์ด ํƒ€๋‹นํ•˜์ง€ ์•Š์€ ํŒจํ‚ค์ง€์ธ syscall, net ์ƒํ˜ธ ์ž‘์šฉ(net/http ํด๋ผ์ด์–ธํŠธ๋Š” ์žˆ์ง€๋งŒ ์„œ๋ฒ„๋Š” ์—†๊ณ  ํด๋ผ์ด์–ธํŠธ๋Š” XMLHttpRequest๋ฅผ ํ†ตํ•ด ์—๋ฎฌ๋ ˆ์ด์…˜๋จ)์„ ์ œ์™ธํ•˜๊ณ  ๊ฑฐ์˜ ์ „์ฒด ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์ง€์›๋ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์ „์ฒด ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ ๋ธŒ๋ผ์šฐ์ €์— ์žˆ๊ณ  ์—ฌ๊ธฐ์— ์šฐ๋ฆฌ๊ฐ€ ์ข‹์•„ํ•˜๋Š” Go์˜ stdlib๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
  • Go์˜ ์ „์ฒด ํŒจํ‚ค์ง€ ์ƒํƒœ๊ณ„, ๋ชจ๋“  ํƒ€์‚ฌ ์†”๋ฃจ์…˜(ํ…œํ”Œ๋ฆฟ ๋“ฑ)์€ GopherJS๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ปดํŒŒ์ผํ•˜๊ณ  ๋ธŒ๋ผ์šฐ์ €์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

GopherJS๋Š” ์–ป๊ธฐ๊ฐ€ ๋งค์šฐ ์‰ฝ์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜ Go ํŒจํ‚ค์ง€์ผ ๋ฟ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋นŒ๋“œํ•˜๊ธฐ ์œ„ํ•œ GopherJS ๋ช…๋ น์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

Alexey Grachev: ํ”„๋ก ํŠธ์—”๋“œ๋กœ ์ด๋™

์ด๊ณณ์€ ์ •๋ง ์ž‘์€ Hello World์ž…๋‹ˆ๋‹ค...

Alexey Grachev: ํ”„๋ก ํŠธ์—”๋“œ๋กœ ์ด๋™

...์ผ๋ฐ˜ โ€‹โ€‹Go ํ”„๋กœ๊ทธ๋žจ, ์ผ๋ฐ˜ ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ fmt ํŒจํ‚ค์ง€ ๋ฐ ๋ธŒ๋ผ์šฐ์ € API์— ๋„๋‹ฌํ•˜๊ธฐ ์œ„ํ•œ ๋ฐ”์ธ๋”ฉ Js์ž…๋‹ˆ๋‹ค. Println์€ ๊ฒฐ๊ตญ ์ฝ˜์†” ๋กœ๊ทธ๋กœ ๋ณ€ํ™˜๋˜๊ณ  ๋ธŒ๋ผ์šฐ์ €๋Š” "Hello gophers"๋ฅผ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค! ๋งค์šฐ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. GopherJS ๋นŒ๋“œ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ณ  ๋ธŒ๋ผ์šฐ์ €์—์„œ ์‹คํ–‰ํ•˜๋ฉด ๋ชจ๋“  ๊ฒƒ์ด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค!

์ง€๊ธˆ ๋‹น์‹ ์€ ๋ฌด์—‡์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ? ๋ฐ”์ธ๋”ฉ

Alexey Grachev: ํ”„๋ก ํŠธ์—”๋“œ๋กœ ์ด๋™

๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ๋ชจ๋“  js ํ”„๋ ˆ์ž„์›Œํฌ์— ๋Œ€ํ•œ ๋ฐ”์ธ๋”ฉ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์ œ์ด์ฟผ๋ฆฌ;
  • Angular.js;
  • ๋น…๋ฐ์ดํ„ฐ ํ”Œ๋กœํŒ… ๋ฐ ์ž‘์—…์„ ์œ„ํ•œ D3.js
  • React.js;
  • VueJS;
  • Electron์— ๋Œ€ํ•œ ์ง€์›๋„ ์žˆ์Šต๋‹ˆ๋‹ค(์ฆ‰, ์ด๋ฏธ Electron์—์„œ ๋ฐ์Šคํฌํ†ฑ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค).
  • ๊ฐ€์žฅ ์žฌ๋ฏธ์žˆ๋Š” ๊ฒƒ์€ WebGL์ž…๋‹ˆ๋‹ค(์šฐ๋ฆฌ๋Š” 3D ๊ทธ๋ž˜ํ”ฝ, ์Œ์•… ๋ฐ ๋ชจ๋“  ๊ธฐ๋Šฅ์ด ํฌํ•จ๋œ ๊ฒŒ์ž„์„ ํฌํ•จํ•œ ์ „์ฒด ๊ทธ๋ž˜ํ”ฝ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค).
  • ๊ทธ๋ฆฌ๊ณ  ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ๋ชจ๋“  ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ”„๋ ˆ์ž„์›Œํฌ ๋ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋Œ€ํ•œ ๊ธฐํƒ€ ๋งŽ์€ ๋ฐ”์ธ๋”ฉ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋ผˆ๋Œ€

  1. GopherJS - Vecty๋ฅผ ์œ„ํ•ด ํŠน๋ณ„ํžˆ ๊ฐœ๋ฐœ๋œ ์›น ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ์ด๋ฏธ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” React.js์˜ ๋ณธ๊ฒฉ์ ์ธ ์•„๋‚ ๋กœ๊ทธ์ด์ง€๋งŒ GopherJS์˜ ํŠน์„ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ Go์—์„œ๋งŒ ๊ฐœ๋ฐœ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  2. ๊ฒŒ์ž„ ๊ฐ€๋ฐฉ์ด ์žˆ์Šต๋‹ˆ๋‹ค(๋†€๋ž์–ด์š”!). ๊ฐ€์žฅ ์ธ๊ธฐ ์žˆ๋Š” ๋‘ ๊ฐ€์ง€๋ฅผ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค.
    • ์—”๊ณ ;
    • ์—๋น„ํ….

Go์—์„œ ์–ด๋–ป๊ฒŒ ๋ณด์ด๋Š”์ง€์™€ ์ด๋ฏธ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ๋‚ด์šฉ์— ๋Œ€ํ•œ ๋ช‡ ๊ฐ€์ง€ ์˜ˆ๋ฅผ ๋ณด์—ฌ ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

Alexey Grachev: ํ”„๋ก ํŠธ์—”๋“œ๋กœ ์ด๋™

๋˜๋Š” ์ด ์˜ต์…˜(3D ์ŠˆํŒ… ๊ฒŒ์ž„์„ ์ฐพ์„ ์ˆ˜ ์—†์ง€๋งŒ ์กด์žฌํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค):

Alexey Grachev: ํ”„๋ก ํŠธ์—”๋“œ๋กœ ์ด๋™

๋‚˜๋Š” ๋ฌด์—‡์„ ์ œ๊ณตํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

์ด์ œ ํ”„๋ก ํŠธ์—”๋“œ ์‚ฐ์—…์€ ์ด์ „์— Javascript์—์„œ ์šธ๋ถ€์ง–๋˜ ๋ชจ๋“  ์–ธ์–ด๊ฐ€ ๊ทธ๊ณณ์œผ๋กœ ๋ชฐ๋ ค๋“ค ์ •๋„์˜ ์ƒํƒœ์ž…๋‹ˆ๋‹ค. ์ด์ œ ๋ชจ๋“  ๊ฒƒ์ด "์›น ์–ด์…ˆ๋ธ”๋ฆฌ"๋กœ ์ปดํŒŒ์ผ๋ฉ๋‹ˆ๋‹ค. Gophers๋กœ์„œ ์šฐ๋ฆฌ์˜ ์ •๋‹นํ•œ ์ž๋ฆฌ๋ฅผ ์ฐจ์ง€ํ•˜๋ ค๋ฉด ๋ฌด์—‡์ด ํ•„์š”ํ•ฉ๋‹ˆ๊นŒ?

Alexey Grachev: ํ”„๋ก ํŠธ์—”๋“œ๋กœ ์ด๋™

Go๋Š” ์ „ํ†ต์ ์œผ๋กœ ์ด๊ฒƒ์ด ์‹œ์Šคํ…œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ผ๊ณ  ๊ฐ€์ •ํ–ˆ์œผ๋ฉฐ ์‹ค์ œ๋กœ UI ์ž‘์—…์„ ์œ„ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋ญ”๊ฐ€๊ฐ€ ์žˆ์ง€๋งŒ ์ ˆ๋ฐ˜์€ ๋ฒ„๋ ค์กŒ๊ณ  ์ ˆ๋ฐ˜์€ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด์ œ GopherJS์—์„œ ์‹คํ–‰๋  UI ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ Go์—์„œ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ์ข‹์€ ๊ธฐํšŒ์ž…๋‹ˆ๋‹ค! ๋งˆ์นจ๋‚ด ์ž์‹ ๋งŒ์˜ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค! ์ง€๊ธˆ์€ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ์‹œ๊ธฐ์ด๋ฉฐ, ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ๊ฐ€์žฅ ๋จผ์ € ์ดˆ๊ธฐ์— ์ฑ„ํƒ๋˜๊ณ  ์Šคํƒ€๊ฐ€ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค(์ข‹์€ ํ”„๋ ˆ์ž„์›Œํฌ๋ผ๋ฉด).

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

๊ฒŒ์ž„์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค! ์žฌ๋ฏธ๋กœ...

๋‚˜๋Š” ๋ชจ๋“  ๊ฒƒ์„ ๊ฐ€์ง€๊ณ ์žˆ๋‹ค.

Alexey Grachev: ํ”„๋ก ํŠธ์—”๋“œ๋กœ ์ด๋™

์งˆ๋ฌธ

์งˆ๋ฌธ(์ดํ•˜ Q): โ€“ Go๋กœ ๊ธ€์„ ์“ฐ๋‚˜์š” ์•„๋‹ˆ๋ฉด Js๋กœ ์ž‘์„ฑํ•˜๋‚˜์š”?

AG: โ€“ ๋ฃจํ‹ด, ์ฑ„๋„, ๊ตฌ์กฐ, ์ž„๋ฒ ๋”ฉ ๋“ฑ ๋ชจ๋“  ๊ฒƒ์„ Go์—์„œ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฒคํŠธ๋ฅผ ๊ตฌ๋…ํ•˜๊ณ  ๊ฑฐ๊ธฐ์— ํ•จ์ˆ˜๋ฅผ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.

์—์„œ : โ€“ ๊ทธ๋ž˜์„œ โ€œnakedโ€ Js๋กœ ๊ธ€์„ ์“ด๋‹ค๋Š” ๊ฑด๊ฐ€์š”?

AG: โ€“ ์•„๋‹ˆ์š”, Go์—์„œ์ฒ˜๋Ÿผ ์ž‘์„ฑํ•˜๊ณ  ๋ธŒ๋ผ์šฐ์ € API์— ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค(API๋Š” ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค). ๋ฉ”์‹œ์ง€๊ฐ€ ์ฑ„๋„๋กœ ์ „์†ก๋˜๋„๋ก ๋ฐ”์ธ๋”ฉ์„ ์ง์ ‘ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์–ด๋ ต์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์—์„œ : โ€“ ๋ชจ๋ฐ”์ผ์€ ์–ด๋–ป์Šต๋‹ˆ๊นŒ?

AG: โ€“ ํ™•์‹คํžˆ ๋ดค์Šต๋‹ˆ๋‹ค. Js๊ฐ€ ์‹คํ–‰ํ•˜๋Š” Cordova ํŒจ์น˜์— ๋Œ€ํ•œ ๋ฐ”์ธ๋”ฉ์ด ์žˆ์Šต๋‹ˆ๋‹ค. React Native์—์„œ๋Š” - ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ์žˆ์„ ์ˆ˜๋„ ์žˆ๊ณ  ์—†์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค(ํŠน๋ณ„ํžˆ ๊ด€์‹ฌ์ด ์—†์—ˆ์Šต๋‹ˆ๋‹ค). N-go ๊ฒŒ์ž„ ์—”์ง„์€ iOS์™€ Android์˜ ๋ชจ๋ฐ”์ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ชจ๋‘ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

์—์„œ : โ€“ ์›น ์–ด์…ˆ๋ธ”๋ฆฌ์— ๊ด€ํ•œ ์งˆ๋ฌธ์ž…๋‹ˆ๋‹ค. ์••์ถ•๊ณผ "์••์ถ•"์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์ ์  ๋” ๋งŽ์€ ๊ณต๊ฐ„์„ ์ฐจ์ง€ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค... ์ด๋Ÿฐ ์‹์œผ๋กœ ํ”„๋ก ํŠธ ์—”๋“œ ์„ธ๊ณ„๋ฅผ ๋”์šฑ ์ฃฝ์ด์ง€ ์•Š์„๊นŒ์š”?

AG: โ€“ ์›น ์–ด์…ˆ๋ธ”๋ฆฌ๋Š” ๋ฐ”์ด๋„ˆ๋ฆฌ ํ˜•์‹์ด๋ฉฐ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ฐ”์ด๋„ˆ๋ฆฌ๋Š” ์ตœ์ข… ๋ฆด๋ฆฌ์Šค์— ํ…์ŠคํŠธ๋ณด๋‹ค ๋งŽ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋Ÿฐํƒ€์ž„์— ๋Œ๋ฆฌ์ง€๋งŒ ์ด๋Š” ํ‘œ์ค€ Javascript ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์—†์„ ๋•Œ ๋Œ์–ด์„œ๋‚ด๋Š” ๊ฒƒ๊ณผ ๋™์ผํ•˜๋ฏ€๋กœ ์šฐ๋ฆฌ๋Š” Lodash๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”. Lodash๊ฐ€ ์–ผ๋งˆ๋‚˜ ๊ฑธ๋ฆฌ๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

์—์„œ : โ€“ ๋ถ„๋ช…ํžˆ ๋Ÿฐํƒ€์ž„๋ณด๋‹ค ์ ์Šต๋‹ˆ๋‹ค ...

AG: โ€“ "์ˆœ์ˆ˜ํ•œ" ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ์š”?

์—์„œ : - ์˜ˆ. ์••์ถ•ํ•ด์„œ ๋ณด๋‚ด๋“œ๋ฆฝ๋‹ˆ๋‹ค...

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

์—์„œ : โ€“ ์•„์ง๋„ ๋…ผ๋ž€์ด ๋˜๊ณ  ์žˆ๋Š” ๋ถ€๋ถ„์ธ๋ฐโ€ฆ ์•„์ง ๋ช…ํ™•ํ•˜๊ฒŒ ํŒ๋‹จํ•  ์ˆ˜ ์žˆ์„ ๋งŒํผ โ€œVasmaโ€(์›น ์–ด์…ˆ๋ธ”๋ฆฌ)์˜ ์ฐธ์กฐ ๊ตฌํ˜„์ด ์—†์Šต๋‹ˆ๋‹ค. ๊ฐœ๋…์ ์œผ๋กœ ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ ๋ชจ๋‘๋Š” ๋ฐ”์ด๋„ˆ๋ฆฌ๊ฐ€ ๋” ๋นจ๋ผ์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์ง€๋งŒ ๋™์ผํ•œ V8์˜ ํ˜„์žฌ ๊ตฌํ˜„์€ ๋งค์šฐ ํšจ์œจ์ ์ž…๋‹ˆ๋‹ค.

AG: - ๋„ค.

์—์„œ : โ€“ ํŽธ์ง‘์€ ์ •๋ง ํ›Œ๋ฅญํ•˜๊ฒŒ ์ž‘๋™ํ•˜๋ฉฐ ํฐ ์ด์ ์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์€ ์‚ฌ์‹ค์ด ์•„๋‹™๋‹ˆ๋‹ค.

AG: - ์›น์–ด์…ˆ๋ธ”๋ฆฌ๋„ ๋Œ€๊ธฐ์—…์ด ๋งŒ๋“œ๋Š”๊ตฐ์š”.

์—์„œ : โ€“ ์›น์–ด์…ˆ๋ธ”๋ฆฌ์— ๋Œ€ํ•œ ํŒ๋‹จ์€ ์•„์ง ์–ด๋ ค์šด ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ˆ˜๋…„ ๋™์•ˆ ๋Œ€ํ™”๊ฐ€ ์žˆ์—ˆ์ง€๋งŒ ๋Š๋‚„ ์ˆ˜ ์žˆ๋Š” ์‹ค์ œ ์„ฑ๊ณผ๋Š” ๊ฑฐ์˜ ์—†์Šต๋‹ˆ๋‹ค.

AG: - ์•„๋งˆ๋„. ๋‘๊ณ  ๋ณด์ž.

์—์„œ : โ€“ ๋ฐฑ์—”๋“œ์—๋Š” ๋ฌธ์ œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ”„๋ก ํŠธ์—”๋“œ์— ๋‚จ๊ฒจ๋‘๋Š” ๊ฒƒ์ด ์ข‹์„๊นŒ์š”? ์™œ ๊ฑฐ๊ธฐ๋กœ ๊ฐ€๋‚˜์š”?

AG: โ€“ ์ผ์„  ์ธ๋ ฅ์„ ์œ ์ง€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ผ๋ถ€ ๊ด‘๊ณ  ๐Ÿ™‚

์šฐ๋ฆฌ์™€ ํ•จ๊ป˜์žˆ์–ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ ๊ธฐ์‚ฌ๊ฐ€ ๋งˆ์Œ์— ๋“œ์‹ญ๋‹ˆ๊นŒ? ๋” ์žฌ๋ฏธ์žˆ๋Š” ์ฝ˜ํ…์ธ ๋ฅผ ๋ณด๊ณ  ์‹ถ๋‹ค๋ฉด? ์ฃผ๋ฌธํ•˜๊ฑฐ๋‚˜ ์นœ๊ตฌ์—๊ฒŒ ์ถ”์ฒœํ•˜์—ฌ ์šฐ๋ฆฌ๋ฅผ ์ง€์›ํ•˜์‹ญ์‹œ์˜ค. $4.99๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š” ๊ฐœ๋ฐœ์ž์šฉ ํด๋ผ์šฐ๋“œ VPS, ๊ท€ํ•˜๋ฅผ ์œ„ํ•ด ์šฐ๋ฆฌ๊ฐ€ ๋ฐœ๋ช…ํ•œ ๊ณ ์œ ํ•œ ๋ณด๊ธ‰ํ˜• ์„œ๋ฒ„ ์•„๋‚ ๋กœ๊ทธ: VPS(KVM) E5-2697 v3(6์ฝ”์–ด) 10GB DDR4 480GB SSD 1Gbps์— ๋Œ€ํ•œ ์ „์ฒด ์ง„์‹ค ๋˜๋Š” ์„œ๋ฒ„ ๊ณต์œ  ๋ฐฉ๋ฒ•์€? (RAID1 ๋ฐ RAID10์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅ, ์ตœ๋Œ€ 24๊ฐœ ์ฝ”์–ด ๋ฐ ์ตœ๋Œ€ 40GB DDR4).

Dell R730xd๋Š” ์•”์Šคํ…Œ๋ฅด๋‹ด์˜ Equinix Tier IV ๋ฐ์ดํ„ฐ ์„ผํ„ฐ์—์„œ 2๋ฐฐ ๋” ์ €๋ ดํ•ฉ๋‹ˆ๊นŒ? ์—ฌ๊ธฐ์„œ ๋งŒ 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV $199๋ถ€ํ„ฐ ๋„ค๋œ๋ž€๋“œ์—์„œ! Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - ์ตœ์ € $99! ์— ๋Œ€ํ•ด ์ฝ๋‹ค ์ธํ”„๋ผ ๊ณต์‚ฌ๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐฉ๋ฒ•. 730ํŽ˜๋‹ˆ์— 5์œ ๋กœ ์ƒ๋‹น์˜ Dell R2650xd E4-9000 vXNUMX ์„œ๋ฒ„๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํด๋ž˜์Šค?

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€