'Book'에 해당되는 글 3건

  1. 2006.09.20 J2EE 설계와 개발
  2. 2006.09.20 JUnit
  3. 2006.09.20 해변의 카프카 (1)
마이크로소프트웨어 2006년 1월호에 기고했던 글입니다.

이 책을 처음 접하게 된 것은 2005년 1월 즈음 이였던 것으로 기억된다. 오픈소스의 매력에 푹 빠져 지내던 필자는 그 중에서 유독 스프링 프레임워크에 많은 애착을 느끼고 있던 터라, 스프링의 대부격인 로드 존슨의 최근 서적인 J2EE without EJB 라는 서적을 읽고 있던 중이였다. 솔직히 얘기하면, 그 당시 필자는 로드 존슨이 그 책을 통해 얘기하고자 하는 내용의 절반도 채 이해하지 못하는 상태였다. 마침 J2EE without EJB의 전작에 속하는 이 책이 번역되어 출간되었다는 소식을 듣고 한달음에 달려가 이 책을 구매했다. 선 자리에서 “2장 J2EE 프로젝트: 선택과 위험”을 읽어 내려가며 몇 번이나 무릎을 내리쳤는지 모른다.

이 책이 처음 나왔을 당시 아마존에서 이 책에 대한 별점은 놀랍게도 별 다섯개였다. 유난히 비판적인 개발자들의 인색한 평가를 감안한다면, 굳이 설명하지 않아도 그 속에 얼마나 많은 감동이 담겨 있으리라는 것을 짐작할 수 있다. 동장군이 유난히 기승을 부리는 요즈음. 많은 분들이 따뜻한 봄날이 어서 오기를 바라는 마음일 것이다. 최근 자바 커뮤니티에서 스프링 프레임워크에 대한 관심은 그 만큼이나 뜨겁다. 보수적 성향이 뚜렷한 금융권에서조차 스프링을 프레임워크의 핵심 구성 요소로 사용하고 있다는 사례가 심심치 않게 들려오고, 비(Bea)에서는 공개적으로 스프링에 대한 지원을 약속하고 나섰다. (사실 지금도 여전히 그렇지만) 이 책이 출간될 당시 대부분의 J2EE 개발자들은 EJB가 약속하는 장미빛 미래에 대한 환상에 빠져 불합리하고 가혹한 노동을 강요받고 있었다. 로드 존슨은 이 책을 통해 자바 개발자들에게 의존 삽입(DI: Dependenty Injection)과 관점지향프로그래밍(AOP: Aspect-Oriented Programming)을 앞세워 자바가 지니고 있던 올바른 객체지향적 사고의 중요성과 개발의 편안함을 되돌려주었다.

스프링을 다루는 전문 서적이 턱없이 부족했던 작년만 하더라도 이 책은 스프링을 이해할 수 있는 기본 토대를 마련해주는 서적으로서의 가치가 높았을 것이다. 하지만 “Spring Live”를 시작으로 “Spring in Action”, “Pro Spring”, “Professional Java Development with the Spring Framework” 등의  관련 서적들을 어렵지 않게 구할 수 있게 된 지금에도 이 책은 우리에게 많은 것을 선물해준다. 그 중에서도 가장 중요한 것은 개발자가 지녀야 할 자세, 바로 그것이다. 이 책의 곳곳에 흘러넘치는 로드 존슨의 기술 중심이 아닌, 문제 중심의 실용적 사고는 우리 스스로가 얼마나 생각없이 감히 개발자라 자처하고 살았는지를 반성하게 해준다. 그는 특정 기업이나 기술의 마케팅 구호에 필자처럼 휘둘리지 않았다. 로드 존슨은 갈릴레이가 그랬던 것처럼 다들 진실이라 믿고 있던 당연한 진실조차 의심했지만, 그와는 달리 깊이 있는 경험에 바탕을 둔 빈틈없는 설득력으로 동료 개발자들의 삶을 조금씩 향상시켜 나가고 있다. 필자가 이 책을 통해 얻고자 했던 것은 스프링 프레임워크에 대한 깊이 있는 이해였으나, 정말로 얻은 것은 그 보다 더욱 값진 것들이였다. 이제 필자는 더 이상 남들보다 EJB 패턴을 먼저 읽고 ServiceLocator 패턴을 생각없이 적용한 것 만으로 잘난척하던 전문가의 탈을 쓴 바보가 아니다. WEB 2.0으로 포장한 RIA 관련 기술이 뜬다면, 불안한 마음에 우르르 몰려다니며 의심없이 그들의 구호를 따라 외치던 광신도 집단의 일원도 아니다. 다양한 선택의 틈바구니 속에서 언젠가는 최선의 해답을 찾아내어, 내가 만든 소프트웨어를 통해 많은 사람들이 행복해 질 수 있기를 바라는 초보 개발자일 뿐이다. 그러한 현실 인식은 무리한 욕심을 버리고 꾸준한 자기 개발을 통한 성장의 기쁨을 느끼는 것을 가능하게 만들어준다. 필자가 느낀 감동을 함께 느끼고자 하는 동료들에게 솔직히 필자는 이 책보다 “J2EE without EJB”의 원서를 읽어보라고 권하고 싶다. 하지만 그럴만한 여유가 없는 분이라면 다소 번역에 거슬리는 점이 있더라도 “J2EE 설계와 개발”이라는 책을 통해서 로드 존슨의 글을 꼭 읽어봤으면 하는 바램이다. 특히 지금 현재 개발을 해나가는 데 있어 스스로 많은 고민을 해보지 않았던 분들이나 EJB 없이 개발한다는 것에 막연한 불안감을 느끼는 분들에게 추천해 드리고 싶다.

신고
Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이선스에 따라 이용하실 수 있습니다.
TAG Book, J2EE

JUnit

이전글/2006 2006.09.20 21:00
마이크로소프트웨어 2006년 9월호에 기고했던 글입니다.

테스트는 사용자의 요구사항을 만족하는 고품질의 소프트웨어를 얻기 위한 소프트웨어 개발 과정의 가장 핵심적인 구성 요소이다. 테스트를 통해 수렴된 요구 사항을 만족하는지에 대한 검증(Verification)과 그 문제를 해결하는 과정이 우리가 의도한 대로 동작하고 있는지에 대한 검사(Validation)가 이뤄지기 때문이다. 다양한 테스트 기법 중에서도 가장 기본이 되는 것이 바로 단위 테스트이다. 단위 테스트는 소프트웨어의 가장 기본이 되는 단위, 즉 클래스를 대상으로 하며 테스트 대상이 되는 클래스 내부를 알고 있는 개발자에 의해 직접 테스트가 이뤄지기 때문에 화이트 박스(White Box) 테스트, 또는 개발자 테스트라고 불리기도 한다. 시스템의 품질을 유지하기 위해 테스트가 가지는 중요성을 알기 때문에 대부분의 프로젝트 팀에서는 QA팀이나 전문 테스터를 확보하고, 테스트 커버리지 툴을 비롯한 다양한 도구를 활용하고 있지만, 개발자에 의해 작성된 코드 자체가 버그를 갖고 있다면 성능 테스트나 통합 테스트의 결과 역시 신뢰할 수 없다. 이러한 이유로 단위 테스트는 모든 테스트 활동의 기반이 되는 출발점이라고 볼 수 있다.

이 책은 실용주의 프로그래머를 위한 시리즈 중 두 번째 책으로 단위 테스트의 기본이 되는 JUnit을 다룬다. 단순히 JUnit을 사용하는 방법에서 그치는 것이 아니라, 왜 단위 테스트를 수행해야 하며 무엇을 테스트 해야 하는지 또한 보다 효과적인 실천 방법이 무엇인지에 대해서도 소개하고 있기 때문에 단위 테스트를 배우고자 하는 초급자나 바쁜 시간을 쪼개어 테스트를 작성해야 하는데 불만을 품고 있는 개발자들에게 훌륭한 지침서가 되어줄 것이다. 그러나 이 책을 읽고 따라 하는 것만으로 실전에서 테스트를 잘 작성할 수 있으리라는 기대는 하지 않는 것이 좋다. 테스트를 잘 작성하기 위해서는 생각보다 훨씬 더 많은 경험과 훈련을 필요로 하기 때문이다. 한꺼번에 모든 것을 익히고 실천하기 어렵다면 최소한 “1일 1테스트“부터 시작해보자. 6개월 이상을 꾸준히 연습하다 보면 테스트 없이 그동안 어떻게 개발 업무를 진행해 왔는지를 스스로 신기해하는 날이 여러분에게도 찾아오게 될 것이다.

테스트에서 2가지 강조하고 싶은 점은 TDD와 자동화된 테스트이다. 완성된 것처럼 보이는 복잡한 로직을 눈 앞에 두고 거꾸로 테스트 코드를 작성하는 것은 겪어본 사람만이 알 수 있는 고통이다. 테스트가 필수적인 개발 활동이라는 인식에 대해 공감한다면, 반드시 테스트 주도 개발방법을 익히도록 하자. 인터페이스 중심 설계, Mock/Stub의 활용, EasyMock 과 같은 라이브러리 사용법, 코드리뷰와 리팩토링, 짝 프로그래밍 등은 여러분이 테스트 주도 개발방법을 익히는데 큰 도움을 줄 수 있는 대표적인 기법들이다. 또 한 가지는 모든 테스트를 자동화하라는 것이다. 특히 권장할 만한 것은 Cruise Control 등의 도구를 활용한 지속적인 통합(Continuous Integration)이다. 필자가 진행하는 프로젝트에서는 매일 2시간 간격으로 테스트가 자동으로 수행되어, 그 결과가 보고된다. Clover와 같은 테스트 커버리지 도구의 활용도 적극 추천한다. 자신의 모든 코드가 100% 테스트되었다는 자신감은 여러분을 한 층 더 높은 수준의 개발로 인도해줄 것이다.

어떤 좋은 도구나 기법을 활용하더라도 잘 훈련된 개발자 없이는 원하는 결과를 얻지 못한다. 스스로 만족할 수 있는 단순하고 명확한 코드에 욕심을 내는 개발자라면, 이 책을 통해 테스트 능력을 배양하는 것이 그 목표에 도달할 수 있게 하는 지름길이 되리라는 것을 감히 얘기해본다.

신고
Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이선스에 따라 이용하실 수 있습니다.
TAG Book, JUnit
"Killing TIme"용.. 이란 말을 자주 했던 것 같다. 그저 보내기 위한 시간들. 나이가 들어, 삶에 그런 여백을 둔다는게 두려워지기 전까지는 가장 자주 시간 죽이기의 목적으로 내가 했던 행위는 책 읽기였다. 그 중에서도 특히 좋아했던 건 이외수와 하루키이다. 개미귀신이란 단편에 빠진 이후, 내가 읽었던 이외수의 글은 늘 흥미로웠다. 뭔가 남는다거나 깨닫게 된다거나 하는 것보다 그 자체로 너무나 재미있는 하나의 유희였다. 그뒤로 거의 비슷한 과정으로 빠지게 된 것이 하루키의 글이다. 한밤의 기적소리라는 단편을 우연히 읽고, 재미난 놀이를 배운 어린 아이 마냥 들떴던 기억이 난다. 그 뒤로 하루키의 글들은 시간이 날때마다 챙겨서 보는 편인데, 몇일전 회의하러 도서관 근처에 갔다가 해변의 카프카란 책을 구매했다. 요즘은 따로 즐기기 위해 책을 볼만큼 마음의 여유가 없어서, 담배피러 갈때나 화장실 갈때 들고 나가 틈틈이 보는 편인데 이 책은 일주일만에 상권을 다 읽어버렸다. 역시 하루키~ 라는 감탄이 터져나오는 책이다.

아직 상권밖에 읽지 않아서, 특별히 기억해두고 싶은 글귀를 찾지는 못했지만, 하루키의 글은 문장을 음미하고 읽어야 제맛이다. 예전에 마소지에 개발자의 잠못이루는 밤을 달래주는 책 10선에 "태엽감는 새"라는 하루키 글을 소개했던 기억이 나서 찾아보니 PDF 파일이 나온다.


누군가가 누군가를 부르고 있다. 누군가가 누군가를 찾고 있다.
소리가 되지 않는 소리로. 말이 되지 않는 말로.


태엽감는 새에서 발췌한 저 글귀는 지금껏 내가 본 문장들 중에 가장 아름다운 것 중 하나이다. 지금 읽고 있는 책에도 내 마음에 공명을 울리는 글들을 찾게 되겠지. 빨리 나머지 부분도 읽고 싶은데, 프로젝트 일정이 바쁘기도 하지만 매일 맛보는 작은 행복을 놓치기 아까워서 자제한다. :)

신고
Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이선스에 따라 이용하실 수 있습니다.
1 

글 보관함

카운터

Total : 225,750 / Today : 5 / Yesterday : 21
get rsstistory!

티스토리 툴바