지난 17일(월)에 코엑스 그랜드볼룸에서 NHN이 주최하는 개발자 컨퍼런스 Deview 2012가 개최되었다. 매년 가을은 각 회사들이 컨퍼런스를 열어서 어느 컨퍼런스를 가야할지 고민되는 때이긴 한데(봄이나 여름에 좀 나눠서 하지 ㅠㅠ) 작년에도 참석을 못했고 이번엔 아는 사람들도 많이 발표를 하고 해서 휴가를 내서 참석을 했다. 참고로 작년에는 Deview와 SDEC이 따로 열렸었는데 올해는 SDEC이 Deview로 합춰져서 하나의 트랙을 담당하는 형태처럼 되었다.
키노트
국내에서 컨퍼런스를 갈 때마다 느끼는 거지만 국내 키노트는 참 들을 게 없다. 해외 컨퍼런스같은 경우는 (키노트에서 제품을 발표하기도 해서이기도 하지만) 각 세션은 챙겨보지 못하더라도 키노트만은 잠을 안자고 챙겨보게 되는데 국내 컨퍼런스는 이렇기는 커녕 이제는 꾀가 생겨서 키노트는 아예 안듣고 세션시간에 맞춰가기도 한다. 그래도 이번에는 혹시나 해서 키노트에 딱 맞춰서 갔다.
키노트는 누가 어떤 내용으로 하는지 사전에 전혀 공지되지 않았는데 키노트는 2개로 나눠서 진행되었다 첫 키노트는 NHN의 센터장님이 "모바일 시대에 필요한 개발자 정신"라는 제목으로 진행을 하셨는데 각 내용을 나눠서 보면 틀린말이 없기는 약간 내용이 이쪽 저쪽으로 왔다갔다 하면서 진행된 내용이라서 다 듣고 나니까 말하고자 하는 핵심을 잘 이해못하겠다. 결론적으로 다 듣고나서도 모바일 시대에 필요한 개발자 정신이 뭔지는 잘 모르겠다. 두번째 키노트는 가천대 IT 부총장이라는 분이 대학교와 기업의 협업에 대해서 발표하셨는데 발표자의 직책과 제목을 보고 고민도 하지 않고 밖으로 나와서 쉬었다. 경험상 협업에 있지 않은 고위직의 발표는 너무 추상화된 뻔한 말밖에는 안하기 때문에 거의 안듣는 편인데 들은 사람들 얘기를 들어보니 안듣기를 잘한듯하다.
사실 키노트는 그냥 전체 참여자를 모아놓은 하나의 세션이 아닌 컨퍼런스의 방향과 내용을 압축해 놓은 핵심세션이어야 하는데 아직도 국내에서 이런 키노트는 단한번도 보지 못했기에 차라리 키노트없이 세션만 하는게 더 낫지 않나 싶기도 하다.
루비는 패셔니스타 - 문추근(KTH)
언젠가부터는 컨퍼런스에 가면 참석자나 발표자나 아는 사람들이 종종 있는 편인데 이 세션의 문추근님도 개인적으로 친분이 있다. 아는 분의 세션을 듣게 되는건 응원(?)의 성격도 약간은 있겠지만 보통은 친분이 있어서 관심사가 비슷하기 때문인다. 루비는 아주 오래전에 약간 공부한 적이 있긴 했지만 거의다 까먹었고 최근에 문추근님이 사내에서 루비에 대한 발표를 해서 듣고 싶었는데 이번에 들을 수 있게 되었다.
문추근님이 세션 시작시 얘기한대로 루비가 만능이고 최고니까 루비 꼭 배워라라고 얘기하기 보다는 루비를 소개하는 세션이었다. 루비는 마츠모토 유키히로(일명 마쯔)가 1995년에 펄보다 강력하고 파이썬 보다 객체지향적인 것을 만들고 싶어서 만들었고 프로그래밍이 재밌게, 개발자들을 행복하게, 머신중심에서 사람중심적으로라는 디자인 의도를 가지고 만들어졌다. 루비의 특징으로는 객체 지향 프로그래밍으로 모든 것이 다 객체로 이루어져 있고 객체가 주인공이 되어 객체.행동의 문법을 가지게 된다. 그리고 유연한 문법을 가지고 있어서 몽키 패치로 중간에 기능을 바꿀 수 있고 메타 프로그래밍으로 코드의 양으로 줄일 수 있으며 Enumerable 모듈을 통한 객체 중심의 반복이 강력하다. 루비의 영향을 받은 것들로는 prototype.js, Underscore.js, Sugar, CoffeeScript 등이 있다.
Rails는 David Heinemeier Hansson(일명 DHH)가 2004년에 만들었으면 특징으로는 Scaffold가 있다. Scaffold로 레일즈 초기에 15분만의 블로그 만들기 영상으로 큰 인기를 끌었으며 데이터베이스 마이그레이션, 모델, 뷰, 컨트롤러, 테스트등을 스캐폴드 명령어만으로 간단하게 만들 수 있다. 일부에서 스캐폴드는 실서비스에서는 사용할 수 없는 사기라고 말하기도 하지만 스캐폴드라는 말 자체가 건물을 지을때 인부들이 일을 편히 할 수 있도록 건물 외부에 세워두운 철골을 의미하고 건물이 완성되면 걷어지는 것이다. 그리고 레일즈는 RESTful 서비스를 만들기 쉽게 되어 있다. 레일즈의 영향을 받은 것들로는 CakePHP, Grails, Play!등이 있다. 레일즈를 활용하는 서비스들은 Twitter, Groupon, Github등이 있다.
하지만 한국에서는 왕따신세이다. 왜 그런가 생각하면 보통 느리다라는 인상이 있고 트위터도 RoR을 걷고 스칼라로 갈아탔다는 얘기들이 있어서인데 이건 하이브리드 앱과 비슷하다고 생각한다. 등가교환의 법칙처럼 얻는게 있으면 잃는게 있는 법인데 모바일의 시대가 되서 수없이 많은 앱이 쏟아지고 있기 때문에 개발속도가 더 중요한 서비스들이 있다고 생각한다. 그리고 배워야 하는 이유는 개발자라면 터미널에서 맘껏 사용할 수 있는 언어가 있어야 된다고 생각한다. 그리고 실용주의 프로그래머 Tip #8에 나왔듯이 "매년 새로운 언어를 배워라."를 생각해 볼 수 있는데 다른 언어는 같은 문제를 다르게 해결하기 때문에 여러모로 도움이 된다. 하지만 새로운 언어를 배울때 기존 언어의 사용법대로 작성하는 것은 의미가 없으므로 각 언어의 스타일대로 하도록 노력해야 한다. 그리고 제가 좋아하는 말이기도 한 루트비히 비트겐슈타인의 "언어의 한계가 곧 자기 세계의 한계다."라는 말로 세션을 끝내셨습니다.
정말 오랜만에 루비 세션이었다. 사실 RoR을 신기술이라고 할 수는 없기 때문에 여기서 문법을 설명할 것인지 어떤 수준으로 설명할 것인지 고민이 많으셨을꺼라는 생각이 드는데 그런 면에서 발표는 괜찮았다고 생각한다. 너무 오랜만에 듣는 루비 세션이라 왠지 반갑;;; 문추근님이 사내에서 루비발표를 여러번 해서 한 3시간정도로 준비된 발표를 축약해서 발표하신 걸로 알고 있는데 시간계산을 다 하셨다고 했는데 안타깝게 한 15분 정도나 일찍 끝났다. 그 시간에 좀더 많은 내용이 다뤄졌어도 좋았겠지만 개인적으로 발표한 주요개념들은 나도 좋아하는 얘기들이라 재미나게 들었다.
Apache Kafka: Inside LinkedIn's distributed publish/subscribe messaging system - Richard Park (LinkedIn)
Apache Kafka는 분산 Pub/Sub 메시징 시스템으로 Scala로 만들어졌다. Kafka이전에는 메시징에 ActiveMQ를 쓰고 로깅에는 Splunk등을 사용했었는데 서비스의 성장에 맞춰서 확장하기가 어려웠다. 그래서 링크드인은 Robust하고 확장할 수 있고 지연시간이 적으면서 신뢰할 수 있는 시스템이 필요해졌다. 기존에 Flume이나 Scribe등이 있었지만 효율적으로 데이터를 보관할 수 있고 온라인/오프라인 모두에서 데이터를 소비하고 pull/push가 되는 Kafka를 새로 만들기로 결졍했다.
Producer가 앞에서 로드밸런싱의 역할을 해서 이벤트 메시지나 로그를 전송하고 Blocker가 메인 스토리지 서버의 역할을 하게 된다. Consumer가 데이터를 땡겨오게 되고 ZooKeeper가 노드를 모니터링하고 있다. 프로토콜은 Avro를 사용하고 있는데 Avro는 다이나믹 타입이고 별도의 코드를 생성하지 않으면서 간단하고 JSON이기 때문이다. 그리고 데이터를 실뢰할 수 있도록 넣은 데이터가 반드시 나왔는지를 감시해서 놓치거나 지연되는 데이터를 감시하기 위헤서 프로듀서, 블록커, 하둡의 이벤트 카운트를 세서 문제를 찾는다. 카프카를 모니터링하는데 카프카를 사용하고 있으면 현재 아파치 인큐베이팅상태이고 0.7.1버전이다.
이 날 들은 유일한 영어 세션인데 동시통역이 제공되었지만 듣지 않았다. 동시통역을 듣다 보면 영어도 잘 안들리면서 동시통역도 헷갈리고 해서 영어공부도 할겸 그냥 직접 들었기 때문에 내용을 다 파악하진 못했다. 얼기설기 대충 듣기는 하는데 아직 들으면서 정리해 적기까지는 힘들다. ㅋ 그냥 자세한건 다 파악하기 어렵구 Kafka가 이런거구나... 정도만 이해한 것 같다. 당분간 내가 쓸일은 없겠다 싶은..
Scala, 미지와의 조우 - 이동욱(SK Planet)
스칼라를 40분동안 어떻게 설명할 지를 고민했는데 결국 주입식밖에는 없겠다는 생각이 들었다. Scala는 Scalable Language의 머릿글자를 따서 이름이 지어졌고 마틴 오더스키가 만들었는데 이 사람은 자바의 제너릭을 만든 사람이기도 하다. 구글 트랜드에 검색해봤을 때 Groovy나 Clojure보다 인기가 좋고 트위터가 현재 많이 사용하고 있다. 스칼라는 하이브리드 언어로 Eiffel, Haskell, Erlang, Smalltalk, ML, Java등의 영향을 받았고 함수형 프로그래밍이면서 강한 타입시스템을 가지고 있고 JVM상에서 동작한다.
개인적으로 친분이 있는 이동욱님의 세션이었다. 2년전 KSUG 세미나에서 발표한 Scala 세션을 듣고 계속해서 스터디를 같이 해놨기 때문에 내용을 배우려고 한다기 보다는 응원차 참석했다. 그래서 딱히 정리하진 않았다. Scala에 기본적인 사용법에 대한 안내라서... 내가 현실을 망각했는지 이런 큰 세미나에서 다른 선택권 대신 Scala를 선택했으면 기본적인 지식은 있을 때니 기초문법 하지말라고 꼬셨었는데 그 말을 듣지 않으시고 기초부터 진행하셨는데 나이스한 선택이셨다 ㅡㅡ;; 나도 못 알아들으면 어쩌나 했는데 그래도 알아들어서 안심은 했지만 쉽게 잘 설명했다고 생각했는데 어렵다는 반응이 온걸로 봐서는 내말대로 하셨으면 아주 큰일날 뻔 했다. 요즘 Scala의 분위기가 조금씩 올라오는데 국내에서도 이런 큰 컨퍼런스에서 Scala를 볼 수 있게 되서 아주 기쁘다.
댓글 없음:
댓글 쓰기