Outsider's Dev Story

Stay Hungry. Stay Foolish. Don't Be Satisfied.
RetroTech 팟캐스트 44BITS 팟캐스트

KSUG 번개세미나에서 발표한 "Node.js 자바스크립트로 서버사이드 개발하기" 발표자료 공유

앞서 포스팅한 KSUG 번개 세미나에서 발표한 내용입니다만 발표자료도 포함되어 있고 해서 따로 포스팅합니다. 앞의 글에서도 얘기했지만 이번 세미나는 갑작스럽게 기획되어서 진행된 세미나였고 제가 알기로도 일주일 정도로 알고 있습니다. 일주일정도 전에 세미나가 KSUG 세미나가 열린다는 것을 알고 기뻐하는 와중에 KSUG 회장이신 fupfin님이 node.js 발표를 하나 하라는 압력을 슬쩍 주셨습니다. 그땐 농담으로 받아들이면서 넘어가긴 했는데 fupfin님은 농담과 진담을 같은 농도로 하신다는 것을 알고 있기 때문에 발표를 한다면 어떤 방향으로 해야하나 약간씩 고민하고 있다가 공지가 fupfin님의 발표로 나와서 "농담이었네~"라고 안심하고 있던 와중 다시한번 압력이 들어와서 발표 4일전에 세션을 맡기로 결정했습니다.

사실 준비하면서 발표의 방향을 잡지 못해서 많이 우왕좌왕했습니다. 몇달전에 봄싹 스웨거에서 What is node.js라는 제목으로 발표를 한번 한적이 있었는데 이 당시에는 HTML5 AG에서 발표했던 경험을 토대로 좀 오랜기간 준비를 했기 때문에 나름 괜찮은 흐름으로 만들어졌다고 생각하고는 있었지만 대안언어축제의 Unconference에서도 한번더 써먹기도 했고 한번 만들어놓은 발표를 우려먹는 것 같아서 다시 써먹고 싶지 않았습니다. 발표를 한번 준비하고 1회성으로 끝난다는 건 사실 ROI로 봤을때 상당히 비효율적이라고는 생각하지만 듣는 사람입장에서는 같은 내용을 2번 듣는것이기 때문에 성경상 그렇게 하고 싶지 않았습니다. 겹치는 멤버가 어느정도 있다는 것도 알고 있었고요. 같은 걸 설명하는데 너무 지난번에 한 내용을 하나도 안넣으려고 하니 오히려 흐름이 이상해 져서 나중에는 필요한 내용을 재사용했습니다.



더욱이 저번 발표에서는 node.js의 동작방식이나 개념에 대해 상당히 집중하고 있었는데 node.js는 JavaScript를 하면 쉽게 사용할 수 있는 아주 접근성이 좋은 기술이라고 생각하고 있는데 막상 발표를 하고나니 개발자들이 약간은 생소한 Event기반, non-blocking I/O, 싱글쓰레드에 대해서 어떻게 그게 되는가? 이런 경우에는 어떻게 동작하는가?, 정말 싱글쓰레드로만 동작하는가? 논블락킹 I/O면 디비같은데의 동시성은 어떻게 해결되는가 하는 개념부분에 너무 집중해버리는 결과가 생겨버렸습니다. 사실 node.js를 하는데 이런 부분을 다 이해하지 않아도(저도 다 이해는 못했고요) 사용하는데 큰 어려움이 없는데 제 의도와 좀 다른 결과가 나왔기 때문에 이번 발표에서는 개념은 간단히만 설명하고 실제로 보여주면 훨씬 이해가 쉽겠다라는 쪽으로 방향을 잡았습니다. 사실 저는 라이브코딩의 전달력에 대해서 약간 의구심을 가지고 있는 편이라(중간중간 버그로 인한 혼란이나 잦은 화면 및 파일전환은 보는 사람이 파악하기 어려움 등) 라이브코딩을 좋아하지 않는 편인데 방향을 위와같이 잡은터라 어쩔수 없이 라이브코딩을 선택했습니다.


저는 가르 레이놀즈가 프리젠테이션 젠프리젠테이션 젠 디자인에서 내용들에 대해서 상당히 공감하고 있는 편입니다. 몇번 발표자료를 준비해보고 나니 어느정도 제가 만드는 발표자료의 스타일이 자리잡혀가는 느낌이 좀 있습니다.(대부분 프리젠테이션 젠에서 배운 것이지만....) 보통 SI의 제안서 스타일에 글씨가 빽빽해서 다 읽을 수도 없는 슬라이드는 혐오하는 데다가 가르 레이놀즈가 얘기한 발표없이도 모두 이해할 수 있는 발표자료라면 발표자가 머하러 필요하냐는 얘기에 무척 공감하기 때문에 발표자료는 아주 심플하게 가는 편입니다. 그래서 사실 이렇게 공유를 해도 발표자료만 보고 전체 내용을 파악하시긴 어려울꺼라 생각하지만 그래도 만든거니 공유합니다. ㅎㅎ

사실 슬라이드는 한 20분정도만 하고 30분 정도는 모두 라이브코딩으로만 진행했기 때문에 발표자료를 공유하면서 소스코드도 모두 설명할까하는 생각도 해보았지만 귀찮은 일이기도 하고 KSUG에서 조만간 발표영상을 공유할 예정으로 알고 있기 때문에(전문 촬영은 아니라 퀄리티가 아주 뛰어나진 않겠지만 볼만한 정도로 들었습니다. 정확한 시기는 잘...) 발표영상이 나오면(손발이 좀 오그라들겠지만) 공유하는 것으로 하고 발표자료만 공유합니다. ㅎ

라이브코딩은 헬로월드 예제부터 몇가지 node.js의 특성을 보여줄 수 있는 간단한 예제를 보여주고 Socket.IO를 이용한 채팅예제를 만들었습니다. 처음에는 최근에 Socket.IO가 많이 나온것 같아서 JSDom을 이용한 예제를 준비하다가 구글검색의 URL이 이상해 진데다가 한글사이트는 인코딩 문제가 있는 것을 알게 되고는 역시 짧은 시간에 보여주기에는 Socket.IO가 낫다고 생각하고 채팅예제로 바꾸었습니다. 라이브코딩을 많이 연습은 못했지만 그래도 큰 실수없이 진행되어서 전달은 기대한 만큼은 된 것 같습니다. 준비는 더 힘들지만 진행이 자연스럽게 되면 라이브코딩도 할만하구나 하는 생각이 드는군요.(채팅예제 다 만들고 마지막에 채팅창에 메세지를 입력할때 안돌아가면 어쩌나 하고 어찌나 긴장했는지.. ㅋ)



원래 사람앞에 나서는거 별로 안좋아하는 성격이다가 좀 마인드를 바꿀 필요가 있다고 생각하고 있었는데 올해는 발표기회가 종종 오게되는군요. KSUG에서 좋은 세미나를 준비해주신 덕분에 좋은 발표경험을 한것 같습니다. 발표준비를 하게 되면 기술을 그냥 다루기만 할때랑은 약간 다른 시각으로 봐야해서 시간은 많이 들더라도 도움은 많이 되는듯 합니다. 이번 발표는 걱정도 많고 고민도 많이 하긴 했지만 5천원의 참가비와 주말의 시간투자는 제가 세션하나 말아먹(?)더라도 2,3세션의 benelog님Toby님이 충분히 채워주실 것이라고 생각해서 맘은 좀 편했습니다. ㅎㅎㅎ
2011/07/05 00:13 2011/07/05 00:13