확장메뉴
주요메뉴


소득공제
Play Framework Cookbook 한국어판

Play Framework Cookbook 한국어판

: 생산성 높은 자바 웹 개발 플레이 프레임워크

첫번째 리뷰어가 되어주세요
베스트
IT 모바일 top100 1주
정가
30,000
판매가
27,000 (10% 할인)
구매 시 참고사항
eBook이 출간되면 알려드립니다. eBook 출간 알림 신청
분철서비스 시작 시 알려드립니다. 분철서비스 알림신청

품목정보

품목정보
발행일 2012년 02월 06일
쪽수, 무게, 크기 392쪽 | 996g | 188*254*30mm
ISBN13 9788960772724
ISBN10 8960772720

책소개 책소개 보이기/감추기

목차 목차 보이기/감추기

저자 소개 관련자료 보이기/감추기

저자 : 알렉산더 릴젠 Alexander Reelsen
독일 뮌헨에 살고 있는 소프트웨어 개발자이다. 그는 여행 예약 엔진, 홍보 관리와 메시징 시스템, B2B 이커머스 포탈 같은 다양한 소프트웨어 시스템을 개발한 경험이 있다. 그는 2009년부터 플레이 프레임워크를 사용해 왔으며, 순수 자바로 구현된 플레이 프레임워크의 단순함에 매료됐다. 그밖의 관심사는 공유 자원이 없는(shared-nothing) 웹 아키텍처를 통한 확장과 NoSQL 데이터베이스다.
그는 14살에 리눅스를 가지고 놀기 시작하면서부터 대부분 시간을 시스템 개발자로 일해왔다. 알렉산더는 공부를 해나가면서 소프트웨어 개발을 알게 되었으며, 웹 애플리케이션이 시스템 관리보다 더 흥미롭다는 결론을 내렸다.
프로그래밍을 하지 않을 때는 실내 농구나 길거리 농구를 즐긴다.
가끔 http://twitter.com/spinscale에 트윗을 한다. 메일 주소는 alexander@reelsen.net이다.
역자 : 박재성
2000년부터 자바지기(http://www.javajigi.net) 커뮤니티를 운영하면서 자바 개발 환경과 자바 관련한 문서를 공유하고 있다. 최근에는 외부 활동을 쉬면서 어떻게 하면 지속 가능한 프로그래밍과 프로그래머가 될 수 있을까에 대해 고민하는 중이다. 저서로는 『스트럿츠 프레임워크 워크북』(한빛미디어, 2003), 『자바 세상의 빌드를 이끄는 메이븐』(한빛미디어, 2011), 『나는 프로그래머다』(로드북, 2011) 외 다수가 있다. 현재 아키에이지 MMORPG게임(제작사: XLGames)의 웹 서비스 개발을 담당하고 있다. 게임의 커뮤니티와 웹의 커뮤니티 통합을 통해 사용자에게 더 큰 가치를 전달하려고 노력 중이다.

책 속으로 책속으로 보이기/감추기

자바 진영의 작은 혁명, 플레이 프레임워크

개발자로서 지난 몇 년 동안의 애플리케이션 개발을 살펴보면, 데스크탑 애플리케이션에서 웹 애플리케이션으로 상당한 변화가 있었음을 알 수 있다. 웹은 애플리케이션 개발의 주요 플랫폼으로 진화해 왔다. 또한 애플리케이션 개발과 일상 생활의 많은 부분에서 중요한 위치를 차지할 것이다. 결과적으로 웹으로의 변화를 가속화할 것이다. 오늘날 휴대전화가 인터넷에 항상 연결된, 마치 강력한 노트북처럼 발전하리라고 10년 전에 누가 상상이나 했겠는가?

인터넷은 소비자와 생산자 사이의 관계를 곧바로 연결할 수 있게 한다. 이는 웹이 애플리케이션 개발자가 사용하기 쉬우며, 다루기도 쉬운 플랫폼임을 의미한다. 주위를 둘러보면, 최근 몇 년 동안 많은 애플리케이션 프레임워크가 인터넷을 중심으로 진화해 왔다. 이들 프레임워크는 10년 전처럼 단순하고 평범한 웹 페이지 이상을 제공하는, 어느 곳에나 존재하는 플랫폼으로 웹을 해석했다. HTTP에 기반을 둔 웹은 업계에서 증명된 프로토콜 중 최고의 데이터 제공자가 되었다. 인터넷(최상위 프로토콜로 HTTP를 가지면서 분산화된, 고도로 활용 가능한 네트워크)은 오늘날 애플리케이션의 주요 부분의 핵심이다. 더불어 다른 개발 영역도 몇 년의 시간이 지나면서 웹으로 대체됐다. 또한 브라우저는 운영체제를 대체하고 있다. 데스크탑 애플리케이션처럼 동작하는 구글 문서도구(docs)처럼, 필요한 기능을 모두 갖춘 웹 애플리케이션이 점점 더 큰 인기를 끌고 있다. 구글 V8과 스파이더몽키(SpiderMonkey) 같은 자바스크립트 엔진은 몇 년 전에는 상상하지도 못했던, 상당히 빠른 웹 브라우저 성능을 제공한다. 이는 로컬 시스템에 설치한 애플리케이션과 비슷한 사용자 경험을 웹 애플리케이션이 제공할 수 있는 단계가 되었음을 의미한다.

오늘날 많은 소프트웨어 개발자들이 웹 개발에도 종사한다. 하지만 이는 상당히 큰 문제를 야기한다. 소프트웨어 개발의 대부분은 추상화, 도구, 프레임워크, 개발자에게서 복잡도를 숨기려고 시도하는 언어(처음에는 좋게 들린다.)에 기반을 둔다. 밀리초 내에 전 세계로 전달되는 IP 패킷에 주의를 기울이는 웹 개발자는 없다. 레이어의 복잡도를 줄이려고 소프트웨어를 추상화하고 레이어를 만들었다. 이로 인해 개발자는 소프트웨어를 지탱하는 기반 프로토콜의 기능을, 의도하지 않았지만 숨겨 버릴 수 있게 됐다. 많은 프레임워크는, 웹에 존재하는 애플리케이션은 제외하고, 마치 데스크탑 애플리케이션 같은 프로그래밍 형태를 닮아가려는 시도를 한다. 하지만 HTTP와 HTTP 기능을 사용해야 하기 때문에 애플리케이션 프레임워크에서 HTTP 기능을 쉽게 감추어 버릴 수 없다.

이는 특히 자바 진영에서 문제가 크다. 자바 진영에서 정의한 표준은 서블릿 스펙이다. 서블릿 스펙에서는 웹 애플리케이션이 표준 방법으로 접근하려면 어떻게 접근해야 하는지를 정의한다. 이는 활용 가능한 대부분의 웹 프레임워크에서 HttpServletRequest, HttpServletResponse, HttpServlet, HttpSession 같은 클래스를 사용한다는 것을 의미한다. 서블릿 스펙은 HTTP 프로토콜의 추상화를 자바 애플리케이션으로 정의한 것으로서, HTTP가 몇몇 부분에서 복잡성을 가지기 때문에 정말 좋은 스펙이다. 하지만 한편, 서블릿 스펙은 프레임워크로 하여금 지금까지 결코 도전하지 못했던 관례를 따를 수밖에 없도록 강제한다.

장고(Django), 레일스(Rails), 심포니(Symfony) 같은 많은 웹 프레임워크는 많은 스펙을 구현해야 한다는 부담을 갖지 않는다. 또한 표준화된 생태계에 맞출 필요도 없다. 대부분 자바 웹 프레임워크는 이와 관련해 결코 의문을 제기하지도 않는다. 자바 진영에는 서블릿 스펙을 구현하는 뛰어난 웹 프레임워크들이 많이 존재한다. 그레일스(Grails), 태피스트리(Tapestry), 구글 웹 툴킷(Google Web Toolkit), 스프링 웹 MVC, 위켓(Wicket) 등이 이에 해당한다. 하지만 플레이에는 한 가지 차이점이 있다. 플레이는 완전히 자바 기반으로 구현하지만, 장고나 레일스처럼 빠른 배포가 가능하다. 플레이 프레임워크가 궁극적으로 제공하고자 하는 기능이 바로 기민한 배포 기능이다.

이 기능이 상당히 인상적이지 않은 것처럼 들리지만 실상은 그렇지 않다. 자바 기반으로 빠른 배포가 가능하다는 사실은 두 가지를 의미한다.

o JVM과 JVM 생태계를 활용: 이는 셀 수 없이 많은 라이브러리, 검증된 스레드, 높은 성능에 접근할 수 있음을 의미한다.
o 개발자 재사용성: 실질적으로 자바 개발자들은 자바 언어를 좋아한다. 나 또한 이 부류에 해당한다. 자바 개발자가 백엔드 언어로 자바스크립트를 사용하도록 설득을 시도해본 적이 있는가? 또는 PHP? 그루비와 스칼라는 매우 좋은 언어다. 하지만 함께 일하는 개발자가 다음 프로젝트에서 새 프레임워크와 새 언어 배우기를 원치 않는다. 나는 동적인 언어의 IDE 지원에 대한 논쟁은 다루지 않겠다.

또한 짧은 개발 주기는 경제적인 이슈다. 소프트웨어 개발자는 정말 많은 비용이 든다. 따라서 개발자가 '컴파일-배포-재시작' 주기에 시간을 낭비하기를 원치 않는다. 플레이 프레임워크는 이 문제를 해결한다.

새롭게 등장하는 모든 웹 프레임워크(파이썬의 장고, 루비의 레일스, 자바스크립트 노드제이에스의 익스프레스제이에스expressjs)는 그들 자신만의 아키텍처 스타일을 도입하고 있다. 이들 웹 프레임워크는 HTTP가 최상위 구성요소다. 반면 자바 진영에서 HTTP는 단지 자바 애플리케이션을 실행해야 하는 프로토콜일 뿐이다.

따라서 플레이는 순수하게 자바를 기반으로 하면서, HTTP에 초점을 맞춘 프레임워크이며 더 짧은 반복주기와 더 빠른 배포가 가능하도록 함으로써 개발 속도를 높일 수 있도록 많은 지원 기능을 제공한다.

이 책은 플레이 내용 대부분을 설명한다. 또한 웹 애플리케이션을 구현할 때 플랫폼을 불문하고 어떤 개발자보다도 빠른 개발이 가능하게 하는 데 도움을 줄 것이다.---저자 서문 중에서

가끔 미투데이, 페이스북, 메일을 통해 질문을 받을 때가 있다. "제가 자바 기반으로 웹 프로그래밍을 하려고 합니다. 무엇부터 시작하면 좋을까요?" 이 질문을 받았을 때 처음 드는 생각은 막막함이다. 막연하게 "이것부터 시작하면 좋지 않을까?"라는 생각을 하지만 확신이 서지 않는다. 확답을 하지 못하는 이유는, 내가 10년 이상을 자바 기반으로 하는 웹 개발자로 살아가면서 학습하고 사용하는 도구와 언어들이 너무 많기 때문이다. 2000년 전후에 자바 웹 프로그래밍을 시작했다면 자바와 서블릿(JSP 포함)부터 시작하면 사회에 첫발을 내디딜 수 있었다. 하지만 지금은 자바와 서블릿만으로는 어딘지 모르게 부족한 것이 사실이다.

맞다. 아무리 자바 진영에 많은 기술이 등장하더라도 자바와 서블릿부터 시작하는 것이 정석일 것이다. 하지만 사회는 자바, 서블릿 외에 더 많은 것을 요구한다. 스트럿츠2, 스프링, 마이바티스(MyBatis) 같은 프레임워크는 기본이며, 자바스크립트 같은 클라이언트 프로그래밍도 할 수 있기를 기대한다. 한 명의 자바 웹 개발자가 되기 위해 알아야 할 기술 요소가 너무나 많다. 학습해야 할 기술 요소가 많은 것은 어쩔 수 없는 자바 웹 개발자의 숙명이라고 하자. 아니 어쩌면 모든 웹 개발자의 숙명일 수도 있다.

이 같은 숙명임을 알면서도 자바 웹 개발자가 되기 위해 길을 걷기 시작한다. 하지만 처음부터 길을 막는 요소들이 많다. 그 중에서도 가장 큰 걸림돌은 여러 개의 프레임워크를 조합해 하나의 자바 웹 애플리케이션을 실행하기 위해 필요한 설정이 너무 많고 복잡하다는 것이다. 자바를 시작하는 많은 개발자들은 여기서 좌절감을 맛본다. 검색이나 지인의 도움으로 수많은 삽질 끝에 성공하겠지만 이미 자바 웹 프로그래밍 학습에 대한 열정은 사그라들고 좌절감만 느끼게 된다. "내가 진짜 이 길을 걸을 수 있을까?"라는 회의감. 그러면 주위에 있던 선배 자바 웹 개발자는 "요즘 애들은 너무 끈기가 없어.", "그 정도 진통은 겪어야 진정한 개발자로 거듭날 수 있지."라는 말로 후배들을 나무란다.

정말 지금 시작하는 개발자들이 끈기가 없는 것일까? 이 같은 추세가 사회 현상이기 때문에 일정 부분 공감하는 부분이 있다고 치자. 하지만 2000년에 프로그래밍을 시작한 초보 개발자를 바라보는 경력 10년차 개발자 또한 그 시절에는 세상을 똑같은 관점으로 바라보지 않았을까? 역사는 같은 과정을 되풀이하면서 한걸음씩 나아간다. 이 같은 문제를 사람에서 찾을 것이 아니라 우리가 사용하는 도구와 기술에서 찾아야 하는 것은 아닐까? 자바 또한 역사가 길어지면서 초보자가 넘기 힘든 산이 되어버린 것은 아닐까?

넘기 힘든 산이 되어버린 자바 진영에 또 하나의 프레임워크를 소개하겠다. 지금까지 등장한 수많은 프레임워크 때문에 그렇지 않아도 골치가 아프지만, 또 다른 프레임워크를 소개하려고 한다. 내가 여기서 또 다른 프레임워크를 소개하는 이유는 무엇보다도, 지금 자바 웹 프로그래밍을 시작하려는 초보 개발자들을 위해서다. 그들의 발걸음을 좀 더 가볍게 해줄 수 있는 도구가 되지 않을까라는 믿음 때문이다. 나는 이 책에서 다루는 플레이 프레임워크가 초보 개발자의 모든 문제를 해결해 줄 수 있으리라고는 생각하지 않는다. 플레이 프레임워크를 학습하더라도 웹 프로그래밍을 위해 학습해야 할 지식과 복잡도의 본질은 똑같다. 하지만 플레이 프레임워크는 초보 개발자가 처음에 넘어야 할 산을 좀 더 쉽게 넘을 수 있게 도와준다. 내가 처음 자바 기반으로 웹 프로그래밍을 시작할 때는 학습해야 할 기술 요소가 많지 않아 단계적으로 학습하면서 재미를 느꼈던 것이 지금까지 프로그래밍을 할 수 있는 큰 계기가 됐다. 초보 개발자에게는 단계적인 학습과 재미가 필요하다. 그 하나의 과정으로 플레이 프레임워크를 활용함으로써 자바 기반으로 웹 프로그래밍을 하는 것이 지루한 작업이 아니라 매우 재미있는 작업이라는 사실을 느껴봤으면 하는 바람이다. 그 이후에 좀 더 깊이 있는 주제로 한 단계씩 걸어간다면 지치지 않고 걸어갈 수 있으리라 생각한다.

이 책은 플레이 프레임워크의 기본적인 내용은 다루지 않는다. 플레이 프레임워크에서 제공하는 문서가 예제 위주로 매우 잘 정리되어 있기 때문에 굳이 다룰 필요가 없기 때문이다. 내가 플레이에서 제공하는 문서의 예제를 따라 해본 결과 2, 3시간이면 실제로 동작하는 예제를 따라 하면서 기본 내용은 학습할 수 있었다. 물론 10년 이상 개발 경험이 있기 때문일 수도 있겠지만 초보 개발자라도 몇 시간만 투자하면 기본적인 흐름은 이해할 수 있을 것이다. 그 이후에 이 책이 다루는 내용을 학습한다면 웹 애플리케이션을 개발하기 위해 필요한 기술 요소들이 무엇이 있는지 파악할 수 있을 것이다. 플레이 프레임워크를 깊이 있게 이해하고 학습하는 것도 중요하지만 이 책에서 다루는 기술 요소들을 파악하는 것이 무엇보다도 더 중요하다. 이 책의 예제들은 웹 프로그래밍을 위해 필요한 대부분 기술 요소를 포함하고 있기 때문이다. 그 중에서 자신이 관심이 가는 기술들을 찾아 하나씩 학습해 나가면 된다. 특정 기술을 습득하는 것이 중요한 것이 아니라 각각의 기술들이 가지고 있는 개념과 해결하려는 문제가 무엇인지를 파악하는 것이 더욱 중요하다. 그런 의미에서 점점 더 복잡해져가는 자바 진영에 몸담은 웹 개발자가 꼭 한 번쯤 읽어봐야 할 책이다.

플레이 프레임워크를 소개하는 또 하나의 이유는 삽이면 충분한 곳에 포크레인을 사용하지 말았으면 하는 바람 때문이다. 가볍고, 빠른 개발 기간을 요하는 애플리케이션임에도 불구하고 엔터프라이즈 급에서 필요한 도구를 사용할 필요는 없지 않을까? 상황에 따라 적합한 도구를 사용하면 좋을 텐데 국내 개발 현실은 한 가지 도구로 쏠림 현상이 너무 심하다. 예를 들어 스프링 프레임워크가 좋다고 하면 너도 나도 스프링 프레임워크 기반으로 애플리케이션을 개발한다. 굳이 스프링 프레임워크를 사용할 필요가 없음에도 이런 경향이 강하다. 따라서 관리툴이나 프로토타입과 같이 사용자가 많지 않고, 빠른 개발을 요하는 곳에는 플레이 프레임워크를 활용할 만한 충분한 가치가 있다. 물론 루비 같은 언어에 익숙하다면 또 다른 프레임워크를 활용해 더 효율적으로 개발할 수 있다. 하지만 자바에 익숙한 개발자밖에 없다면 플레이 프레임워크가 하나의 대안이 될 수 있다.

현재 프로젝트에서 사용해야 하기 때문에 플레이 프레임워크를 학습해야 하는 것이 아니다. 플레이 프레임워크가 가지는 접근 방식과 사상이 기존과 다르기 때문에 플레이 프레임워크의 학습을 통해 새로운 경험을 할 수 있기를 바라는 마음으로 이 책을 번역했다.
---옮긴이의 말 중에서

출판사 리뷰 출판사 리뷰 보이기/감추기

회원리뷰 (0건) 회원리뷰 이동

  등록된 리뷰가 없습니다!

첫번째 리뷰어가 되어주세요.

한줄평 (0건) 한줄평 이동

  등록된 한줄평이 없습니다!

첫번째 한줄평을 남겨주세요.

배송/반품/교환 안내

배송 안내
반품/교환 안내에 대한 내용입니다.
배송 구분 예스24 배송
  •  배송비 : 무료배송
포장 안내

안전하고 정확한 포장을 위해 CCTV를 설치하여 운영하고 있습니다.

고객님께 배송되는 모든 상품을 CCTV로 녹화하고 있으며, 철저한 모니터링을 통해 작업 과정에 문제가 없도록 최선을 다 하겠습니다.

목적 : 안전한 포장 관리
촬영범위 : 박스 포장 작업

  • 포장안내1
  • 포장안내2
  • 포장안내3
  • 포장안내4
반품/교환 안내

상품 설명에 반품/교환과 관련한 안내가 있는경우 아래 내용보다 우선합니다. (업체 사정에 따라 달라질 수 있습니다)

반품/교환 안내에 대한 내용입니다.
반품/교환 방법
  •  고객만족센터(1544-3800), 중고샵(1566-4295)
  •  판매자 배송 상품은 판매자와 반품/교환이 협의된 상품에 한해 가능합니다.
반품/교환 가능기간
  •  출고 완료 후 10일 이내의 주문 상품
  •  디지털 콘텐츠인 eBook의 경우 구매 후 7일 이내의 상품
  •  중고상품의 경우 출고 완료일로부터 6일 이내의 상품 (구매확정 전 상태)
  •  모바일 쿠폰의 경우 유효기간(발행 후 1년) 내 등록하지 않은 상품
반품/교환 비용
  •  고객의 단순변심 및 착오구매일 경우 상품 반송비용은 고객 부담임
  •  직수입양서/직수입일서중 일부는 변심 또는 착오로 취소시 해외주문취소수수료 20%를 부과할수 있음

    단, 아래의 주문/취소 조건인 경우, 취소 수수료 면제

    •  오늘 00시 ~ 06시 30분 주문을 오늘 오전 06시 30분 이전에 취소
    •  오늘 06시 30분 이후 주문을 익일 오전 06시 30분 이전에 취소
  •  직수입 음반/영상물/기프트 중 일부는 변심 또는 착오로 취소 시 해외주문취소수수료 30%를 부과할 수 있음

    단, 당일 00시~13시 사이의 주문은 취소 수수료 면제

  •  박스 포장은 택배 배송이 가능한 규격과 무게를 준수하며, 고객의 단순변심 및 착오구매일 경우 상품의 반송비용은 박스 당 부과됩니다.
반품/교환 불가사유
  •  소비자의 책임 있는 사유로 상품 등이 손실 또는 훼손된 경우
  •  소비자의 사용, 포장 개봉에 의해 상품 등의 가치가 현저히 감소한 경우 : 예) 화장품, 식품, 가전제품, 전자책 단말기 등
  •  복제가 가능한 상품 등의 포장을 훼손한 경우 : 예) CD/LP, DVD/Blu-ray, 소프트웨어, 만화책, 잡지, 영상 화보집
  •  소비자의 요청에 따라 개별적으로 주문 제작되는 상품의 경우
  •  디지털 컨텐츠인 eBook, 오디오북 등을 1회 이상 다운로드를 받았을 경우
  •  eBook 대여 상품은 대여 기간이 종료 되거나, 2회 이상 대여 했을 경우 취소 불가
  •  모바일 쿠폰 등록 후 취소/환불 불가
  •  중고상품이 구매확정(자동 구매확정은 출고완료일로부터 7일)된 경우
  •  LP상품의 재생 불량 원인이 기기의 사양 및 문제인 경우 (All-in-One 일체형 일부 보급형 오디오 모델 사용 등)
  •  시간의 경과에 의해 재판매가 곤란한 정도로 가치가 현저히 감소한 경우
  •  전자상거래 등에서의 소비자보호에 관한 법률이 정하는 소비자 청약철회 제한 내용에 해당되는 경우
소비자 피해보상
  •  상품의 불량에 의한 반품, 교환, A/S, 환불, 품질보증 및 피해보상 등에 관한 사항은 소비자분쟁해결기준(공정거래위원회 고시)에 준하여 처리됨
환불 지연에
따른 배상
  •  대금 환불 및 환불 지연에 따른 배상금 지급 조건, 절차 등은 전자상거래 등에서의 소비자 보호에 관한 법률에 따라 처리
  • 절판 상태입니다.
뒤로 앞으로 맨위로 공유하기