Outsider's Dev Story

Stay Hungry. Stay Foolish. Don't Be Satisfied.

Node Interactive North America 2016 참석기 : Day 1

어느새 한 달이나 지났지만 지난 11월 29일부터 12월 2일까지 Node Interactive North America 2016에 참석차 미국 텍사스 오스틴에 다녀왔다. 매년 해외 콘퍼런스를 한 번 정도는 참석하려고 하고 있지만 Node.js 콘퍼런스는 2012년 Nodconf 참석 후 4년 만에 처음 참석했다.

Node.js가 2009년 처음 공개되었고 2012년에도 Node.js가 한창 주목을 받기 시작한 때이고 커뮤니티가 꽤 활발하게 구성된 상태였지만 지금에 비교한다면 상당히 초기 단계였고 지금처럼 Node.js 재단이 아닌 커뮤니티 주도로 콘퍼런스 등이 개최되던 때였다. 그때의 기억이 너무 좋았기 때문에 오랜만에 Node.js 콘퍼런스도 참석하고 싶었고 Node.js 재단이 생기고 만들어진 Node Interactive를 한 번도 못 가봤기 때문에 꼭 한번 참여하고 싶어서 다녀왔다.

전체적인 느낌을 얘기하면 2012년도는 커뮤니티 주도 세미나였다면 2016년은 훨씬 큰 규모이면서 일반적인 세미나 느낌이 났다. 나쁘다는 의미는 아니고 이젠 Node.js가 더 보급되었다는 의미이기도 하지만 단순 콘퍼런스 참석자로서는 2012년 느낌이 훨씬 좋다고 할까... 2012년에는 메일링이나 GitHub에서 활동하는 개발자 중에서 유명한 사람은 대부분 이름을 외우고 있을 정도였고 그 사람들이 다 한자리에 모였기 때문에 만나면 인사도 많이 하고 2~300명 정도밖에 안 되므로 2~3일 같이 지내면 얼굴도 대부분 외우기 때문에 말 걸기도 쉽고 같이 밥도 먹으러 가고 그랬는데 이번에는 천 명 이상 모였으므로 서로 친해질 기회도 훨씬 적었고 메인테이너들도 이름을 처음 들어보는 사람도 많았다.

텍사스 오스틴

IMG_7193

텍사스 오스틴은 처음 가봤다. 콘퍼런스를 갈지 말지 고민하면서 비행기나 숙소 등을 알아볼 때 오스틴까지는 직항으로 가는 곳이 없어서 최소 1번은 경유를 해야 했고 그동안 미국에 가던 것에 비해서 비행기가 너무 비쌌다. 약간 더 싼 비행기들은 2번 이상 경유를 하면서 오스틴까지 가는데 20시간 이상이 걸려서 1번 거치는 비행기로만 찾았는데도 꽤 비쌌다. 그리고 경유시간 포함해서 16시간 정도는 걸렸다. ㅠ 결국 난 댈러스를 거쳐서 가는 비행기를 예약했다.

최근에 미국 갈 때는 거의 Airbnb를 이용했고 혼자 갈 때는 아무 데서나 안전하게 잠만 자면 되므로 Airbnb에서 아주 싼 숙소를 보통 잡는 편이었다. 혼자만 묶는 숙소는 단체로 이용하는 숙소나 Airbnb의 원래 개념대로 누군가의 집의 방 하나를 쓰거나 마루에서 커튼 정도 치고 자는 때도 있었다. 그래도 가격이 많이 싸므로 혼자 이용하면 이런 곳을 사용했는데 오스틴에는 이런 Airbnb 숙소가 많지 않았다. 도심 외곽으로 나가면 있을지 몰라도 그러면 교통비가 추가로 들기 때문에 걸어갈 수 있는 곳을 생각해도 사진으로 보는 숙소에 비해서 너무 비쌌고 호텔이나 Inn보다 가격 차이도 많지 않았다. 어차피 이럴 거면 그냥 Inn을 이용하자는 생각에 오스틴 도심에 있는 Holiday Express Inn을 예약했다.

node-interactive2016-01

도심이라도 보통 싼 곳을 잡으니 지역이 아주 좋은 지역은 안 잡게 되는데 이번에도 바로 옆에 노숙자 센터 같은 게 있어서 건물 밖으로 나오면 노숙자가 바글바글했다. 그래서 번화가로 나갈 때는 항상 좀 돌아서 나가게 됐다. 투베드룸이었는데 깔끔하고 나쁘지 않았다.(둘이 갔으면 숙소비를 꽤 아꼈을 텐데... ㅠ)

node-interactive2016-02

아침을 제공해 주는데 퀄리티도 꽤 좋았다. 나중에는 콘퍼런스에서 조식을 제공해서 콘퍼런스 가서 먹었지만 난 이 아침이 아주 좋았다. 하루에 $100 정도인데 1층에는 꽤 큰 헬스장도 있어서 24시간 이용할 수 있고 온수 수영장도 있어서 수영도 할 수 있었다. 난 안 했지만...

node-interactive2016-03 node-interactive2016-03-1

1층에 스낵바가 비치되어 있어서 음료수랑 과자를 가져다 먹을 수 있다. 과자는 많이 먹지는 않았지만, 음료수가 있는건 참 좋았다. 사다 먹을 필요가 없어서. ㅎㅎ 간단히 전자레인지에 돌려먹을 수 있는 냉동 음식 같은 것도 있어서 배고플 때는 이걸로 식사도 좀 해결했다.

5일 동안 오스틴에 있는 중 나흘 동안 콘퍼런스에 참여했기 때문에 도심 밖으로 나갈 일이나 관광을 다니지는 않았는데 오스틴은 참할게 없다는 생각이 들었다. 중심가에는 호텔 등의 건물이 많고 번화가에는 라이브연주를 해주는 술집이 좀 있는 정도고 딱히 볼 게 있지 않았고 주변 검색을 해봐도 딱히 갈만한 곳이 없었다. 여행으로 와서 꽤 멀리 나가보면 뭐가 있을 것 같긴 한데 간단히 돌아보기에는 오스틴은 꽤 심심했다. 최소한 나한테는... meetup 검색해봐도 이런 행사도 거의 없고... 애플샵이나 쇼핑몰 같은 곳도 차 타고 15분 정도 밖으로 나가야 있어서 더 할 게 없었다.

Node Interative Day 1

IMG_7260

Node Interative는 오스틴 중심가에 있는 JW Marriott 호텔에서 열렸다.

IMG_7266

재단이 있고 규모가 확실히 커졌다는 느낌이 들었다. 호텔이다 보니 시설도 좋고 아침도 주면서 중간 쉬는 시간마다 과일이나 커피 등을 계속 제공해 주어서 콘퍼런스 들으면서 계속 듣고 왔다. 가장 큰 공간에서 키노트가 진행되고 4개의 트랙으로 세션이 진행되었다.

열심히 듣긴 했어도 영어라서 발표 내용을 다 알아듣는 것은 아니므로 여기서는 흥미롭게 들었던 세션만 간단하게 정리하겠다. 녹화된 발표가 유튜브에 모두 올라왔으므로 관심 있으신 분은 여기서 보기를 바란다. Node INteractive는 특이하게 한 세션이 20분 정도로 진행되었다. 많은 세션이 진행되기는 했지만, 개인적으로는 20분이 너무 짧아서 좀 흥미롭게 들을만하면 세션이 끝나는 기분이었다. 좀 더 깊은 내용을 듣고 싶은데 개요를 설명하고 흥미가 생길만하면 나머지는 프로젝트 소스를 보라거나 다른 자료를 보라 하는 정도로 끝나는 게 좀 아쉬웠다.

키노트: Welcome - Mikeal Rogers, Node Foundation

현재 Node.js 재단을 주도하고 있는 Mikeal Rogers의 인사말 겸 키노트로 Node.js에 대한 전체적인 부분을 설명했다. 매년 100% 이상의 성장을 이루고 있고 현재 매달 5백만 명의 사용자가 있고 천오백만 다운로드가 매달 이뤄지고 있다. 현재 Node.js의 큰 이슈로는 V8에 의존하는 상황을 벗어나서 Nodejs를 VM 중립적으로 만들려고 작업을 하고 있다. - 발표 영상

키노트: Express, State of the Union - Doug Wilson, Express

Doug Wilson은 Express의 리드 개발자이다. TJ가 StrongLoop로 프로젝트를 넘긴 뒤 Doug가 이끌어서 개발을 해오고 있었고 StrongLoop가 IBM에 인수된 뒤 Doug한테 다른 일이 떨어져서 Express 개발이 좀 멈추었는데 지금 소속은 모르지만, IBM은 퇴사하고 Express를 이끌고 있다. Express는 2016년 초에 Node.js 재단의 첫 인큐베이팅 프로젝트가 되었다.

현재 조직이 3개로 나누어져 있는데 메인 프로젝트인 Express와 Express를 모듈 단위로 분리하면서 모아놓은 곳인 pillarjs, 저수준 JS HTTP 관련 모듈을 모아놓은 jshttp이다.

Express 5.0을 준비하고 있는데 5.0에서는 라우팅에서 네이티브 Promise를 지원하고 템플릿 엔진 개선, 쿼리스트링/쿠키 처리 개선, 새로운 라우팅 문법 추가 등이 예정되어 있다. 그리고 새로운 컨트리뷰터와 커미터를 만들기 위해서 다양하게 노력하는 중이다. - 발표 영상

키노트: Contributing to Node.js: Coding Not Required - William Kapke, Kap Co, LLC

Kapke라는 개발자는 잘 모르고 있었지만 콘퍼런스 내내 활동이 눈에 띄던 개발자였다. 이 발표에서는 Kapke가 Node.js 프로젝트에 기여를 시작하고 참여하게 된 과정을 설명했다. Node.js에 관심을 가지고 기여하려고 하다 보니 생각보다 정보를 찾기가 어려웠다. Board 미팅 등에 대한 정보를 찾다가 트위터에 올려서 대답을 듣고 이를 다시 정리해서 문서로 만들고 하면서 참여를 했고 현재 기술위원회와 워킹그룹의 구조 등에 관해서 설명해서 관심 있는 사람들이 참여할 수 있도록 권하는 내용이었다. Node.js는 현재 엄청나게 큰 커뮤니티이고 모두가 자발적으로 활동하는 것이므로 기여를 더 많이 하게 하고 프로젝트가 나아가려면 서로가 인내를 해야 한다. - 발표 영상

IMG_7282


A Beginner's Guide To Reading Node.js Core Source - Rich Trott, UC San Francisco

Node.js 코어 소스를 읽기 위한 가이드를 제공하는 세션이었다. 일단 문서를 먼저 보는 것을 권장하지만, 문서를 만드는 것은 몹시 어려운 일이다. 코드는 lib/whatever.js를 보면 되는데 상당히 읽기 쉽게 되어 있다. 테스트 코드는 test/parallel/test-whatever-*.js, test/sequential/test-whatever-*.js를 보면 되고 /test/REAME.md의 문서를 보면 도움이 된다. 테스트를 추가하고 싶으면 doc/guides/writing_test.md에 설명이 잘 되어 있다. Node.js 코어 프로젝트에 기여를 돕기 위해서 http://nodetodo.org/ 사이트를 운영하고 있다. - 발표 영상

Slaying Monoliths with Docker and Node.js, a Netflix Original - Yunong Xiao, Netflix.com

Netflix의 각 모바일 클라이언트, TV, 웹 브라우저 등 다양한 클라이언트에 대응하기 위해서 이전에는 Monolith로 구성된 하나의 큰 Java 백엔드를 운영하고 있었다. 이 앞에 REST API를 두어서 관리하고 있었지만, 유지보수가 어려웠고 빠른 변화를 주기가 쉽지 않았다. 그래서 클라이언트마다 Node로 만들어진 API 계층을 두고 통신하게 해서 발전시킨 과정을 설명하고 있다. 꽤 재밌었던 발표였다. - 발표 영상

Solving Service Discovery - Richard Roger, Nearform

Nearform은 국내에서는 별로 알려지지 않은 것 같지만 유럽 쪽에서 Node.js 컨설팅을 하는 회사로 꽤 유명한 회사이고 흥미로운 프로젝트도 여러 가지 진행하고 있다. 이 발표는 Nearform에서 만든 마이크로서비스 툴킷인 Seneca에서 사용 중이라고 생각되는 서비스 디스커버리에 관해 설명했다. 마이크로 서비스를 사용하면 빨리 개발을 하면서 지속적인 배포를 할 수 있고 기술 부채를 피할 수 있지만, 배포는 훨씬 복잡해 지고 좀 어색해 보이는 프로그래밍 모델을 사용해야 하고 서비스가 서로 찾을 수 있어야 한다. 여기서 서비스 디스커버리는 설정 파일, DNS, 서비스 레지스트리 등을 이용하는데 서비스가 서로를 인식하게 되면 커플링이 심해지므로 서비스 디스커버리 대신 메시지를 중심으로 서비스를 연결하는 방식을 설명하고 있다. 서비스는 누가 응답하는지 모르지만 메시지를 전달하면 이를 가져가서 메시지를 응답해 주어 디커플링하는 것으로 이해했다. 최근 관심 있는 부분이기도 해서 재미있었다. 특히 인프라 구성은 야크쉐이빙과 비슷해서 할 일이 계속 생긴다는 말에 공감했다. - 발표 영상

Node.js & ChakraCore - Arunesh Chandra, Microsoft

MS에서 ChakraCore를 V8 대신 사용하게 하는 프로젝트에 관해 설명한 세션이었다. 많은 개발자처럼 나도 ChakraCore가 들어오면서(앞에서 얘기한 VM 중립적으로 가는 과정 중 하나이다.) 현재 웹 브라우저처럼 Node.js 개발자들이 VM 호환성 작업을 책임져야 하는 크로스 VM 지옥에 빠질까 봐 걱정하는 편이었고 왜 Node.js에 V8 대신 Chakra가 필요한가도 의문인 편이었다. 부스에서도 물어보고 세션에서도 설명을 들었지만, MS와 Node.js에서도 이에 대한 걱정을 많이 하고 있는 것 같았다. 그래서 발표자도 ChakraCore를 Node.js에 심으면서 베이스라인으로 정해놓고 있는 것이 Node.js 생태계에 도움이 되어야 하고 현재 Node.js 생태계가 ChakraCore에서도 동일하게 동작해야 한다는 것이다. 그리고 이 과정을 투명하게 공개하고... 발표에서는 Node.js - CharkaCore로 Time Travel Debugging을 하는 과정을 보여주고 기존 Node 코드를 CharkaCore에서도 똑같이 동작하는 데모 등을 보여주었다. - 발표 영상



이 글은 Node Interactive North America 2016 참석기 : Day 2 ~ 4로 이어집니다.

2016/12/25 19:50 2016/12/25 19:50

기술 뉴스 #68 : 16-12-16

웹개발 관련

  • The State of Babel : Babel이 이제 JavaScript 생태계에서 중요한 부분을 차지하게 됐는데 이젠 거대해진 Babel 프로젝트의 진행 상황을 설명하고 있다. 5.0 부터 각 버전에 추가된 주요 기능부터 현재 프로젝트의 이슈 등을 자세히 설명하고 주요 플러그인의 진행 상황과 이슈 및 앞으로 개발해야 하는 내용을 자세히 설명하고 있다. Babel처럼 이미 거대해진 프로젝트는 개발 흐름을 파악하기가 어려운데 이 글에서 현재의 상태를 정확하게 알 수 있다. 글의 핵심은 Babel이 회사가 아니므로 컨트리뷰션이 필요하고 현재 제대로 운영하기에 많이 부족하다는 부분이 핵심으로 보인다.(영어)
  • Ok... let me explain: it's going to be Angular 4.0, or just Angular : Angular의 리드 개발자인 Igor Minar가 최근 Angular 콘퍼런스에서 Angular 4.0에 대해서 발표한 내용을 정리한 글이다. 현재는 Angular 1과 2로 나누어져 있는데 2부터는 semver를 따를 것이므로 3나 4로 버전이 올라갈 때 1과 2 두 라인에 대한 버전 관리 문제가 생긴다. 그래서 이를 1,2를 4.0으로 통합하고 이후부터는 5,6,7로 버전이 올라갈 것이다. 3가 아니라 4가 된 이유는 다른 코어 모듈이 현재 2.3인데 angular/router가 3.3이므로 버전 충돌이 생기지 않도록 4.0으로 올라가고 이는 내년 3월에 릴리스할 계획이다.(영어)
  • Six Speed : ES2015의 기능을 Babel 등의 도구를 사용해서 ES5로 변환했을 때 성능을 한눈에 비교해 볼 수 있게 정리해 놓은 웹페이지다. 변환 도구를 선택하거나 ES2015의 기능을 사용하고 싶을때 성능이 걱정된다면 참고하기에 좋다.(영어)
  • 한글 웹폰트 글꼴보기집 : 스포카에서 디자이너로 일하는 강영화님이 만든 웹사이트로 한글 웹폰트를 모아놓고 텍스트나 글씨 크기를 바꿔가면서 미리 느낌을 볼 수 있고 iOS, Andorid, MacOS, Windows 등에서 어떻게 보이는지까지 한 번에 비교해 볼 수 있게 정리되어 있다.(한국어)

그 밖의 프로그래밍 관련

  • Dear JavaScript, : 제목은 JavaScript 커뮤니티에 하는 얘기지만 전에 오픈소스 프로젝트에 해당하는 얘기이다. 이전 Babel의 메인테이너였던 James K가 6.0을 릴리스한 이후 릴리스 이전에 커뮤니케이션을 열심히 했음 해도 불구하고 엄청난 비난을 받으면서 왜 다른 일도 많은데 Babel 개발을 계속해야 하는가 하고 그만둔 얘기를 하고 있다.(실제로 이후 그만두었고 Babel은 팀을 설정하느라 시간이 꽤 걸렸다.) 메인테이너들의 번아웃은 생태계에 큰 문제를 주므로 이런 분노를 표출해서 메인테이너들에게 악영향을 주는 방법이 아니라 피드백을 제공하고 문제를 같이 해결할 수 있는 긍정적인 방법을 취해야 한다는 얘기의 글이다. 개인적으로는 "왜 메인테이너나 프로젝트를 비난하는 글을 메인테이너들이 읽어야 하는가? 문제는 혼자서 해결해야 하는데.."에 꽤 공감이 갔다. 가끔 프로젝트 하다가 짜증 나면 투덜거렸던 것에 약간 반성 중(영어)
  • AWS re:Invent 2016 총정리 : 이번 re:Invent 행사에서 수많은 신규서비스가 추가되었는데 이 글에 이번에 발표된 서비스와 기능이 잘 정리되어 있다.(한국어)
  • 당신이 2017년에 배워야 할 언어, 프레임워크, 툴에 대하여 : The Languages, Frameworks and Tools You Should Learn in 2017의 번역 글로 최근에 나온 기술이나 내년에 나올 기술을 중심으로 2017년에 관심 가져야 할 기술을 정리했다. 전체적인 트렌드를 포함해서 언어, 프론트엔드, 백엔드, 클라우드 등 관심 가져야 할 기술이나 프레임워크를 간략히 소개하고 주목해야 하는 이유도 나와 있어서 가볍게 읽어볼 만 하다.(한국어)
  • 리액트 네이티브 (React Native) 일년 : Radish에서 React Native로 앱을 개발해서 iOS와 안드로이드를 모두 런칭하고 1년 정도 유지보수를 하면서 느낀 점을 정리한 글이다. 실제 개발을 하면서 주의해야 할 점이나 React Native를 검토하고 있을 때 참고할 만한 장단점이 나와 있다.(한국어)
  • How we made diff pages three times faster : GitHub에서 diff를 보여주는데 큰 파일이나 많은 파일의 diff로 부하가 생기거나 타임아웃에 걸리는 문제를 막기 위해 어려가지 제약사항을 두고 있었지만, 점점 타임아웃 문제가 많이 발생하기 시작했다. 이를 해결하기 위해 git-diff-tree등을 이용해서 전체 diff의 상태를 가져온 뒤 일부 diff만 가지고 페이지를 만들고 이후에 이어서 남은 diff파일을 가져와서 이전보다 3배 따르게 성능을 개선했다.(영어)

볼만한 링크

  • 풋내기 창업자의 스타트업 창업하기_5화 페북 광고..돈을 써봐야만 알 수 있는 것들 : 요즘 스타트업은 페이스북으로 마케팅을 진행하는 것이 기본인데 아무래도 돈을 써서 사용해 보면서 얻는 정보라 그런지 페이스북 마케팅에 대한 경험에 관한 내용은 많이 보기가 어려운데 당근마켓에서 그동안 진행한 페이스북 마케팅 경험을 기반으로 마케팅 효과를 최대화하면서 돈을 효율적으로 쓰기 위해 최대도달 범위와 빈도수를 세팅하는 방법에 대한 경험을 공유했다.(한국어)

프로젝트

  • jid : jq처럼 JSON을 탐색할 수 있는 도구인데 자동완성이 되고 인터렉티브로 탐색해 볼 수 있는 도구.
  • Orchestrator : GitHub이 오픈소스로 공개한 MySQL 리플리케이션 토폴로지 관리 도구로 장애를 탐지해서 복구하고 토폴로지를 관리한다. 자세한 내용은 GitHub의 글 참고.
  • Sorna Project : 코드 스니펫을 격리된 환경에서 실행할 수 있는 코드 분산 실행 프레임워크.
  • netdata : 실시간 서버 모니터링 시스템.
  • Inferno : React처럼 virtual DOM으로 UI를 만들 수 있는 JavaScript 라이브러리.

버전 업데이트

2016/12/16 03:06 2016/12/16 03:06