N02 app engineseminar

1,066 views
957 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,066
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
8
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

N02 app engineseminar

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

×