현 시대의 웹을 지탱하는 기술, JavaScript에 대하여

Posted by 슈퍼너드 리보
2020. 4. 30. 10:03 IT&컴퓨터/IT 뉴스
반응형


1. 자바스크립트란?


 



자바스크립트(JavaScript)의 현재의 진짜 이름은 ECMAScript입니다.(보통 에크마스크립트라고 읽습니다)

브랜단 아이히(Brendan Eich)라는 넷츠케이프에서 일하던 개발자가 만든 언어이며, 원래 처음에 경영자들에 의해 정해진 이름은 모카(Mocha)였습니다.

개발 이후 Netscape 2.0에 처음 구현되어 들어갔을 때는 LiveScript라는 이름으로 탑재하였으며, 이후 Sun Microsystems, Inc(자바 만든 회사)에 라이선스를 받아 자바스크립트(JavaScript)라는 이름을 빌려 쓰게 됩니다.(자바의 유명세에 무임승차하려고.... )


(꼬꼬마들을 위한 참고: Netscape는 예전에 쓰던 인터넷 웹 브라우저이자 회사 이름이였습니다..)


자바스크립트의 현재 이름이 에크마스크립트인 이유는, 최초 개발자(브랜단)이 10일만에 개발한(...) 허접한 JavaScript 언어가 부실한 점이 많고, JScript(M$에서 만든 변종 자바스크립트 구현체)등 변종 언어들이 속속들이 등장함에 따라, 이후 Netscape에서 산업 표준을 제정하기 위해 ECMA(유럽 사설 표준 제정 기구)에 제출하여 그와 같은 이름을 얻게 되었습니다.

(참고로 말하면 자바스크립트 개발자도 자바스크립트를 깝니다... 본인도 잘못만들었다라고 시인합니다 -,.- 나쁜놈 순위 1. 본인 2. 넷츠케이프 3. 자바)

 



2. 나온 배경 및 발달(지루하니 스킵해도 됨)

왜 자바스크립트라는 기술이 나온 것이며, 현재는 왜 이렇게 많이 쓰이고 있는지 알려면,

일단 먼저 우리가 사용하고 있는 인터넷이 어떻게 동작하는 지 부터 알아볼 필요가 있습니다.

월드 와이드 웹(WWW)은 원래 문서 탐색 시스템이였습니다. 단순히 열람 용도 였으며, 현재와 같이 게시판이 존재하고 게임이 존재하는 것처럼 사용자의 입력에 반응하는 시스템이 아니었습니다.

하이퍼 텍스트 문서(HTML)을 전송하기 위한 전송 규약인 HTTP는 기본적으로는 단순히 서버/클라이언트가 HTML 문서를 주고받는데서 그칩니다.(맨날 주소칠때 http:// 붙히잖아요?)

한마디로 단순한 파일 다운로드/업로드만 하는 것인데, 어떻게 우리는 게시물을 입력할 수 있고 댓글을 입력할 수 있는 것일까요?

당시에 속속들이 등장했던 동적 웹 페이지(Dynamic web page) 기술에 해답이 있습니다.


기존의 정적 웹 페이지(Static web page)는 아래와 같은 순서로 사용자에게 문서(웹 페이지)를 전달합니다.



사용자가 서버에 해당 파일을 요청함 ----> 서버가 해당 파일(HTML 등)을 읽어들임 ----> 사용자에게 서버가 전송함 ---> 브라우저가 HTML 문서를 해석함


일방적으로 특정한 자원(파일 등)을 요청하고 결과값을 받는 형식이였던 기존 방식에 비해 동적 웹 페이지는 특점 시점에서 해석이라는 부분을 추가 합니다.

어떠한 시점이냐에 따라서 클라이언트 사이드 스크립팅/서버 사이드 스크립팅으로 나눕니다.


- 클라이언트 사이드 스크립팅: 사용자가 서버에 해당 파일을 요청함 ----> 서버가 해당 파일(HTML 등)을 읽어들임 ----> 사용자에게 서버가 전송함 ---> 브라우저가 HTML 문서를 해석함 ---> 스크립트를 실행함(i.e. 자바스크립트)

- 서버 사이드 스크립팅: 사용자가 서버에 해당 파일을 요청함 ----> 사용자가 어떤 동작을 했는지 분석 후, 이 후 사용자에게 HTML을 생성함 ----> 서버가 해당 파일(HTML 등)을 읽어들임 ----> 사용자에게 서버가 전송함 ---> 브라우저가 HTML 문서를 해석함


위의 2가지 방식이 있으며, 최초에 고안된 JavaScript는 Netscape 브라우저에서 전자(Client-side scripting)을 위한 언어로서 고안되었습니다.


처음에는 괴랄한 장난감으로 취급받으며 그렇게 각광받지 못하다가, (자바스크립트로 모든 것을 만들기에는 한계점이 많았습니다. 또한 코드가 노출되는 부분도 서비스를 개발하는 회사 입장에서도 달갑지 않았습니다)

2000년대 초중반쯤 RIA(Rich Internet Application) 기술이 급부상하면서 다른 기술들과 어깨를 나란히 하게 되었습니다. (그냥 뭐.. 웹사이트 삐까뻔쩍하게 만드는 기술.. 여러가지 기능도 있고.. 뽀대나게...)

우리가 알고있는 어도비 플래시, 실버라이트, ActiveX 같은 것들이 RIA 기술에 속합니다.


jQuery 등 편리하게 JavaScript를 사용할 수 있는 라이브러리/프레임워크들이 등장하면서 많은 사용자들을 모았고,

그리고 또 HTML5가 등장하면서 다른 RIA 기술들을 씹바르면서 다시 급부상하고 있습니다.



3. 웹앱


비전공자들한테 웹앱이라는 말이 어색할 것 같습니다. 한마디로 웹으로 만든 앱입니다. (단, 이 단어는 모바일에만 국한되지는 않는다) 

생각보다 앱스토어 플레이 등 들어가보면 웹으로 구현된 앱들이 꽤 있습니다. (한마디로, 앱 틀면 달랑 브라우저 하나 뜬다는 소리... 하지만 보이는 건 앱처럼 보임. 오늘부터 잘 찾아봐라... 앱을 쓰다보면 어쩐지 알 수 있음...)


RIA 기술이 흥한 이후에도 모바일/HTML 시장특수를 받으며 웹앱이라는 새로운 키워드로 자바스크립트는 승승장구를 이어갑니다.


MVC 등 기술들을 도입하며 브라우저에서 대부분의 기능들을 구현하고 서버는 단지 데이터를 제공하고 저장해주는 대상으로 동작합니다. (일반적으로 서버 부하 내려감)

단순히 비전공자에게 설명하자면: 기존에 단순히 HTML에만 의존하던 웹 사이트 개발 방식과 달리, 실제 클라이언트 응용 프로그램을 만들 듯이 더 견고하게 만들고, 서버의 의존을 줄이는 개발 방법을 말합니다.


기존에 각각 운영체제/기기에 대응하는 모든 앱들을 개발하는게 아니고, 달랑 모바일 웹앱 사이트만 만들면 모든 운영체제(애플iOS/안드로이드 등)를 포괄할 수 있는 상당히 경제적인 선택이였으므로, 규모가 크지않은 앱들은 많이 이 방법을 선택했습니다.


그리고 이러한 분위기 속에서 많은 라이브러리/프레임워크들이 쏟아져나왔습니다.

jQuery Mobile, Meteor, Ember.js, Angular.js 등등....


대표적인 웹 어플리케이션으로는  Gmail 웹 사이트, 트렐로

그리고 우리가 알고 있는 대다수 모바일 웹앱들...

 






4. 서버 사이드 언어로서의 JavaScript


브라우저에서 해석되는 기존 자바스크립트와는 달리, 서버를 개발하기 위하여 사용되는 자바스크립트가 최근 인기입니다. Node.js다. Node.js는 구글이 지네들 브라우저(크롬)에 쓸라고 만든 자바스크립트 엔진인 V8을 업어다가 쪼금 이것저것붙혀가지고 내놓은 날로먹은 프로젝트다.

솔직히 마케팅으로 떴다고 과언이 아닐만큼 좀 뭔가 갑작스럽습니다.

그전에도 CommonJS, SpiderMonkey 등으로 서버 사이드 언어로서의 JavaScript 시도를 많이 했었습니다. (애초에 Netscape도 이거 만들자 마자 SSJS(Server-side JavaScript)라는 거 만들었었음.... 하지만 좆망ㅋ)


여튼 줄이면 V8 엔진+이벤트 드리븐 성능팔이 성공한 케이스입니다.

(이벤트 드리븐은 간단히 말하면 앞에 카운터 아줌마가 주문표 모아놓고 주방에 있는 요리사들이 주문에 방해받지않고 계속 최고의 성능을 낼 수 있도록 도와주는 거다.)


조금 부정적으로 이야기 했는데, 상당히 괜찮은 호응을 얻으며 야후, 링크드인 등 큰 기업에서 먼저 쓰기 시작하면서 열렬히 홍보했습니다.

그에 따라 유명한 라이브러리/프레임워크들이 나왔습니다.


뭐.. 대표적으로는 전의 자바스크립트 글에서 거론됬던 websocket 라이브러리인 socket.io 

뭔고 하니, 기존의 웹 방식으로는 클라이언트에서 서버쪽으로만 요청할 수 있었는데, 한마디로 이걸 반대로 하게 해줄 수 있는 물건입니다.

예를 들어, 새로고침 해야 새글을 볼 수 있었는데, 이제는 반대로 서버가 새 글이 올라온걸 알려주는거죠.


그리고 널리 쓰이는 웹 사이트 만들 때 쓰는 프레임워크 expressjs, towerjs 등


그냥 한줄 요약하면, 아직은 카오스지만 지금 한참 급부상할 언어기 때문에 배워두면 좋습니다. 



5. 마치며

초기 자바스크립트는 언어 설계가 괴랄한 10일짜리 작품이며 떨이로 판매되는 하급 프로그램이었으나 최근인웹앱과 서버사이드 언어로 핫한 언어이다.

반응형