82년 라디오와 모형이란 잡지에서 퍼스널 컴퓨터라는 말을 접한 이후로 지금까지 프로그래밍에 빠져 있다. 예쁘고 똑똑한 아내와 8살짜리 귀여운 아들과 함께 남양주에서 산다. 책, 음악, 사진, 애니메이션, 프로그래밍이 취미이다. 사람들과 만나 공통 관심사를 나누기 좋아한다. 프로그래머가 더 행복하게 작업하면서 인류에 이바지할 방법이 없는지 찾고 있다. 한국 스프링 사용자 모임(KSUG)의 2대 큰일꾼이다.
몇 년 전 한 대형 SI 업체와 중앙 부처의 뉴스 포털 서비스를 구축하는 프로젝트에 참여했었습니다. 그때 고객이 스프링 프레임워크를 검토해 달라고 요청했지만, 스프링이라는 단어 자체를 처음 들은 SI 업체는 허구에 가까운 비전을 내세워 포틀릿기반 포털 솔루션을 대안으로 제안했습니다. 결국 고정된 예산 안에서 고가의 포털 솔루션을 사느라(포털 때문에 개발 인력이 추가 투입돼야 했음에도 오히려) 개발 인력을 줄이는 악수를 두고 말았고, 개발자들은 지옥을 경험할 수밖에 없었습니다. 당시만 해도 스프링은 오픈소스이기 때문에 신뢰할 수 없다거나 기업용으로 쓸 수 없다는 말이 많았습니다. EJB 2를 중심으로 형성된 기존 자바 생태계의 저항도 적지 않았습니다. EJB는 많은 자바 관련 회사와 구성원들의 밥줄이기도 했으니까요. 하지만, 불과 몇 년 사이에 스프링은 누구나 인정하는 산업 표준이 되었습니다. 지금 제가 스프링의 중요성을 강조한다는 게 어색할 정도입니다. 2009년 오라클이 썬마이크로시스템즈를 인수한다는 발표가 나오자 스프링의 창시자 로드 존슨은 "자바 기술 박물관에 전시물을 하나 추가한 오라클"이라는 글을 썼습니다. 오라클의 썬 인수가 개발자들에게 별 영향을 미치지 못하리라는 내용이었습니다. 오라클의 CEO 래리 엘리슨은 썬을 인수하면서 자바는 우리가 인수한 어떤 소프트웨어보다도 중요하다고 했지만, 로드 존슨은 자바가 중요한 건 사실이지만 오라클이 인수한 건 과거의 자바일 뿐이며 썬이 기업용 자바에서 통제권을 휘두른 건 이미 지난 일이라고 말합니다. 자바는 이미 공개된 기술이기에 한 업체가 통제하거나 절대적인 영향력을 끼칠 수 없으며, 최근에 이루어진 자바의 혁신은 썬을 중심으로 모인 이익 집단이 아닌 오픈소스를 통해 개발자들이 이끌었습니다. 아파치, 이클립스, JBoss, 하이버네이트, 스프링 등이 모두 이 같은 결과물입니다. 오픈소스를 통한 개발은 무엇보다 업체의 이익을 대변하던 과거 기업용 자바 플랫폼과 달리 개발자의 생산성에 집중합니다. 위에 말한 프로젝트의 경우, 비용 문제로 투입 인력이 줄어 개발자당 업무량이 늘어난 데다, 재실행하는데 수십 분이 걸리는 포털 솔루션 때문에 개발자는 이 중의 고통을 당했습니다.(포털 제품 영업 사원은 포털 솔루션을 도입하면 개발 생산성이 두 배로 높아진다고 홍보했습니다.) 기술 혁신가나 조기 수용자들은 스프링이 새로울 것이 없다면서 다른 신기술을 사냥하러 떠납니다. 하지만 저는 이제 시작이라고 생각합니다. 스프링이 안 쓰이는 프로젝트가 없을 정도로 많이 보급되기는 했지만 정작 제가 가까이 가서 보면 스프링을 왜 써야 하는지, 스프링을 쓰면 어떤 이득을 볼 수 있는지 알고 이 이점을 살려 사용하는 곳은 많지 않습니다. 그저 유행이라서 쓰는 곳이 대부분입니다. 스프링을 도입한 효과는 아주 미미합니다.
이제는 교육의 문제입니다. 스프링은 아주 단순한 핵심 가치와 철학을 가진 프레임워크입니다. 하지만 이 철학을 기업용 자바 플랫폼이 제공해야 하는 전 영역에 적용하다 보니 다루는 양이 무척 많고 자칫하면 복잡하고 무거운 기술로 오해하기 쉽습니다. 마치 대부분의 자바 개발자가 자바 언어를 다 알지 못하지만, 오늘도 자바 코드를 작성하는 것처럼 스프링도 그런 마음으로 다가서는 게 좋습니다. 한 번에 다 이해하려고 하지 말고 자신에게 맞는 책을 골라 자신에게 맞는 방식으로 익숙해지도록 하십시오. 그리고 입문 과정이 지나면 조금 더 깊이 진지하게 다가서도록 하십시오. 스프링은 OOP, 디자인 패턴, POJO, 테스트 자동화 같은 위대한 기술과 아주 밀접한 관계가 있습니다. 사실 스프링은 이들 기술을 사용하기 쉽게 도와주는 보조 도구에 불과합니다. 그러니 스프링을 올바르게 쓰고자 한다면 이런 유행에 휩쓸리지 않고 품질 좋은 소프트웨어를 만드는 데 필수적인 기술을 익히십시오. 스프링은 새 버전이 나올 때마다 이전보다 더 쉽고 생산적으로 개선됩니다. 새 기능을 익히는데 주저하지 마십시오. 예전 자바 기술이 WAS 같은 특정 회사의 자바 플랫폼을 팔기 위해 만들어졌다면 스프링과 다른 혁신적인 오픈소스 기술들은 자바 개발자들에 의해 자바 개발자를 위해 만들어진 기술들입니다.
이 책은 일본책답게 예제를 중심으로 친절하게 스프링을 설명합니다. 스프링을 포괄적으로 다루는 기존 교재로 실패한 사람이나 한 번도 스프링을 접해보지 못한 개발 초심자들에게는 스프링에 연착륙하기 좋은 기회일 수도 있습니다. 물론 스프링이 워낙 방대하다 보니 이 책으로 모든 것을 다 배울 수는 없겠지만 조급한 마음은 실패로 가는 지름길입니다. 스프링은 Java EE 전 범위를 포괄하는 프레임워크입니다. 한두 번의 학습으로, 한두 권의 책으로 모두 이해하려는 욕심은 버리십시오. 다만, 투자한 만큼 얻는 게 많다는 것만은 보장합니다. 저는 이 책이 우리나라 자바 개발자 커뮤니티에서 받아들여질 만하게 용어를 다듬고 기술적 오류를 잡는데 약간의 도움을 드렸습니다. 좋은 책이 되도록 고민을 많이 했지만, 일본과 한국의 문화적 차이와 개발 생태계의 차이도 무시할 수는 없나 봅니다. 저도 다른 책을 번역하고 있어서 쉽게 풀기 어려운 영역이란 걸 알고 있습니다. 이 부분에서 저도 역자만큼의 책임감을 느끼는 만큼 혹시 매끄럽지 않은 부분이 있다면 너그럽게 이해해 주십시오. 스프링을 사용해 즐겁고 의미 있는, 그리고 보람찬 개발을 경험하시기를 바랍니다.