이 앱의 클라이언트 사이드는 이전보다 10배 빨라졌으며, 서버사이드는 이 전의 Ruby on Rails에서, 아직 나온지1년 밖에 되지 않았지만 급속하게 인기를 얻고 있는 서버사이드 JavaScript 기술인 Node.js로 바뀐 덕분에, 리소스의 일부만 사용합니다.
또한 개발시간 역시 평소보다 빨라졌습니다.
“모든 면에서 빨랐습니다.” LinkedIn의 모바일 개발 리더인 Kiran Prasad는 VentureBeat에게 말했습니다. “저는 스타트업에서 일해본 적도 있고, Yahoo와 같은 큰 회사에서 일해본 적도 있지만, 일반적인 개발시간보다 확실히 빨랐다고 할 수 있습니다.”
개발 속도가 빨라진 이유 중의 하나는 팀이 정확이 무엇을 해야 하는지를 미리 알고 있었다는 것 입니다. “우리는 실제로, 우리가 시작부터 무엇을 하길 바라는지에 대해 철저히 알고 있었습니다.” Prasad는 말했습니다. “제품을 만들기 위해, 소비자 행동에 관한 이년 치 상당의 데이터를 가지고 있다면, 이전보다 훨씬 빠르게 개발하는 것이 가능할 것 입니다.”
모바일웹과 네이티브앱을 위해 HTML5를 사용하다
개발 속도가 빨라진 다른 이유는 팀이 웹앱 내에서 HTML5를 사용하고, 같은 코드들을 iOS와 Android 네이티브 앱에서 재사용했다는 것입니다.
“HTML5웹과 네이티브 앱 사이에 갈등이 있었습니다. 그렇지만 우리는 웹기반의 콘텐츠가 더 나은 경우의 네이티브 앱에는 HTML5를 적용하였습니다. 무한 리스트를 스크롤하는 것은 HTML5로 만들기 어려웠고, 그래서 그 부분은 네이티브로 갔습니다."
세가지 애플리케이션(mobile web, iOS, Android)에 있어 HTML5 코드의 재사용은 앱의 반복작업의 속도 역시 높였습니다. “우리는 완전히 새로운 클라이언트 단을 만드는 일 없이 기능을 더 빠르게 할 수 있습니다.” Prasad는 말했습니다.
HTML5에 더하여, 팀은 Backbone과 Underscore 같은 그 유용성이 덜 알려진 프리 오픈 소스 툴들을 사용했습니다.
“우리의 모바일 앱이 작동하는 방법은 모든 것이 브라우져 사이드에서 렌더 되는 것입니다. 이것으로 당신은 백 사이드나 포스(forth)로 적은 데이터를 보내게되죠. 이것은 훨씬 빠른 방법입니다.”
또한 앱은 미친듯이 가볍습니다. “당신이 앱 전체를 다운 받고, 당신이 모든 프레임워크들을 결합하여 압축하더라도, 그것은 50K 보다 작습니다.” Prasad는 말했습니다.
“우리는 브라우져의 캐싱 시스템을 사용할 필요가 없습니다. 당신이 앱을 한번 다운 받으면, 우리가 앱안의 무언가를 바꾸지 않는 한, 당신이 다운로드 받는 크기는 1K입니다. 세계 유저들을 생각한다면, 추가의 트래픽을 일으키지 않는 것은 정말 중요합니다.”
모바일 웹 앱의 퍼포먼스 속도를 높이기 위해서 Prasad는 말합니다. “연결들은 모두 로컬에 저장됩니다. 속도를 위해서 뿐만 아니라, 오프라인일 때에도 접근할 수 있기 때문입니다.”
Crunching하지 않고 어떻게 Node가 roost를 지배했는가
우리는 Prasad에게 그의 팀이 Node.js를 사용한 것에 대해 물어보았습니다. Joyent가 지원하는 서버사이드 자바스크립트 기술은 우리가 아는 스타트업의 핵심 개발자들을 열광시키고 있습니다.
“서버 사이드에서, 우리의 모바일 소프트웨어 스택 전체는 완벽하게 Node로 만들어졌습니다.” Prasad는 말한다. “우리는 LinkedIn에 수많은 기술을 사용합니다. 그렇지만 모바일 서버는 모두 Node를 기반으로 합니다.”
“한가지 이유는 규모입니다. 두번째는, 당신이 Node를 보았다면 알겠지만 다른 서비스와 연결을 주고 받기에 최고라는 것입니다. 모바일 앱은 다른 플랫폼 API와 데이터 베이스와 데이터를 주고 받아야 합니다. 우리는 방대한 데이터 분석을 할 필요가 없습니다. Node는 Ruby on Rails 같은 이전에 사용됐던 것과 비교했을 때 엄청난 퍼포먼스 향상을 보여 줍니다."
팀이 본 향상은 믿기 어려울 정도 였습니다. 그들은 각 물리 머신에 15개의 인스턴스로 15개의 서버를 운영하던 것에서, 단지 4개의 인스턴스로 두배 이상의 트래픽을 다룰 수 있었습니다. 이 측정은 팀이 실시했던 부하 테스팅을 기반으로 했습니다.
여전히, Prasad는 Node가 모든 작업에서 최고의 툴이 되지는 않을 것이라는 것은 인정합니다. “우리는 추천할 만한 엔진이 있고, 그것은 엄청난 양의 데이터를 처리합니다. 그렇지만 Node가 그것까지 잘 하지는 못할 것입니다.” 그는 말했다.
그러면 LinkedIn은 아직 새롭고(Node는 실제로 2010년 중반에 등장했습니다.)검증 받지 않은 기술을 규모가 있는 앱에 사용한 것을 걱정하는 것일까요?
“분명히 우려는 있습니다.” Prasad는 말했습니다. 그는 LinkedIn에 입사하기 전인 2010년 1월부터 Node를 사용해왔습니다.
“우리는 많은 플랫폼의 분석을 해봤습니다. Ruby, Node, Java, Scala. 우리는 분석을 계속할 것인고 결과를 관찰할 것 입니다. 그것이 우리의 기술을 선택하는 방법일 것입니다. 우리의 문화에서, 우리는 새로운 기술을 사용할 것을 장려하고 있습니다. 새로운 것을 시도하는 사람을 막는 사람은 없습니다.
반면에, 최신 유행의 기술을 사용한다는 것은 많은 개발자들에게 사탕과도 같습니다. Prasad는 기회는 반드시 고용으로 이어진다고 말합니다. LinkedIn은 V8 엔지니어 몇 명을 이사회에 영입했고, Ruby on Rails 개발자들은 Node로전향하였습니다.
“만약 당신이 Node 개발자들의 집단을 본다면” Prasad는 말합니다. “Rails world에서 많은 이가 이식되었다는 것을 알 수 있을 것입니다.”
HTML5와 Node를 사용하면서 팀이 경험했던 병목현상과 기술 이슈에 관해 배우고 싶다면 LikedIn enginnering Blog의 기술 관련 포스팅을 참조하기 바랍니다.
(원문 : http://venturebeat.com/2011/08/16/linkedin-node/ )
(KTH 기술 뉴스 : http://dev.paran.com/2011/08/29/kth-news-eight-pillars-of-innovation/)
'의역과 오역 > Dev' 카테고리의 다른 글
혁신을 만드는 8가지 원칙 - 수잔 워지스키(Google) (0) | 2011.09.01 |
---|---|
당신은 JavaScript를 모른다 (0) | 2011.08.30 |
An Event Apart : CSS Best Practices (20100810) (0) | 2011.08.23 |
Chrome 개발자 도구 : JavaScript 메모리를 관리하자(The Chromium Blog_20110527) (0) | 2011.08.22 |
Chrome 14, 네이티브 코드를 웹으로 가져오다 (wired_110815) (0) | 2011.08.15 |