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

§

앞으로 가장 유망한 프로그래밍 언어 중 하나로 지목되는 언어는 자스 (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 의 미래가 밝아 보이지만은 않습니다.

Tags: , , , ,

카테고리: , ,

Ω
  • codei

    nodejs 사이드의 놀라운 부분은 그겁니다.
    npm 은 nodejs에 의존할 수 밖에 없습니다.
    당연하죠. Node Package Modules 인데요! ㅋㅋㅋ
    그런데 놀라운건 npm 버전과 nodejs 빌드의 버전 관리가 각자 따로 놀고 있다는 겁니다.
    [이래서 안돼. 저래서 안돼. 투덜투덜…]

    이부분에서 이미 할말 다 한거 같단 생각이 들더군요.

    반면 go lang은 프레임워크를 사용할 필요가 없다고 할 정도.
    자체적으로 제공하는 package만 써도 충분 하다는 여론이라서 말이죠.

    사실 전 go lang이 일반적인 asp php ruby jsp 기타 등등의 대체 언어라고는 생각 들지 않습니다.

    go의 주력은 restful api 구현이라 생각 합니다.
    go로 기존의 back-end 구축 하듯이 구축 하는것은 좀 무의미라고 할까…
    [오해가 있을 수 있는데 가령.. php로 만든 사이트를 go로 바꿔서 똑같이 만드는것은 큰 의미가 없다는 이야기. go의 장점을 살려야죠.]

    사실 어떤 액션[반응]에 따라서 UI가 변해가는 역할은 결국 JS가 합니다.
    node로 무언가를 만들면 back end 통신과 UI 변경의 몰아일체!
    그 탁월한 성능과 편리성을 보면 반할만한 존재는 분명 합니다.
    그럼에도 헤쳐나가야 할 일이 너무 많아서…

    react는 저도 짬밥 소스 참 좋아하는 편인데… 대놓고 섞으라고 하면 더 하기 싫… 응?

    • http://hackya.com Matthew

      Golang 은 시스템 언어로 개발되었음에도 불구하고 학습커브가 낮고 생산성이 높다보니 golang 을 마치 php 나 jsp, 루비 같은 스크립팅 언어처럼도 쓰여지고 있는게 현실 입니다. ㅋㅋㅋ

      사실 워드프레스 입장에서는 웃을일이 아닌게 완성도가 무지 높은 블로깅 제품이 벌써 여러개 출시 되었고, CMS 도 꽤 완성도 높은 제품들이 개발되고 있습니다.

      서버쪽 서비스 언어로도 탁월한 선택이지만, 스트립팅 언어로도 무리가 없는거죠.

      Golang 의 우수성/탁월함은, (제 수준에서 이해할 수 있는 경우는) 루비로 짜여진 Jekyll 과 golang 으로 짜여진 Hugo 를 비교해 보면 알 수 있습니다. Jekyll 에 비해 Hugo 가 무려 수십배 더 빠르다고 하던가, 암튼 Hugo 만 봐도 golang 이 얼마나 우수한 언어인지 알수 있겠더라구요.

      node.js 는, 제가 DB 에 관해 전혀 모르는 사람이지만, 서버 개발자들끼리 논의를 벌이는 글을 읽고 node.js 에서 등을 돌리게 되었습니다.

      DB 는 99.99% 정확하다고 실섭에서 사용할 수 있는게 아니야. 단 0.01% 라도 데이터가 씹히는 경우가 발생하면 사용하면 안되는거야.

      node.js 의 어떤 프레임워크 (아마 Express + MongoDB 였던 걸로 기억) 에서 이런 데이터가 씹히는 문제가 발생하던데, 저 역시 이건 큰 문제라는 생각이 들었거든요.

      물건을 천번 팔았는데 한번은 판매기록이 누락되어 transaction 이 이뤄지지 않는… 이런 문제가 node.js 에서 빈번하게 일어나는 듯 했습니다. 와,.. 이건 아니지 싶은 생각이 들어서 저는 node.js 에서 등을 돌리게 되었습니다.

      솔직히 저같은 짜집퍼에 가까운 개발자들은 기존 솔루션에 많이 의지하는 개발을 할수 밖에 없는데 (이래서 스타트업들이 RoR 을 선호하죠. 직접 build 를 전혀 하지 않아도 gem 만 가져다가 솔루션이 구축될 수 있으니까) 완성도가 높은 제품이 존재하지 않는 node.js 환경은, 저 같은 사람에게 좋은 선택이 될수가 없기도 합니다.

      • codei

        그렇죠. 대세는 이제 가져다 쓰기 이지, 백지 캔버스에 처음부터 밑바탕 그리기 시작 하는 방법은 비 효율적입니다.
        [코어 와 패턴 제작은 일부 전문가에게 맡깁시다.]

        node 에서 db 데이터 씹히는 것에 대해서 방지법이 제시되고 있는 것으로 알고 있습니다.
        개념이 좀 신박 하긴 한데, 결론만 보면 트랜잭션이 제대로 안되서 하는 행동이라는 것과 db를 이원화 해서 다룬다는 것.

        사실 대용량 DB 처리 개념으로 보면 아주 틀린 접근 방식은 아닙니다만, 그럼에도 불안정 하다는 딱지는 불안하죠.

        요즘 랭귀지 투어(?) 중입니다만, [A18 JAVA PHP 제외]
        그나마 눈이 가는게 ruby 긴 하더군요.
        [굳이 분류하면 RoR. gem 만 있으면 우린 최고야~]

        python 은 버전 관리가 안되어 있다는 느낌이 강하더군요.

        논점에서 벗어났는데 ㅋㅋㅋ

        리액트 vs 앙 대결이라면 전 리액트에 한표. 오직 UI VIEW 대결이라면.
        토탈 기능이라면 앙에 한표.

        • http://hackya.com Matthew

          “RoR. gem 만 있으면 우린 최고야~” – 에이.. RoR 하는 개발자들 중 ego 나 존심 강한 사람은 없더라구요.

          또 원래 프로그래머/개발자 출신이 아닌, 자기 사업하려고 RoR 배운 사람들도 많아서 그런지 무지 친철하고. (그게 아니면 다들 먹고 사는게 널널해서 까탈스러운 사람들이 없는지도.)

          “RoR/우리가 최고야.” 같은 멘탈 갖고 있거나 배타적인 사람은 없는 듯 합니다.

          “코어 와 패턴 제작은 일부 전문가에게 맡깁시다.” – 다른 말로 “Do not reinvent the wheel.” 라는 표현을 씁니다.

          그런데 애초부터 바퀴를 발명할 능력조차 없는건 안자랑. ㅋㅋㅋㅋ

          “요즘 랭귀지 투어(?) 중입니다만” – 부럽습니다. 저는 지금 테마짜고 있어요. ㅠㅠㅠㅠ

          저도 공부나 하고 있으면 참 좋겠습니다.

          오늘 뉴스 보니까 텍사스에 90이 훌쩍 넘은 교수 한분 (이분이 원래 리튬건전기 발명가라네요. 그런데 일본 학생들이 이 교수분 밑에서 공부하다 이분의 연구내용을 들고 일본으로 튀었다고..) 이 solid state battery 를 발명했다는 내용이었습니다.

          배터리 용량은 현재 리튬배터리보다 3배이상 높고, 충전은 테슬라 자동차 배터리 정도의 capacity 가 몇분만에 되고.

          발명내용도 대단하지만, 90이 훌쩍 넘도록 R&D 를 하고 계시다는게 더 놀랍고 부러웠습니다.

  • http://est0que.tistory.com/ Estoque

    “Javascript is easy to learn, impossible to master.” 가슴에 사무치는 말이군요 ㅋㅋ

    분명 기초과정은 다 밟았는데 실전에 가니 ‘이게 뭔 소리래’ 이런느낌 ㄷㄷㄷ