자스의 대세는 누가 되는가?

§

앞으로 가장 유망한 프로그래밍 언어 중 하나로 지목되는 언어는 자스 (javascript) 이고, 그래서 페북과 구글, 마소 등은 이 자스에서의 위치를 선점하고 우위를 차지하려고 불티나는 싸움을 벌이고 있습니다.

많은 분들이 미래의 자스라면 react vs. 앙 (angular) 아니냐? 라고 생각하실 수 있는데, 저는 그렇게 생각하지 않습니다.

* “앙은 프레임워크고, react 은 UI library 인데 이 둘은 비교대상이 아니잖아.” 라고 하실분도 계실 듯 한데, 실제 사용되는 유형을 보면 비교대상이 맞습니다.

비(非) front-end 개발자분들을 위해서 react.js 를 간략하게 설명하자면. (의외로 react 에 대한 간단명료한 설명이 웹에 존재하지 않더라구요.)

React 의 철학

structure (구조) 보다는 function (기능) 이 우선이야. 자스 (javascript) 와 css, 그리고 html 을 JSX 라는 이름으로 개밥처럼 섞어서 이걸 자스 중심적인 모듈로 웹에 뿌려줘야 해.

*페북의 철학이라기 보다는 React 창시자 Jordan Walke 의 신념이라고 보시면 됩니다.


var Letter = React.createClass({
render: function() {
var letterStyle = {
padding: 10,
margin: 10,
backgroundColor: "#ffde00",
color: "#333",
display: "inline-block",
fontFamily: "monospace",
fontSize: "32",
textAlign: "center"
};
return (
<div>
{this.props.children}
</div>
);
}
});

문서가 html 과 css 위주인 경우, 이런 형태의 자스 중심 마크업은 생산성이 급격하게 낮아질 수 밖에 없습니다.

Angular 의 철학

자스 (javascript) 와 html 은 명확하게 구분이 되어야 해. 뭐니뭐니 해도 architecture 가 중요한거고, 획일화 된 기반에서 일괄적인 자스가 웹에 적용되야하는거야. css 와 html, js 를 구분해서 작성하던 front-ender 들이 Angular 를 선호하는 가장 큰 이유 중 하나 입니다.

이렇게 react 과 angular 의 철학은 서로 매우 다릅니다.

그리고 현재 자스 생태계는 이렇게 react 과 angular 로 양분화 된듯 보입니다.

페북 제국 (React) vs. 구글 + 마소 연합 (Angular)

이런식으로.

그런데 어떤 언어나 framework 가 꼭 대기업에서 밀어댄다고 성공하는 건 아닙니다.

마소가 세상을 지배하던 시절에 마소가 밀던 asp (에이18) 이 지금 어떻게 되었죠?

이래서 Vue.js 에 주목할 필요가 있습니다.

Vue.js

Vue.js 는 구글에 있던 Evan You 가 Angular 의 철학을 따르지만, Angular 의 단점을 보안하고 react.js 의 장점을 답습해 개발한 자스 프레임워크 입니다. (Evan You 가 대만계인지, 본토계 중국인인지는 잘 모르겠지만, 중국어로 글도 쓰고 그러더라구요.)

minimalism, 낮은 학습커브, angular 가 주지 않는 자유도 가 Vue.js 의 특징 입니다.

개인적으로 vue.js 가 성공한다고 보는 이유가.

1. 정확하고 상세한 documentation (워드프레스와 jQuery 의 특징이기도 하죠.)

2. 낮은 학습커브 (배우고 싶은 만큼만, 내수준에 맞는 정도까지만 배워서 활용할 수 있습니다.)

3. 개발의 아쉬운 점을 콕콕 찝어주는 해결안

4. 마지막으로 React 이나 Angular 에 비해 무시무시하게 빠른 속도

등을 들 수 있습니다.

좀더 상세한 내용은 이 글을 참조하실 수 있습니다.

Top 7 reasons to try Vue.js in 2016

현재 누가 Vue.js 를 사용하는가?

GitLab (Github 에 위협적인 경쟁상대로 떠오른, 요즘 매우 hot 한 회사 입니다.)
Alibaba
Baidu
Sina Weibo
Xiaomi
라라벨

라라벨의 경우 라라벨에 vue.js 가 번들되어 나옵니다. (라라벨은 현재 php 를 대표하는 프레임워크 입니다. Symfony 는 요즘 어떤 상황인지, 많이 죽었더라구요.)

제가 이글을 작년 가을에 써놓고 공개하지 않았던 이유는, Vue.js 에 대한 확신이 없었기 때문입니다. ^^;;;

그런데 최근 front-end 개발자들을 상대로 한 설문조사를 하나 접하게 되었습니다. 천여명 정도 밖에 되지않는 front-ender 들을 상대로 한 설문조사라 정확도가 조금 떨어질 수 있지만, 대체적으로 현재 javascript 제품들에 대한 사용도를 정확하게 보여주고 있다고 생각합니다.

현재 가장 많이 사용되고 있는 제품은 jQuery 입니다. 무려 70%에 가까운 점유율.
후발주자임에도 페북의 적극적인 마케팅에 힘입은 React 이 37% 정도 되는 점유율을 보여주고, 앙2로 개판이 되버린 Angular 가 앙1 과 앙2 합쳐서 React 과 비슷한 수준의 점유율를 유지하고 있습니다.

그런데 여기서 주목해야할 통계는 바로 Vue.js 의 10% 에 근접하는 점유율 입니다. 작년 초까지도 Vue.js 에 관해 들어본 개발자도 몇명 없었을 정도로 Vue.js 는 아무런 마케팅도 없이 순수히 word of mouth, 개발자들 사이에 입에서 입으로 전해져서 이만큼 성장 한 것 입니다. 대대적인 마케팅을 벌인 Angular 2 보다도 더 점유율이 높습니다.

이래서 Vue.js 는 앞으로 jQuery 만큼 대중적인 솔루션이 될거라는 얘기도 나옵니다.


번외

Riot.js 는 web components (웹컴포넨트)를 쉽게 사용할 수 있게 해주는 UI 라이브러리 입니다. (abstraction 이라고 할 수 도 있습니다. 웹컴포넨트를 위한 jQuery 같은거다 라고 이해하시면 됩니다.)

React.js 를 보고, ‘아… 이건 개밥같잖아’ 라고 느낀 사람들이 만든 제품이고, 일본의 유명한 자스 개발자/ 오픈소스 협회 회장/ 사업가인 Tsutomu Kawamura 가 주도하고 있습니다.

당근 일본에서 가장 활발한 개발이 이뤄지고 있습니다. 특히 워드프레스와 연동구축이 일본에서 많이 이뤄졌는데, Riot.js 는 기술력이 많이 딸리는 경향을 보여서, 앞으로 어떻게 될지는 잘 모르겠습니다.

Back-end 에서의 자스는?

개인적으로 조금 비관적 입니다. node.js 환경에서의 자스는 concurrency, 빠른 속도, microservices 등에서 강점/메리트가 있다고 선전해왔는데, 이 node.js 의 강점으로 여겨지던 분야에서 요즘 Go (golang) 에게 영혼까지 탈탈 털리고 있는 상황이라….

또 학습커브도 무시할 수 없는데, Go 는 server-side 자스 보다 배우기가 더 쉽습니다. 일단 자스는 callback hell 어쩔?… 자스는 파고 들어 갈수록, “Javascript is easy to learn, impossible to master.” 라는 격언을 실감하게 됩니다. ㅠㅠㅠㅠ

node.js 의 태생적인 한계에 대해 너무나도 잘 설명하고 있는 이 글은 node.js 개발을 고려하는 분이시라면 꼭 한번 읽어보시길 바랍니다.

https://medium.com/@theflapjack103/the-way-of-the-gopher-6693db15ae1f#.bko7cbks4

마지막으로 Go, 파이썬, Ruby (RoR), php… 이 모든 언어들은 MySql/MariaDB 와 자연스럽게 연동이 되고 연동이 쉽습니다. 반면 자스의 경우 현실적으로 MongoDB 써야 합니다. 물론 MySql 같은 relational DB 가 MongoDB 보다 더 우월하다, 절대 그런 얘기는 아닙니다. 하지만 대중적이고 사용기반이 넓어 기존 ready-made/off the shelf 솔루션이 존재한다는 것은 큰 잇점 입니다.

이런 여러가지 이유로 저는 server-side 쪽에서의 자스 미래는 그리 밝지 않다고 생각하는 것 입니다. Felix Geisendörfer, TJ (TJ Holowaychuk) 등 node.js 캠프에서 핵심역활을 하던 똑똑한 개발자/기여자들이 대거 golang 으로 이전해 간 것만 봐도 node.js environment 의 미래가 밝아 보이지만은 않습니다.

Ω