[프로에게 묻다 2] 자바스크립트의 세계

웹 프로그래밍이 html, php, ASP.net, Ruby on Rails의 시대를 지나 이제 완전히 자바스크립트의 시대로 접어들었다. 이제는 자바스크립트 없이 웹 프로그래밍을 한다는 것은 거의 불가능한 일이 되었다.

언어가 가진 수 많은 한계에도 불구하고 자바스크립트는 다양한 프레임워크와 라이브러리에 힘입어 웹 프로그래밍의 표준으로 자리잡았다. 그렇지만 jQuery, Bootstrap, React, Angular 등 수많은 자바스크립트들이 쏟아져 개발자들과 웹 개발 생태계를 혼란스럽게 하기도 하였다.

이미지 출처: 트위터 @J0rgeSerran0

 

“프로에게 묻다” 시리즈의 두번째 포스팅에서는 링크드인과 에어비앤비에서 프론트엔드를 개발해 온 박호준님과 함께 자바스크립트의 간략한 역사와 실용적인 활용 전략 등을 살펴보았다.

 

유호현: 안녕하세요 호준님, 간단히 자기 소개 부탁드립니다.

안녕하세요 호현님, 저는 프론트엔드 개발자로 2000년 다니던 대학을 뛰쳐나와 한국에서 ASP 개발자로 시작하여 ASP, PHP등의 언어와 함께 자바스크립트 개발을 해왔고 다수의 게임회사에서 웹 개발을 해오다 기업용 오픈소스 CRM을 개발하는 SugarCRM이라는 회사에서 프론트엔드 스택을 개발하였습니다.

그곳에서 개발했던 경험으로 링크드인에 합류하여 DataUI팀에서 프론트 엔드쪽 태크 리드역을 맡아 데이터 관련 플렛폼 및 툴을 설계및 개발하였습니다. A/B 테스팅 툴, 데이터 리포팅, 대시보드 등의 제품을 만들었습니다.

최근에 일반 유저들이 직접 사용하는 제품을 개발하고자 에어비앤비에 합류하게 되었습니다. 지금은 에어비앤비내에서 유저들의 결제와 지불과 연관된 제품의 UI를 개발하고 있습니다. 단순 결제과정에서 필요한 화면뿐만 아니라 인터넷뱅킹을 할때 필요한 기능들 처럼 호스트들의 뱅킹 역할을 하는 기능들을 개발할 예정입니다.

 

유호현: 자바스크립트, 정말 배우기 쉬우면서도 이상한 면도 많은 언어인데요, 자바스크립트 언어를 잠깐 소개해 주세요.

넷스케이프에서 처음 도입되고 MS의 IE에서 대응하기위해 JSScript라는 것을 만들었다는 이야기등은 인터넷 검색을 통하면 쉽게 알 수 있는 부분들이라 그 부분은 건너뛰고 이야기하려고 합니다.

제가 처음 자바스크립트를 접하게된게 약 15년전쯤 인걸로 기억이 납니다. 그때는 웹사이트 화면에 특수한 효과들을 넣기 위해 스크립트 형태의 코드를 HTML상에 집어 넣는 정도로 생각되던 언어였어요. 그러다 제 기억에는 처음으로 구글 검색창에 검색어를 입력하고 있는데 페이지 이동 없이 실시간으로 입력한 검색어와 일치하는 검색 결과가 나오는 것을 보고 깜짝놀랐습니다.기존 야후와 같은 검색 서비스에서는 검색 쿼리를 넣은 후 다음 화면이 나오기까지 결과를 즉시 확인하는 것이 불가능했거든요.

그것이 Ajax라고 불리는 기술을 대중에게 널리 알리게 된 첫 사례로 기억하고 있습니다.그 이후 javascript가 페이지 이동없이 빠른 속도로 화면을 전환할 수 있다는 사실을 깨닫고 여러가지 시도들이 있었던  것같아요. 그 중 가장 유명한 결과물이 jQuery라고 하는 라이브러리이고 아직까지도 널리 사용되는 기술 중 하나입니다.

자바스크립트는 컴파일을 걸치지 않은 언어이기 때문에 처음부터 소스가 오픈되어 있는 형태로 작성되게 되었습니다. 깃헙(GitHub)과 같은 공유 문화가 확산되면서 엄청나게 빠른 속도로 발전하게 되었어요. Underscore, Backbone, Angular, d3, ember, react, redux, rxjs, AMD, webpack 등등 지난 몇년간 정말 수많은 프레임워크와 라이브러리들이 하루에도 몇개씩 공개되어 세상에 나오고 있어요. 미국 대학교내에서 영어 단어 중 js를 붙여서 구글검색 결과가 없는 단어를 찾는 것으로 술 내기 게임을 한다는 우스갯소리도 있습니다.

라이브러리와 프레임워크 뿐만 아니라 javascript에서 존재하는 언어의 단점을 보안하는 Typescript, Dart, CoffeeScript 등의 파생적 언어까지 개발되고 있습니다. 뿐만 아니라 최근에 페이스북에서 공개한 React Native와 깃헙(Github)의 Electron은 자바스크립트 언어가 웹 플랫폼 뿐 아니라 모바일 앱과 데스크톱 앱 개발까지 가능한 길을 열어 줌으로써 원 소스 멀티 유즈의 언어로 발전하고 있습니다.

브라우져의 언어로만 여기어 졌던 자바스크립트가 구글의 v8 자바스크립트엔진을 오픈소스화 한 이후 node.js를 활용하여 서버 영역의 개발까지 가능해졌습니다. 이제는 자바스크립트 개발자 한 명이 백 엔드부터 프론트 엔드까지 모든 영역을 커버할 수 있을 정도로 활동 영역이 방대해 졌습니다.

정말 자바스크립트 언어에 대해서 전부 이야기하려면 하루종일도 모자랄 것 같습니다. 예전에는 자바스크립트 개발자 혹은 프론트엔드 개발자라고 하면 기술수준이 백엔드 개발자보다 낮은 엔지니어로 취급되곤 하였었습니다. 그러나 현재는 거의 모든 대형 IT 회사에 프론트엔드 고급 개발자 인력난이 생기면서 백엔드 개발자와 동등한 대우를 받으며 인재 영입 1순위로 떠오르고 있습니다.

 

유호현: Node.js와 다른 자바스크립트 프레임워크/라이브러리랑은 어떻게 다른가요?

기존 자바스크립트 프레임워크나 라이브러리는 웹 서비스를 구축할 때 화면 구성이나 데이터 전송을 효율적으로 제작하기 위해 개발된 코드인 반면에 Node.js는 자바스크립트 엔진을 이용해서 서버에서도 자바스크립트코드가 작동할 수 있도록 구현한 환경이라고 할 수 있습니다. 쉽게 설명하면 자바스크립트는 웹 브라우저를 실행시켜서 그 안에서 실행을 시켜야만 구동이 가능했는데 Node.js를 활용하면 리눅스와 같은 서버환경에 자바스크립트를 브라우져없이 node명령어를 실행시켜 결과나 기능을 구동시킬 수 있게 된 것입니다. 기존 자바, 파이썬, 루비 온 레일즈 서버 등 보다 코드가 간결하고 구동시간이 빨라 저렴한 가격으로 개발이 가능해 많은 주목을 받게 되었습니다.

Node.js 자체로 서버 코드 전체를 개발하기에는 많은 부분을 자체 제작해야하기 때문에 여러가지 유용한 프레임워크와 라이브러리를 조합하여 많이 사용합니다. 최근 가장 많이 사용되고 있는 프레임워크는 Express.js 입니다.

다만 Node.js서버의 성능은 특히 파일을 쓰고 읽는 부분에서 굉장히 취약하여 기존의 자바 백엔드서버를 대체하는 수단으로 사용할 경우 많은 문제가 발생할 수 있습니다. 채팅 서버와 같은 가벼운 서버구성에 많이 활용되고 있으며 현재는 비지니스 로직과 웹서비스를 분리하여 Node.js를 프론트엔드 서버로 활용하고 api서버와 백엔드 서버를 자바, 파이썬, 레일즈 서버와 같은 기존 서버로 운영하여 대용량 데이터 처리 및 저장하는 역할을 하고 Node서버는 proxy를 활용하여 데이터를 중계해주는 역할로 활용하면서 성능문제를 해결하고 있습니다.

Node.js를 구성할때 가장 중요한 부분중 하나는 메모리 관리입니다. 자바스크립트는 잘못 설계하면 메모리 누수가 많을 수 있는 언어입니다. 프론트 엔드 개발에서는 코드에 메모리 누수가 생겨 문제가 생길 경우 브라우져를 새로 고치는 방법으로 유저들이 직접 문제점을 해결할 수 있는 반면, 서버에서 메모리 누수로 인한 문제는 서비스 전체를 마비시키는 문제를 야기 시키기 때문에 고도화된 자바스크립트 설계가 요구되고 있습니다.



유호현: 지금까지 나온 주요 자바스크립트 프레임워크/라이브러리와 특징을 실용적인 측면에서 한번 쭉 훑어주세요.

우선 제이쿼리(jQuery)를 처음에 짚고 가야겠네요. 거의 1세대 라이브러리라고 할 수 있는 제이쿼리는 기존 플스택 개발자들이 클라이언트상에서 필요한 기능들을 제이쿼리 UI 라이브러리와 조합하여 손쉽게 구현할 수 있었습니다. 현재까지도 가장 많이 사랑받은 라이브러리라고 할 수 있겠습니다.

다음으로 싱글 페이지 어플리케이션 프레임워크의 1세대라고 할 수 있는 BackboneJS를 이야기하고자 합니다. 웹 서비스의 서버 페이지 개발 페러다임을 벗어나 자바스크립트를 활용하여 프론트엔드에서 웹페이지 전체를 구현해 낸 프레임워크 입니다. 최근에 나온 프레임워크들과 비교해서 백본은 용량이 매우 작고 프레임워크 자체가 가벼워 빠른 속도가 특징입니다. 다만 서비스 구조를 직접 설계해야하기 때문에 서비스를 확장함에 따라 고급 설계 기술을 요구합니다. 또한 템플릿 엔진을 포함하지 않기 때문에 Handlebars와 같은 템플릿 라이브러리를 같이 조합하여 사용해하는 번거로운 점이 있습니다.

다음은 구글 오픈 소스 프로젝트로 잘 알려진 앵귤러JS(AngularJS) 프레임워크를 소개합니다. 현재 가장 대중화된 싱글 페이지 프레임워크 입니다. 투웨이 바인딩 기술이 구현되어 있어는 강력한 템플릿엔진을 가지고 있어 자바스크립트내에서 변수가 변동되면 템플릿과 연결된 화면이 자동으로 갱신되는는 장점을 가지고 있습니다. 손쉽게 싱글 페이지 어플리케이션을 개발을 할 수 있는 장점이 있어 초급개발자부터 고급개발자까지 많은 사랑을 받고 있습니다. 다만 템플릿 엔진 자체가 너무 강력하다 보니 초급자에게 성능 저하 문제를 파악하는데 많은 어려움이 있습니다.

국내에서는 대중화 되지 않았지만 엠버js(EmberJS)를 소개해드리고 가려고 합니다. 애플 icloud를 개발하던 엔지니어가 제품을 만들다 제작한 프레임워크를 오픈소스로 공개한 후 회사를 나와 오픈소스 회사를 운영하며 탄생하게된 프레임워크 입니다. 가장 큰 장점은 초기에 CLI(command line interface)를 제공하여 콘솔명령어로 쉽게 초기 파일을 자동으로 구성해주며 addon시스템을 도입하여 설치 명령어를 통해서 손쉽게 서비스에 추가할 수 있습니다.

마지막으로 페이스북 오픈소스 프로젝트이자 최근에 가장 많은 관심을 받고 있는 리액트(React)입니다.

가장 큰 특징은 다른 프레임워크와 비교에 성능이 빠르다는 점이고 용량 역시 가볍습니다. 리액트는 프레임워크라기보다는 뷰(View) 라이브러리에 가까우며 리액트 하나로 모든것을 구현하기에는 데이터 전송 및 관리가 어려워 초기에는 flux라는 데이터 처리 라이브러리를 조합하였는데 현재는 리덕스(Redux)라고 하는 React + Flux 데이터 처리 라이브러리를 조합하여 많이 사용합니다.

웹 서비스 프레임워크 위주로 설명을 해주었는데요 이 밖에도 패키지 관리 라이브러리인 webpack, gulp, grunt 등과 테스트 프레임워크인 jest, mocha, qunit, jasmine 등도 많이 활용되고 있습니다.

 

유호현: 그럼 지금 가장 핫한 스택은 무엇인가요?

리액트(React)와 리덕스(Redux)를 조합하는 개발이 현재 가장 많은 관심을 받고 있습니다. React-Native를 통한 모바일 개발까지 가능하다는 점이 많은 프론트엔드 개발자의 눈길을 사로잡고 있습니다. 구글 엥귤러팀이 Angluar2 버젼을 마이크로소프트에서 개발한 Typescript로 개발되었다고해서 Typescript 가 많은 주목을 끌게 되었는데요 확장성을 생각하는 기업용 소프트웨어 개발에 Angular2를 도입하는 사례도 많이 늘고 있습니다.

 

유호현: 기존의 다른 프레임워크를 이용한 Web App을 말씀하신 스택으로 옮겨 오려면 어떠한 전략을 써야 할까요?

우선 기존에 서버 페이지 방식의 프레임워크를 사용하실 경우 백엔드와 프론트엔드 코드를 분리하는 전략을 먼저 써야할 것 같습니다. API서버로서 데이터 처리 전송을 하는 역할로만 구성을 하고 프론트엔드는 ng2-cli, create-react-app, yoman과 같은 CLI(Command Line Interface)툴을 활용하여 싱글페이지앱 개발을 하는게 가장 좋은 전략 같습니다. CLI툴을 활용할 경우 build를 통해서 생성된 js,css,html를 기존 프레임워크의 assets폴더에 연결만 시키면 바로 사용이 가능하기 때문입니다.

만약 다른 SPA프레임워크를 이미 사용하고 있다면 redux를 도입하길 권유합니다. 현재 웹서비스 개발에서 가장 어려운 점 중 하나는 상태관리와 공유입니다.페이스북 역시 알람표시 버그의 근본적인 문제 해결을 위해 flux와 redux를 개발하여 도입하였다는 사례가 이를 증명합니다.

 

유호현: 앞으로의 자바스크립트의 전망도 간단히 부탁드립니다. React Native가 웹, 모바일 개발을 한번에 할 수 있게 해 준다는데요, 앞으로는 하나의 프론트엔드 코드로 모든 앱을 다 만드는 시대도 올까요?

자바스크립트의 전망은 아주 밝습니다. 제가 생각하는 미래는 원소스 멀티유즈입니다. 프론트엔드개발에서부터 서버개발까지 그리고 한편으로 웹서비스 개발에서부터 모바일과 데스크톱 앱 개발까지 이 모든 것이 하나의 소스로 개발하여 여러 플렛폼에 동시에 활용하는 사례로 점차 발전할 것입니다.

페이스북 또한 각 플렛폼 별로 개발자를 뽑기보다 상급 프론트 엔드 엔지니어를 제품 개발팀별로 배치하여 원소스 멀티유즈를 활용하고자 리액트 네이티브를 개발하게 되었다고 합니다. 이를 위해 각 플렛폼의 개발자들은 인프라팀에 합류하여 각각의 플렛폼에서 필요한 컴포넌트 개발을 해두어 프론트엔드 개발자가 개발한 소스 하나가 여러 플렛폼에서 손쉽게 작동되고 배포될 수 있도록 투자하고 있습니다.

또한 자바스크립트 개발자가 서버의 확장성등 복잡한 백엔드 이슈를 고민하지 않고 풀스택 개발을 할 수 있는 서버리스스택 (http://serverless-stack.com/) 역시 최근에 많은 관심을 받고 있습니다. 파이어베이스나 아마존 람다 및 api 서비스등을 PaaS (Platform as a Service) 서비스를 이용하여 백엔드 서비스 및 서버 유지 관리를 간편하게 해결하고 개발자는 서비스 개발에만 집중하여 자바스크립트 개발자가 모든 서비스를 유지 개발할 수 있는 방법입니다. 스타트업 창업자로서 고려해볼만한 스택 구성이라고 생각이 듭니다.

그리고 모바일 최적화를 빼놓을 수가 없겠네요. 현재 대부분 사이트의 데스크톱대비 모바일 점유율은 50%을 넘어가고 있습니다. 싱글 페이지 어플리케이션으로 개발된 사이트의 단점은 한페이지에 모든 라이브러리를 로딩하기 때문에 첫 화면을 로딩하기 위한 리소스가 상당히 크다는 점입니다.

이러한 특징은 특히 모바일 브라우져환경에서 유저들의 접근성을 방해한다는 점에서 문제가 됩니다. 모바일 기계의 성능이 많이 향상되었지만 아직 보급형 기계의 성능은 데스크톱의 성능에 비해 현저히 떨어지며, 또한 인도와 같은 인터넷망이 현저히 느린 지역에서는 초기 리소스를 내려받기 위한 시간에 상당히 많은 시간이 소요된다는 점이 유저를 끌어들이는데 방해요소로 작용되고 있기때문입니다.

이러한 문제점을 해결하기위해 webpack과 같은 패키징 매니지 프레임워크를 사용하여 리소스를 분산하고 쪼개서 초기에 내려받는 리소스를 줄이는 방법을 시도하고 있으며 노드 서버를 활용하여 싱글 페이지 어플리케이션의 내용을 미리 그려내는 방법인 서버 사이드 렌더링(SSR) 기술도 도입되고 있습니다.

또한 네트워크 연결이 끊기는 이동 상황에서 오프라인모드로 미리 받아두었던 내용을 확인해 볼 수 있는 방법 또한 도입되고 있습니다. 구글맵을 와이파이환경에서 확인해두었다가 산간지역등 인터넷이 불가능환경에서 이전에 받아둔 지도를 다시 확인해 볼 수 있는 것이 좋은 예라고 할 수 있습니다. 이러한 방법은 프로그레시브 웹 앱 (Progressive Web Apps)라고 대변되는 기술로 HTML5에서 지원되는 Serviceworker와 브라우져 저장소를 이용해서 앱 전체를 캐싱하고 브라우져가 설치형 앱과 같이 오프라인 모드에 페이지를 로딩하게 해주는 기술입니다. 이미 angular2, ember, polymer등 다수의 프레임워크에서 에드온 형태로 오픈소스화되어 지원되고 있습니다.

이렇게 자바스크립트 하나로 할 수 있는 일은 방대하고 발전가능성이 무궁무진한 언어로 새롭게 개발자의 길로 접하는 신입개발자에게 자바개발자, 모바일 개발자 외에 프론트엔드 개발자로 성장하는것도 고려해보는게 어떨지 추천해드리고 싶습니다.

 

조성문: 자바스크립트는 배우기 쉬운가요?

자바스크립트의 시작은 어렵지 않습니다. 제가 초기 자바스크립트 사용방법은 복사 붙여넣기 처럼 정말로 단순했습니다. ^^;

하지만 요즘 너무나 빠르게 변화해버려서 최근에 자바스크립트 기술들을 처음 접한 사람들은 이것이 자바스크립트가 아니라 자바가 아니냐 할 정도로 큰 격차를 느끼게 될텐데요. 장편 드라마 1편을 보고 난후 관심이 없어 시청을 관두다 어느날 시청률이 올라 중간부터 보려니 중간 스토리를 전혀 알지 못하고 주인공이 변해 있어 놀라는 것과 비슷한 상황이라고 할 수 있겠습니다. 에피소드별로 구분을 지어서 알게되면 전체 스토리를 이해하실 수 있습니다. 제 생각에는 프론트엔드 엔지니어로서 배워야할 부분을 대략 구분 짓자면 다음과 같습니다.다음과 같이 구분을 해서 프레임워크및 라이브러리를 찾게되면 조금 더 이해가 쉬울 것 같습니다.

  1. javascript/ES5/6 언어 문법
  2. HTML/CSS
  3. CSS 구조화 (Less & Sass)
  4. 반응형 디자인 (Responsive Design)
  5. 싱글 페이지 앱 프레임워크 (angularjs, backbonejs, react, emberjs, …)
  6. 리덕스 및 미들웨어 (redux, redux-thunk, redux-saga, redux-observable, …)
  7. 디자인 패턴 (MVC등 소프트웨어 디자인 패턴 관련)
  8. AMD (Asynchronous Module Definition: commonJS, requireJS, ES modules)
  9. 노드 서버 및 서버 프로그래밍 (NodeJS)
  10. 패키징 및 배포 자동화 (Task Runners: Grunt, Gulp, webpack, browerify)

 

조성문: 자바스크립트 잘 하면 실리콘밸리 기업들에서 어떠한 대우를 해 주나요? 높은 연봉을 받을 수 있나요?

저도 2011년 처음 실리콘밸리 지역에서 경력을 시작했을때만 해도 웹디벨로퍼라는 직책으로연봉이 일반 소프트웨어 엔지니어보다 한단계 낮은 임급을 받긴 했었습니다. 현재 한국에서도 프론트앤드 개발자라고 하면 백엔드 개발자 보다 임금이 낮을 수 있지만 제가 언급한 기술들을 도입하려는 기업들의 프론트 엔드 임금은 백엔드 개발자와 동등하며 본인의 경험에 따라서는 백엔드 개발자보다 많은 임금을 받고 있습니다.

상급 자바스크립트 개발자 구하기가 상급 자바 개발자를 구하기보다 상대적으로 어려운 점이 많은 보상을 제공하게 된 배경인듯 합니다. 기존 백엔드 경력자보다 좀 더 좋은 조건의 인터뷰 기회가 많이 제공 되고 있습니다. 예를 들면 인터뷰 과정에서 복잡한 퍼즐식 알고리즘 문제보다 프론트엔드 엔지니어에 특화된 질문을 좀 더 많이 하고 이런 질문은 자바스크립트에 익숙한 사람에게는 기존 알고리즘 문제보다는 실무적인 질문이 주를 이뤄서 자바스크립트 경력자에게 유리합니다.

저로서는 정말 짧은 시간안에 좋은 환경이 마련되어 만족스럽습니다. ^^ 실리콘밸리 물가가 한국과는 많이 다르기때문에 절대적인 비교는 힘들지만 현재 신입 소프트웨어 엔지니어의 평균 연봉은 13-15만불 (1억 4천만원 – 1억 7천만원) 정도인데 자바스크립트 개발자 역시 동일 혹은 그 이상의 임금을 받고 있으며 시니어레벨 이상으로 승진할 경우 평균연봉은 처음 연봉의 두배 이상도 받고 있다고만 말씀 드릴게요. 이곳 연봉은 개인차 및 회사별 차이가 크기때문에 연봉협상에 따라서 30%이상 차이나는 경우가 있습니다.

 

조성문: JavaScript의 성능은 어떤가요? 얼핏 생각하기에 컴파일을 거치지 않으니 속도가 느릴 것 같은데요?

자바스크립트는 비동기화 함수형 언어로 싱글 스레드를 사용합니다. (노드 최신 버젼에서는 멀티쓰레드를 지원한다고 합니다. 다만 멀티쓰레드 방식의 코딩 스타일은 자바스크립트 언어의 코딩스타일과는 조금 거리가 있어 조금 더 발전 방향을 지켜봐야할 것 같습니다.) 멀티 쓰레드를 사용하는 자바랑 비교하면 성능이 많이 떨어지는 것이 아니냐하는 우려가 있는데요, 파일을 쓰고 지우거나(i/o) 자료 및 네트워크를 효율적으로 관리하는 부분에서는 자바와 같은 기존 언어의 성능이 자바스크립트보다 낫다고 할 수 있습니다. 그래서 아직까지 백엔드 서버는 기존의 자바서버가 대세를 차지하고 있습니다.

다만 웹서버와 같은 환경은 요구사항이 달라 이 부분에서 자바스크립트 기반의 노드서버의 성능에 장점이 있습니다. 비동기화는 요청이 왔을때 요청이 처리되는 동안 비는 시간에 동시에 다른 요청을 처리하는 논블라킹 (non-blocking) 방식을 채택하고 있습니다. 이러한 방식은 웹 사이트 같은 경우 대부분 유저가 페이지를 로딩후에 추가 서버요청없이 페이지에 머물러 있기 때문에 다음 페이지 요청까지 다른 유저의 요청을 처리할 수 있습니다. 이러한 특징으로 동시접속자가 많은 상황에서는 논블라킹 방식의 비동기형 함수언어가 자바와 같은 동기형 언어보다 월등한 성능을 보여줍니다.

넌블라킹 비동기화 방식을 채택한 네띠(Netty) 프레임워크나 리액티브 프로그래밍이 자바의 이러한 단점을 보안하고 자바스크립트같은 함수형 언어의 장점을 도입한 사례라고 할 수 있겠네요.

마지막으로 최근 트랜드로 성능도 중요하지만 에자일방식의 빠르게 제품을 제작하고 배포하는 방식이 선호되고 있습니다. 그래서 배포 및 제작 속도가 빠른 자바스크립트 언어가 더 많은 관심을 받고 있습니다.

 

조성문: JavaScript로 짠 가장 잘 만든 제품 /가장 놀라운 제품 중 생각나는 것이 있다면 (자바스크립트로 이정도까지 가능하다)?

구글맵, 구글 Docs등의 제품들은 웹앱이 더이상 단순 페이지가 아닌 데스트톱앱을 대체하는데 손색이 없다는 점을 확인시켜 준 좋은 예인 것 같습니다. 성능면에서는 페이스북 사이트가 가장 잘 만든 제품중 하나라고 생각이 듭니다. 페이지 로딩 속도, 반응성, 접근성등 모든 면에서 정말 잘 만든 제품이라고 생각이 듭니다.

코드펜(codepen.io) 코드에니웨어(codeanywhere.com) 같은 사이트들 역시 자바스크립트를 활용해서 만든 온라인 IDE 앱으로 기존 설치형 개발툴을 대체하고 실시간 협동 코딩도 가능한 환경을 구축해준 점에서 많은 놀라움을 준 제품이라고 할 수 있겠습니다.
또한 webgl등을 활용해서 기존 3d 게임 엔진등을 포팅해서 구현해둔 퀘이크웹버젼 (https://media.tojicode.com/q3bsp/) 과 도스게임 사이트 (https://archive.org/details/softwarelibrary_msdos_games) 등은 정말로 자바스크립트가 단순 스크립트 언어를 뛰어 넘어 고성능 서비스개발로서의 가능성을 보여주는 예라고 할 수 있습니다.

 

박호준님의 최근 발표 자료는 슬라이드쉐어 페이지 (https://www.slideshare.net/hojunepark/) 에서 확인하실 수 있습니다.

[프로에게 묻다 1] 블록체인이 뭔가요?

 

Written by

유호현: 샌프란시스코 Airbnb에서 일하고 있는 소프트웨어 엔지니어입니다. 이전에는 Twitter의 Language Engineering 팀과 Search Quality 팀에서 일하였습니다. 오픈소스 한국어 처리기 프로젝트인 open-korean-text를 개발했습니다. http://openkoreantext.org