앞으로 가장 유망한 프로그래밍 언어 중 하나로 지목되는 언어는 자스 (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 의 미래가 밝아 보이지만은 않습니다.
출처 : https://hackya.com/kr/자스의-대세는-누가-되는가/
'프로그래밍 > ETC...' 카테고리의 다른 글
IaaS, PaaS, SaaS란 (0) | 2018.05.23 |
---|---|
RESTful API Service Best Practices (0) | 2018.04.20 |
REST(Representational State Transfer), RESTful 개념 (0) | 2018.02.19 |
코딩 테스트 연습할 곳 (0) | 2018.01.27 |
GPL·AGPL·MPL…한눈에 보는 오픈소스SW 라이선스 (0) | 2018.01.21 |