์ด ๊ธ์ Song Seunggeun ๋์ ๊ธ์ ๋ณด๊ณ ์์ฑํ ๊ธ์ด๋ฉฐ, ํ๋ฝ์ ๋ฐ์์ต๋๋ค.
๋ ผ๋์ ์ฌ์ง๊ฐ ์์ ์ ์์ง๋ง, ์๋ฐ์คํฌ๋ฆฝํธ๋ 2021๋ ํ์ฌ ์ํํธ์จ์ด ์ ๊ณ์์ ๊ฐ์ฅ ์ ๋ช ํ ์ธ์ด๋ผ๊ณ ํ ์ ์์ต๋๋ค. 2020๋ Github์ ๋ถ์์ ๋ฐ๋ฅด๋ฉด ์๋ฐ์คํฌ๋ฆฝํธ๋ 2014๋ ์ด๋๋ก ํญ์ ์ํฅ๋ ฅ ์๋ ์ธ์ด์๊ณ , ์๋ฐ์คํฌ๋ฆฝํธ์ ์น์ฒ์ด๋ผ๊ณ ํ ์ ์๋ ํ์ ์คํฌ๋ฆฝํธ ๋ํ ๊ทธ ์์๊ฐ 4์์ ๋ฌํฉ๋๋ค.
์๋ฐ์คํฌ๋ฆฝํธ๋ ์ด๋ป๊ฒ ์ด๋ ๊ฒ ์ ๋ช ํด์ง ์ ์์์๊น์? ํ์ด์ฌ, ์๋ฐ, C ๋ฑ์ ์ ํต์ ๊ฐ์๋ค, ๊ทธ๋ฆฌ๊ณ Golang, Rust, Swift, Dart ๋ฑ์ ์ ํฅ ๊ฐ์๋ค๊ณผ์ ๊ฒฝ์์์ ์๋ฐ์คํฌ๋ฆฝํธ๋ ์ด๋ป๊ฒ ์ฐ์๋ฅผ ์ ํ ์ ์์์๊น์?
์ด๋ฒ ๊ธ์์๋ ํด๋ ์ดํผ ํฌ๋ฆฌ์คํ ์จ ๊ต์์ ํ๊ดด์ ํ์ ์ด๋ก ์ ์ด์ฉํด์ ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ์ฑ์ฅํ ์ ์์๋ ์ด์ ๋ฅผ ์ค๋ช ํด๋ณด๊ณ ์ ํฉ๋๋ค.
ํ๊ดด์ ํ์ ์ด๋ก - ๋ ์๋๋ ๊ธฐ์ ๋ฌด์ํ๋ค๊ฐ ๋งํ๋ค
ํ๊ดด์ ํ์ ์ด๋ก ์ ํฌ๋ฆฌ์คํ ์จ์ด ‘์๋ํ ๊ธฐ์ ๋ค์กฐ์ฐจ ์ ์คํจํ๋๊ฐ’ ๋ผ๋ ์ง๋ฌธ์ ๋ํ ํด๋ต์ ์ฐพ๋ ๊ณผ์ ์์ ์ ์ํ ์ด๋ก ์ ๋๋ค. ํ๋ฆ ์นด๋ฉ๋ผ ์์ฅ์ 1์ ๊ธฐ์ ์ด์๋ ์ฝ๋ฅ์ด ๋์งํธ ์นด๋ฉ๋ผ ์๋์ ์ ์ํ์ง ๋ชปํ ์ฌ๋ก๋ฅผ ํตํด์ ์ด๋ฒ ๊ธ์ ์ฃผ์ ์ ๊ด๋ จ์ด ์๋ ๋ถ๋ถ๋ง์ ์ข ๋ ์์ธํ ๋ค์ฌ๋ค๋ณด๊ฒ ์ต๋๋ค!
ํ๊ดด์ ๊ธฐ์ ์ด ๋ฑ์ฅํ๋ค
ํ๊ดด์ ๊ธฐ์ ์ด๋ ๋จ๊ธฐ์ ์ผ๋ก ์ ํ์ ์ฑ๋ฅ์ ๋จ์ด๋จ๋ฆฌ์ง๋ง ๊ธฐ์กด ๊ธฐ์ ์ด ์ ๊ณตํ์ง ๋ชปํ๋ ๋ค๋ฅธ ๊ฐ์น๋ฅผ ์ ๊ณตํ๋ ๊ธฐ์ ์ ์๋ฏธํฉ๋๋ค. ํ๊ดด์ ๊ธฐ์ ์ ๊ธฐ์ดํ ์ ํ๋ค์ ์ผ๋ฐ์ ์ผ๋ก ๋ ์ธ๊ณ , ๋ ๋จ์ํ๊ณ , ๋ ์๊ณ , ์ฌ์ฉํ๊ธฐ ๋ ํธ๋ฆฌํฉ๋๋ค. (ํ์ ๊ธฐ์ ์ ๋๋ ๋ง, 1997). ์๋ฅผ ๋ค์ด, ์ด๊ธฐ์ ๋์งํธ ์ฌ์ง์ ๊ธฐ์กด์ ํ๋ฆ ์ฌ์ง์ ๋นํด์ ์ฌ์ง์ ์ง์ ๋ฎ์์ง๋ง ํ๋ฆ ์ธํ ๊ณผ์ ์ ๊ฑฐ์น ํ์๊ฐ ์๋ค๋ ํธ๋ฆฌํจ์ ์ ๊ณตํ์ต๋๋ค.
๊ธฐ์กด ๊ธฐ์ ์ ํ๊ดด์ ๊ธฐ์ ์ด ๋์ด ์ ๋์ ๋ฌด์ํ๋ค
๊ธฐ์กด ์์ฅ์ ์ง๋ฐฐ์ ์ธ ๊ธฐ์ ์ ํ๊ดด์ ๊ธฐ์ ์ ์ด์ฉํ ์ง ์ฌ๋ถ๋ฅผ ๊ฒํ ํ์ง๋ง, ๋์ด ๋์ง ์๊ธฐ ๋๋ฌธ์ ํฌ์๋ฅผ ํ์ง ์์ต๋๋ค. ์ฝ๋ฅ์ 1975๋ ์ธ๊ณ ์ต์ด๋ก ๋์งํธ ์นด๋ฉ๋ผ๋ฅผ ๊ฐ๋ฐํ์ต๋๋ค. ํ์ง๋ง ์ด๊ธฐ์ ๋์งํธ ์นด๋ฉ๋ผ๋ ์นด๋ฉ๋ผ์ ํฌ๊ธฐ, ํ์ง, ๊ฐ๊ฒฉ ๋ฑ ์ฌ๋ฌ ๋ฉด์์ ํ๋ฆ ์นด๋ฉ๋ผ์ ๋นํด ์ด๋ฑํ๊ธฐ ๋๋ฌธ์ ํ๋ฆ ์นด๋ฉ๋ผ ๊ณ ๊ฐ๋ค์๊ฒ ๋์งํธ ์นด๋ฉ๋ผ๋ฅผ ํ๋งคํ๋ ๊ฒ์ ์ด๋ ค์ ์ต๋๋ค. ๋ํ ํ๋ฆ ํ๋งค์์ ์์ต์ ๋ง์ด ๋ด๋ ์ฝ๋ฅ์ด ํ๋ฆ์ด ํ์ ์๋ ๋์งํธ ์นด๋ฉ๋ผ ์ฌ์ ์ ํค์ฐ๋ ๊ฒ์ ์์ ์ ์ด์ต์ ๊ฐ์๋จน์ ์๋ ์๋ ์ผ์ด์์ต๋๋ค.
ํ๊ดด์ ๊ธฐ์ ์ด ์ฑ์ํด์ ธ์ ๊ธฐ์กด ์ง๋ฐฐ์ ๊ธฐ์ ์ ์์ฅ์ ์ ์ํ๋ค
ํ๊ดด์ ๊ธฐ์ ์ด ๋ฐ์ ํ๋ฉด์ ๊ทธ ์ฑ๋ฅ์ด ๊ณ ๊ฐ์ด ๋ง์กฑํ ๋งํผ ์ฑ์ฅํ๋ฉด ๊ธฐ์กด ์์ฅ์ ์ ์ํ๊ธฐ ์์ํฉ๋๋ค. ๋์งํธ ์นด๋ฉ๋ผ์ ํฌ๊ธฐ๊ฐ ์์์ง๊ณ ํ์ง์ด ์ข์์ง๊ณ ์ผ๋ฐ ์๋น์๋ค์๊ฒ ํ๋งคํ ์ ์์ ๋งํผ ์ ๋ ดํด์ง๋ฉด์ ๋์งํธ ์นด๋ฉ๋ผ์ ํ๋ฆ ์์ฅ ํ๊ดด๊ฐ ์์๋์์ต๋๋ค. ์ฝ๋ฅ์ ๋ค๋ฆ๊ฒ ๋์งํธ ์นด๋ฉ๋ผ ์์ฅ์ ์ฐธ์ฌํ์ง๋ง, ์บ๋ ผ๊ณผ ๋์ฝ ๋ฑ์ ๋์งํธ ์นด๋ฉ๋ผ ์์ฅ ์ ๋ ์ ์ฒด์์ ๊ฒฝ์์์ ์ด๊ธธ ์ ์์์ต๋๋ค.
ํ๊ดด์ ํ์ ์ ์ํ ์ฝ๋ฅ์ ๋ชฐ๋ฝ์ ๋ํด์๋ ๋์ ๋น์ฆ๋์ค ๋ฆฌ๋ทฐ์ ํ๋ฒ๋ ๋น์ฆ๋์ค ๋ฆฌ๋ทฐ์ ์ค๋ฆฐ ์๋์ ๋ ๊ธ์์ ๋ณด๋ค ์์ธํ ์ ๋ณด๋ฅผ ํ์ธํ ์ ์์ต๋๋ค. ๋ํ ํ๊ดด์ ํ์ ์ด๋ก ์ ๋ํ ํจ์ฌ ํ๋ถํ ๋ด์ฉ์ด ํด๋ ์ดํผ ํฌ๋ฆฌ์คํ ์จ ๊ต์์ ์ ์ ใ ํ์ ๊ธฐ์ ์ ๋๋ ๋งใ์์ ์ ์ค๋ช ๋์ด ์์ต๋๋ค.
์๋ฐ์คํฌ๋ฆฝํธ์ ํ์๊ณผ ๋ฐ์ (1995 ~ 2008)
์๋ฐ์คํฌ๋ฆฝํธ, ์ ์ฐฉ์ (Glue language) ๋ก์ ํ์ํ๋ค
1990๋ ๋ ์ค๋ฐ, ์น (World Wide Web) ์ด ๋ณธ๊ฒฉ์ ์ผ๋ก ์๋น์๋ค์๊ฒ ๋ฐ์๋ค์ฌ์ง๊ธฐ ์์ํ์ต๋๋ค. ์น์ด๋ผ๋ ์ ๋๋ฅ์ ํจ๊ถ์ ์ฐจ์งํ๊ธฐ ์ํ ์ธ์์์ ๋๊ฐ์ ๋ํ๋ด๋ ๊ธฐ์ ์ค ์น ๋ธ๋ผ์ฐ์ ๋ท์ค์ผ์ดํ๋ฅผ ๋ง๋ ๋ท์ค์ผ์ดํ ์ปค๋ฎค๋์ผ์ด์ ์ฆ๊ฐ ์์์ต๋๋ค.
์ด๊ธฐ์ ์น ๋ธ๋ผ์ฐ์ ๋ ํ ๋ฒ๋์ค ๋ฆฌ๊ฐ ์น์ ๋ง๋ค ๋ ์ ์ํ ๊ฒ์ฒ๋ผ HTML ๋ก ์ด๋ฃจ์ด์ง ์ ์ ์ธ ์น ๋ฌธ์๋ฅผ ๋ณด์ฌ์ค ๋ฟ์ด์์ต๋๋ค. ํ์ง๋ง ์ ๊ณ๋ ๋ธ๋ผ์ฐ์ ๋ฅผ ์ข ๋ ๋์ ์ผ๋ก ๋ง๋ค ๋ฐฉ๋ฒ, ์ฌ์ฉ์์๊ฒ ํ๋ถํ ์ํธ์์ฉ์ ์ ์ง์ํด์ค ์ ์๋ ๋ฐฉ๋ฒ์ ๋ชจ์ํ๊ฒ ๋์์ต๋๋ค.
์ด๋ฅผ ์ํด์ ๋ท์ค์ผ์ดํ๋ ๋ธ๋ผ์ฐ์ ์์ ๋์ํ๋ ์คํฌ๋ฆฝํธ ์ธ์ด๋ฅผ ๋์ ํ๊ธฐ๋ก ํ์ต๋๋ค. ์ด ์คํฌ๋ฆฝํธ ์ธ์ด๋ ์ ๋ฌธ์ ์ธ ์์ค์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค๊ธฐ ์ํ ๋ชฉ์ ์ผ๋ก ๋์ ๋ ๊ฒ์ ์๋์๊ณ , ์๋ฐ์ ๊ฐ์ด ์ฑ๋ฅ์ด ์ข๊ณ ํ๋ถํ ์ํ๊ณ๋ฅผ ๊ฐ์ง๊ณ ์๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก ์์ฑ๋ ํ๋ก๊ทธ๋จ (ex. Java Applet) ์ ์น ๋ฌธ์์ ์ฐ๊ฒฐํด์ค ์ ์๋ ์ ์ฐฉ์ ์ญํ (Glue Language) ์ ํ๊ธฐ๋ง ํ๋ฉด ๋์์ต๋๋ค. ์๋ฅผ ๋ค์ด ์น ๋ฌธ์์ ํน์ ๋ฒํผ์ ํด๋ฆญํ๋ฉด ํน์ ํ Java Applet์ด ์คํ๋๋๋ก ํ๊ณ ์ถ์ ๊ฒฝ์ฐ, ๋ฒํผ์ด ํด๋ฆญ๋์์ ๋ ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ์คํ๋์ด ๊ทธ ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ Java Applet์ ์คํํ๋๋ก ํ๋ ๊ฒ์ ๋๋ค. ๋น์ทํ ์ญํ ์ ํ๋ ๊ธฐ์กด ๊ธฐ์ ๋ก ๋ง์ดํฌ๋ก์ํํธ ์คํผ์ค์ Visual Basic์ด ์์์ต๋๋ค.
์๋ฐ์คํฌ๋ฆฝํธ๋ 1995๋ ๋ท์ค์ผ์ดํ ๋ธ๋ผ์ฐ์ ์ ํ์ฌ๋์ด ์ธ์์ ์ฒซ ์ ์ ๋ณด์ด๊ณ , 1996๋ ๋ง์ดํฌ๋ก์ํํธ๊ฐ ์๋ฐ์คํฌ๋ฆฝํธ์ ์ ์ฌํ JScript๋ฅผ ์์ฌ์ ๋ธ๋ผ์ฐ์ ์ต์คํ๋ก๋ฌ์ ๋์ ํ์ผ๋ฉฐ, ์ดํ 1997๋ ํ์คํ๋์ด ECMAScript ๋ผ๋ ์ด๋ฆ์ผ๋ก ๋ถ๋ฆฌ๊ฒ ๋ฉ๋๋ค.
์น ๋ธ๋ผ์ฐ์ ์์์ ์กฐ์ฉํ ํ์ ํค์ฐ๋ค
์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ์น ๋ธ๋ผ์ฐ์ ์ ๊ณต์ ์คํฌ๋ฆฝํธ ์ธ์ด๋ก ์ฑํ๋๊ธฐ๋ ํ์ง๋ง ๊ทธ๊ฒ์ด ์๋ฐ์คํฌ๋ฆฝํธ์ ์ฑ๊ณต์ ๋ณด์ฅํ์ง๋ ์์์ต๋๋ค.
๋ท์ค์ผ์ดํ์ ์ ๋ต์ ์ค์ฑ ๊ณผ ๋ง์ดํฌ๋ก์ํํธ์ OS ์์ฅ ์ง๋ฐฐ๋ ฅ์ ์ด์ฉํ ๋ผ์ํ๊ธฐ ์ ๋ต ๋ฑ์ ์์๊ฐ ๊ฒน์ณ์ 2000๋ ๋ ์ด์ค๋ฐ ๋ง์ดํฌ๋ก์ํํธ์ ์ต์คํ๋ก๋ฌ ๋ธ๋ผ์ฐ์ ๋ 90%์ ๋ฌํ๋ ์น ๋ธ๋ผ์ฐ์ ์์ฅ ์ ์ ์จ์ ์ฐจ์งํ๊ฒ ๋ฉ๋๋ค. OS์ ์น ๋ธ๋ผ์ฐ์ ์ ์ง๋ฐฐ๊ถ์ ๋์์ ๊ฐ์ง ๋ง์ดํฌ๋ก์ํํธ๋ ์น ๊ฐ๋ฐ์๋ค์๊ฒ ActiveX ์ ๊ฐ์ ๊ธฐ์ ์ ์ด์ฉํด์ ์นํ์ด์ง๊ฐ ์ผ์ข ์ ์๋์ฐ์ฆ ์ ํ๋ฆฌ์ผ์ด์ ์ฒ๋ผ ๋์ํ ์ ์๋๋ก ํ์ต๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก ์น์ด ์๋์ฐ์ฆ์ฉ ์ฑ์คํ ์ด ๋น์ทํ ์ญํ ์ ํ๊ฒ ๋ ๊ฒ์ ๋๋ค. ์ด๋ฐ ์ํฉ์์ ๊ฐ๋ฐ์๋ ์๋ฐ์คํฌ๋ฆฝํธ๋ณด๋ค๋ ActiveX ๋ชจ๋์ ๊ฐ๋ฐํ ์ ์๋ C++, C# ๋ฑ์ ์ธ์ด๋ฅผ ์ฌ์ฉํ๊ฒ ๋ฉ๋๋ค.
๊ทธ ๋ฐ์ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ด์ฉํ์ง ์๊ณ ๋ ์น์ฌ์ดํธ ๊ธฐ๋ฅ์ ๊ฐํํ ์ ์๋ ์ด๋๋น์ Flash, ๋ง์ดํฌ๋ก์ํํธ์ Sliverlight ๋ฑ์ ๊ธฐ์ ๋ค์ด ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ํด์ผ ํ์ ์ญํ ์ ๋์ ํ๋ฉฐ ์๋ฐ์คํฌ๋ฆฝํธ์ ์ ์ง๋ฅผ ์ํํ์ต๋๋ค.
ํ์ง๋ง ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ์ ํ ๋ฐ์ ํ์ง ์์ ๊ฒ์ ์๋๋๋ค. ๋น๋๊ธฐ HTTP ํต์ ๊ธฐ์ ์ธ AJAX๊ฐ ๋์ ๋๋ฉด์ ์๋ฐ์คํฌ๋ฆฝํธ๋ง์ผ๋ก ์๋ฒ์ ํต์ ์ ํ๋ ๋์ ์ธ ์น์ฌ์ดํธ๋ฅผ ๋ง๋ค ์ ์๊ฒ ๋์๊ณ , ์ด๋ณด์๋ ์ฝ๊ฒ ์นํ์ด์ง ํ๋ฉด์ ์กฐ์ํ ์ ์๋ jQuery ๊ฐ ํ์ํ๊ธฐ๋ ํ๋ค.
์์ง ์ฑ๋ฅ์ ํญ๋ฐ์ ์ธ ํฅ์
์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ๋ฐ์ ์ ํ๋ค ํ๋๋ผ๋ ์์ง ์๋ฐ์คํฌ๋ฆฝํธ๋ ์น ํ์ด์ง๋ฅผ ๋ง๋ค ์ ์๋ ์ฌ๋ฌ ๋ฐฉ๋ฒ ์ค ํ๋์ ์ง๋์ง ์์์ต๋๋ค. ๊ทธ ์ ๋ช ์ธ๋ ํ์ฉ๋๋ ์์ง C++ ์ด๋ Java ์ ๊ฐ์ ์ฃผ๋ฅ ์ธ์ด์ ๋นํด์๋ ์ด๋ผํ ์์ค์ด์์ต๋๋ค.
ํ์ง๋ง ์๋ฐ์คํฌ๋ฆฝํธ๋ 2008๋ ํฐ ์ฑ์ฅ์ ๊ณ๊ธฐ๋ฅผ ๋ง๊ฒ ๋ฉ๋๋ค. ์คํฌ๋ฆฝํธ ์คํ ์๋๋ฅผ ํฌ๊ฒ ๊ฐ์ ํ๋ JIT (Just in time) ๊ธฐ์ ์ด ๋์ ๋ ๊ฒ์ ๋๋ค. Google ํฌ๋กฌ์ JIT๋ฅผ ์ด์ฉํ V8 ์์ง ๋๋ถ์ ์ต์คํ๋ก๋ฌ๋ฅผ ํฌํจํ ๊ธฐ์กด ๋ธ๋ผ์ฐ์ ์ ๋นํด ๋น ๋ฅธ ์ฑ๋ฅ์ ๋ณด์ฌ์ฃผ์๊ณ , ํ์ด์ดํญ์ค๋ JIT๋ฅผ ์ ์ฉํ TraceMonkey ์์ง์ ๋ด๋์์ต๋๋ค.
์๋ฐ์คํฌ๋ฆฝํธ์ ๋ ํนํ ์ฅ์
์น ๋ธ๋ผ์ฐ์ ๋ด๋ถ์์ ์ฌ์ฉ๋๋ ๊ธฐ์ ๋ก์ ์๋ฐ์คํฌ๋ฆฝํธ๋ ๊ฒฐ์ฝ ํ๊ดด์ ์ธ ๊ธฐ์ ์ ์๋๋๋ค. ์๋ฐ์คํฌ๋ฆฝํธ๋ ์น ๋ธ๋ผ์ฐ์ ํ์ค์ผ๋ก ์ฑํ๋ ์ ์ผํ ์คํฌ๋ฆฝํธ ์ธ์ด๋ก์ ๋ ์ ์ ์ธ ์ง์๋ฅผ ๋๋ ธ์ต๋๋ค. ๊ทธ ๋ ์ ์ ์ธ ์ง์๊ฐ ์๋ฐ์คํฌ๋ฆฝํธ์๊ฒ AJAX๋ฅผ ํตํ ๋คํธ์ํฌ ๊ธฐ๋ฅ์ด๋ JIT์ ์ด์ฉํ ์ฑ๋ฅ ๊ฐ์ ์ ๊ฐ์ ธ๋ค์ค ๊ฒ์ ๋๋ค. ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ํ๊ดด์ ๊ธฐ์ ์ด๋ผ๋ฉด ๊ทธ ์ญ๋์ ์น ๋ธ๋ผ์ฐ์ ์ด์ธ์ ๋ค๋ฅธ ์์ฅ์์ ์ฆ๋ช ํ ์ ์์ด์ผ ํฉ๋๋ค.
์น ๋ธ๋ผ์ฐ์ ์ด์ธ์ ์์ฅ์ ๋ํด์ ๋ ผ์ํ๊ธฐ์ ์์ ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ๋ค๋ฅธ ์ธ์ด์ ๋นํด ์ฐ์๋ฅผ ๊ฐ์ง๋ ์ ์ด ๋ฌด์์ธ์ง ์ ๋ฆฌํด๋ณด๊ฒ ์ต๋๋ค. ์ ๋ ์๋์ ๋ค ๊ฐ์ง ์ฅ์ ์ด ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
- ๋จ์ํ๊ณ ์ฝ๋ค.
- ๋น๋๊ธฐ ์ฝ๋๋ฅผ ์ง๊ธฐ ์ข๋ค.
- ํธํ์ด ์ ๋๋ UI ๊ธฐ์ ์ด ์กด์ฌํ๋ค.
- ์คํ ์ฑ๋ฅ์ด ์ข๋ค.
๋จ์ํ๊ณ ์ฝ๋ค
์๋ฐ์คํฌ๋ฆฝํธ๋ ํ์๋ถํฐ ๋น์ ๋ฌธ๊ฐ๋ฅผ ์ํ ์ธ์ด์์ต๋๋ค. ์น ๋์์ด๋๋ ์ด๊ธ ํ๋ก๊ทธ๋๋จธ๊ฐ ์นํ์ด์ง์์ ๊ณ ๊ธ ๊ฐ๋ฐ์๋ค์ด ๊ฐ๋ฐํ Java Applet ๋ฑ์ ๊ณ ๋ํ๋ ํ๋ก๊ทธ๋จ์ ์ด์ฉํ ์ ์๋๋ก ๊ฐ๋ฐ๋ ์ ์ฐฉ์ ์์ต๋๋ค. Java๋ C++ ๋ฑ์ ์ธ์ด๊ฐ ์ ๊ณตํ๋ ๋์ ์ฑ๋ฅ์ ๊ฐ์ ธ๋ค ์ฃผ์ง๋ง ๊ฐ๋ฐํ๊ธฐ ์ด๋ ค์ด ๋ฉํฐ์ค๋ ๋ ๊ธฐ๋ฅ์ด ์๋ฐ์คํฌ๋ฆฝํธ์์๋ ๊ฐ๋ฅํ์ง๋ ์์ต๋๋ค. ์ด๋ฐ ์ ์ Java๋ C++ ๊ฐ๋ฐ์๊ฐ ๋ณด๊ธฐ์๋ ์์ฌ์ด ๋ถ๋ถ์ด์ง๋ง, ์ด๊ธ ํ๋ก๊ทธ๋๋จธ์ ์ ์ฅ์์๋ ํ๋ก๊ทธ๋๋ฐ ๋์ด๋๋ ๋ฎ์ถ๊ณ ์์ฐ์ฑ์ ๋ํ๋ ๋ถ๋ถ์ด๊ธฐ๋ ํ๋ค.
๋น๋๊ธฐ ์ฝ๋๋ฅผ ์ง๊ธฐ ์ข๋ค
์๋ฐ์คํฌ๋ฆฝํธ๋ ์น ๋ธ๋ผ์ฐ์ ์ UI ์ ๊ด๋ จ๋ ์์ (ex. ํด๋ฆญ)๊ณผ AJAX๋ฅผ ์ด์ฉํ ๋คํธ์ํฌ ์์ ์ ์ฒ๋ฆฌํ๊ธฐ ์ํด ๋ง์ด ์ด์ฉ๋์์ต๋๋ค. UI ๊ด๋ จ ์์ ๊ณผ ๋คํธ์ํฌ ์์ ์ ๊ณตํต์ ์ ํ์ ์์ ์ด ์ธ์ ์คํ๋์ด์ผ ํ ์ง ์์ธกํ ์๊ฐ ์๋ค๋ ๊ฒ์ ๋๋ค. ๋ ์์ธํ ๋งํ์๋ฉด, “์ ์ ๊ฐ ๋ฒํผ์ ํด๋ฆญํ ๋ ์ด๋ฐ ์์ ์ ์ํํด" ๋ผ๋ ์ฝ๋๊ฐ ์คํ๋๋ ์๊ฐ์๋ ์ ์ ๊ฐ ์ธ์ ๋ฒํผ์ ํด๋ฆญํ ์ง ์ ์ ์๊ณ , “์๋ฒ์ ์ด๋ฐ ์์ฒญ์ ๋ณด๋ด๊ณ ์๋ต์ด ์ค๋ฉด ์ด๋ ๊ฒ ์ฒ๋ฆฌํด” ๋ผ๋ ์ฝ๋๊ฐ ์คํ๋๋ ์๊ฐ์๋ ์๋ฒ๊ฐ ์๋ต์ด ์ค๋ ์ ํํ ์์ ์ ์ ์๊ฐ ์์ต๋๋ค.
์ด๋ ๊ฒ ํน์ ์ฝ๋๊ฐ ์คํ๋์ด์ผ ํ ์์ ์ ์ ํํ๊ฒ ์๊ธฐ ์ด๋ ค์ด ๊ฒฝ์ฐ์ ๋ณดํต ์ฌ์ฉํ๋ ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
ํ๋๋ ๊ทธ ์์ ์ด ์ค๊ธฐ๊น์ง ๋ฌดํํ ๋๊ธฐํ๋ ๋ฐฉ๋ฒ (๋๊ธฐ์ ๋ธ๋กํน, Synchronous blocking) ์ด๊ณ , ๋ค๋ฅธ ํ๋๋ ๊ทธ ์์ ์ด ์ค๋ฉด ์คํ๋์ด์ผ ํ๋ ์ฝ๋๋ฅผ ์ง์ ํด๋๊ณ ๋ค๋ฅธ ํ ์ผ์ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ (๋น๋๊ธฐ์ ๋ ผ๋ธ๋กํน, Asynchronous non-blocking) ์ ๋๋ค.
์ด๋ค ์์ ๊น์ง ๋ฌดํํ ๋๊ธฐํ๋ ๋ฐฉ๋ฒ์ ๋๊ธฐ ์ค ๋ค๋ฅธ ์์ ์ ์ฒ๋ฆฌํ ์ ์๊ฒ ๋๋ฏ๋ก ๋ฉํฐ์ฐ๋ ๋ ํ๋ก๊ทธ๋๋ฐ์ด ๋ถ๊ฐ๋ฅํ ์๋ฐ์คํฌ๋ฆฝํธ ํ๊ฒฝ์์๋ ์ฌ์ฉํ๊ธฐ ์ด๋ ต์ต๋๋ค. ๋ฐ๋ผ์ ์๋ฐ์คํฌ๋ฆฝํธ๋ ๋น๋๊ธฐ์ ๋ ผ๋ธ๋กํน ๋ฐฉ์์ ์ฝ๋๋ฅผ ์ฝ๊ฒ ์์ฑํ ์ ์๋๋ก ๋ฌธ๋ฒ๊ณผ API๊ฐ ๋ฐ๋ฌํ๊ฒ ๋์์ต๋๋ค.
๊ถํฉ์ด ์ ๋ง๋ ๊ฐ๋ ฅํ UI ๊ธฐ์ ์ด ์กด์ฌํ๋ค
์น ๋ธ๋ผ์ฐ์ ์ UI ๊ธฐ์ (HTML, CSS, ๋ ๋๋ง ์์ง…) ์ ๋ค์ํ OS ์์์ ์ ์ธ๊ณ์ ์์ต๊ฐ์ ์น์ฌ์ดํธ๋ฅผ ๊ทธ๋ฆฌ๋ฉด์ ์ฝ๊ณ ์ ์ฐํ๋ฉด์๋ ๊ฐ๋ ฅํ๊ฒ ๋ฐ์ ํ์ต๋๋ค. ์ด UI ๊ธฐ์ ์ ๋น์ฐํ๊ฒ๋ ์๋ฐ์คํฌ๋ฆฝํธ์ ๊ถํฉ์ด ์ ๋ง์ต๋๋ค.
์คํ ์ฑ๋ฅ์ด ์ข๋ค
๊ตฌ๊ธ์ V8์ ์์ํ JIT ๊ธฐ์ ์ ์ฑํํ ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ด ์๋ฐ์คํฌ๋ฆฝํธ์ ์ฑ๋ฅ์ ํฌ๊ฒ ๋์ด์ฌ๋ ค์ฃผ์์ต๋๋ค. ์ด ๋๋ถ์ ์๋ฐ์คํฌ๋ฆฝํธ๋ C++์ด๋ Java์ ๊ฐ์ ์ ์ ์ธ์ด์๋ ๋ฏธ์น์ง ๋ชปํ์ง๋ง ์คํฌ๋ฆฝํธ ์ธ์ด ์ค์์๋ ์ต๊ณ ์์ค์ ์ฑ๋ฅ์ ๊ฐ๊ฒ ๋์์ต๋๋ค.
์ด์ ์ด๋ฌํ ์ฅ์ ์ ๋ฐํ์ผ๋ก ์น ๋ธ๋ผ์ฐ์ ์ธ์ ์์ฅ์์ ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ์ด๋ป๊ฒ ํ๊ดด์ ํ์ ์ ์ด๋ฃจ์๋์ง๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
์๋ฐ์คํฌ๋ฆฝํธ์ ๊ธฐ์กด ์์ฅ ํ๊ดด
์ฌ๋ก1 - Node.js์ ๋ฑ์ฅ๊ณผ ์๋ฒ ์์ฅ ์ง์ถ
V8์ด ์ถํํ ์ง ์ผ๋ง ๋์ง ์์ 2009๋ , ๋ผ์ด์ธ ๋ฌ์ ๊ตฌ๊ธ์ V8 ์๋ฐ์คํฌ๋ฆฝํธ ์์ง๊ณผ ๋น๋๊ธฐ ๋คํธ์ํฌ API๋ฅผ ๊ฒฐํฉํ์ฌ ์๋ฐ์คํฌ๋ฆฝํธ๋ก ์๋ฒ ํ๋ก๊ทธ๋๋ฐ์ ๊ฐ๋ฅ์ผ ํด์ฃผ๋ Node.js๋ผ๋ ์๋ฒ์ฌ์ด๋ ๋ฐํ์์์ง์ ๊ณต๊ฐํ์ต๋๋ค.
์๋ฒ ํ๋ก๊ทธ๋๋ฐ ๊ธฐ์ ์์ฅ์์ ์ฃผ๋ก ์ธ์ ๋ฐ๋ ๊ฐ์น๋ ์ด๋ค ๊ฒ์ด ์์๊น์? ๊ธฐ์กด ์๋ฒ ํ๋ก๊ทธ๋๋ฐ์ ์ฃผ๋ก SQL ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ๊ณตํ ํ์ HTML๋ก ๋ ๋๋งํ์ฌ ์น๋ธ๋ผ์ฐ์ ์ ์ ๋ฌํ๋ ์ผ์ ์ฃผ๋ก ์ํํ์ต๋๋ค. ๋ฐ๋ผ์ RDB ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ฐ๋์ด ์ผ๋ง๋ ์ ๋๋์ง, ๋ฐ์ดํฐ๋ฅผ HTML๋ก ํํํ๋ ์ผ์ด ์ผ๋ง๋ ์ฝ๊ณ ํ์ฅ์ฑ์ด ์๋์ง ๋ฑ์ด ์๋ฒ ๊ธฐ์ ์ ํ๊ฐํ๋ ์ฃผ์ ์์์๊ณ , ๊ธฐ์กด ๊ธฐ์ ๋ค์ ์ด๋ฌํ ์์ ์ ์ ์ํํ์ต๋๋ค.
Node.js๊ฐ ๊ธฐ์กด ์๋ฒ ๊ธฐ์ ๊ณผ ๊ฒฝ์ํ ๋ ๋์์ด ๋ ๊ฒ์ ํ๊ฒฝ์ ๋ณํ์์ต๋๋ค. ์น ๋ธ๋ผ์ฐ์ ์ ์ฑ๋ฅ์ด ๊ฐ์ ๋๋ฉด์ Backbone๊ณผ Angular.js๋ฅผ ์์ํ Single Page Application(SPA)์ด ์ ํํ๊ณ , ์ค๋งํธํฐ์ ์ฑ ์ํ๊ณ๊ฐ ํ์ฑํ๋๋ฉด์ ์๋ฒ๋ ์น ๋ธ๋ผ์ฐ์ ์ด์ธ์ ๋ชจ๋ฐ์ผ ์ฑ์ ์ง์ํด์ผ ํ์ต๋๋ค. ์ด ๋ ๊ฐ์ง ํ๋ฆ์ ๋ง์ถฐ์ ์๋ฒ๋ JSON, XML ๋ฑ์ ํ์์ผ๋ก ํด๋ผ์ด์ธํธ์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๋ API ์๋ฒ์ ์ญํ ์ ํ ํ์๊ฐ ๋์ฑ ์ปค์ก์ต๋๋ค. ์ด์ ๋ฐ๋ผ UI์ ๊ด๋ จํ ๋ง์ ๋น์ฆ๋์ค ๋ก์ง์ด ์๋ฒ์์ ํด๋ผ์ด์ธํธ๋ก ์ด์ ๋์๊ณ , ์๋ฒ๋ ๋ ๋จ์ํ ์์ ์ ๋ ๋ง์ด ์ฒ๋ฆฌํด์ผ ํ๋ ์ํฉ์ด ๋์์ต๋๋ค.
ํด๋ผ์ด์ธํธ ๋ฟ๋ง ์๋๋ผ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ธก๋ฉด์์๋ ๋ณํ๊ฐ ์์์ต๋๋ค. Oracle, MySQL ๋ฑ์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค(RDB)๋ ์ค๋ ๊ธฐ๊ฐ ์ฃผ๋ฅ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก์ ๊ฐ๋ ฅํ ์์์ ๊ฐ์ง๊ณ ์์์ง๋ง, ์ธํฐ๋ท ์๋น์ค์ ๊ท๋ชจ๊ฐ ์ปค์ง๊ณ ์๋น์ค ๋ณํ์ ์๋๊ฐ ๋นจ๋ผ์ง๋ฉด์ ๊ทธ ํจ์ฉ์ ์๋ฌธ์ ๊ฐ์ง๋ ์ฌ๋๋ค์ด ์๊ฒจ๋ฌ์ต๋๋ค. SQL์ ์ด์ฉํ๋ RDB๋ ๋ฐ์ดํฐ ๊ฐ์ ๊ด๊ณ๋ฅผ ์๊ฒฉํ๊ฒ ์ ์ํ๊ณ ์ ์งํ ์ ์๋ค๋ ๊ฐ์ ์ด ์์๋๋ฐ, ์ด ๊ฐ์ ์ด ์๋น์ค์ ๊ท๋ชจ๊ฐ ์ปค์ก์ ๋ ์คํ๋ ค ํ์ฅ์ฑ์ ๋ฐฉํดํ๋ ์์๊ฐ ๋๋ค๋ ๊ฒ์ ๋๋ค. ๋ํ ์๋น์ค๊ฐ ๋น ๋ฅด๊ฒ ๋ณํํ ๋๋ ๋ฐ์ดํฐ์ ํํ(Schema)๋ฅผ ์๊ฒฉํ๊ฒ ๊ด๋ฆฌํ์ง ์๋ ๊ฒ์ด(Schemaless) ์๋น์ค ๋ณํ์ ๋์ฑ ๊ธฐ๋ฏผํ๊ฒ ๋์ฒํ ์ ์๋ค๋ ๋นํ ๋ํ ์๊ฒจ๋ฌ์ต๋๋ค. ์ด๋ฌํ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํ๊ณ์ ๋ํ ๋์์ผ๋ก SQL์ ์ฌ์ฉํ์ง ์๋ MongoDB, Cassandra ๋ฑ์ NoSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ๋ฑ์ฅํ์ต๋๋ค.
๊ธฐ์กด ์๋ฒ ๊ธฐ์ ๋ค์ด ๊ฐ์ง๊ณ ์๋ ์ฅ์ ๋ค(RDB์์ ์ฐ๋, HTML ์์ฑ)์ ์ค์์ฑ์ด ์ค์ด๋ ํ๊ฒฝ์ Node.js์๊ฒ ๊ธฐํ๊ฐ ๋์์ต๋๋ค. ๊ธฐ์กด ์๋ฒ ๊ธฐ์ ๋ค์ด ๊ฐ์ง ๊ธฐ๋ฅ์ด ์๋ค๋ ๊ฒ์ด ์คํ๋ ค Node.js๋ ๋ฐฐ์ฐ๊ธฐ ์ฝ๋ค๋ ์ธ์์ ๋ง๋ค์๊ณ , ๋น๋๊ธฐ ๋ฌธ๋ฒ๊ณผ V8์์ ๋น๋กฏํ ๊ฐ๋ ฅํ ์คํ ์ฑ๋ฅ์ Node.js์ ํน๋ณํ ์ฅ์ ์ด ๋์์ต๋๋ค.
Node.js๋ ๋น์์ ์ต์ ๋ฐ์ดํฐ๋ฒ ์ด์ค(MongoDB)์ ์ต์ ํด๋ผ์ด์ธํธ ๊ธฐ์ (Angular.js)๊ณผ ํจ๊ป MEAN(MongoDB, Express(Node.js๋ด ์๋ฒ ๊ธฐ์ ), Angular.js, Node.js)์ด๋ผ๋ ์ธํธ ์ํ์ ๊ตฌ์ฑํ์ฌ ํ๋ณด๋๊ธฐ๋ ํ์ต๋๋ค. ๋จ์ผ ์ ํ ๋จ์๊ฐ ์๋ ์ฃผ๋ณ ๊ตฌ์ฑ ์์๋ฅผ ํฌํจํ๋ ์ ์ฒด ์ํคํ ์ฒ ๋จ์์ ๋ณํ๋ ํ๊ดด์ ํ์ ์ ์ฃผ์ ํน์ง ์ค ํ๋์ ๋๋ค.
๋ ์ธ๊ธํ ๋งํ Node.js์ ๋ค๋ฅธ ์ฅ์ ์ด ์์๋๋ฐ, ๊ทธ๊ฒ์ ์ค์๊ฐ(Real-time) ์๋ฒ๋ฅผ ์์ฑํ๊ธฐ ์ข๋ค๋ ์ ์ด์์ต๋๋ค. Node.js๋ ์๋ฐ์คํฌ๋ฆฝํธ์ ๋น๋๊ธฐ์ ์ธ ๋ฌธ๋ฒ๊ณผ ๋ด๋ถ์ ์ผ๋ก ์ฌ์ฉํ๋ ๋น๋๊ธฐ ๋คํธ์ํฌ API ๋ํ์ ์ฑ๋ฅ์ด ์ข์ ์ค์๊ฐ ์๋ฒ๋ฅผ ์์ฑํ๊ธฐ ์ ๋ฆฌํ์ต๋๋ค. ์ด๋ FaceBook๊ณผ Twitter ๋ฑ์ ์ค์๊ฐ์ฑ์ด ๊ฐ์กฐ๋๋ SNS์ ๊ธ์ํ ๋ฐ๋ฌ๊ณผ ๋ง๋ฌผ๋ ค์ ๊ฐ๋ฐ์๋ค์๊ฒ ์ดํํ๋ ์์๊ฐ ๋์์ต๋๋ค.
Node.js๊ฐ ์๋ฒ ์์ฅ์ ์๋ฆฌ๋ฅผ ์ก์ ์ด์ ์๊ฐ์ด ๊ฐ์๋ก ์ํฅ๋ ฅ์ ํค์ธ ์ ์์์ต๋๋ค. Google์ V8 ํ ๋๋ถ์ ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ ์ฑ๋ฅ์ ๋ค๋ฅธ ์ธ์ด์ ๋นํด์ ์์ ์ ์ผ๋ก ์ฑ์ฅ์ ์ง์ํ ์ ์์๊ณ , RDB ์ง์ ๋ฑ์ ๊ธฐ์กด ๊ธฐ์ ์ ์ฅ์ ๋ Node.js๊ฐ ํก์ํ์ต๋๋ค.
์ฌ๋ก2 - Electron์ผ๋ก ๋ฐ์คํฌํ ์ฑ ๊ฐ๋ฐ ์์ฅ์ ์ฑ๊ณต์ ์ผ๋ก ๊ณต๋ตํจ
Node.js์ ์ฑ๊ณต์ ์๋ฐ์คํฌ๋ฆฝํธ์์ ์๋ฒ ์์ฅ์์์ ์ฑ๊ณต ์ด์์ ์๋ฏธ๊ฐ ์์์ต๋๋ค. ์๋ฐ์คํฌ๋ฆฝํธ์์ ํ์ผ ์์คํ ๋ฑ์ OS ์์์ ์์ ์ ์ผ๋ก ์ ๊ทผํ ์ ์๋ ๊ฒฝ๋ก๊ฐ ์๊ฒผ์ ๋ฟ๋ง ์๋๋ผ NPM(node package manager)์ ์ค์ฌ์ผ๋ก ์๋ฐ์คํฌ๋ฆฝํธ ์ํ๊ณ๊ฐ ํฌ๊ฒ ํ์ฑํ๋ ๊ฒ์ ๋๋ค.
์คํ ์์ค ํ๋ซํผ์ผ๋ก ์ ์๋ ค์ง Github์ ์ง์๋ค์ Node.js์ ์ฑ๊ณต์ ๋ณด๊ณ ๋งค์ฐ ์ฐฝ์์ ์ธ ์๊ฐ์ ๋ ์ฌ๋ฆฌ๊ฒ ๋ฉ๋๋ค. Node.js์ Google Chrome ๋ธ๋ผ์ฐ์ ์ ์คํ์์ค ๋ฒ์ ์ธ Chromium์ ์์ด์ ํ์ฅ์ฑ์ด ๋ฐ์ด๋ ํ ์คํธ ์๋ํฐ๋ฅผ ๋ง๋๋ ๊ฒ์ ๋๋ค. Chromium์ ์ด๋ฏธ ๊ฑฐ์ ๋ชจ๋ OS์์ ์น ํ์ด์ง๋ฅผ ๋น ๋ฅด๊ณ ์ ์ฐํ๊ฒ ๊ทธ๋ฆด ์ ์๋ ์ต๊ณ ์์ค์ UI ๊ธฐ์ ์ ํ์ฌํ๊ณ ์์๊ณ , Node.js๋ฅผ ์ด์ฉํ๋ฉด ์ด์์ฒด์ ์ ์์์ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ด์ฉํด์ ์ฝ๊ฒ ์ ๊ทผํ ์ ์๊ณ NPM์ ์ค์ฌ์ผ๋ก ๊ตฌ์ถ๋ ์๋ฐ์คํฌ๋ฆฝํธ ์ํ๊ณ์ ์์ ๋ฌผ๋ค์ ๊ฐ์ ธ๋ค ์ธ ์ ์์์ต๋๋ค. ์ด ์กฐํฉ์ ํ ์คํธ ์๋ํฐ ํ๋๋ง ๋ง๋ค๊ณ ๊ทธ์น๊ธฐ์๋ ์๊น์ด ๊ฒ์ด์๊ณ , ํ ์คํธ ์๋ํฐ ์์๋ฅผ ์ ์ธํ Node.js + Chromium ์กฐํฉ์ด Electron์ด๋ผ๋ ์ด๋ฆ์ผ๋ก ์ถ์ ๋์์ต๋๋ค.
Electron์ ๊ฒฝ์์๋ ํฌ๊ฒ ๋ ๋ถ๋ฅ๋ก ๋๋์ด ๋ณผ ์ ์์ต๋๋ค. ํ๋๋ OS ๋ง๋ค ์ง์ ์ ๊ณตํ๋(Native) ๋ฐ์คํฌํ ์ฑ ๊ฐ๋ฐ ๋๊ตฌ์ด๋ฉฐ, ๋ค๋ฅธ ํ๋๋ ์ฌ๋ฌ OS๋ฅผ ์ง์ํ๋ ํฌ๋ก์ค ํ๋ซํผ ์ฑ ๊ฐ๋ฐ ๋๊ตฌ์ ๋๋ค.
OS๋ง๋ค ์ง์ ์ ๊ณตํ๋ ๋ฐ์คํฌํ ์ฑ ๊ฐ๋ฐ ๋๊ตฌ๋ Electron์ ๋นํด์ ์ฑ๋ฅ์ด ์ข์ต๋๋ค. ํด๋น OS์ ์ต์ ํ๋์ด ์์ผ๋ ๋น์ฐํ ์ผ์ ๋๋ค. ํ์ง๋ง Electron์ ๋จ์ด์ง๋ ์ฑ๋ฅ์ ๊ณ ๊ฐ๋ค์ด ๋ง์กฑํ ๊ฒฝ์ฐ์๋ ์ฑ๋ฅ ์ธ์ ๋ค๋ฅธ ๊ฐ์น๋ค์ด ํ๋จ ๊ธฐ์ค์ด ๋๋ฉด์ ๊ธฐ์กด ์์ฅ์ ํ๊ดด๊ฐ ์ผ์ด๋ฉ๋๋ค. OS ๋ณ๋ก ๋ฐ๋ก ์ฑ์ ๊ฐ๋ฐํ๊ณ ๊ด๋ฆฌํด์ผ ํ๋ ๋ฐ์คํฌํ ์ฑ์ ๋นํด์ Electron์ ๋๋ฆฌ ์๋ ค์ง ์น ๊ธฐ์ ์ ์ด์ฉํด์ ํ ๋ฒ๋ง ๊ฐ๋ฐ์ ํ๋ฉด ๋์์ต๋๋ค. ์ฌ์ง์ด ์น ์ฌ์ดํธ์ ๋ฐ์คํฌํ ์ฑ ์ฌ์ด์ ์ฝ๋๋ฅผ ๊ณต์ ํ๋ฉด ํ๋์ ์ฝ๋๋ก ์น์ฌ์ดํธ์ ๋ชจ๋ OS์์ ๋์ํ๋ ๋ฐ์คํฌํ ์ฑ์ ๋ง๋ค ์ ์๊ฒ ๋ ๊ฒ์ ๋๋ค. ์ด๋ Electron์ ์ด์ฉํ ๊ฒฝ์ฐ ํ์ฌ๊ฐ ๊ฐ๋ฐ ๋น์ฉ ๊ฐ์, ์์ฐ์ฑ ํฅ์, ๊ธฐ์ ํํธํ ๋ฐฉ์ง๋ฅผ ํตํ ๊ฐ๋ฐ ์์ ์ฑ ํฅ์ ๋ฑ์ ๊ฐ์น๋ฅผ ๋๋ฆด ์ ์๋๋ก ํด์ฃผ์์ต๋๋ค.
๊ธฐ์กด ํฌ๋ก์ค ํ๋ซํผ ์ฑ ๊ฐ๋ฐ ๋๊ตฌ๋ Electron์ ๋์ ํ ์ ์์์๊น์? ๊ธฐ์กด ํฌ๋ก์ค ํ๋ซํผ ์ฑ ๊ฐ๋ฐ ๋๊ตฌ๋ค์ Electron์ฒ๋ผ ์น์ฌ์ดํธ์ ์ฑ์ ์ฝ๋ ๊ณต์ ๋ฅผ ๊ฐ๋ฅํ๊ฒ ํด์ฃผ์ง ๋ชปํ๊ณ , ๊ฐ๋ฐ ํธ์์ฑ๊ณผ ๊ธฐ์ ์ ๋ฒ์ฉ์ฑ๊ณผ ๋ฑ์์๋ Electron์ ๋นํด ๋จ์ด์ก์ต๋๋ค. Electron์ ๋ฐฐํ์ ๊ฑฐ๋ํ ์น ์ํ๊ณ๊ฐ ์๋ค๋ ์ ์ ์๊ฐํด๋ณด๋ฉด ๋น์ฐํ ์ผ์ ๋๋ค.
๊ฒฐ๊ตญ Eletron์ ๋ฐ์คํฌํ ๊ฐ๋ฐ ์์ฅ์์ ๊ฒฝ์์๋ค์ ๋ฌผ๋ฆฌ์น ์ ์์๊ณ , Microsoft, Facebook, Twitch, Slack, Discord, Skype, WhatsApp ๋ฑ ํฐ ๊ท๋ชจ์ ์๋น์ค๋ค์ด Electron์ ๊ธฐ๋ฐ์ผ๋ก ๋ฐ์คํฌํ ์ฑ์ ์ ์ํ๊ฒ ๋์์ต๋๋ค.
์ ๋ฆฌํ๊ธฐ - ์๋ฐ์คํฌ๋ฆฝํธ์ ํ์ฌ ์์
์ด์์ ๋ ผ์๋ฅผ ์ ๋ฆฌํด๋ณด๊ฒ ์ต๋๋ค. ์๋ฐ์คํฌ๋ฆฝํธ๋ ์น ๋ธ๋ผ์ฐ์ ๋ด์ฅ ์คํฌ๋ฆฝํธ๋ผ๋ ๋ ํนํ ํฌ์ง์ ์ ๊ฐ์ง๊ณ ์์ํ์ต๋๋ค. ๊ทธ ํ 20๋ ์ด์์ ์๊ฐ ๋์ ์๋ง์ ๋์ ์ ๋ฐ์์ง๋ง ๊ฒฐ๊ตญ ์นํ์ด์ง๋ ์๋ฐ์คํฌ๋ฆฝํธ๋ก ๊ฐ๋ฐํด์ผ ํ๋ค๋ ๋ ์ ์ ์ธ ์ง์๋ฅผ ์ป์์ต๋๋ค. ๊ทธ ์ฌ์ด ์ด๊ธฐ์ ๋จ์ํ๊ณ ์ฌ์ด ์ธ์ด๋ผ๋ ๊ฐ์น๋ ์ ์งํ์ฑ ๋น๋๊ธฐ์ ์ธ ์ฝ๋ ์์ฑ์ ์ฉ์ด์ฑ, ๊ถํฉ์ด ๋ง๋ ๊ฐ๋ ฅํ UI ๊ธฐ์ ํ๋ณด ๋ฑ์ ์ถ๊ฐ์ ์ธ ๊ฐ์น๋ฅผ ํ๋ณดํ์ต๋๋ค.
์ด๋ฐ ๊ฐ์ ์ ๋ฐํ์ผ๋ก ์๋ฐ์คํฌ๋ฆฝํธ๋ ์๋ฒ ๊ฐ๋ฐ ๋ถ์ผ์ ๋ฐ์คํฌํ ์ฑ ๊ฐ๋ฐ ๋ถ์ผ์ ์ง์ถํ์ต๋๋ค. ์๋ฒ ๊ฐ๋ฐ ๋ถ์ผ์์๋ ๋น์ ์ต์ ๊ฐ๋ฐ ํธ๋ ๋๋ฅผ ํฌ์ฐฉํ์ฌ ์์ฅ์ ์ง์ ํ ๋ค ์ํฅ๋ ฅ์ ๋ํ๊ณ , ๋ฐ์คํฌํ ์ฑ ๊ฐ๋ฐ ๋ถ์ผ์์๋ ์๋์ ์ธ ํธํ์ฑ๊ณผ ์์ฐ์ฑ์ผ๋ก ์์ฅ์ ์ง์ ํ์๋ง์ ๋น์์ ์ฃผ๋ฅ ๊ธฐ์ ๋ค์ ์๋ํ ์ ์์์ต๋๋ค.
๊ฒฐ๊ตญ ์น ๋ธ๋ผ์ฐ์ ๋ผ๋ ๋ณธ์ง์ ํํํ ์งํค๊ณ ํ๊ดด์ ํ์ ์ ๋ฐฉ๋ฒ์ผ๋ก ์๋ฒ์ ๋ฐ์คํฌํ ๋ฑ์ ์ ๊ท ์์ฅ์์ ์๋นํ ์ ์ ์จ์ ํ๋ณดํ ๊ฒฐ๊ณผ ์๋ฐ์คํฌ๋ฆฝํธ๋ ์ธ๊ณ์ ์ผ๋ก ๊ฐ์ฅ ์ธ๊ธฐ์๋ ์ธ์ด๊ฐ ๋ ์ ์์์ต๋๋ค.
์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ํ๊ดด๋ ๊ฐ๋ฅ์ฑ
ํ๊ดด์ ํ์ ์ด๋ก ์ด ์ฃผ๋ ๋ ๋ค๋ฅธ ๊ฐ๋ฅด์นจ์ ํ์ฌ์ ์์ฅ ์ง๋ฐฐ์ ์ธ ๊ธฐ์ ๊ณผ ์ ๋ฉด ๋๊ฒฐ์ ํด์๋ ์น์ฐ์ด ์๋ค๋ ๊ฒ์ ๋๋ค. ์ฆ ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ์ด๋ฏธ ๋์ธ๊ฐ ๋ ์์ญ์์ ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ํ๋ ์ผ์ ๋ ์ํด์ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ถ์ํ๊ธฐ๋ ์ด๋ ต์ต๋๋ค. ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ํ๊ดด์ ํ์ ์ ๋ฐฉ๋ฒ์ผ๋ก ์ด๊ธฐ๊ธฐ ์ํด์๋ ๋ค์์ ์๋๋ฆฌ์ค๋ฅผ ๋ฐ๋ผ๊ฐ ๊ฒ ๊ฐ์ต๋๋ค.
- ์๋ฐ์คํฌ๋ฆฝํธ๋ณด๋ค ์ฑ๋ฅ์ ๋จ์ด์ง์ง๋ง ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ๊ฐ์ง ๋ชปํ ์ฅ์ ์ ๊ฐ์ง ํ๊ดด์ ๊ธฐ์ ์ด ๋ฑ์ฅํ๋ค
- ์ด ํ๊ดด์ ๊ธฐ์ ์ด ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ์ฌ์ฉ๋์ง ์๋ ์์ฅ(๋ก์ฐ ์๋ ์์ฅ์ด๋ ์ ๊ท์์ฅ)์์ ๊ณ ๊ฐ์ ๋ง๋ค๋ฉด์ ๋ฐ์ ํ๋ค
- ์ด ํ๊ดด์ ๊ธฐ์ ์ ์ฑ๋ฅ์ด ์๋ฐ์คํฌ๋ฆฝํธ๋ณด๋ค๋ ๋จ์ด์ง์ง๋ง ๊ณ ๊ฐ์ด ๋ง์กฑํ ๋งํ ์์ค์ด ๋์์ ๋ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ๋์ฒดํ๊ธฐ ์์ํ๋ค
์ ๋ ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ๋ค๋ฅธ ์ธ์ด์ ์ํด ๋ํ๋๊ธฐ๋ ์ฝ์ง ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ธ์ด ๋ฌธ๋ฒ ๋ ๋ฒจ์์๋ ๊ณ์ ๋ฐ์ ์ ํ๊ณ ์๊ณ , ๋ธ๋ผ์ฐ์ ๊ฒฝ์์ด ์กด์ฌํ๋ ์ด์ ์์ง์ ์ฑ๋ฅ์ ๊ณ์ ์ข์์ง ๊ฒ์ ๋๋ค. ๋ง๋ ํ ๊ฒฝ์์๋ ์ ๋ณด์ด์ง ์์ต๋๋ค. ๊ตณ์ด ๊ณ ๋ฅด์๋ฉด ๋ชจ๋ฐ์ผ ์ฑ ํฌ๋ก์คํ๋ซํผ ๊ฐ๋ฐ ํ๊ฒฝ Flutter์์ ์ฌ์ฉํ๋ Dart๋ฅผ ๋ค ์ ์์ ๊ฒ ๊ฐ์ต๋๋ค. ํ์ง๋ง Dart๊ฐ ์ง์ ํ๊ณ ํ๋ ์์ฅ(ํฌ๋ก์คํ๋ซํผ ๊ฐ๋ฐ)์ ์ ๊ท์์ฅ์ด๋ผ๋๊ฐ ๋ก์ฐ ์๋ ์์ฅ์ด๋ผ๋ ์ด์ ๋ก ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ๋ฌด์ํ๋ ์ข ๋ฅ์ ์์ฅ์ด ์๋๊ธฐ ๋๋ฌธ์ Dart๋ก ์ธํ ํ๊ดด์ ํ์ ์ด ์ผ์ด๋๊ธฐ ์ข์ ์ํฉ์ ์๋๋๋ค.
์ ๋ ์คํ๋ ค Wix, Shopify์ ๊ฐ์ ์นํ์ด์ง ๋น๋, Airtable๊ณผ ๊ฐ์ ๋น๊ฐ๋ฐ์๋ ์ฌ์ฉํ๊ธฐ ์ฌ์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค, Typeform๊ณผ ๊ฐ์ ์ค๋ฌธ ์๋น์ค ๋ฑ์ ์น์๋น์ค๋ค์ด ๊ฐ์์ ์ ๋ฌธ ๋ถ์ผ์์ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ๋์ฒดํ ์๋ ์๋ค๊ณ ๋ด ๋๋ค. ์ด๋ คํ ์๋น์ค๋ค์ด ์ ๊ณตํ๋ ๊ธฐ๋ฅ์ ๊ฐ๋ฐ์๋ค์ด ํ๋ก๊ทธ๋๋ฐ์ ํด์ ๊ตฌํํ ์ ์๋ ๊ธฐ๋ฅ์ ๋นํด ์์ค์ด ๋ฎ์ง๋ง, ์ด์ฉํ๊ธฐ ์ฝ๊ณ ์ฌ์ฉ๋ฃ๋ ๊ฐ๋ฐ์๋ฅผ ๊ณ ์ฉํ๋ ๋น์ฉ์ ๋นํด์๋ ํจ์ฌ ์๋๋ค. ๊ฐ๋ฐ์๋ค์ด ๋ณด๊ธฐ์ ์ด๋ฌํ ์๋น์ค๋ค์ด ์ ๊ณตํ๋ ๊ธฐ๋ฅ์ ์์ค์ด ๋จ์ด์ ธ์ ์ํ์ผ๋ก ๋๋ผ์ง ์์ ์๋ ์์ง๋ง, ๋ฏธ๋๋ ์ด๋ป๊ฒ ๋ ์ง ๋ชจ๋ฅด๋ ์ผ์ ๋๋ค. ์ค์ ์๋๋ฆฌ์ค๋ฅผ ์์ํด๋ณด๋ฉด ์ด๋ ์ต๋๋ค.
๋ง์ผํฐ๊ฐ ๊ฐ๋ฐ์์๊ฒ ์๋ก์ด ์๋น์ค์ ๋ ๋ฉ ํ์ด์ง๋ฅผ ๊ฐ๋ฐ์ ๋ถํํ๋ฉด ๊ฐ๋ฐ์๋ (๋ง์ผํฐ ์ ์ฅ์์๋ ์์ด๋ ์ข์) ์ ๊ธฐ๋ฅ๋ค์ ์นํ์ด์ง์ ๋ด๊ฒ ๋ค๊ณ ์ด์๋ฅผ ๋ณด์ด์ง๋ง ์์ ์๊ฐ์ ๋ ์ค๋ ๊ฑธ๋ฆฝ๋๋ค. ๋ง์ผํฐ๋ ๊ฐ๋ฐ์๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ค ์ง์ณ์ ์น์ฌ์ดํธ ๋น๋ ์๋น์ค๋ฅผ ์ด์ฉํด์ ๋ ๋ฉ ํ์ด์ง๋ฅผ ๋ง๋ค์ด์ ๋ฐ๋ก ๋ฐฐํฌํ์ต๋๋ค. ํ๋ฒ ์จ๋ณด๋๊น ๊ฒฐ๊ณผ๋ฌผ์ด ์์ฃผ ์์์ง ์์๋ ์๊ฐ๋ณด๋ค ์ธ๋งํ๊ณ , ์์ ์๋ ๊ฐ๋ฐ์์๊ฒ ๋ถํํด์ผ ํ๋ ์ธ๋ถ ์๋น์ค ์ฐ๋๋ ๋ฒํผ์ ๋ช ๋ฒ ํด๋ฆญํ๋ ๊ฒ๋ง์ผ๋ก ์๋ฃํ ์ ์์์ต๋๋ค. ์น์ฌ์ดํธ ๋น๋์ ๋ง์กฑํ ๋ง์ผํฐ๋ ์ดํ ์นํ์ด์ง ๊ด๋ฆฌ ์์ ์ ๊ฐ๋ฐ์์๊ฒ ๋ถํํ์ง ์๊ณ ์ง์ ๊ด๋ฆฌํ๊ฒ ๋์์ต๋๋ค. ๊ฐ๋ฐ์๋ ๋ค๋ฅธ ์ค์ํ ์ผ๋ค์ ํ๋๋ผ ๋ฐ๋น ์ ๋ง์ผํฐ์ ์์ฒญ์ด ์์ด์ง ์ฌ์ค์กฐ์ฐจ ๋ชจ๋ฅด๊ณ ์์ต๋๋ค.
์ด๋ ๊ฒ ์กฐ์ฉํ๊ฒ ํ๊ดด์ ํ์ ์ผ์ด๋๊ณ ์์์ง๋ ๋ชจ๋ฆ ๋๋ค.
'...' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Jenkins] ์๋ฒ ๋ด Jenkins(์ ํจ์ค) ์ค์นํ๊ธฐ (0) | 2021.08.11 |
---|---|
[Tomcat] ์๋ฒ ๋ด tomcat ์ค์นํ๊ธฐ (0) | 2021.08.11 |
[Jenkins] ์ ํจ์ค + SVN+ ๋ฉ์ด๋ธ+์คํ๋ง์ ์ด์ฉํ์ฌ ๋น๋์ ๊ณผ ์๋๋ฐฐํฌ ํ๊ธฐ (6) | 2021.08.09 |
[Linux] yum, apt-get ์ฐจ์ด (0) | 2021.07.30 |
[Linux] wget, curl ์ฐจ์ด (0) | 2021.07.30 |