이미 소장하고 있다면 판매해 보세요.
|
1장 자바용 구글 앱 엔진
클라우드 컴퓨팅과 앱 엔진 혁신을 위한 시간 확보 이 책에서 다루는 내용 정리 2장 앱 엔진 개요 앱 엔진 아키텍처 자원 할당량 사용료 청구와 고정 할당량 자원 유형별 할당량 앱 엔진 애플리케이션의 구성 요소 정리 3장 자바용 구글 앱 엔진 첫걸음 시작점 자바 SDK 설치 이클립스용 구글 플러그인 설치 구글 앱 엔진 회원 가입 데모 애플리케이션 실행 첫 앱 엔진 프로젝트 생성 프로젝트 산출물 개발용 서버 실행 준비 예제 애플리케이션 배치 정리 4장 서블릿 컨테이너와 프레임워크 프레임워크 선택 서블릿과 자바 서버 페이지(JSP) 뷰 모델 컨트롤러 배치 기술서 PersistenceManager 스프링 MVC 서버 구성 뷰 어도비 플렉스 서버 구성 클라이언트용 코드 서버 측 코드 정리 5장 애플리케이션 개발 기능 명세 작업 시간 기록표 UI 모형 기술 명세 인증 프레젠테이션 영구 저장 GWT 활용 프로젝트 생성 초기 시작 애플리케이션 실행 애플리케이션 개발 컴포넌트 임포트 UI 코드 작성 스타일 추가 호스트 페이지 수정 애플리케이션 실행 클라이언트 측 이벤트 처리 정리 6장 사용자 인증 구글 계정 서비스 자원 접근 제한 Users API 개발 모드 애플리케이션에 인증 기능 추가 LoginInfo 클래스 LoginService와 LoginServiceAsync 인터페이스 구글 계정을 사용한 로그인 구현 배포 기술서 수정 사용자 인터페이스 수정 정리 7장 앱 엔진 데이터스토어 앱 엔진 데이터스토어 개요 엔티티 다루기 클래스와 필드 엔티티의 CRUD JDOQL로 질의하기 질의 필터링 질의 정렬 질의 범위 지정 인덱스 사용 인덱스 생성 개발 모드에서의 인덱스 생성 트랜잭션 사용 애플리케이션 마무리하기 GWT RPC를 이용한 원격 프로시저 호출 작성 데이터 서비스 작성 배포 기술서 수정 GWT 클라이언트의 서비스 호출 작업 시간 항목 표시 정리 8장 엡 엔진 서비스 프로젝트 설정 멤캐시 서비스 URL 패치 서비스 이미지 서비스 자바 클래스 생성 ImageObject 클래스 작성 PersistenceManagerFactory 클래스 작성 ImageSource 클래스 작성 ImageTransform 클래스 작성 애플리케이션 마무리 서비스 테스트 메일 API XMPP 서비스 정리 9장 관리와 연동 앱 엔진 애플리케이션 관리 애플리케이션 상황판 애플리케이션 버전 관리 로그 파일 분석 연동 구글 웨이브와 연동 세일즈포스닷컴과 연동 정리 |
|
여러분은 구글앱엔진 책을 막 집어 들었다. 산업이 클라우드 컴퓨팅으로 변화하는 데 결정적 역할을 하는 구성 요소에 첫 발을 내딛는 여러분을 환영한다.
지난 수년 동안 소비자와 기업용 애플리케이션의 개발 방식이 클라우드 컴퓨팅의 등장으로 인해 완전히 바뀌었다고 해도 과언이 아니다. 처음엔 애플리케이션 인도 방식에서 혁명이 일어났다. 애플리케이션을 인터넷을 통해 서비스 형태로 제공해 어떤 소프트웨어도 설치하거나 유지 보수하지 않아도 되게 하자는 생각이었다. 다음에는 애플리케이션 기반 시설에서 혁명이 일어났다. 이번에는 개발자가 물리적인 기반 시설을 배치하거나 관리할 필요 없이 서비스로 제공되는 원천 연산 처리와 저장 능력 자체를 사용하게 되리라는 생각이었다. 이제 우리는 애플리케이션 플랫폼에서 일어나는 혁명을 바라보고 있다. 이 혁명으로 개발자는 고수준의 블록을 사용해 애플리케이션을 구축할 수 있으며, 하부에서 돌아가는 물리적인 장치에 대해서는 몰라도 상관 없다. 앱 엔진은 구글의 세상으로 들어가는 입구와 같다. 구글은 요구에 따라 자유롭게 확장되는 온디맨드 애플리케이션 개발과 배치 기술을 갖고 있으며, 클라우드로 이동하는 흐름에 크게 기여하는 대표 주자다. 앱 엔진이 이토록 중요한 이유는 다음과 같다. 1. 배치될 기반 시설에 신경을 쓸 필요가 없는 개발환경 거의 모든 애플리케이션 개발 프로젝트에서는 개발과 배치 스택을 계획하는 데 많은 시간을 소모한다. 어떤 애플리케이션 서버 컨테이너를 쓸 것인가? 데이터베이스 서버는? 부하 분산기는? 배치에 충분한 라이선스는 확보되었는가? 기존 데이터베이스를 나눠 쓸까? 아니면 새로 만들어 돌릴까? 어떻게 백업하고 어떻게 성능을 감시해야 할까? 연산 능력과 저장 공간과 네트워크는 애플리케이션을 적절히 확장하는 데 부족하지 않는가? 이 모든 질문에 답을 찾지 않고는 코드 한 줄도 작성할 수 없다. 구글앱엔진은 이 모든 상황을 바꾼다. 구글이 완전한 개발과 배치 기반 기술 계층을 마련해 놓았다. 구글이 힘을 덜어주므로 우리는 사용자의 특정한 요구에 집중할 수 있다. 2. 전 영역 단일 개발환경 전통적으로 데이터베이스 개발, 애플리케이션 개발, UI 개발은 전혀 다른 환경에서 서로 독립된 팀에 의해 진행됐다. 구글 웹 툴킷과 앱 엔진을 통합하면 SDK를 내려받아 이클립스 플러그인으로 설치하는 것만으로도 단일 환경에서 전체 애플리케이션 코딩을 시작할 수 있다. 이클립스에서 UI를 직접 자바로 구축할 수 있고, 이를 앱 엔진 자바 데이터 객체에 붙일 수 있고, UI부터 DB 연결 작업까지 전부 디버깅할 수 있다. 3. 즉석 배치, 클라우드 확장성 기존 애플리케이션 개발자는 전체 개발 시간의 3분의 1까지도 운영 환경에 배치하는 데 할애했다. 이 책에서 만들 첫 번째 애플리케이션은 버튼 하나만 누르면 개발환경에서 구글의 세계적인 클라우드 운영 환경으로 배치가 완료된다. 그리고 배치된 애플리케이션은 첫 사용자에서부터 백만 번째 사용자에 이르기까지 완벽한 신축성을 갖고 확장된다. 글자 그대로 인터넷에서 가장 처리량이 많은 사이트와 동일한 기반 구조에서 운영되는 것이다. 시사점 구글앱엔진의 새로운 기능들을, 기업 고객이 클라우드를 통해 더 많은 일을 하게 애피리오사의 도구에 추가하는 일은 무척 흥미 있는 일이었다. 앱 엔진은 두 선두 클라우드 플랫폼, 포스닷컴Force.com과 아마존 웹서비스 간의 간극을 메운다. 포스닷컴은 업무 객체를 가진 풍부한 업무 애플리케이션 플랫폼이며, 애플리케이션이 폭넓은 기능을 상속해 쓸 수 있다. 하지만 어떤 애플리케이션은 이런 기능이 필요하지 않으며 오히려 더 많은 제어권을 갖고 플랫폼의 하부에 직접 접속하는 편이 더 나을 수 있다. 스펙트럼의 반대편에는 아마존 웹서비스가 있다. 특히 S3와 EC2에서 애플리케이션 개발자는 골치 아프게 하드웨어를 소유하는 일 없이 기반 구조를 제어하는 권한을 갖는다. 하지만 많은 애플리케이션이 이 정도의 기반 구조 제어 권한을 필요로 하지 않는다. 추상화 수준이 높을수록 개발은 훨씬 효율적으로 진행되는 편이다. 구글앱엔진은 이 두 선두 플렛폼 사이의 공백을 채운다. 앱 엔진에서는 포스닷컴에서 일할 때보다 더 많은 제어권을 갖는다. 그리고 앱 엔진은 현재 우리가 EC2에서 애플리케이션을 구축하려면 원치 않으면서도 다뤄야만 하는 여러 계층의 기반 구조를 추상화한다. 예를 들면 앱 엔진에서는 프로그램을 돌릴 기계의 규모를 신경 쓰지 않아도 된다. 각 클라이드 기술의 장점은 거의 완전히 상호보완적이고 이 기술 간의 연동을 도와주는 도구도 있다. 작년의 한 행사에서 누군가가 이런 질문을 했다. '이 산업계는 새로운 플랫폼 전쟁의 출발선에 서 있나요? 아니면 특징이 서로 다른 클라우드 플랫폼을 모두 편의대로 사용해 웹 애플리케이션을 엮어 만들게 될까요?' 우리는 후자라고 굳게 믿는다. 어쨌든 진짜 '플랫폼 전쟁'은 여전히 기존 패러다임에 대항해 벌여지고 있다. 기존 패러다임에서 벗어나지 못한 대부분의 개발자는 자기가 세계적인 웹 애플리케이션을 개발하고 배치하는 데 어떤 하드웨어나 소프트웨어도 더는 구입하지 않아도 된다는 사실을 모른다. 그러나 여러분은 다르다. 구글앱엔진 개발이라는 신세계로 안내하는 이 책을 즐기기 바란다. - 리안 니콜스 애피리오 사 클라우드 전략 부사장 ---추천의 글 중에서 독자에게 여러분을 비롯해 많은 개발자가 클라우딩 컴퓨팅을 플렛폼 모델로 선택하기 시작했습니다. 이 책은 주요 자바 클라우딩 컴퓨팅 플랫폼인 구글앱엔진의 핵심을 설명합니다. 저희는 구글이 제공하는 SDK, 플랫폼, 서비스의 모든 핵심 구성 요소를 보여드리려 합니다. 이들은 앱 엔진에서 웹 애플리케이션을 구축하는 데 필수불가결한 요소입니다. 앱 엔진을 움직이게 하는 법을 먼저 배우는데, 이클립스용 구글 플러그인에서부터 시작해 개발 서버, 데이터스토어, JDO자바 데이터 객체, 서비스 형태의 영구 보관 기능으로 옮겨갑니다. 그러고는 트랜잭션, 데이터 접근 등에 어떻게 스프링 프래임워크를 서비스로 쓰는지 보여 드립니다. 여러분은 구글 웹 툴킷을 써서 Ajax 애플리케이션을 어떻게 만드는지 보고, 세일즈포스탓컴과 구글 웨이브에 통합되는 웹 애플리케이션을 구축하는 법도 보게 됩니다. 그리고 일단 애플리케이션을 띄워 작동시킨 후 이를 감시하고 관리하고 유지 보수하는 방법을 배웁니다. 『알짜만 골라 배우는 자바 구글앱엔진』은 구글앱엔진의 완벽한 여행 안내서입니다. 이 책을 일단 읽고 나면 이 책에서 익힌 지식과 기술을 토대로 다음번 대형 프로젝트를 구글앱엔진이라는 멋진 신종 플랫폼에서 수행할 수 있습니다. 카일 로치와 제프 더글라스---저자 서문 중에서 산업 혁명을 계기로 공방에서 소량으로 생산하던 수공업자가 예술가와 공원으로 나뉜 것처럼 자바는 코드 재사용을 통한 생산성에 혁명을 일으켜 개발자를 고급 컴포넌트 개발자와 단순 조립공으로 나눌 것이라는 글을 예전에 읽었다. 그때는 이런 일이 진짜로 일어날 거라고 믿었고 멋지다고 생각했다. 나중에 이런 구조가 좋지 않다고 견해를 바꾼 후에도 여전히 자바 언어는 조립공을 양산하려는 목적으로 만들어졌다고 여겼다. 그런데 씽크 인 자바(Think in Java) 서두의 소갯글에서는 똑같이 산업 혁명을 거론하면서 전혀 다른 얘기를 한다. 씽크 인 자바 소갯글에서 저자인 브르스 에켈은 책 표지를 설명하면서 미술 공예 운동을 언급한다. 산업 혁명 이후에 삭막한 공산품이 대량 생산되는가 하면 예술 작품은 과하게 화려해졌는데 이에 대한 반동으로 기존 수공업의 검소한 디자인과 수공업자 개인의 중요성을 강조하는 운동이 일어났다는 것이다. 그리고 오늘날에도 이 운동의 반향이 있는데 그 중 하나가 단순히 코드를 찍어내는 대신 소프트웨어 장인정신을 강조하는 경향이라고 한다. 브루스 에켈은 자바 언어를 이런 관점에서 보면서, 자바가 프로그래머를 운영 시스템 기술자의 위치에서 소프트웨어 장인으로 승격되도록 돕는다고 말한다. 상당히 신선한 관점이다. 우리가 컴포넌트를 가져다가 소프트웨어를 만드는 작업이 단순 조립 작업이 아니라는 얘기로 이해된다. 오히려 컴포넌트로 재사용하는 부분은 덜 중요하고 우리가 만드는 코드가 더 중요하기 때문에 머리 좋은 사람들이 컴포넌트를 만들어 우리가 중요한 부분에 집중하도록 돕는 상황으로 현실이 바뀌어 보인다. 실제로 역자 또한 오랫동안 PHP의 생산성을 경쟁력으로 삼아 애플리케이션을 개발하다가 자바로 전향하게 된 이유 중 하나가 배포와 운영의 문제였다. 구글앱엔진은 그런 관점의 연장선상에서 볼 수 있을 듯하다. 인터넷 사업을 하면서 개발자가 신경 써야 하는 영역의 절반 정도를 구글앱엔진이 대신 해결해주는 느낌이다. 운영 단계에서 서비스의 사용량에 따라 시스템을 증설하고 유지보수해야 하는 것까지 생각하면 절반 이상일 수도 있다. 우리 개발자는 정말 중요한 애플리케이션 개발에만 집중하면 골치 아픈 운영 관련 작업은 구글앱엔진이 해결해준다. 더구나 자바용 구글앱엔진은 표준 환경을 거의 준수하기 때문에 많은 코드를 재사용해서 사용할 수 있다. 물론 구글앱엔진에서 개발하는 일이 행복하기만 한 건 아니다. 클라우드 컴퓨팅이다 보니 확장성 때문에 단독 장비에서 개발할 때보다 신경 쓰거나 포기해야 하는 부분 또한 있다. 이 책은 자바용 구글앱엔진에서 얻을 수 있는 이득이 무엇이고 신경 써야 하는 부분이 무엇인지 풍부한 예제와 더불어 잘 설명한다. 특히 입문서인 만큼 지루하고 거의 쓸 일이 없는 내용은 빼고 꼭 알아? 하는 부분만 잘 선별했다. 그렇다고 변죽만 울리다 마는 어설픈 입문서는 아니니 걱정하지 않아도 된다. 진짜로 작동하는 애플리케이션을 만들기에 충분한 정보를 담고 있는 알찬 책이다. 개인적으로 에이프레스사의 비기닝 시리즈를 프로 시리즈보다 좋아한다. 이 책으로 우리 두뇌를 구글앱엔진에 익숙하도록 적응시킨 후에 나머지 내용은 인터넷을 뒤져서 찾으면 될 것이다. ---옮긴이의 말 중에서 |
|
자바 개발자라면 누구나 손쉽게 큰 돈 들이지 않고 웹 애플리케이션을 만들 수 있다. 클라우드 컴퓨팅의 선두주자인 구글의 기술과 서비스를 마음대로 활용할 수 있는 자바용 구글 앱 엔진의 중요한 기능을 알짜만 골라 배울 수 있는 책.
애플리케이션 개발은 변화의 기로에 서있다. 잠시 각자의 개발 프로젝트 계획을 떠올려보자. 모든 프로젝트의 첫 단계에는 비슷한 작업 항목이 있는 듯하다(서버 구축, 데이터베이스 설치, 애플리케이션 구성 등). 우리는 프로그래머가 아니던가? 왜 우리 재능을 이것저것 신경 쓰는 데 허비해야 하는가? 처음부터 우리는 애플리케이션 구축에 열정을 집중할 수 있어야 한다. 지금이 구글앱엔진(Google App Engine)이 등장해야 할 순간이다. 구글앱엔진을 쓰면 전통적인 개발에서 수행하던 개발 서버 구축, 데이터베이스 설치, 애플리케이션 서버 설정, 포트 개방, 기타 끝없이 이어지던 잡일은 신경 쓰지 않고 바로 애플리케이션 개발을 시작할 수 있다. 구글앱엔진 애플리케이션은 최근에 쓰이는 자바 개발 도구를 그대로 사용해 개발한다. 이클립스용 구글 플러그인을 사용하면 한 IDE에서 전체 애플리케이션을 개발할 수 있다. 데이터 관리에서부터 사용자 인터페이스 설계에 이르기까지 전부 단일 개발환경으로 처리된다. 더는 애플리케이션 계층에 따라 다른 도구나 서버를 써야 할 필요가 없다. 무엇보다 환경을 구축하는 데 허비하는 시간은 줄어들고 애플리케이션의 사업적 가치에 더 많은 시간을 쓸 수 있다는 점이 모두가 인정하는 구글앱엔진의 장점이다. 내 경험에 따르면 시간의 80%를 애플리케이션 유지 보수와 개선에 사용했고 오직 20%만을 혁신에 사용했다. 하지만 산업은 진화 중이다. 이제 이 공식을 뒤엎을 때가 됐다. 확장성, 보안, 호스팅, 부하 분산, 대역폭을 비롯해 애플리케이션을 작성할 때 따라오는 여타 모든 사전 준비와 주변 작업을 구글에게 맡기자. 여러분은 혁신과 애플리케이션의 사업적 가치에 집중하는 데 시간을 써야만 한다. 이 책에서는 구글앱엔진용 개발환경을 구성해본다. 첫 애플리케이션을 만들고, 앱 엔진에 포함된 기능을 하나씩 알아본다. 스프링, 플렉스, 구글웹툴킷(GWT) 같은 몇 가지 기술도 책의 여러 곳에서 간략하게 다룬다. 이 책의 일부 핵심 예제는 서로 연관이 되어 있지만 각 장 대부분을 충분히 독립적으로 구성했으므로 필요에 따라 건너뛰며 읽어도 무방하다. 결국에는 틀이 잘 잡힌 애플리케이션을 밑바닥부터 만들 것인데, 그러면서 장마다 운영 환경에서 사용할 만한 지식을 배운다. 그리고 코드 샘플을 찾고 있었다면 책을 잘 고른 셈이다. 이 책은 앱 엔진의 모든 서비스를 설명하는 상세한 예제로 가득 차 있다. 1장에서는 클라우드 컴퓨팅의 개념과 함께 앱 엔진이 어떤 유형의 클라우드 서비스인지를 간략히 살펴본다. 2장은 애플리케이션 앱 엔진의 하부 기반 구조와 애플리케이션 자원 할당을 소개한다. 자원 할당은 특정 앱 엔진 애플리케이션이 너무 많은 자원을 소모하거나, 다른 애플리케이션에 자원을 빼앗기지 않게 막는다. 2장에서는 앱 엔진에 가입해 접속하고, SDK를 다운로드하며, IDE를 설정하고, 첫 애플리케이션을 배포해본다. 이 책을 발췌해 읽는 경우라도 예제와 실습을 실행하는 데 필요한 도구 설치 정보와 앱 앤진 기반 정보를 다루는 2장을 읽을 것을 권장한다. 4장과 5장은 실제 시나리오를 다룬다. 앱 엔진과 잘 어울리는 프레임워크와 라이브러리, 동작하지 않는 라이브러리 등의 제약 사항을 알아본다. 구글웹툴킷을 살펴보고, 동적인 사용자 인터페이스를 구현하는 일정 관리 애플리케이션을 완전히 처음부터 만들 것이다. 6장, 7장, 8장은 앱 엔진에 포함된 서비스와 네이티브 도구를 소개한다. 개발자는 6장에 소개된 구글 인증 서비스를 자신의 애플리케이션에 적용할 수 있다. 7장은 앱 엔진 데이터스토어를 사용해 데이터를 저장하고, 질의하며, 인덱스를 생성하는 방법을 알아본다. 8장에서는 앱 엔진 플랫폼이 제공하는 기반 서비스를 살펴본다. 앱 엔진 서비스를 이용해 이메일을 보내고, XMPP(구글 토크)메시지를 보내고, 프로그램적으로 이미지를 조작하고, 다른 웹 애플리케이션으로부터 응답을 받아오는 방법을 다룬다. 마지막9장은 관리 화면, 로깅, 기타 관리 작업을 다루고, 실제 통합 시나리오를 살펴본다. 앱 엔진 애플리케이션을 세일즈포스닷컴에 통합하고, 구글 웨이브와 연동하는 앱 엔진 로봇을 작성한다. |