거침없이 배우는 Drools

이런 고급주제가 책으로 나올지 꿈에서 생각하지 못했다. 진심으로 지앤선에게 ‘크나큰’ 박수를!!

1. 기술을 탈피해야 할 때

개발자가 되기 위해서는 교재를 읽고 컴파일을 하고 버그를 잡거나 버그를 만드는 일련의 과정을 통과하는 고난의 시간이 필요하다. 프로그램 언어의 기초문법에 대한 이해, IDE에 대한 사용법, 컴퓨터 저 너머에 존재하는 어떤 ‘감’을 잡기 위해서 필요이상의 ‘박카스’와 ‘레드불스’ 그리고 ‘맥심 커피 믹스’를 마셔가면서 배우고 익히고 삽질의 연속…

힘든 터널을 통과해서 회사에 입사하고, 한명의 ‘든든한’ 개발자가 되기 위해서 팀원들과 함께 자신의 재능을 펼쳐보이려는 순간 초보 개발자에게 나타나는 어렴풋한 단어가 있다. ‘비즈니스 로직’이란 단어다. 분명히 저 단어는 어디선가 들어본 적이 있다. 필자가 기억하는바 ‘비즈니스 로직’이란 단어는 ‘소프트웨어 공학론’ 시간에 들어봤던 기억이 난다. 그게 전부다. 정말로… 더 이상은 잘 기억이 안 난다.

‘비즈니스 로직’이란 단어가 가져다주는 아련한 추억과 함께 뭔가 알 수 없는 공포가 야금 야금 다가온다. 그렇게 불현듯 다가온 ‘비즈니스 로직’은 우리에게 지금까지 배워온 기술을 내려놓게 만든다. 그렇게 코더에서 ‘개발자’로 첫 발걸을 내딛게 된다.

2. 유연한게 좋은건 아니더라…

은하계에서 사용되는 대부분의 프로그램은 두 가지 큰 틀로 묶을 수 있다. 그 두가지 큰 틀은 ‘마구 마구 변하는 로직’과 ‘절대로 변하지 않는 로직’이다.

모든 공학은 언제나 ‘변하지 않는 것’에 대해서 반감이 있다. 그러나 ‘비즈니스 로직’과 같은 ‘문과적’ 단어는 그렇지 않다. ‘변하지 않는’ 혹은 ‘한결 같은’ 로직이 더 좋은 로직이다. 왜냐하면 프로그램 작성을 매우 간결하게 만들 수 있기 때문이다.

반면에 ‘변하는 로직’ 혹은 ‘유연한 로직’은 썩 좋지 못하다. 모든 버그와 모든 삽질은 ‘변하는’ 로직을 위해서 존재한다고 봐고 과언이 아니기 때문이다.

따라서 이러한 ‘변하는 로직’ 혹은 ‘유연한 처리 방법’ 혹은 ‘다변적인 비즈니스 로직’에 대한 처리를 해야 할 필요가 있다.

3. 그래서 필요한게 이것!!

로직이 ‘마구마구’ 변경되는 경우에 사용하는 것이 바로 룰 엔진(Rule Engine)이다. 룰 엔진을 롤(Rule 즉, 로직)을 별도로 만들어두고 프로그램에서 룰(혹은 로직)을 가져다 쓸 수 있도록 해 주는 기능을 제공한다. 프로그램에 있던 로직을 룰 엔진에 저장하고 프로그램에서는 롤 엔진을 통해서 룰(로직)을 실행하기만 하면 된다.

자바에서 사용가능한 룰 엔진에는 Drools, Jena 등 다양한 것들이 존재하는데, 본인은 두 개다 써본적이 없다. 단지 ‘사수’가 ‘Drools’를 만지는 것을 멀찍이서 구경한 경험은 존재한다. 이것인 Drools에 대한 필자의 경험이다.

룰 엔진을 사용하는 방법은 1) 룰 엔진을 다운받고 2) 로직을 작성하고 3) 로직을 사용하면 된다. 더 이상의 방법은 존재하지 않는다. 당연히 ‘로직을 작성’하는 방법이 핵심이다. 설치는 우리의 마음속에 있고, 오픈소스이기 떄문에 쉽게 설치가능하다.

4. 쉽지 않다. 그러나 ‘온니 원’의 가치가 있다.

책 표지를 잘 보면 이런 말이 나온다. “비즈니스 룰을 만들기 위한 40여 가지 방법” 즉 이 책은 Drools중에서 룰 혹은 로직을 만드는 방법에 대해서 ‘집중적’으로 설명하고 있다. 그리고 로직을 설정하고 만들기 위한 방법을 설명하고 있다. 그런데 이 책이 생각보다 쉽지 않다. 하지만 이런 고급 분야에 대한 책이 전무한 실정에서 믿고 갈 수 있는 유일한 책이기 때문에 비교를 불허한다. Drools에 대한 전문서적이 나온것 자체가 ‘기적’에 가깝다 봐야 한다.

책의 난이도가 중급이상이다. 스프링을 비롯한 JBoss, JMS등과 같이 초급 자바 개발자가 접근하기 쉽지 않기 떄문에 분명히 어느정도의 기술적인 ‘문턱’은 존재할 것이라고 생각하지만, 비즈니스 로직을 많이 다루는 업무를 진행하고 있고 Drools, 에 대해서 진지하게 고민하고 있다면 이 책은 많은 도움이 될 것으로 생각된다.

특히 룰 매니져, 룰 엔진, 프로세스 관리, 자동화, 이벤트 처리 등과 같이 Drools에서 제공하는 개별적인 기능에 대해서 자세히 할애하고 있기 때문에 많은 도움이 될 것으로 생각된다. 지앤선의 도움이 많은 책을 읽고 있지만 이 책만큼 피토하게 읽은적이 없는 듯 싶다.

자바의 다양한 라이브러리와 프레임워크의 쓰임에 대해서 진지하게 다시 고민할 수 있는 기회였다. Drools에 대한 내용보다 주변적인 지식을 더 채웠다. Drools에 대한 내용도 충실한다. 실습없이 오로지 읽기만 했음에도 불구하고 ‘시뮬레이션’이 가능했고, 오탈자도 많이 보이지 않았고 분량도 간결하다.

책을 다 읽는데만 3주가 넘게 걸렸다. 단순히 읽으면서 생각보다 아이디어를 많이 얻어서 기분이 좋은데, 기술 난이도가 높아서 매우 힘들었다. 이런 ‘고급서적’ 을 번역해주신 역자분들에게 박수를 보내고 싶다. 물론 ‘이런 책’을 출판한 지앤선에게도… 힘내라 말해주고 싶다.!

Written on April 14, 2014