자바를 이용하여 개발하는 개발자 대부분은 아마도 서버용 Application을 개발할 거다.
자바라는 언어가 현재는 main stream으로 자리를 잡았지만, 윈도우즈 애플리케이션 보다는 서버 환경에 적합한 기술로 알려지고 있다. 하지만, 개발자들은 대부분 자신이 만든 코드가 동작하는 환경에는 알려고도 하지 않을 뿐더러, 어떤식으로 접근해야 하는지 알지 못한다.
예전에는 하드웨어의 성능을 최대한 이용하기 위해서 WAS와 Web Server의 세부적인 부분까지 알고 튠닝을 하는 일이 많았으나, 요즘은 이를 제대로 알려고 하는 사람들을 찾아 보기 힘들다. 물론 기본적으로 설정한 값들을 그대로 사용해도 잘 동작할 만큼 하드웨어의 성능과 넉넉한 메모리 때문에 시스템 동작에 큰 영향을 주지 않는다고 할지도 모르지만, 개발자는 항상 최악의 상황까지도 염두에 두어야 한다.

이 책을 보게된 동기는 제목중에 있는 "코딩 습관"이라는 말 때문이었다. 하지만 전체적으로는 코딩을 위한 내용이라기 보다는 서버의 튜닝과 문제점 해결에 대해 많은 내용을 다루고 있기 때문에, 초보자들에게 좋은 가이드가 될 것 이라 생각된다.
 
이 책의 저자는 SDS에서 실무 경험을 쌓은 엔지니어이다. 책은 가상의 인물을 통해서, 실제와 같은 상황을 예를 들어 개발자가 개발에 관한 기술들을 습득하고, 활용하는 방법에 대해 익혀나가는 것을 독자와 같이 공유토록 이끌어 간다.

개발이라면 코딩이 끝이라고 생각하는 것에서, 시스템 환경 구성과 문제를 어떤 식으로 해결할 지에 대한 가이드가 될 수 있는 책이라고 생각돤다. 이러한 점에서는 제목에 포함되어 있는 코딩 습관이 별로 어울리진 않을지라도, 한번쯤은 읽어 볼만한 책이라 생각된다.

책에서 다루고 있는 내용을 간략하게 소개하면 기본적인 시스템의 메모리 관리와 GC의 종류들과 이를 어떻게 활요할지, 그리고 프로파일링 툴들에 대한 설명들과 Java의 메소드와 API들에 대한 성능및 목적에 맞는 사용법에 대해서
IO에 대한 병목 처리와 로그의 중요성을 설명하고 있다.

그리고 WAS 또는 서버 설정을 위한 기본적인 Thread와 인스턴트 설정에 대한 것과모니터링 API에 대한 JMX에 대한 소개와 사용 방법에 대해서 설명을 한다. 그리고 책의 마지막에는 저자가 실제 있었던 상황들을 이를 해결하기 위해서 사용했던 방법론들을 예를 들어 독자들에게 설명한다. 

결론적으로 이 책은 국내에서 찾아보기 힘든 주제를 다루고 있는 책으로, 초보자들이 전반적인 지식을 얻기에는 도움이 될거라 생각한다. 하지만 제목 대로 좋은 코드를 다루거나 하지는 않기 때문에 코딩 관점에서 책을 보게되면 약간의 실망을 가질것이다. 책에서 다룬고 있는 여러가지 툴들은 개발자와 테스터에게 좋은 툴과 무기로 제공될거라 생각된다. 특히 자바 VM의 GC를 처리하고 이의 동작 방법은 자바의 메모리 관리를 이해하는데 도움이 될것이다.
Posted by 행복상자
이번 주는 휴가 중이라서, 그 동안 보고 싶던 책들과 이 전에 읽고 있던 책들을 마져 읽는 시간이 되었다. 랜디 포시의 마지막 강의의 원제는 "The LAST LECTURE" 이며, 제목 그대로 저자의 마지막 강의에 대한 이야기를 중심으로 이야기를 풀어나가고 있다.

책 속에는 삶과 죽음이 있었고, 행복과 슬픔이 짇게 배어 있다. 그리고 아이에서 어른의 모습으로 성장하는 그의 이야기를 통해서 인생을 한 번 더 고찰 할 수 있는 많은 이야기들을 담고 있다.
하지만, 그는 행복하고 즐겁게 이야기하는데, 나의 가슴은 시리도록 아파왔고 결코 즐겁지 많은 않았다. 이미 그는 자신의 죽음을 예견하고, 아니 이미 알고 있었기 때문에 글 속의 그는 너무나도 슬픈 존재 었다. 그리고 나 자신에게 반문하게 만들었다. 같은 상황이 나에게 올때 과연 나는 얼마나 초연하게 나의 삶을 정리하고, 주변에 다른 이들에게 즐거움을 줄 수 있을까?

죽음이라고 하는 것은 결코 유쾌하지도 웃으면서 받아들이기 쉽지 않은 것이지만, 모든 사람들이 거쳐가야하는 길이다.

그리고, 해가 바뀌어서, 나이가 한 살 많아지는 것을 안타까와 해서는 안되는데, 지나간 것에 대한 미련들이 많아서라기 보다는 삶의 끝이라는 종착점에 다가가시 싫어서 일거라 생각한다. 그러나 우리의 랜디 포시의 생의 마지막을 준비하는 것은 남 달랐다.
주변 사람들의 만류와 가족들과의 마지막 시간을 함께 준비할 수 있었는데, 그는 세상의 사람들과의 마지막 소통을 원했고, 이를 이루었다.

그의 "마지막 강의"는 단지 그 때 참석했던 사람들 뿐만 아니라, 그의 아이들과 가족들 그리고 앞으로 그의 모습을 보기 원하는 모든 사람들의 것이었다.

하지만, 정말로 슬픈 것은 죽음을 대하는 나의 태도이다.
죽음에 대한 그의 의연한 태도와는 달리 나는 너무나도 슬프기 때문이다. 그가 책 속에서 이야기 했던 많은 재미있는 일화와 좋은 이야기에도 불구하고, 그를 생각하는 나의 마음은 애절하기만 하다. 아마도 그가 가진 가족에 대한 극진한 사랑이 너무나도 내게 많은 것을 생각하게 했기 때문일 것이다.

책속에서, 그가 했던 프로젝트를 보았다. www.alice.org 에 그가 이전에 했었던 프로젝트도 한번 살펴 보았는데, 꽤 흥미로왔다. 이는 프로그래밍을 모르는 사람들에게 툴의 기능을 이용해서 프로그램을 만들수 있는 툴인데, 이를 통해서 프로그밍(Java)를 가르친다. 이를 "헤드 페이크"라고 설명한다. "헤드 페이크"는 그것을 배우는 사람이 다른 흥미로운 것을 배우고 있다고 착각하게 만들어 놓고 실제로는 다른 것을 가르치는 것을 말한다. 

삶은 쉽지 않지만, 열심히 최선을 다하는 자에게 기회와 행운이 있다고 그는 자신을 삶속에 있었던 여러가지 이야기를 통해서 이야기 하고 있다.

랜디 포시, 그는 지난 2008년 7월 25일 죽음을 맞이 하였다.
그의 거룩한 죽음에 대해 감사와 조의를 표하는 바이다.

책을 다 읽은지, 3일이 지났다.
그의 강의가 인터넷에 올려져 있는데, 오늘에서야 볼 마음이 생겼다.

 

내가 사랑하는 사람들에게 줄 수 있는 것들이 뭐가 있을지, 오늘 하루는 생각해 봐야 겠다.
Posted by 행복상자
그 동안 사서 봐야할 도서 목록에 들어 있었는데, 이제야 막 주문해서 어제 받아 본 책이 있다. 한국의 개발자들에게 잘 알려져 있는 개발 자 중의 한 명인 켄트 벡의 "구현 패턴"이라는 책인데, 이제 막 읽기 시작한 책이다. 하지만 그의 책은 읽는 사람으로 하여금 생각하게 만들고, 생각할 꺼리를 제공한다.

그의 책은 읽으면, 생각의 흐름을 그대로 글을 통해서 느낄수 있다. 설명과 예제는 누군가에게 말을 걸듯, 가르치듯 이야기한다.

내가 그의 책 여러 권을 여러 번 읽어 보았지만, TDD(테스트 주도 개발)는 정말 난해하다. 아니 사실 읽을 때마다, 다른 관점에서 접근하게 만들고, 이 때마다 나에게 새로운 아이디어를 준다.

구현 패턴 역시 나에게 동일한 아이디어와 영감을 줄거라는 믿음에 의심하지 않는다.

책의 가장 첫장을 열면, 책의 커버를 열면, 가장 먼저 볼수 있는 글은 "한국의 독자 여러분께" 라는 글이다. 그는 한국의 독자들에게 이렇게 말하고 있다.

"프로그램을 짤 때는 자신과 컴퓨터뿐 아니라, 다른 사람들을 생각해야 한다.!"

하지만 이 모든 것이 자신에게 즐거움을 주어야 한다는 것의 그가 책을 통해서 주는 핵심적인 메시지이다.
아는 것과 즐기는 것 그리고 누리는 즐거움이 개발자는 코드를 통해서 하루 하루, 매일 같이 느끼길 바란다. 누구를 위해서? 바로 자신을 위해서....

이제 켄트 백의 구현 패턴의 세계에 한번 빠져 볼 생각이다.
Posted by 행복상자