원본 글: Understanding node.js

*잘못된 번역이 있을 수 있습니다. 원본 글을 참고해주세요. node.js 를 위한 좋은 입문 글이라고 생각해서 번역해보았습니다.


node.js 이해하기


node.js 소개하면사람들은 보통  가지 반응을 보인다기본적으로 사람들은 "이해했음하고 바로 말하거나아니면 엄청 혼란 스러운 상황에 처하고 만다.


 만약 당신이 후자의 경우라면 나는 이렇게 노드를 설명해 보겠다


이것은  command line tool  이다. 당신이 tarball(tar file) 다운 받고 컴파일해서 설치하면 된다

노드는 당신이 'node my_appjs'라고 터미널에서 치면  자바스크립트 프로그램을 실행하도록 한다

* JS  V8 자바스크립트 엔진(구글 크롬을 엄청 빠르게 해주는) 의해서 실행된다

노드는 네트워크와 파일 시스템에 접근하는 자바스크립트 API 제공한다


"그렇지만 나는 내가 필요한걸 루비랑파이선이랑, php 자바로    있어..!"


무슨 말인지 알겠다ㅇㅇ그리고 당신의 말이 옳다미안하지만 노드는 당신의 일을 대신  해줄 미친 유니콘이 아니다이것은 그냥 툴이다그리고 최소한 지금 버전으로는 아마도 당신이 사용하던 기존의 툴을 완벽하게 대체하지 못할 것이다


"그래서 본론이 뭐야!"


본론으로 들어가겠다노드는 기본적으로 당신이 동시에 여러가지 일을 해야할  무척 좋다코드를 짜고나서 "이게 동시에 동작하면 좋겠다하고  말한 적이 있는가노드에서는 당신의 코드만 제외하면 동시에모든 것이 동작한다


"Huh?"


그렇다모든 것은 당신의 코드만 제외하고 동시에 동작한다이것을 이해하기 위해서 당신의 코드가 왕이라고 생각하고 노드가 그의 시종들로 이루어진 집단이라고 생각해보라


 하루가 시작하면  시종이 와서 왕을 깨우고 왕에게 필요한 것이 있느냐고 묻는다왕은 자신이 해야할 업무들을 적은 리스트를 주고 조금  자러 꿈나라로 떠난다시종은  업무들을 그의 동료들에게 나누어준후각자 일을 하러 간다


 일단  명의 시종이 업무를 마치면 그는 왕의 숙소 밖에서 보고를 위해 대기한다왕은  번에  명의 시종만 들어오게 해서 시종의 보고를 듣는다어떤 경우에는 시종이 나갈  왕이  많은 업무를 주기도 한다


 삶은 좋은 것이라, ? 왕의 시종들은 그의 업무를 동시에 수행하지만왕이 집중할  있도록  번에 하나의 결과만을 보고한다.


"엄청 좋아보이기는 하는데... 이제 시덥잖은 비유는 그만하고 공돌이 답게 설명해줄래?"


물론이다여기에 아주 간단한 노드 프로그램이 있다.


코드


당신의 코드는 파일을 읽고 쓰는  작업을 노드에게 시킨 자러간다일단 노드가작업 하나를 마치면그것을 위해 있었던 콜백 함수가 시작된다그러나 오직 하나의 콜백 함수만이 동시에 시작할  있다콜백이 실행을 마칠 때까지모든 다른 콜백 함수들은 줄을 서서 기다리고 있다거기다가 대기 중인 콜백함수들은 언제 실행될지에 대한 보장이 없다


"그래서 나는 코드가 같은 자료구조에 동시에 접근하는 것을 걱정할 필요가 없는건가요?"


그렇습니다그것이 바로 자바스크립트 싱글스레드와 이벤트루프 디자인의 아름다움의 전부인 것입니다!

"엄청 좋네요그런데 내가 이걸  써야 하죠?"


첫번째 이유는 효율적이기 때문입니다 어플리케이션에서 당신의 주된 response time 비용은 보통 당신의 데이터베이스 쿼리를 실행하는데 걸리는 시간의 합입니다노드를 이용하면 당신은 모든 쿼리들을 한번에 실행할  있고가장 느린 쿼리를 실행하기 위해 걸리는 response time  지연 시간을 줄일  있습니다


또다른 이유는 자바스크립트 입니다당신은 브라우저와 당신의 백엔드 사이에서 코드를 공유하기 위해 노드를 사용할  있습니다또한 자바스크립트는 무척 보편적인 언어가 되어 가고 있습니다당신이 과거에파이선루비자바, php....같은 것들을 했다고 하더라도아마 당신은 약간의 JS 꾸준히 사용해왔을 것입니다그렇지 않나요?


그리고 마지막 이유는 빠른 속도 때문입니다. V8 지구상에서 가장 빠른 동적 언어 interpreter  하나로서 꾸준히 선두를 이끌고 있습니다나는 다른 언어가 지금의 자바스크립트만큼 공격적으로  성장 속도를 이끌어갈  있을 것이라고 생각하지 않습니다또한노드의 I/O 구조들은 정말 가벼워서 당신을 당신의 시스템의 모든 I/O 허용치를 가능한  충분히 사용할  있도록 도울 것입니다


"그러니까 당신 말은 앞으로 내가 모든 앱을 만들  노드를 써야 한다는 건가요?"


그에 대한 대답은 예, 그리고 아니오 입니다. 일단 당신이 노드 망치를 휘두르기 시작하면 분명 모든 것이  못으로 보이기 시작할 것입니다. 그러나 당신이 데드라인을 가지고 일하고 있다면 당신은 당신의 결정을 어떠한 기준 위에 두고 싶어할 것입니다. (But if you're working on something with a deadline, you might want to base your decision on:)

- 짧은 response time/ 높은 동시 실행이 중요합니까? 그렇다면 노드는 그에 무척 적합할 것입니다.

 프로젝트가 얼마나 큰가요? 작은 프로젝트는 괜찮습니다. 그러나 큰 프로젝트는 반드시 주의해서 판단해야합니다. (사용 가능한 라이브러리, 버그를 잡기 위한 자원들이나 two upstream 등)


"노드는 윈도우에서도 돌아가나요?"


아니요. 만약 당신이 윈도우를 사용하고 있다면 당신은 리눅스를 사용하는 가상머신(VirtualBox를 추천합니다)을 돌려야 합니다. 윈도우에서 노드를 지원하는 것이 예정되어 있긴 하지만 당신이 unless you want to help with the port 앞으로 몇달 동안 숨을 참지 마세요.


"노드에서 DOM에 접근할 수 있나요?"

"Can I access the DOM in node?"

좋은 질문입니다! 아니오. 돔은 브라우저 거시기한 것이라서(browser thingy), 그리고 노드의 JS엔진(V8) 은 고맙게도 완벽하게 이 모든 엉망진창인 것으로부터 떨어져 있기 때문입니다. 그러나 유닛 테스트를 하는  클라이언트 쪽의 코드와 같은 무척 흥미로운 가능성이 열려 있는 등, DOM을 노드의 모듈로 사용할 수 있는 길이 있긴합니다. 

Excellent question! No, the DOM is a browser thingy, and node's JS engine (V8) is thankfully totally separate from all that mess. However, there are people working on implementing the DOM as a node module, which may open very exciting possibilities such as unit testing client-side code.


"이벤트 드리븐 프로그래밍은 진짜 어렵지 않나요?"


Either way, test driven development can really help you to come up with maintainable designs.

그것은 당신에게 달려있습니다. 만약 당신이 이미  AJAX call을 어떻게 다루는지, 그리고 브라우저에서 유저 이벤트를 어떻게 다루는지 알고 있다면 노드에 적응하는 것은 아무 문제가 되지 않습니다. 마찬가지로 , test driven development 는 당신을 지속 가능한 디자인을 할 수 있도록 도울 것입니다. 



"이런건 누가 쓰고 있나요?"


노드 위키에 보면 아직 완성되지 않은 적은 수의 리스트가 있습니다("Companies Using Node"로 스크롤 하세요). 야후 는 YUI를 위해서 노드를 가지고 실험 중이고 Plurk는 많은 양의 comet을 위해 사용 중이며, Paul Bakaus(jQuery UI 의 유명인사) 는 백엔드에서 노드를 일부 이용해서 엄청나게 재미있는 게임 엔진을 만들고 있습니다. Joyent 는 Ryan Dahl(노드의 창시자)를 고용해서 개발을 힘껏 돕고 있습니다. 


아, 그리고 Heroku 역시 (실험적으로나마) 주도적으로 node.js를 돕겠다고 공언했습니다.


"나는 이제 어디에서 더 배울 수 있죠?"


Tim Caswell은 How To Node라는 아주 좋은 블로그를 운영하고 있습니다. 트위터에서 #nodejs를 팔로잉 하세요 .그 메일링 리스트를 구독하세요. 그리고 IRC 채널의  #node.js(네. 저 점도 이름 안에 포함되어 있는 겁니다)에 와서 둘러보세요. 우리는 이제 200 lurker-mark 를 곧 찍을 예정입니다 :) .

그리고 나는 이 debuggable.com에도 꾸준히 글을 쓸 예정입니다. 

지금으로써는 이 정도가 다네요. 질문이 있다면 댓글을 달아주세요.


--fg


*: 위에 나온 비유는 엄청 단순화한 것입니다. 그렇지만 논블라킹의 개념을 현실세계에서 딱 떨어지게 맞는 것을 찾기가 어려웠네요. 



저작자 표시 비영리 변경 금지
신고

'읽기' 카테고리의 다른 글

[번역] RFC1939  (0) 2017.02.11
[번역] Understanding node.js  (0) 2017.02.11

어느덧 시간이 화살 같이 날아 그린팩토리 앞에서 시위를 한지 1년이 되었다. 수백번도 더 외친 이사회 날짜 1월 28일. 그리고 내 페북에도 1년 전 그날! 하면서 사진이 뜨고야 말았다. 1년 전 그 날도, 날씨는 이토록 호되게 추웠더랬다. 


 1월 28일로 시위를 마무리하고, 나도 일상으로 돌아갔다. 마치 아무 일도 없었다는 것 마냥 나는 애써 평온을 유지하려 했다. 미뤄뒀던 공부도, 프로젝트 계획도 다 해내야 한다고 생각했다. 그 결과가 이 모양 이 꼴이다. 지금 시간은 새벽 3시 52분. 나는 이불 속에서 주룩주룩 울다가 마침내는 스스로 마무리를 지어야 한다고 생각해서 컴퓨터를 열어들고 앉았다. 나에게는 아무 것도 마무리되지 않았다.


 많은 사람들이 나에게 꽃을 나눠줄 생각을 한 점을 칭찬해주었다. 그렇지만 나에게 꽃은 어떠한 상징도 아니었다. 나는 단 한 시간의 1인 시위 끝에 완벽하게 겁에 질렸던 것이다. 도저히 밤에 잠이 오질 않았다. 다음날 그 자리에서 멀뚱히 서서 출근길 네이버 직원들의 감정없는 눈길을 받을 생각을 하니 도저히 잠에 들 수가 없었다. 나에겐 그 분들이 이해진이었고, 윤재승이었다. 응원해주는 분도 묵묵히 제 갈 길을 가는 분도 그 시간 동안 나에게 있어서 만큼은 말 한 마디에 뭐든 바꿀 수 있을 것 같은 결정권자들이었다. 그래서 내 마음이 불편하고 불편해서, 분위기나 풀어보려고 꽃을 사봤을 뿐이었다. 그게 효과가 없었다면 나는 또 다른 방법을 선택했겠지. 아무 생각도 없었다. 그저 나는 겁에 질려서 그것을 숨겨보려고 꽃을 골랐을 뿐이다.


 그 기간 동안 나의 9.5할은 두려움으로 차 있었다. 0.5 할은 희망이었다. 어쩌면, 혹시나 뭔가 바뀔 수 있지 않을까 하는 희망. 친구들은 아무도 함께하지 않았다. 모두 두려웠을 것이다. 이해한다. 그래, 몇몇 친구들은 함께 하겠다는 말도 꺼냈었다. 그렇지만 결국은 혼자였다. 사실 나는 누구에게도 설득하지 않았다. 하지만 내심 설득하지 않아도 함께 할 수 있을 줄 알았다. 그렇지만 혼자였다.  그 누구를 탓하는 것도 원망하는 것도 아니다. 내가 무서웠기 때문에 이해한다. 우리는 협박당했고, 포기하는 중이었으니까. 모두 각자도생의 길을 찾는 것이 옳았다고 생각한다. 


 그러나 혹자는 나를 비판하고 비난했다. 내가 시위를 하기 때문에 학생들이 밉보여서 협박 내용 그대로 우리가 모두 IT업계의 블랙리스트에 올라가면 어떻게 하느냐고, 그런 걱정을 알지 않느냐고 말했다. 좋은 방법이 아니라고 말하기도 했고, 내가 정치놀음을 하고 싶어한다고 생각하는 것 같기도 했다. 이제 와서 말하자면, 나는 내 방법이 상황을 악화시킬 것이라고 생각하지 않았다. 오히려 구성원들이 대응하려고 논의 중 이었던 다양한 방법과 동시에 진행해야 더 효과적이라고 판단했을 뿐이었다. 내가 시위를 하는 모습이 일부에겐 지나치게 공격적으로 비추어져서, 갈등을 불러일으켰던 것 같지만 나 역시 내 진의가 전달되지 않았기 때문에 힘들었다. 


 그 즈음에는 모르는 사람들이 내 포스팅을 보고 페북 친구를 요청해오는 경우가 많았다. 모두 수락했다. 홍보가 중요했기 때문이다. 그런데 갑자기 "수상쩍은 넥스트 페북 계정" 이 논란이 되었다. 넥스트 학생들과 친구를 맺고 학생들 페북을 사찰 중이라는 이야기였다. 시의적절하게도 그 계정은 그 소문과 동시에 없어졌다. 폐쇄는 확신을 불러일으켰고 두려움에 가득 차 있던 나에게 모르는 사람은 모두 네이버 인사팀으로 보였다. 이제와서 말이지만 그 때 친구 맺어놓고 막 끊어낸 많은 분들에게 죄송하다. 


 네이버에 취업한 친구들에게 폐가 되진 않을까 걱정했었다. 걱정하면서도 맘 먹은건 안 하는 인간이 못 되어 더 미안했다. 직접 얼굴 볼 때는 차마 말하지를 못해서 내 마음에 계속 빚으로 달아두고 있는 중이다. 앞으로도 얼굴보면 말 못하겠지만...


가족들에게 비밀로 하고 시위를 했는데 다들 아무도 모르는 건지 아니면 알면서도 모르는 척 해주는 건지 모르겠다. 우리 부모님은 지극히 보통의 사람들이라, 내가 시위를 하건 꽃을 나눠주건 왜 또 니가 나서서 그걸 해야 하느냐고 거품을 물었을 것이다. 유별난 자식을 둬서 늘 버거워하시는 부모님이 참 안쓰럽다. 


 화가 나고 슬프다. 아직도 그렇다. 1년이 됐는데도 학생들과 교수님이 지쳐 떨어져 나가길 바라는 마음으로 질질 끌고 있다. 다들 포기하게 만들고 넥스트를 원하는 대로 직업학교로 만들려는 꼴이 우습다. 그래, 큰 돈임을 안다. 내가 언제 억을 만져나 볼까. 기업 논리 앞에는 약속도 사회적 책임도 아무 것도 없다는 것을 배웠다. 


 나도 멘탈 붕괴말고 얻은 것이 있다. 믿음이다. 그린팩토리 앞에서 꽃을 들고 있는 동안 많은 도움을 받았고, 내가 먼저 믿어야 한다는 것을 배웠다. 그리고 두려움 앞에서 담담할 수 있는 자세도 얻었다. 나도 두려웠지만 결국 협박은 미수에 그쳤으니 그것으로 충분한 것 아닌가. IT업계 어디에도 갈 수 없게 하겠다던 협박범의 어마어마한 협박은 확실히 공갈이었거나, 네이버 계열에만 먹히는 것 같다. 뭐, IT업계에 네이버가 제일 크긴 하지만. 


오만하게도, 나는 내 판단의 윤리적 적합성에 대한 믿음도 얻게 되었다. 나는 지극히 상식적인 인간이라서, 잘못된 일은 하지 않는다. 이 사건의 전말에서 비상식적인 것은 '약속을 하면 지켜야 한다'는 유치원에서 배우는 윤리의식을 깨뜨린 네이버라는 거대 회사다. 


아, 한참을 울면서 글을 썼더니 감정이 씻겨내려갔다. 누가 미운가 생각해봤더니 아무도 밉지 않고 그저 불쌍한 사람 몇이 떠오른다. 꼴 좋다. 군자되긴 글러먹었다. 


누군가는 나에게 튀고 싶고 나서고 싶어한다고도 많이 말한다. 나도 내가 그렇다고 생각했고. 그런데 좀 생각을 바꿨다. 나는 남들이 하지 못하지만, 옳은 말을 할 수 있는 사람이다. 모난 돌이 정 맞는다고 두들겨맞을 만큼 맞았는데도 이 모양이면, 나도 둥글어지긴 글렀다. 


















 


 


저작자 표시 비영리 변경 금지
신고

'일지라고 쓰고 일기' 카테고리의 다른 글

git alias 설정  (0) 2017.02.18
시간이 낫게 해주는 것들  (0) 2017.02.11
나는 아직도 그린팩토리 앞, 그 불그스름한 맨홀 위에 서 있다.  (0) 2016.01.22
12월 22일 일지  (0) 2014.12.22
8월 5일  (0) 2014.08.05
8월 4일  (0) 2014.08.04

 오랜만에 블로그에 글을 써봅니다. 많은 분들이 꾸준히 관심을 가져주셨던 넥스트 사태는 1월 28일 네이버 이사회 결과를 받아든 이후, 딱히 확정된 것 없이 미결된 채로 머물러 있습니다. 열명 남짓 뽑았다던 3기 교육은 예정대로 '모듈식 교육'을 진행할 예정이라고 합니다. 그 결과 기존 넥스트의 교육을 기대하고 지원했던 3기  최종합격생 중 일부 학생은 입학을 포기한 경우도 있습니다. 


 네이버 이사회의 선언대로 곧 넥스트의 교육 방향을 결정하기 위한 [전문가 위원회]가 구성되어 넥스트 교육방향을 결정해 나갈 예정입니다. 넥스트가 원래 꿈꾸었던 '세상을 변화시키는 일반 사용자용 소프트웨어를 만들어 낼 융합형, 현장형 인재' 를 배출하기를 간절히 기원합니다. 이는 넥스트 구성원 모두의 간절한 바람이기도 할 것입니다.


 지난 몇달 간, 넥스트 사태에 관한 많은 글들을 이 블로그를 통해서 공식적으로 배포할 수 밖에 없었습니다. 그러나 처음 이 블로그를 개설할 때는, 그날 그날 배운 개발 지식을 정리하는 차원에서 일지(혹은 일기) 형식으로 글을 올릴 예정이었습니다. 당연히 많은 사람들을 대상으로 이 블로그가 오픈될 일이 있을거라는 상상도 하지 않았지요. 그러나 넥스트 사건에 관해 글을 쓰려다보니 제가 넥스트 학생이라는 사실이 드러날 필요가 있었고, 페북을 통한 본인 인증(?)과 더불어서 더 많은 사람들이 볼 수 있도록 링크가 공개되어야 한다는 판단이 섰습니다. 결과적으로 이 블로그에 올려두었던 "개인적인 내용이 조금이라도 들어있는 글"은 모두 비공개처리하고, 살면서 처음으로 제가 운영하는 블로그를 홍보하기에 이르렀습니다.


 그리고 지금에 이르러, 넥스트 사태가 애매하게 부유하는 상황이 되었습니다. 저는 1월 28일 이후로도 언제 어떤 상황이 될지 모른다는 불안감에 사로잡혀 본연의 임무(?)인 공부에 제대로 집중하지 못하고 있는 것이 현실입니다. 교수님들께 따끔하게 혼이 나보기도 하고, 이리저리 안정감을 찾으려 노력해보았지만, 불안감이 가득한 제 마음 속에는 제가 원래 꿈꾸었던 미래보다는 지금 눈 앞의 상황만이 들어올 뿐입니다. 


 불안감은 제게 상흔이 되어 오랫동안 남아있을 것 같습니다. 그러나 흉터보다는 남은 제 인생을 위해 해왔던 노력이 더 중요하다는 사실도 다시금 상기하는 중입니다. 이에 구정을 기점으로 제 관심사를 다시 원상복귀해놓을 작정입니다. 넥스트에 또 다시 근본이 흔들릴 만큼 큰 일이 생기지 않는 이상, 저 역시 이 곳에는 학습 내용이나 작은 단위로 올릴 예정입니다. 또한 넥스트 생활 중 재미있는 에피소드 정도는 사진과 함께 이야기 형식으로 올릴 수도 있겠네요.ㅎㅎ


 "얘는 왜 이렇게 선언을 좋아하지;;" 하고 생각하시는 분들도 있을 것 같은데, 스스로와의 약속은 쉽게 가벼이 여겨 어겨버리기 때문에 가능하면 자신과 하는 약속은 공언을 하려고 하는 편이라 그렇습니다.ㅠㅠㅠ부디 제가 꿈을 꾸며 미래를 향해 도전하는 것을 '그깟 불안감' 때문에 멈추지 않도록, 넥스트 구성원들이 함께 꿈꾸던 넥스트가 되길 바랍니다. 

 


저작자 표시 비영리 변경 금지
신고
  1. 2기아빠 2015.02.18 13:56 신고

    전 이번 사태가 다영글님이 앞에 없었으면 불가능 하다고봤습니다~고맙습니다~

    • 썬,더 호글 2015.02.19 02:40 신고

      아닙니다!;
      저는 사실 시기적으로 적절한 시점에 움직였을 뿐이지, 정말 많은 분들께서 너무나 애닳아하며 시간과 마음을 써주신 결과, 그나마 여기까지 상황이 진전된 것 같습니다.
      2기아빠..아버님께도 감사드립니다..;;;^^ 학교 상황을 전해들으시면서 많이 속상하고 불안하셨을텐데..넥스트의 소중한 구성원인 아버님의 자녀분을 믿고 지켜봐 주셔서 고맙습니다. 넥스트는 분명 언제든 다시 흔들릴 수 있지만, 저희 넥스트 구성원들을 믿어주세요. 고맙습니다.ㅠㅠ

  2. 2015.02.25 01:16

    비밀댓글입니다

    • 썬,더 호글 2015.03.03 01:25 신고

      감사합니다. 댓글 확인이 늦었네요.ㅎ
      시각디자인과에 계시다니, 넥스트에 오셨다면 얼마나 재미있는 협업을 할 수 있었을지 순간 상상했네요. 예전의 넥스트는 정말 재미있는 곳이었거든요.ㅎ
      ㅎㅎ
      이제 저도 realchacha님께 넥스트에 오셔서 함께 하면 좋겠다는 말씀을 차마 드릴 수가 없게되었네요. 넥스트는 많이 회복되고 있는 듯한 인상을 주지만 여전히 불안정합니다. 앞으로 이 블로그를 통해서 넥스트의 상황이나 사소한 일상들을 자주 올리겠습니다. 관심 가져주셔서 감사합니다.
      제가 경험한 넥스트는 편견이 없고, 상상의 제약이 없는 곳이었습니다. 매사에 자발적이었고, 협동과 헌신이 눈 앞에서 벌어지는 곳이었지요. 그러한 문화가 되살아날 때까지 꾸준히 알려드리겠습니다. 그 때가 오면 realchacha님께서도 넥스트를 향한 꿈을 다시 키워주세요. 고맙습니다.^^

  3. 수고하십니다 2015.09.13 23:11 신고

    고3입시생입니다. 한때 넥스트에 입학하는것이 꿈이엿지만 지금 넥스트의 모습을 보니 많이 슬프내요...
    빨리 한때의 꿈이였던 넥스트가 정상화되었으면 좋겠습니다.

+ Recent posts

티스토리 툴바