Blog

레일스 컨퍼런스의 절정입니다. 어제보다 활발하게 네트워킹(대화)가 일어나고 있습니다. 문자로만 만나던 개발자들을 직접 만나 이야기를 듣고, 고민을 나누니 감회가 새롭습니다.


컨퍼런스, 다양한 소통이 일어나는 곳

오늘 가장 흥미로웠던 세션은 무엇보다도 오픈 마이크 데모(Open Mic Demo) 세션이었습니다. 이 세션은 현장에서 바로 신청을 받아서 5분간 자신의 작품을 커뮤니티에 발표할 수 있는 자리입니다. 다들 자신이 만든 결과물에 대한 자부심이 느껴지고, 또 청중들이 함께 환호해주는 분위기가 너무 좋습니다. 플러그인을 발표하는 사람도 있고, 레일스로 직접 개발한 사이트를 발표하는 사람도 있습니다. 축제의 장이라는 표현이 어울려 보입니다.


그 중 가장 기억에 남았던 발표는 revolutionhealth.com 이었습니다. 루비로 만든 건강에 관련 포털 사이트인데, 페이지의 일부를 클리핑하고, 이 조각을 위짓처럼 마음대로 배치해서 페이지를 꾸미는 모습이 흥미로웠습니다. 스프링노트와 유사한 변경 기록도 있더군요. 무엇보다 재미있었던 점은, 개발하면서 얻게 된 노하우 일정 간격(2주)으로 레일스 플러그인 형태로 만들어 공개한 다는 점이었습니다. 멋진 친구네요.


누군가 OpenID를 기반으로 한 그룹 토론 툴을 만들었다고 해서 솔깃했는데, 알고 보니 루비 오픈아이디 라이브러리를 만든 Brian Ellin이었습니다. 오픈 아이디에 푹 빠져있는 모습이 kayflow님 같았습니다. 마이아이디를 소개해주고 싶어서 끝나자마자 달려갔는데, 사라져버려서 이야기를 못했습니다(실은 제가 얼굴을 잘 기억을 못한 것일지도). 아쉽네요. 내일 또 찾아봐야겠습니다.


191/504010544_67ebe503ed_m.jpg


이 외에도 정말 재미있는 발표들이 이어졌습니다. 어쩜 다들 그렇게 유머감각까지 장착했는지(루비가 유머도 가르쳐주나요?). 한편으로는 무척 부러웠습니다. 사실 저도 스프링노트를 데모하고 싶은 마음이 간절했습니다. 일주일 전만해도 '주마군 각본, 이아스 더빙, 딥블루 립싱크 5분 데모'에 대한 시나리오가 있었는데 실행에 옮기지를 못한 것이 너무 아쉽네요. 솔직히 많은 사람 앞에서는 발표 하기가 겁나서(순수 국산이라 영어도 힘들고), 저는 전략을 달리 세웠습니다. 이른바 각개격파. 일단 세션을 들을 때는 최대한 노트북을 아래로 하고(옆 사람이 볼 수 있도록), 스프링노트 단축키를 연거푸 날려줍니다. 그럼 옆에서 쳐다봅니다. 기회는 이때다, 저는 '이건 한국에서 레일스로 만든 위키 서비스야~'라며 살며시 말을 걸고, 몇 가지 데모를 보여줍니다. 이런 식으로 몇 명 낚았습니다. 하하. 그런데 어설픈 영어로 설명을 해도 다들 친절하게 들어주고 또, 좋다고 해줘서 너무 기분이 좋았습니다. 어떤 친구는 이거 영어 버전이 나오면 내가 쓸 수 있게 꼭 알려달라고도 하고, 어떤 친구는 자기 친구를 데려와서, 그 친구에게도 좀 보여달라며 부탁을 하기도 했습니다. 무척 즐거운 경험이었습니다. 아, 레일스 프레임워크를 처음 만든 DHH에게도 찾아가서(낚을 기회가 없어서^^), 인사하고 스프링노트와 마이아이디를 간단하게 소개했습니다. It' Cool~이라며 친절하게 말해준 DHH에게 감사. 자, DHH도 인정한(?) 스프링노트 많이 써주세요. 하하


제가 정말 좋아하는 라이브러리 중 하나인 RSpec에 대한 소식도 전해야겠습니다. RSpec은 레일스 테스팅 프레임워크의 한 종류로, 전통적인 xUnit을 그냥 수용하기보다는, 루비스러운 깔끔한 문장을 만들어 많은 사랑을 받고 있습니다. RSpec은 테스트 주도 개발(TDD)의 장점 중 '테스트가 문서화 도구이자, 디자인 도구'라는 점을 부각시키는데 주력하고 있습니다. 그리고 바로 어제 RSpec 1.0이 발표되었습니다(루비 커뮤니티에서는 컨퍼런스 릴리즈가 많은 편입니다. 오프라인에서 만나서 의견을 조율하고 바로 개발까지 마쳐서 릴리즈하는 식입니다). 그리고 RSpec 1.0이 나오자마자, 컨퍼런스 장에서 RSpec 개발팀과 JRuby 개발팀이 만나 JRuby 1.0에 RSpec을 기본으로 내장해서 발표하기로 결정했습니다. 또 한편에서는 RSpec 개발팀과 PragDave(실용주의 프로그래머로 유명한 Pragmatic Bookshelf의 일원)가 만나 RSpec 책을 내자고 손을 잡습니다. 정말 멋집니다. 저도 한건했습니다. RSpec 개발자중 한 명인 David Chelimsky를 우연히 만나(그런거 있죠? 구석에서 기다리다가 우연히 만난 척 하는 거. 하하), 최근 적용된 RSpec 문법의 단점에 대한 의견을 전달했습니다. '문서'가 되려면 국제화를 생각해야 한다. '나는 한글로 스펙을 만드는데, 너무 영어만 생각하고 API를 설계하니까 내가 힘들다'라고 했더니, 국제화 계획이 있다고, 이 방법으로 해보자고 하더군요. 밤(8:30~10:00pm)에는 RSpec BoF에 참석했습니다. RSpec이 추구하는 방향을 설명하고, 그 자리에서 반박하고, 다양한 토론(너무 즐거운)이 이뤄졌습니다.


232/505466312_dc7ffc0863_m.jpg


제가 행사장을 나온 것이 밤 11시가 다된 시간인데, 그 때도 여기저기서 삼삼오오 모여서 짝 프로그래밍을 하는 사람들이 많았습니다. 소통이 일어나고, 그 자리에서 행동으로 옮겨지는 컨퍼런스 문화가 무척 인상적입니다.


현실 세계의 문제, 그것은 바로 배포

어제가 레일스의 나아가는 방향에 대한 생각을 많이 한 하루였다면, 오늘은 보다 현실적으로 레일스를 사용하면서 겪게 되는 문제들을 해결할 수 있는 아이디어를 잔뜩 얻을 수 있었습니다. 그 중 하나가 효과적인 배포(Deployment) 방법입니다. 그리고 이 방법은 RailsConf07이전과 이후로 나뉠 것 같습니다. 지금까지 제가 선호하는 방식은 Apache 2.2.x + mod_proxy_balaner + mongrels였습니다. 하지만 오늘 Rails Deployment라는 책을 준비하고 있는 Ezra Zygmuntowicz가 소개해준 Nginx + Mongrel with Swiftiply(aka Event Driven Mongrel)은 매우 인상적이었습니다. 몽그렐들을 각각의 포트(800x)에 띄우고 웹서버에서 proxy 모듈을 통해 해당 포트로 요청을 전달하는 방식에서, 몽그렐들이 Swiftiply에 등록하고 여기에 있는 큐에 담기고, 몽그렐들이 큐에서 한번에 하나씩 꺼내는 방식입니다. 루비 스레드(쓰레트 문맥 전환 비용, Mutex 유지 비용이 생각보다 크다고 합니다)를 쓰지 않아 빨라지고, IO throughput이 좋아지고, 설정도 간편해지고 Scaling도 쉬워진다는 설명입니다. 더 자세한 내용은 제가 돌아가서 테스트를 해보고 전에 작성한 '레일스 최적의 배포 환경'이라는 글을 갱신하겠습니다.


204/505602374_c5fa4ad33d.jpg


첫날 튜토리얼에서도 가상화(Virtualization)는 필수라는 말이 있었는데, 오늘은 더 자세한 이야기가 많았습니다. Bradley Taylor는 Virtualization Cluster를 갖춤으로써 얻을 수 있는 장점들을 하나하나 친절하게 설명해주었습니다. 가장 중요한 것은 소프트웨어 개발에서 적용되던 Separation of Concerns을 하드웨어에도 적용할 수 있습니다. 문제들을 나누고, 각각을 고립시켜서 일을 쉽게 만드는 것이지요. 하드웨어 구성을 물리적 제약 없이 소프트웨어(애플리케이션) 관점에서 할 수 있다는 겁니다. 이를 통해 얻어지는 리소스의 효율적인 활용, 스케일링 업 등은 어쩌면 부차적인 것일지도 모르겠습니다. 아무튼, 저는 연구과제(또는 호스팅 업체에나 필요한 것)로만 생각하고 있던 가상화를 이미 서비스에 적용하고, 잘 돌게 만들어놓고 사례 발표를 하는 모습은 무척 흥미롭습니다. 아직 잘 모르는 분야이지만, 앞으로 꾸준한 관심을 가져야겠습니다.


Chris Wanstrath의 Memcaching 사례 발표는 레일스의 Memcaching 이슈 결정판이었습니다. 스프링노트에서도 오래 걸리는 작업이나 DB에 무리가 갈 수 있는 작업을 Memcache를 통해 해결하고 있는데, 바로 적용할 수 있을 것 같은 아이디어(키 이름에 날짜나 버전을 넣어서 자동으로 만료되게 한다든가, 캐시 목록을 캐시한다든가, 키 해시 방법을 바꾼다든가 하는 작은 아이디어들)들을 얻을 수 있었습니다. 관심 있으신 분은 프리젠테이션 자료가 올라오면 꼭 한번 보시면 좋겠습니다.


Getting Real Numbers 세션도 마찬가지로 아이디어를 주었습니다. 특히나, 아파치의 Server-status 페이지처럼 한글 자짜리 약어를 정의하고, 레일스 애플리케이션에서 이 약어들을 로깅하도록 하고, 이 로그를 살펴봐서 모니터링을 하는 방법이 흥미로웠습니다. 세션 전체적으로 퍼포먼스 테스트를 위한 프레임워크와 그것을 기반으로 테스트 시나리오를 작성하는 과정을 보여줬는데, 즐거운 루비 개발 과정을 잘 보여준 것 같습니다. 결과 코드도 무척 짧고 간결했습니다.


레일스와 엔터프라이즈의 만남은 현실

이달 초에 루비온레일스는 엔터프라이즈 시장에 적합한가를 놓고 작은 논란이 있었습니다. 국내에서는 아직 시도조차 없지만, 미국에서는 이미 엔터프라이즈 시장에서 루비와 레일스가 자신의 위치를 찾으려는 노력들을 하고 있는 것 같습니다. 마틴 파울러로 유명한 ThoughtWorks는 회사 수익의 40%가 '루비'로 벌어들이고 있고, 6월에는 RubyWorks라는 기업 시장에 적합한 풀 프로덕션 스택을 출시함과 동시에 24/7 헬프데스크를 갖출 것이라고 합니다. 흥미롭습니다. 싫든 좋든 간에 기업 시장에도 '변화'의 바람이 불고 있는 것 같습니다. ThoughtWorks의 Cyndi Mitchell은 레일스가 기업시장에도 패러다임 시프트를 일으켰으면 좋겠다며, 현재는 루비와 기업 시장간에는 차이(gap)가 있지만, 더 많은 SW 개발자들을 생산적으로 만들기 위해 함께 노력하자고 주장했습니다.


이어지는 Tim Bray키노트에서는 '루비의 영향력도 레일스만큼 커질 것'이라고 하는 동시에 '자바는 절대 사라지지 않는다'며 안내 아닌 안내를 했습니다. 그러면서 이미 시장에 있는 JAVA나 .NET과 잘 해보자고 합니다. 그 방법이 바로 REST이며, 레일스는 옳은 길을 가고 있다고 했습니다. 마지막으로 기존 기업 시장에 비해 레일스가 가진 장점으로 Time To Market, Maintainability를 들었습니다.


197/505480123_5b320612f6_m.jpg


Sun이 이렇게 전면에 나서고, 기업 시장에 레일스에게 열리고 있는 현상의 중심에는 JRuby가 있습니다. 내년 RailsConf가 열릴 시점에 레일스 커뮤니티는 어떤 결과를 가지고 있을까요? 흥미롭습니다.


이제 내일이면 한국으로 돌아가야 하는군요. 빨리 가서 여기서 얻은 아이디어들을 스프링노트에 적용해보고, 루비 사용자 모임 분들과 공유하고 싶은 마음이 반, 컨퍼런스가 계속 이어졌으면 싶은 아쉬운 마음이 반입니다. RailsConf의 마지막 날인 내일도 흥미를 끄는 주제들이 많습니다. 다음 글은 한국에서 올리겠습니다.


- deepblue

이 글은 스프링노트에서 작성되었습니다.

Trackback

트랙백 주소 :: http://www.openmaru.com/trackback/135

Comment

  • JasonPA 댓글주소 수정 삭제 댓글쓰기

    현실적인 문제들에 대한 언급도 언급이지만 "개발하면서 얻게 된 노하우 일정 간격(2주)으로 레일스 플러그인 형태로 만들어 공개" 한다는 얘기는 정말 인상적이네요. 자연스럽게 개발자 지원군을 만들 수 있는 방법 같습니다. ^^;;
    마지막 글을 내일 볼 수 없다는게 아쉽네요 ㅎㅎㅎ. 돌아오면 들어야 겠어요.
    마지막 날까지 ~~~ 고고씽 (2007.05.20 23:20)

  • rainblue 댓글주소 수정 삭제 댓글쓰기

    좋은 후기 잘 읽었습니다. 현장에 있는것처럼 느끼게 만드는 생생한 글이네요. (2007.05.21 10:45)

  • webneko 댓글주소 수정 삭제 댓글쓰기

    쟁쟁한 개발자님들이 모여있다고 해서 기억해뒀었는데..
    스프링 노트라.. 멋지네요. :)
    비슷한 노트를 만들어보고 싶었는데..
    쭈욱 훑어보면서 많이 참고를 해봐야겠습니다.:) (2007.05.28 18:09)

  • 배형일 댓글주소 수정 삭제 댓글쓰기

    루비에대해서 알려주세요 머가먼지 모르겠습니다
    어떻세 사용하지는 얼려주세요 (2007.06.05 14:52)

    • deepblue 댓글주소 수정 삭제

      루비는 객체지향 프로그래밍 언어의 일종인데요, 최근 루비온레일스(http://rubyonrails.org)라는 웹 프레임워크가 널리 사용되면서 함께 주목받고 있습니니다.

      자세한 정보는 http://rubykr.org에서 얻으실 수 있을 것 같고, 루비와 레일스에 관련된 서적도 꽤 많이 나와있으니 참고하시면 좋을 것 같습니다.

      혹시 더 궁금한 점이 있으시면 사용자 모임(http://forum.rubykr.org)에 올려주시면, 많은 분들이 자세히 답변 주실꺼예요. (2007.06.05 22:02)

  • 배형일 댓글주소 수정 삭제 댓글쓰기

    루비에대해서 알려주세요 머가먼지 모르겠습니다
    어떻세 사용하지는 얼려주세요 (2007.06.05 14:52)