IBM®
메인 컨텐츠로 가기
    Korea [국가변경]    이용약관
 
 
   
        제품    서비스 & 솔루션    고객지원 & 다운로드    회원 서비스    
한국 developerWorks   >  dW Interview  > developerworks

“스스로 만족하면서 영향력을 발휘하는 프로그래밍”



세상에는 다양한 개발 도구가 존재합니다. 대부분은 주어진 것을 잘 쓰는 데 관심을 두지만 어떤 사람들은 도구 자체를 더 개량하는 데 노력을 기울입니다. 이번 인터뷰의 주인공은 그러한 도구 개선과 개발에 관심이 많은 박응주 님입니다.

박응주 | NHN 위키북팀 과장



 
  박응주 먼저 현재 하시는 일에 대해 간단히 소개해 주세요.
웹 서비스를 개발하고 있고 주로 웹 애플리케이션의 서버 쪽 개발을 맡고 있습니다.

신생 웹 벤처와 달리 포털에서는 기존 코드들이 뜻하지 않게 부담스러운 레거시처럼 작용하기도 할 것 같다는 생각이 드는데 개발하면서 어려움을 겪는 부분은 어떤 부분인가요.
당연히 일의 일부이기 때문에 고민은 하지만 괴로울 정도로 문제는 아닙니다. 웹 개발을 그냥 단순하게 말하면 데이터베이스에 접근하고 HTML을 만드는 패턴이라고 할 수 있는데 그 범위에서 벗어나면 잘 모르는 요소들이 항상 개입하고 그럴 때 기술적으로 문제가 되고 어려움을 느낍니다. 그 외에는 큰 조직에서 일하다 보니 제가 선택할 수 있는 것이 많지 않아 약간 아쉬운 점은 있습니다.

범위에서 벗어나는 것들에는 구체적으로 어떤 것들이 있나요.
웹 개발에 늘 사용하는 라이브러리나 구조에 대해서는 익숙해서 문제가 생겨도 그 원인을 금방 찾습니다. 그런데 이를테면 네트워크 프로그래밍 쪽도 다뤄야 할 때가 가끔씩 있는데 네트워크가 언제 끊기는지, 연결되는지 모를 상황이 많이 있고 네트워크 관련 API나 라이브러리에 익숙하지 않아 생기는 문제들이 있습니다. 네이버의 서비스들은 많은 사용자를 대상으로 하기 때문에 단순히 웹 개발뿐만 아니라 확장성 문제를 늘 고민해야 한다는 것이 또 다른 어려움입니다.

구글 코드에 올려두신 tokyotyrant-javaschemaless는 비슷한 고민에서 시작된 프로젝트인가요.
둘 다 데이터베이스와 관련된 것으로 사용자 규모가 포털 급이 되는 서비스를 개발하는 데 중요한 것 중 하나는 데이터 접근을 확장성 있게 만드는 것입니다. 그런 고민을 하면서 자료를 찾다가 FriendFeed 사례를 보고 만든 것이 schemaless입니다. tokyotyrant-java는 파일 데이터베이스이면서 네트워크 연결을 지원하는 Tokyo Tyrant 전용 클라이언트를 만들면 활용할 수 있는 것이 많고 네트워크 프로그래밍 공부도 되겠다는 생각이 들어 만들었습니다.

어느 분야나 마찬가지겠지만 웹에서도 데이터베이스는 개발자들에게 만만치 않은 골칫거리가 된 것 같습니다.
일단 사람들이 웹을 많이 쓰고 그에 따라 데이터가 많아지면서 문제가 되는 것 같습니다. 데스크톱 애플리케이션은 데이터를 자기가 다 갖고 있지만 웹 애플리케이션은 한 사업자가 데이터를 다 모아 관리해야 하니까요. RDBMS는 기능은 풍부하지만 한 대로 감당할 수 없어 쪼개게 되면 RDBMS에서 제공하는 기능을 제대로 사용할 수 없어지니까요. 외국 사례를 보면 대형 서비스에서 RDBMS를 직접 쓰는 경우는 점차 줄어드는 것 같습니다.

확장성을 고려하는 게 주 업무는 아니겠지만 그런 고민에서 얻은 것이 있다면...
머리를 많이 써서 노화 예방에 도움이 되는 것 같습니다. (웃음) 그런 생각을 하다 보면 외국 사례나 해결책을 살펴보게 되고 그것들을 그대로 쓸 수는 없지만 거기에서 아이디어를 조금씩 얻어 서비스를 예상보다 간단하게 향상시키기도 하는데 그런 면에서 도움이 되었습니다. 다시 말하면 해외 사례와 똑같은 플랫폼을 굳이 쓰지 않아도 비슷하지만 간단한 아이디어를 차용해 쓸 때 효과가 있었던 것 같습니다.

앞서 두 프로젝트 외에도 몇 가지 개인 프로젝트(undercover, me2day-scala)를 하시는데 어떤 계기에서 시작하셨나요.
대부분 연습성 프로젝트인데 ‘이런 것 한번 만들 수 있겠다’라는 생각이 들 때 시작했습니다. 그 중에서 요즘 만드는 undercover와 tokyotyrant-java는 쓸 만한 수준입니다. 프로젝트에는 아침에 30분, 점심에 30분, 저녁에 30분에서 한 시간 정도 생각나는 대로 짬짬이 시간을 쓰고 있습니다.

me2day-scala와 undercover는 서로 인연(?)이 있는 것 같던데...
책을 사서 스칼라를 공부하다가 책만 봐서는 잘 모르는 경우가 있어서 뭘 하나 개발해 봐야겠다고 생각을 하고 미투데이 스칼라 API를 만들기 시작했습니다. 그런데 만들며 테스트를 하면서 익숙하지 않은 언어에서 테스트 범위(coverage)를 볼 수 없으니 잘 만들었는지 알 수 없어 답답했습니다. 그래서 처음에는 기존 커버지리 도구인 에마(Emma)와 코버튜라(Cobertura)를 썼는데 에마는 커버리지를 잘 보여주는데 복잡도를 측정하지 못하는 문제가 있었습니다. 제가 가장 많이 보는 게 복잡도가 높은데도 테스트가 되지 않는 것이 있는지인데 그걸 볼 수 없어서 한 번 만들 수 있지 않을까 하는 생각을 했습니다. 그러다 팀에서 자바 바이트코드 세미나를 듣고 에마와 코버튜라의 장점을 추리고 클로버(Clover)라는 상용 도구의 대시보드 같은 기능이 있는 커버리지 도구를 만든 게 undercover입니다. undercover를 만든 뒤로 me2day-scala에는 손을 대지 않고 오히려 undercover를 테스트하는 데 me2day-scala를 쓰고 있습니다. (웃음)

위기지학(爲己之學)을 하신 셈인데, 배운 게 있다면...
모르는 분야를 많이 알게 됐습니다. tokyotyrant-java의 경우, 신뢰성 있는 네트워크 클라이언트를 만들려면 무엇이 필요한지 아는 데 도움이 됐습니다. 그 과정에서 비동기 네트워크 프로그래밍에 대해서도 익혔고요. 커버리지 도구의 경우, 일반 개발자가 자바 바이트 코드를 볼 일은 사실 없는데 그걸 만들면서 자바에서 예외 발생 위치 표시하는 방법 등 JVM의 동작 방식과 바이트코드 설계자들이 사용한 설계 기술 등도 배울 수 있었습니다.

스칼라는 developerWorks에서도 꾸준히 다루는 소재 중 하나입니다. 실제로 써보신 소감은 어땠나요.
주관적인 생각이지만 자바 플랫폼을 기반으로 한 다른 언어에 비해 스칼라가 훨씬 더 나은 것 같습니다. 문법 자체는 자바와 비슷하면서도 동적 언어의 편리한 점도 갖추고 있어서 자바와 성능이 비슷하면서도 코딩 양이 줄어들어 받아들이기 쉬웠습니다. 또 기존 자바 라이브러리를 그대로 쓸 수 있어서 다른 언어에 비해 자바에서 넘어가기 어렵지 않았습니다. 실제로 me2day-scala를 만들 때도 그리 오랜 시간이 걸리지 않았습니다. me2day-scala를 만들면서 자바에는 없고 스칼라에만 있는 타입 추론, 패턴 매칭 등을 써보았는데 상당히 인상적이었습니다.

비교적 신생 언어인 스칼라가 트위터의 메시지 큐 개발에 채택된 것을 보면 이례적이라는 생각이 듭니다.
외국에서는 큰 서비스라도 신기술을 작은 부분부터 실험해 보는 곳이 많은 것 같습니다. 예를 들면 은행이나 보험사에서도 그런 시도를 하는 곳이 있다고 합니다. 아마도 외국은 기본 규모가 커서 사용자 기반이 아직 넓지 않은 기술이라도 조금씩 실험해 나가며 적용, 해결해 나갈 수 있을 텐데 한국은 그에 비하면 규모가 작아 신기술을 도입하기 어렵지 않나 하는 생각도 듭니다.

“만들고 싶은 프로그램을 만들면서 살 수 있는 방법을 찾아”보기도 하셨는데 가능성은 어떻게 보시나요.
가능성이 높지 않은 것 같습니다. (웃음) 그 생각을 처음 한 계기는 몇 달 전 켄트 벡이 쓴 글을 보고서였습니다. 켄트 벡이 집필이나 강연 활동을 많이 하는데 그래도 프로그래밍이 가장 즐겁다는 걸 느꼈다고 합니다. 가장 즐거운 일을 하면서 생계를 유지하면 좋겠다는 생각에 켄트 벡이 만든 프로그램이 JUnit Max입니다(참고: JUnit Max Origins). 저도 구입했고요. 한 달에 2달러면 커피 값 수준인데 그 가격에 비해 꽤 유용한 프로그램이니까요. 앞서 말씀드린 것처럼 조직 내에서는 활동의 범위가 제한되는데 제가 스스로 무언가를 하고 그에 대한 반응이 있으면 재미있지 않을까 하는 생각이 들었습니다. 제가 만들 수 있는 프로그램으로 한 달에 2달러씩 받아서 생계가 유지될 수 있을까 하는 생각을 했는데 상용 도구들이 싼 가격으로 잘 나와서 경쟁력을 갖추기가 쉽지 않을 것 같습니다. (웃음)

미처 알지 못하는 어딘가에 소프트웨어가 필요한 곳들이 있을 텐데 개발자들이 안정적으로 자리 잡을 수 있는 회사의 선택이 폭이 좁다는 것이 사회적으로 보면 손실인 것 같습니다.
그런 면에서는 개발자들의 입지가 점점 좁아지는 것도 사실입니다. 애플 앱스토어처럼 유용한 기능이 있을 때 돈을 주고 산다는 인식이 있다면 소규모 애플리케이션 개발 회사들도 많이 생기고 살아나갈 수 있을 텐데 개발자인 제 스스로도 소프트웨어를 사기 전에 고민을 많이 하니까요. 쉽게 해결될 문제는 아니겠죠.

가장 인상 깊었던 소스 코드는 무엇이었나요.
예전에 봤던 것 중에서 이맥스의 세벌식 입력 오토마타가 기억에 남습니다. 상당히 긴 소스로 키 입력 순서를 다 기록해 놓고 모든 한글 입력 조합에 대응해 놓은 것입니다. 사람이 일일이 코드를 짠 것 같지는 않고 다른 코드로 생성한 것 같은데 그런 식으로 기능을 구현할 수 있다는 점이 좀 놀라웠습니다.

개발 도구가 꾸준히 발전하고 있지만 그에 따르는 원인 모를 트러블슈팅은 여전한데 벗어날 없는 굴레일까요.
안정화된 것이 아닌 이상 어쩔 수 없다고 생각합니다. 항상 잘 하는 것을 계속하면 ‘삽질’을 할 필요가 없겠지만 무언가 더 잘 해보려고 새로운 것을 하는 과정에서 생기는 현상이라고 봅니다. 다만 예전과는 그 종류가 달라졌다는 게 발전인 것 같습니다. 예를 들어 오타 때문에 문제가 터지는 어처구니없는 삽질은 많이 줄었죠. 워드프로세서가 생긴 후 글을 더 많이 써야 하듯이 개발 도구가 발전하는 만큼 새로운 도전이 생기지 않나 생각합니다.

단국대 산학 협력 과정 강의를 나가시는데 어떤 경험을 하셨는지 나눠 주세요.
웹 애플리케이션 실무 개발 프로젝트 과정을 처음부터 끝까지 진행, 경험해 보는 수업입니다. 학생들이 개발에 대한 관심이 평균적으로 식었다고는 하지만 관심이 있고 뛰어난 학생들은 여전히 열심히 잘 하더군요. 아이디어도 좋고요. 한 가지 아쉬웠던 점은 앞서 이야기가 나왔지만 개발 도구들이 점점 복잡해지다 보니 학습 곡선이 가팔라서 학생들에게는 부담이 될 것 같다는 것이었습니다. 프로그래밍 자체보다 개발 도구를 다루는 데 진입하기가 어렵지 않을까 하는 걱정이 좀 됐습니다.

앞으로 계획은.
제 영향력을 좀 더 발휘하며 일을 하면서 생활을 유지할 수 있는 것을 찾는 것입니다. 여자 친구가 생겼으니 결혼을 하면 좋겠다는 생각도 하고 있습니다. (웃음)

(편집자 주: 인터뷰 내용은 인터뷰이 개인의 견해이며 인터뷰이가 소속된 회사와는 무관합니다)

[박응주 소개] NHN에서 웹 애플리케이션을 개발하고 있다. 개발에 필요한 라이브러리와 도구 만드는 것을 좋아해 요즘은 여가 시간에 자바 기반 언어를 위한 코드 커버리지 분석기를 만들고 있다.



이 문서 북마킹 하기

mar.gar.in mar.gar.in naver naver eolin eolin del.icio.us del.icio.us

[지난 인터뷰 보기]



위로


뉴스레터
 
  
자바스크립트가 작동이 중지되었습니다. 이 기능을 수행하시려면 브라우저에서 자바스크립스트를 작동시켜 주시거나 이곳을 클릭해주세요.
사이트 여행

dW 커뮤니티
포럼 | 블로그 | Spaces
dW Student Community

로컬 컨텐츠

행사 및 세미나

기획 기사

개발자 입문

튜토리얼 및 교육

TOP 10 인기자료

SW 다운로드

RSS 피드


Special offers
Screencast
IBM SOA Sandbox 시험판
dW Student Community
로보코드
코드 트레이닝


    IBM 소개 개인정보 보호정책 문의