800페이지에 가까운 책을 한번 훑어봤다.
말그대로 훑어봤다. @_@

클라우드 파운드리(Cloud Foundry, CF)나 쿠버네티스 정도가 아니면  "클라우드 네이티브 애플리케이션" 개발은 어렵다는 성철님의 의견에 동의하게 된다.

이제 스터디 일정에 맞춰 예제 작성해보며 직접 부대껴보는 시간을 가져야겠다.

클라우드 네이티브 애플리케이션을 만들어보자꾸나.
* 도서정보: http://www.yes24.com/24/Goods/19040233?Acode=101

내가 JPA를 처음 접한 것은 대략 4년전, apache의 OpenJPA(http://openjpa.apache.org/) 였다.

그전까지는 iBatis를 조금 사용했을 무렵이다. 지금도 쿼리에는 취약하지만, 그 당시에는 프로젝트에서 사용하는 기술을 따라잡는데도 버거웠던 시절이다.

프로젝트 매니저께서 스트럿츠2, 오픈JPA를 기반으로 프로젝트를 진행하기로 하면서 나의 지옥은 시작되었다.
스프링 3.X를 사용하다가 스트럿츠2+오픈JPA를 쓸려니 어디서부터 어떻게 시작해야할지 막막한 상황에서 초강력의 학습강제력까지 쏟아지면서 난감하기만 했다.
그나마 쿼리 압박을 당하지 않았기에 다행이랄까??

우여곡절 끝에... 프로젝트 두 개를 동시에 마무리 짓고 회사에서 진행하는 새로운 솔루션 개발프로젝트에 합류했다.
다행히(?!) 그 프로젝트에서는 스프링+스프링데이타 JPA+QueryDSL을 사용하고 있었다.
우선은 하이버네이트 프로그래밍(http://m.yes24.com/Goods/Detail/3892382) 책을 통해서 개념을 다잡아가기를 시작했다.

하지만.... 여전히 배워야할 게 많다.

그 후로, 나는 쿼리를 직접적으로 다루는 경우가 거의 없었다. 내가 했던 대부분의 작업이 웹기반의 CRUD작업이었고, 엔티티 객체들을 조작하는 것으로 대부분의 데이터 관련 작업들을 처리하는데 무리가 없었기 때문이었다.

각 개발자들의 로컬에서는,
- H2Database
기능테스트는 개발서버의
- MariaDB
그 밖의 상황에 따라 적절하게 교체할 수 있기 때문이다.

지금도 개발할 때는 스프링의 'Profile' 기능을 이용해서 개발하고 있다.
그 간단한 예제로는...
https://github.com/ihoneymon/honeymon-blog

요즘은 테스트할 때 DB 저장과 관련된 부분은 목객체를 사용하기보다는 h2Database를 인메모리in-memory 로 설정하여 구동시키는 편이다. ㅡ_-);; 목객체 만들기 귀찮...

2년 전에 깃헙에 만들어둔 메이븐으로 만든 프로젝트도 보면 Spring Data JPA가 붙어 있다.


이는 하이버네이트에서 제공하는 방언Dialect 덕분이라고 할 수 있다. 각 DB에 맞춰 처리해줬기 때문에 초반에 환경설정만 하고나면 이후에는 개발에만 집중하면 됐다.

그렇게 주먹구구식으로 JPA 기술을 체득하며 사용하던 내게 좋은 참고서가 생겼다.

김영한님이 2년간 심혈을 기울여 세상에 선보인, 이 책!

바로 예약구매를 걸어놓고 기다리다가 받자마자 읽어내려갔다.

많은 분들의 검수를 받으며 잘 다듬어진 문장은 술술 읽어내려갈 수 있었다. 3일 만에 쭈욱 읽어내렸다.

그리고 때마침 회사에서 SAP의 e-commerce 솔루션 hybris를 기반으로 프로젝트를 진행하고 있는 것들이 있어 사내에 '책읽기 모임'을 주선한다. 오랜 만에 사내 스터디인 덕분에 회사에서 도서구매비를 지원해주었다.


다른 구현체이기는 하지만, JPA를 공부하면서 사람들이 ORM에 대한 개념을 이해하는데 큰 도움이 되었다. 자신들이 사용하던 기술들에 대한 궁긍증을 해소하는 순간 그 기술들에 대한 이해도가 급상승하는 효과가 있다는 것은 다들 알고 있을 것이다.


대략 한달 반(매주 화요일 역삼 본사에 모였다)이 걸려서 모두 읽어냈다. 모두가 함께 마쳤다는 것이 참 만족스러움을 준다.
읽으면서 줄치고 기억해둬야하는 개념이 정의되어 있는 곳은 태그를 붙여놨다. 언제든지 궁금증이 생기면 찾아볼 수 있도록.


이 책의 저자 영한님이 최근 개인방송도 시작했다.

다음에 기회가 닿으면 쐬주나 한잔 하자고 해야겠다. ㅋㅋㅋ
서울말을 구수한 부산억양으로 구사하는 김영한님이 앞으로도 좋은 책을 내어주길 기대하며.


실로 오랜만에 적는 독후감(?)이다. 그 동안 이런저런 책을 읽었지만, 독후감을 써야겠다는 생각을 가지게 되는 책이 오랜만에 나타났다.

Deview 2014에 참관하러 갔다가 부스에 계신 인사이트 대표님께 인사드리면서 이야기를 하다가 가판대에 놓여있는 이 책을 발견했다. 이미 대웅에서 나온 책을 가지고 있던 상태여서 잠시 망설였지만, SNS으로 알고 계신 이병준님이 번역(http://www.buggymind.com/559)하시기도 했고 Java 7, 8 주석도 수록했다는 문구에 혹해서 그 자리에서 바로 구매했다. 결코 강요에 의해 구매한 것은 아니다.

프로그래밍을 하게 되면, 자신이 사용하고 있는 프로그래밍 언어와 관련해서 기본을 되짚어 보는 의미로 일년에 한두번 정도 읽어줘야하는 책들이 있다.



자바 쪽에서는 ‘클린코드‘, ‘Effective Java‘, ‘토비의 스프링‘ 등이 있다. Effective Java는 OO출판사에서 나온 것이 있고, 인사이트에서 이번에 출간했다. 00출판사의 서적경우에는 번역이 워낙 거시기해서 원서를 보는 것이 낫다는 평이 많은 편이다. 나 역시 읽어도 내가 읽고 있는 것이 글인지 싶을 만큼 몇줄 읽어내려가다보면 어디를 읽었는지 되짚어야할 만큼 집중도가 뚜욱 떨어진다.

인사이트에서 나온 ‘Effective Java 2nd’는 읽으면서 여러모로 흡족했다. 책크기나 종이재질도 그렇고 폰트도 그렇고.
나는 책에 줄을 치면서 책을 보는데, 책의 본문에 중요하다고 생각되는 문장마다 굵은 글씨 처리가 되어 있어서 줄을 치는 횟수가 많이 줄었다.



어쩌면 내가 허투로 보면서 넘어갈만한 요소들에도 굵은 글씨 처리가 되어 집중하게 된다. 사실 이렇게 책의 중요부분마다 굵은 글씨처리 해주는 것이 사소한듯 하지만 손이 많이 가고 번거로운 작업을 요구한다. 번역자가 그 책을 읽는 분들에게 중요하다고 알려주고 있는 것이다. 내 스타일에는 잘 어울린다.



자바 코딩과 관련된 규칙의 끝날 즈음에는 ‘요약하자면’ 으로 규칙의 내용을 간결하게 한단락으로 정리해주는 부분이 있다. 규칙을 읽어가다보면 이해가 어려웠던 부분도 ‘요약하자면’ 단락을 읽으면서 정리할 수가 있다. 쪽집게 과외 선생님이 콕하고 찝어주는 느낌이랄까?

프로그래밍을 처음 시작하면 예제를 따라서, 다른 사람의 코드를 따라서 혹은 자신만의 방법으로 코딩을 익히고 배우면서 프로그래밍을 익혀나가게 된다. 이러다보면 우리는 종종 그 프로그래밍 언어가 가지고 있는 장점과 단점, 권고사항 등을 제대로 따르지 않게되는 나쁜 습관을 가지게 되는 경우가 있다. 프로그래밍 언어에서 별다른 오류없이 컴파일되고 실행되니까 자기만의 방법으로 코딩하게 된다. 그러다보면 나쁜 냄새를 뿜어내는 프로그램이 만들어지게 될 것이다.

자바 프로그래밍을 하면서 빠지기 쉬운 착오나 자주하게 되는 실수를 짚어준다. hashCode() 메서드를 오버라이딩하면 equals() 메서드도 함께 오버라이딩 해야한다는 규칙(IDE를 사용하면 동시에 생성하도록 강제되어 있다)이라던지 등의 자바 프로그래밍과 관련된 다양한 이야기와 지식이 담겨 있다.

요약하자면, 자바 프로그래밍을 하는 이라면 책장에 꽂아두고 일년에 두번씩은 읽어줘야할 그런 책이다. 책 여기저기에 스며있는 역자의 풍부한 프로그래밍 지식이 잘 스며든 명작이 탄생했다.

꼭 사라~ 반드시 사라~


+ Recent posts