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

N02 app engineseminar

on

  • 1,038 views

 

Statistics

Views

Total Views
1,038
Views on SlideShare
1,038
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