N02 app engineseminar
Upcoming SlideShare
Loading in...5
×
 

N02 app engineseminar

on

  • 1,016 views

 

Statistics

Views

Total Views
1,016
Views on SlideShare
1,016
Embed Views
0

Actions

Likes
0
Downloads
7
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    N02 app engineseminar N02 app engineseminar Presentation Transcript

    • GAE/J PROJECT MANAGEMENT
      devtainer@gmail.com
      @devtainer
    • 목차
      Google App Engine SDK for Java
      Google App Engine 개발 툴 지원
      STEP 1.GAE/J 프로젝트의 프레임웍 통합이슈
      STEP 2. 라이브러리 의존성 관리 방식 적용
    • Google App Engine SDK for Java
    • Google App Engine 다운로드
      http://code.google.com/intl/ko-KR/appengine/downloads.html
      Google App Engine SDK for Python
      Google App Engine SDK for Java
      Google Plugin for Eclipse
      Google App Engine Documentation
      Google App Engine Button
    • GAE/J SDK
      GAE/J를 위한 로컬 개발 환경
      Jetty 6.1 기반 (Java 5.0 이상)
      SDK는 Eclipse 플러그인에 내장
      appcfg.sh
      웹 애플리케이션 배포을 위한 쉘
      dev_appserver.sh
      로컬 개발 서버 관리 쉘
    • GAE/J SDK Command – bin/appcfg.sh
      <GAE_HOME>binappcfg.sh[options] <action> <war-location>
      GAE/J의 환경 설정 및 배포를 담당
      Option
      --email
      --passin
      Action
      update
      update_indexes
      vaccum_indexs
      update_queues
      update_dos
      update_cron
      request_logs
      Example
      <GAE_HOME>/bin/appcfg.sh update myapp/war
      <GAE_HOME>/bin/appcfg.shupdate_indexesmyapp/war
      <GAE_HOME>/bin/appcfg.shvaccum_indexesmyapp/war
      <GAE_HOME>/bin/appcfg.shupdate_dosmyapp/war
    • bin/appcfg.sh – uploading application
      devtainer:bindevtainerkim$ ./appcfg.sh update ../demos/helloorm/war
      Reading application configuration data...
      2011. 3. 22 ???? 2:48:02 com.google.apphosting.utils.config.AppEngineWebXmlReaderreadAppEngineWebXml
      ????: Successfully processed ../demos/helloorm/war/WEB-INF/appengine-web.xml
      2011. 3. 22 ???? 2:48:02 com.google.apphosting.utils.config.AbstractConfigXmlReaderreadConfigXml
      ????: Successfully processed ../demos/helloorm/war/WEB-INF/web.xml
      Beginning server interaction for devtainerdemo...
      0% Creating staging directory
      5% Scanning for jsp files.
      25% Initiating update.
      Email: devtainer@gmail.com
      Password for devtainer@gmail.com:
      28% Cloning 23 application files.
      40% Uploading 1 files.
      61% Initializing precompilation...
      90% Deploying new version.
      95% Will check again in 1 seconds.
      99% Will check again in 4 seconds.
      99% Will check again in 8 seconds.
      99% Closing update: new version is ready to start serving.
      99% Uploading index definitions.
      Update completed successfully.
      Success.
      Cleaning up temporary files...
      devtainer:bindevtainer$
    • GAE/J SDK Command – bin/dev_appserver.sh
      <GAE_HOME>bindev_appserver.sh[options] war-location
      GAE/J의 로컬 서버 구동 :defalt port: 8080
      Option
      --port
      --address
      --sdk_root
      -disable_update_check
      Example
      <GAE_HOME>/bin/dev_appserver.shmyapp/war
      URL
      http://localhost:8080/_ah/login
      http://localhost:8080/_ah/admin
      Local DataStore초기화
      데이터베이스 파일명:local_db.bin
      위치:<GAE_PROJECT>/WEB-INF/appengine-generated
      데이터베이스 파일 삭제
    • Google App Engine 개발툴 지원
    • Eclipse Plugin- Google Plugin설치
      Eclipse Plugin Site
      http://dl.google.com/eclipse/plugin/3.6(Helios)
      http://dl.google.com/eclipse/plugin/3.5 (Galileo)
      http://dl.google.com/eclipse/plugin/3.4(Ganymede)
      Google Plugin 주요 기능
      • App Engine에 배포 가능
      • Local GAE SDK 서버 구동
      • Running&Debuggig
      • 입력과 동시에 유효성 확인
      • 프로젝트 생성
      • JDO 클래스 Enhance
    • Eclipse GAE/J Project Layout
    • Eclipse Compile & Deployment Dependency
      Compile
      Deployment
    • Eclipse Google Plugin 주요 기능
      Update URL: http://dl.google.com/eclipse/plugin/3.6
    • IntelliJ의 GAE 프로젝트 지원
    • IntelliJ의 GAE 프로젝트 지원
    • IntelliJ의 GAE 프로젝트 지원
    • IntelliJ의 GAE 프로젝트 배포지원
    • NetBeans– Google Plugin 설치
      http://kenai.com/projects/nbappengine/pages/Home
      Update Center
      http://http://kenai.com/downloads/nbappengine/NetBeans69/updates.xml
    • NetBeans – Google Plugin 설치
    • NetBeans – Google App Engine 등록
    • NetBeans – GAE 프로젝트 지원
    • NetBeans - GAE 파일 편집
    • NetBeans: GAE 배포지원
    • ㄹㄹㄹ
      STEP 1.
      GAE/J 프로젝트의 프레임웍 통합이슈
    • REST
      REST
      REpresentationalState Transfer
      Roy Fielding의 박사학위 논문에서 처음 제안
      Architectural Styles and the Design of Network-based Software Architectures
      http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm
      아키텍처 스타일
      RESTfulWebService: REST 스타일에 따른 웹 서비스 구현
      REST 본래 의미
      웹과 같은 대규모 네트워크 시스템을 위한 원칙들의 모음
      REST 최근 경향
      XML과 HTTP를 사용하는 단순한 웹 기반 인터페이스를 지칭
      REST의 원칙을 따르는 Web Services
    • REST 디자인
    • 프로젝트에 적용해야 할 REST 특성
      REST는 아키텍처 스타일
      Client/Server 아키텍처
      Stateless
      각 Request 독립성 보장
      캐쉬 시스템을 지원
      일관성 있는 접근 방식
      각 자원은 유일한 URL을 갖아야 함
      HTTP 프로토콜의 일관성 유지
      확장성을 위하여 레이어 아키텍처를 지원
    • REST 애플리케이션 디자인
      Convert Layer
      Business Resource Layer
      RESTFul Resource Layer
      Database Access Layer
    • REST 애플리케이션 디자인
      Representation
      Convert Layer
      URL
      Cache
      Business Resource Layer
      RESTFul Resource Layer
      Resource
      Database Access Layer
      Network Cache
      Layered Architecture
      Client
    • REST 애플리케이션 디자인: 프레임웍 맵핑
      POJO XML, JSON
      JAXB
      Springframework
      JAX-RS(JSR-311) RI
      Jersey
      BigTable
      JPA, JDO, Memcache
      Google App Engine
    • REST 프로젝트 결정 사항
      기본 IDE: Eclipse
      WAS: Google App Engine 1.4.2
      의존성 프레임웍
      Jersey 1.6-ea01
      Springframework 3.0.5 Release
      Junit 4.8.1
      SLF4J 1.6.1
    • STEP 1. 라이브러리 추가
      28개 라이브러리를 /war/WEB-INF/lib 디렉터리에 복사
    • STEP 1. 파일 편집 및 라이브러리 등록
      클래스 패스 추가
    • STEP 1. 로컬 배포 및 테스트
    • 현재 프로젝트의 문제점?
      STEP 1완료 시점에서는 어떤 문제점이 있을까요?
    • STEP 2.
      라이브러리 의존성 관리 방식 적용
    • GAEJ 툴: Apache Ant
      http://code.google.com/intl/ko/appengine/docs/java/tools/ant.html
      No-Dependency Management
    • GAEJ 툴: Apache Maven Plugin
      이클립스Google Project와 통합성이 떨어짐
    • 빌드 시스템의 추세
      IVY는 Apache Ant의 서브 프로젝트
      Maven Repository 기반의 의존성 관리 방식을 Ant에 적용
      자유도 강점
      표준화 강점
      ANT+IVY
      Maven
      ANT
      의존성 관리 표준화
    • Google Project의 의존성 관리
      Spring3.0.5
      Jersey 1.6
      SLF4J
      의존성 추가
    • 의존성 관리 필요성
    • GAE Project의 의존성 관리
      IVY를이용한 라이브러리 의존성 관리 방식 적용
      IVY 설정을 이용하여 Ant Task로 Install-Dependency 구동
    • IVY 설정: ivysettings.xml
      <?xml version="1.0" encoding="ISO-8859-1"?>
      <ivysettings>
      <settings defaultResolver="javanet.jboss.ibiblio" overwriteMode="true" />
      <resolvers>
      <chain name="javanet.jboss.ibiblio">
      <ibiblio name="java-net-maven2"
      root="http://download.java.net/maven/2/"
      m2compatible="true" />
      <ibiblio name="jboss-maven2"
      root="http://repository.jboss.org/maven2/"
      m2compatible="true" />
      <ibiblio name="ibiblio" m2compatible="true" />
      </chain>
      </resolvers>
      </ivysettings>
    • IVY 설정: ivy.xml (I)
      <?xml version="1.0" encoding="UTF-8"?>
      <ivy-module version="1.4">
      <info organisation="devmentor.gae"
      module="session2" status="integration" >
      </info>
      <configurations>
      <conf name="runtime"/>
      <conf name="compile"/>
      <conf name="test"/>
      </configurations>
      <dependencies>
      <dependency org="com.sun.jersey" name="jersey-server"
      rev="1.6-ea02" conf="compile->default"/>
      <dependency org="com.sun.jersey.contribs" name="jersey-spring"
      rev="1.6-ea02" conf="compile->default" />
      <dependency org="com.sun.jersey" name="jersey-json"
      rev="1.6-ea02" conf="compile->default" />
    • IVY 설정: ivy.xml (II)
      <dependency org="org.slf4j" name="slf4j-api"
      rev="1.6.1" conf="compile->default" />
      <dependency org="org.slf4j" name="jcl-over-slf4j"
      rev="1.6.1" conf="runtime->default" />
      <dependency org="org.slf4j" name="slf4j-log4j12"
      rev="1.6.1" conf="runtime->default" />
      <dependency org="log4j" name="log4j"
      rev="1.2.16" conf="runtime->default" />
      <dependency org="org.springframework" name="spring-context"
      rev="3.0.5.RELEASE" conf="compile->default" >
      <exclude org="commons-logging" />
      </dependency>
      <dependency org="org.springframework" name="spring-web"
      rev="3.0.5.RELEASE" conf="runtime->default" />
      <dependency org="junit" name="junit"
      rev="4.8.1" conf="test->default" />
      <dependency org="org.springframework" name="spring-test"
      rev="3.0.5.RELEASE" conf="test->default" />
      </dependencies>
      </ivy-module>
    • Ant Build Task : Dependency 구성
      <property name="project.target" value="${basedir}/target" />
      <target name="install-dependency" depends="install-ivy">
      <ivy:retrieve
      pattern="${project.target}/[conf]-libs/[artifact]-[revision].[ext]" /
      </target>
    • Ant Build Task : Dependency 구성
      Web Application 배포를 위한 라이브러리 설정
      Deploy-prepare: compile & runtime 라이브러리를 war/WEB-INF/lib에
    • Q&A