http://www.infoq.com/presentations/How-We-Mostly-Moved-from-Java-to-Scala

오래 전에 들은, 36만 라인의 EJB 코드로 작성됐던 프랑스 정부의 세금신고 시스템을 단계적으로 스프링으로 전환해서 3만라인의 깔끔한 코드로 만들었다는 이야기 다음으로 흥미로운 내용이군. 유사한 점도 많다.

프로그래밍 언어와 런타임 플랫폼의 전환은 애플리케이션 프레임워크 전환과는 비교도 안될만큼 큰 비용이 든다. 언어의 패러다임까지 바뀐다면 말할 것도 없고. 매 프로젝트마다 작은 시스템을 바닥부터 다시 만들어도 그만인 소규모 팀이라면 모를까. 장기간 개발해왔고 운영중인 미션 크리티컬한 시스템을 운영중인 채로, 인력 풀도 그대로 두고, 단계적인 전환을 해야 한다면 그에 맞는 치밀하고 유연한 전략이 필요할 것이다.

기존 기술과 플랫폼을 유지한 채로 작은 변화를 만들고, 언어의 변화도 일단 기존 언어를 개발하던 습관을 크게 바꾸지 않은 채로 서서히 전환하고, 시간을 두고 발전시켜 나간 것이 성공의 이유가 아닐까 싶다.

스칼라를 세미콜론 없는 자바라고 생각하고 사용하기 시작하는 것과 같은 용기가 필요하다. 오덕들이 몰려와 비아냥 거리기 딱 좋겠지만. 뭐 어때. 자바를 자바답게 쓰기 시작한 건 얼마나 됐나.

자기 잘난 거 증명하려고 코딩하는 해커가 아니라면, 개발자는 적절한 기술을 이용해서 고객의 문제를 해결하고 가치를 만들어내는 것이 가장 큰 관심이어야 할 것이다. 그런 면에서 스칼라와 같은 많은 장점이 있는 언어에 관심을 가지는 것도 필요하고, 동시에 욕심을 내지 말고 무식한 방법처럼 보이더라도 작은 단계를 거쳐서 변화를 시도하는 것도 중요할 듯.

제대로 적용할 기회도 못 만들면서 이런 저런 언어를 찝적거리는 것은 그만하고 스칼라에 올인해볼까. 흠흠.

꽤 오래전인데, 아틀라시안의 개발자들이 올리는 글에 나오는 자바소스코드의 캡춰화면이 뭔가 달랐다. 이클립스 같기는 한데 버튼은 동글동글하고 매력적으로 생긴데다, 코드 폰트 또한 윈도우의 투박한 courier-new와는 다르게 뭔가 기품이 있어보였다. 저 이쁜 화면은 무슨 윈도우 테마를 설치한 것일까 하고 한동안 궁금해 했는데, 나중에 알고 보니 바로 맥 OSX에서 작업한 화면이었다.

세계적인 개발자들은 맥에서 자바 개발을 하나보다 하고 생각해오다가, 몇년전 맥북의 출시 소식을 듣고 나도 맥에서 개발을 한번해보자는 생각으로 세일기간을 노려 초기 맥북을 구입했다. 봐도 봐도 기분이 좋은 폼나는 사과 아이콘 하며, 사무실에 슬쩍 꺼내놓기만 해도 다들 몰려와 부러운 눈초리로 바라볼 때의 기분도 짜릿했다. 며칠 안되서 이쁜 것이라면 사족을 못쓰는 물개도 덥석 하나를 사버렸다.

하지만 본격적인 자바개발을 하기 위해서 이런 저런 작업을 하다가 맥의 JDK는 윈도우나 리눅스에서 사용하던 것과 버전이 다른 것을 발견했다. 맥에는 SUN이 개발해서 공개하는 Standard VM이 아닌 Mac VM이 따로 있어 그것을 사용해야 하는데, 문제는 Mac VM/JDK의 버전이 일반 JDK보다 한참 뒤쳐져 있다는 것이다.

JDK1.6이 릴리즈 됐지만 맥의 JDK는 여전이 1.5대. 소문에 OSX 10.5 레오파드가 출시되야 JDK1.6을 사용할 수 있을 것이라는 얘기도 들려왔다. 스프링의 빌드조차 불가능해서 한동안 답답해 하던 차에 레오파드가 출시되었고, 거금을 들여서라도 OSX 업그레이드를 해볼까 생각을 했다. 하지만 많은 맥 환경에서의 자바개발자에게 충격적이게도 레오파드에서도 JDK1.6은 정식으로 출시되지 않았다. 고작 preview만 제공되었고, 더 안좋은 소식은 나처럼 구형 32bit 맥북인 경우 그나마 preview버전도 아예 지원되지 않는다는 사실이었다.

맥에서 자바개발은 포기해야 하나라는 글에서 얘기한 것처럼 사실상 맥을 이용해서 최신버전의 자바기술을 이용한 개발은 거의 포기할 지경이었다. 많은 개발자들이 분노했고, 맥에서 작업을 포기한 사람들 또한 제법 되었다. 애플의 자바관련 직원은 5명도 안된다는 둥, 스티브잡스가 의도적으로 맥에서 자바를 죽이려 한다는 둥의 소문도 들려왔다.

 

자바 개발도 힘들고, 그나마 JDK1.5버전조차도 왠지 불안한 맥에서의 자바 개발 작업은 거의 포기했고, 맥 놀이에도 실증을 느낄무렵부터 한동안 맥북에 우분투를 설치해서 리눅스 머신으로 사용해왔다.

 

그러던 중 어떤 개발자들이 OpenJDK의 BSD버전을 이용해서 맥 JDK를 개발하고 있다는 소식을 듣게 되었다. 하지만  한 개인이 작업해서 과연 제대로된 JDK를 내놓을 수 있을까하는 의심도 들었고, 막상 사이트를 찾아서 설명을 읽어보니 직접 빌드를 해야 한다는데 그 방법도 까다롭고 아주 기초적인 기능만 일단 테스트 되었다고 해서 큰 기대를 하지 않고 있었다.

 

얼마전 "맥에다 리눅스를 설치하는 것은 너무한거 아니냐"고 따지는 주변 사람들의 말에 자극을 받아, 최근에 다시 OSX 타이거버전을 설치했다. 그리고 업데이트를 해봤자 JDK1.5밖에 지원되지 않음을 알고 포기하려던 차에 이전에 보았던 맥용 OpenJDK가 생각이 났다. OpenJDK는 썬이 자바를 GPL 라이센스를 가지는 오픈소스로 공개해서 만들어진 있는 오픈소스 JDK이다. 자바라는 단어는 SUN의 표준 JDK를 위한 이름으로 제한했고 또 트레이드마크라 함부로 쓸 수가 없으니 그 이름은 다르게 사용해야 한다.

이 맥용 OpenJDK의 이름은 Soy Latte이다.

이제는 OpenJDK BSD-Port의 공식 프로젝트의 한 파트로 개발되어지고 있다. 개발자도 많이 늘었고, 소스 뿐만 아니라 각 OSX버전에 대한 바이너리도 함께 제공된다.

다운 받아서 설치하고 버전을 살펴보니 1.6.0_03이다. 1.6버전은 SUN의 표준JDK를 거의 그대로 가져다 만든 것이니 그 호환성도 뛰어날 것이 분명하다. 이클립스를 설치하고 VM을 이 Soy Latte로 바꾸고 1.6코드에 대해서 작업을 해보았다. 아무런 문제없이 1.6의 기능이 동작한다. Java6의 기능을 이용하는 코드가 있는 스프링의 최신버전의 소스를 받아서 빌드해보았는데 역시 아무런 문제가 없이 빌드에 성공했다.

Soy Latte/OpenJDK의 목적은 JDK 1.6버전을 기존 OSX버전에 완벽하게 지원할 뿐더러, Java7도 제때에 릴리즈가 되도록 해서 다른 OS의 개발환경에 밀리지 않고 지속적으로 최신버전의 자바개발을 충실하게 할 수 있도록 지원하는 것이다.

 

이로서 다시 맥에서의 자바 개발에 다시금 희망을 걸어볼 수 있을 것 같다. 32bit 구형 맥이나 OSX 10.4를 사용하는 나같은 개발자도 말이다.

한가지 이슈는 이클립스의 JRE설정에서 OSX는 Standard VM을 설정할 수 없도록 아예 막혀있다. 오로지 Mac VM만이 설정이 가능하다. 이부분에 대해서는 이클립스에 개선요청이 되어있고, OpenJDK/Soy Latte를 Standard VM으로 설정할 수 있는 패치가 공개되어있다. 물론 Soy Latte를 Mac VM으로 등록해도 기본적으로는 아무 문제가 없는 듯 하다. 사실 그 차이점은 정확히 모르겠는데, VM호출시 일부 호환이 안되는 옵션이 있기 때문에 문제가 될 수도 있다는 것이다. 하지만 버그리포트에 나온 ant빌드등에서의 문제는 이클립스 3.4.1을 이용해서 테스트 해보면 별 문제없이 작동한다. 공식적으로는 3.5에서 Standard VM으로 등록이 가능할 것이라고 한다.

 

오픈소스란 이럴 때 큰 매력을 느끼게 해주는 것 같다. 그리고 JDK를 오픈소스로 공개해준 SUN에게도 살짝 고마움을 느낀다.  맥용 JDK를 직접 만들어서 제공해주지 않는 점에는 살짝 아쉬움이 있긴하지만, 그건 뭐 애플의 압력이 있었들 테니까…

Spring 2.5의 마지막 마이너 버전인 2.5.6이 릴리즈 됐다. 2.5의 급진적인 변화 때문에 마이너버전에서 미묘하게 개선되는 것들이 제법 많이 있었다. 2.5.0과 비교할 때 상당한 변화가 있다. 자세한 내용은 http://static.springframework.org/spring/docs/2.5.x/changelog.txt 을 참조하면 될 것이다.

내가 관심있는 분야는 역시 @MVC이다. 그간 조금씩 아쉽고 개선되었으면 하는 것들이 상당히 많이 수용되었다. 3.0으로 가는 과도기가 아니라 2.5만으로도 @MVC가 기존 MVC를 충분히 대처할 수 있는 만큼 성숙했다고 보여진다. 덕분에 2.5기반의 내용을 중심으로 집필 중인 스프링 책도 이제 마무리가 가능해졌다. 그저 2.5의 새로운 기능을 잠깐 소개하는 정도로 2.5 책이라고 말하는 것은 좀 너무하지 않을까 싶었으니까.

이제 본격적으로 3.0 개발에 들어갈 예정이다. 2.5.x는 버그픽스가 계속 진행되긴 하겠지만 새로운 기능의 추가나 변경은 없을 것이다. 현장에서도 이제 신뢰를 가지고 2.5버전을 도입할 때가 충분히 되었다고 생각된다.

요즘 관심있는 기업이나 단체에서 webinar (web seminar)를 많이 한다. 시간과 장소, 비용등에 제약을 받는데다 공개용 컨텐트 제작에도 많이 비용이 들고, 화질도 떨어지는 오프라인세미나 + 레코딩 편집 영상 공개 방식보다 훨씬 간결하고 편리하다. 시간과 장소, 참석자의 제약을 받지 않는다. 보통 1000명까지는 가뿐히 실시간으로 수용이 가능하다. 또한 발표내용이 끝나면 바로 동영상으로 생성되어 후에 스크린캐스트로 공개할 수도 있다. 일방적으로 제작한 밋밋한 스크린캐스트와는 달리 인터렉티브하게 문자와 음성을 모두 이용할 수 있는 참석자의 질의응답기능, 다중 발표자 간의 전환 기능에다 필요에 따라 일반 유선전화로도 참여가 가능하도록 하는 다양한 인터페이스도 제공한다. 최근 사용해본 GoToWebinar 같은 경우는 웹에서 자바를 통해 바로 설치가 가능하며 그 성능과 안정성도 매우 뛰어나다. 아마도 한 지역의 서버에서 브로드캐스팅 하는 것이 아니고 서비스 업체가 소유한 각 지역에 분산된 서버를 통해서 가장 가까운 네트웍으로 분산해서 전달하는 듯 하다.

최근까지 9회에 걸친 세미나를 진행했던 KSUG는 공식적으로 오프라인 세미나는 더 이상 열지 않겠다고 하기도 했다. 그 대안으로 스크린캐스트로 다양한 기술발표 자료를 만들어 공개하는 것을 생각했는데, 사실 그보다는 웨비나라는 새로운 형태가 더 낫지 않을까 하는 쪽으로 최근에 의견이 모아지고 있다. 아무래도 발표자와 참석자의 집중도가 좀 더 높고, 인터랙티브한 분위기가 주는 자연스러움, 예를 들어 데모시 실수를 한다거나 하는 것들이 오히려 더 자연스럽고 즐거운 시간을 만들어주지 않을까 싶다. 더욱 반가운 것은 오프라인 모임에는 참석이 불가능한 해외나 지방 거주자들도 자유롭게 함께 참여할 수 있는 기회가 만들어진다는 것이고. 그나마 시간을 맞춰서 실시간으로 참석이 불가능한 사람들을 위해서 실시간 레코딩을 통해서 동영상을 제작해 공개하는 것도 매우 편리할테고.

KSUG 지난 세미나에 개인사정으로 SpringMVC관련 세션의 발표를 못했던 영회가 그 내용을 스크린캐스트로 대신 제작해 공개하기로 했는데, 그 보다는 웨비나다 더 낫겠다는 쪽으로 생각을 바꾼 듯 하다. 다음 주중에 진행한다고 하니 많은 기대와 참여가 있으면 좋겠다. 장소의 제약은 없어졌지만, 남은 문제가 시간인데 아무래도 한국은 업무시간 중에 참석이 용이하지 않은 사람들이 많으니 저녁이나 밤시간을 이용하지 않을까 싶다.

 

유명 IT기업들이 진행하는 웨비나도 꾸준히 들어볼만하다. 문제는 유럽이나 미국의 시간대에 맞추면 한국은 밤시간이나 운이 나쁘면 새벽시간이기도 한데, 월드컵 중계도 아니고 그 시간에 보기 힘들다면 시간이 지나면 공개할 웨비나 동영상 보기 기능을 활용해도 좋겠다.

 

스프링소스의 웨비나는 거의 매달 열리는데 수백만원을 들려서 참석할 수 있는 컨퍼런스 등에서나 들을 수 있는 고급 내용들이 많다.

http://www.springsource.com/webinars

 

또 주목할만한 것이 마틴 파울러 옹이 있는 똣웍스(ThoughtWorks)의 웨비나이다.

http://studios.thoughtworks.com/studios-news/events-webinars

똣웍스 스튜디오의 제품이나 애자일 등에 관한 좋은 내용이 많이 올라온다. 다음 6일에는 The Agile PMO – Real Time Metrics & Visibility이라는 주제로 웨비나가 열릴 예정이다.

세계 최대의 스프링 컨퍼런스인 SpringOneAmerica(S1A)가 다음달 1-4일에 미국 플로리다 마이애미에서 열린다. 작년까지 3년동안 TheSpringExperience라는 이름으로 진행되었는데 올해부터는 SpringOne이라는 이름으로 바뀌었다. 유럽에서 열리던 SpringOne의 이름을 따서 SpringOneAmerica와 SpringOneEurope으로 통일하기로 한 것이다.

나는 작년과 재작년 두차례 참석을 했다.

재작년 TSE2006에는 아시아에서 나와 일본인 한명만 참석을 해서 사실 좀 외로웠다. 기술적인 얘기는 누구든지 자유롭게 나눌 수 있지만, 아무래도 비슷한 환경과 지역에서 온 개발자들 사이의 공감 같은 것은 아무래도 나눌 기회가 별로 없었다. 작년 TSE2007에는 한국에서 나와 SDS팀 4명정도가 참석하고, 그 외에 일본, 중국 등에서도 많은 개발자들이 참여했다. 반가운 일이다.

 

올해는 그동안 가겠다고 큰소리만 치고 닥쳐서는 바쁘다고 빼던 영회와 TSE참석을 꿈에서도 그리던 기선이가 함께 간다. 그 외에 SDS와 Daum에서도 참석하는 분들이 있는 것으로 알고 있다.

S1A는 지난 10월 말까지 얼리버드 할인가로 신청을 할 수 있었다. 그런데 오늘온 메일을 보니 11월 7일까지 할인기간을 연장한다고 한다. 혹시나 지금이라도 신청하고 싶은 분들이 있다면 꼭 등록하고 참여하면 좋겠다. 컨퍼런스는 그 기간동안 배우는 것도 많지만 그보다는 개발자로서의 지평을 넓히고 좋은 자극을 많이 받을 수 있는 기회이다. 자신이 얼마나 우물안의 개구리였는지도 알 수 있고, 또 책이나 웹에서는 쉽게 알 수 없었던 실제 현장의 이야기를 들을 기회도 많다. 내가 S1A(TSE)를 좋아하는 이유는 다른 강의 위주의 컨퍼런스에 비해서 참석자들 사이에 또 참석자와 스피커들 사이에 많은 자연스러운 교류가 있다는 점이다. 강사들이 강의가 끝나면 콧배기도 안보이에 사라져버리는 다른 컨퍼런스와 달리 S1A에서는 모든 기간동안 곳곳에서 세션 발표자들 스프링의 개발자들과 쉽게 접촉할 수 있다. 로드 존슨이 S1A시작때 항상 하는 얘기가 있다. 자신을 포함한 컨퍼런스에 와 있는 스프링의 개발자들에게 언제든지 찾아와 기술적으로 도전해보도록 하라는 것이다. 자신의 경험을 나누고, 많은 질문을 던지고 함께 토론하며 교류하는 것이 S1A의 진정한 매력이 아닌가 싶다.

올해는 한국의 참석자들이 두자리수가 되면 얼마나 좋을까 생각해본다. 다만, 가서 한국인들끼리 어울려서 구석에서 따로 놀지 말고 자유롭게 흩어져서 전세계에서 온 많은 개발자들과 많은 대화를 나눴으면 좋겠다.

 

사실 회사나 프로젝트에 묶인 몸이라면 이런 행사에 참석하기가 쉬운 것은 아니다. 영회처럼 프로젝트 중에 이런 행사에 참여할 수 있도록 허락을 받아 낼 수 있는 잘나가는 스타 PM이거나 기선이처럼 회사에서 기꺼이 지원해서 보내주는 곳에 다니거나 아니면 빵빵한 지원을 하는 대형포탈 및 대기업의 소수의 혜택받은 인력이 아니고는 힘든게 사실이다. 게다가 여유가 되지만 자비를 들여서는 이런데 거의 참석하지 않으려는 사람들이 대부분이고.

오래전에 김창준씨가 얘기했던 것이 있다.

작년 OOPSLA는 20주년 기념 "특별" 컨퍼런스였는데, 저는 김승범(http://xenbio.net) 씨와 함께 참석을 했습니다. 1천명이 넘는 참석자 중 한국인은 달랑 8명인가 그랬습니다. 대부분은 회사에서 지원을 해서 보내준 경우였는데, 김승범씨는 학생이면서 자비로 참석을 했습니다. 제 생각에는 충분히 그만한 가치의 잠재력이 있다고 봅니다. 잠재력이기 때문에 본전도 못 뽑을 수 있겠지만, 저나 김승범씨나 모두 투자한 돈 몇 배의 이득을 얻었다고 평가하고 있습니다.

이상하게 직장인들은 자기 일 관련해서 돈 쓰는 것을 손해보는냥 생각하는 경향이 있는 것 같습니다. 그래면서 회사욕을 하고 말이죠. 결국 자기 손해 아닐까 하는 생각도 듭니다. 신제용(http://jeyong.com) 씨는 자기 돈으로 회사 사무실에서 쓸 의자를 구입했습니다(물론 회사에서 지급한 "평범한" 의자가 있긴 했죠). 그 의자가 자기 집에 있는 의자보다 훨씬 더 비싸다고 합니다. 하루 중 자기가 앉아있는 시간으로 치면 회사가 더 긴데, 비싼 의자를 사서 집에 묵히는 것이 이상하다는 얘기였습니다.

올해 가볼만한 컨퍼런스

회식문화로 대표되는 이런 정신이 한국이 경쟁력이 떨어지는 원인이라고 "공자가 죽어야 나라가산다"라는 책에서 이야기했던 것 같다. 회사에서 보내주니 널널한데 하나 골라잡아서 온 컨퍼런스 참석자들은 강의시간에는 졸거나 딴 짓하고, 떼로 몰려다니면서 같은 내용이나 듣고 잡담이나 하고, 강의도 수시로 빼먹기 일 수다. 사실 연차가 되는 개발자들을 일년에 한 두번쯤은 이런 행사에 잘 보내주는 미국의 대형 IT기업에서 온 참석자들 중에 그런 사람들을 많이 봤다.

 

아무튼 환율도 다시 좀 떨어졌다고 하고, 늦지 않았으니 지금이라도 S1A에 가고 싶은 분들은 수단과 방법을 가리지 말고 많이들 등록하고 참석했으면 좋겠다. 개발자로서의 인생이 바뀔지도 모르는 경험을 할 수도 있으니까.

 

그리고 이런 행사에 꼭 가고 싶지만 기회가 없고, 스프링의 고급 정보에 목이 마른 분들은 사실 인터넷을 통해서 얼마든지 좋은 자료를 찾아볼 수 있다. 스프링소스가 매달 주관한는 웨비나(웹+세미나)가 있다. 스프링소스 사이트에 등록하면 메일로 안내가 찾아온다. 그리고 지난 웨비나도 다운받아 볼 수 있다. ttp://www.springsource.com/webinars 로 가면 된다. 특히 지난 주에 Ben Hale이 진행한 웨비나인 Redefining the Java Server Market – An Overview of SpringSource dm Server는 정말 놓치지 말아야 할 좋은 내용이다.

© 2017 Toby's Epril Suffusion theme by Sayontan Sinha