Hybrid Appand GAE RESTful Architecture<br />대표이사 장선진<br />@jangsunjin<br /><ul><li>Mobile Phone: (+82) 010-4585-1770
 E-Mail: jangsunjin@softwareinlife.com</li></li></ul><li>Network Traffic<br />Exabytes per Month of Mobile Data Traffic <b...
The Network Effect<br />Metcalfe's law: Network value rises by the square of the number of terminals.<br />Robert Metcalfe...
Google App Engine Architecture<br />GAE SDK<br />IDE<br />         Your GAE Application<br />Python / Java Framework<br />...
Google File System<br />GFS is optimized for Google's core data storage and usage needs (primarily the search engine), whi...
     File A<br />     (80M)<br />Google File System Architecture<br />Chunk Data #1<br />(64M)<br />Chunk Data #2<br />(16...
Google App Engine의 실행환경<br />Java 기반의 실행 환경<br />Python기반의 실행 환경<br />Release: 2008.04<br />GAE SDK 1.5.1<br />Python 2.5....
GAE SDK 1.5.1
JDK 1.6
EJB와 같은 JavaEE관련 기술을 모두 지원하지 않음.
Thread 생성을 지원하지 않음.
Servlet(JSP)
Google Web Toolkit(GWT)</li></li></ul><li><ul><li>Java SDK
http://java.sun.com/javase/downloads/index.jsp
Google Web Toolkit
http://code.google.com/intl/ko-KR/webtoolkit/
Eclipse IDE
http://www.eclipse.org/downloads/
Google Plugin for Eclipse, for Eclipse 3.6 (Helios)
Upcoming SlideShare
Loading in …5
×

S02 hybrid app_and_gae_restful_architecture_v2.0

6,048 views

Published on

GFS and GAE Architecture, RESTful Architecture

Published in: Technology, Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
6,048
On SlideShare
0
From Embeds
0
Number of Embeds
4,254
Actions
Shares
0
Downloads
35
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

S02 hybrid app_and_gae_restful_architecture_v2.0

  1. 1. Hybrid Appand GAE RESTful Architecture<br />대표이사 장선진<br />@jangsunjin<br /><ul><li>Mobile Phone: (+82) 010-4585-1770
  2. 2. E-Mail: jangsunjin@softwareinlife.com</li></li></ul><li>Network Traffic<br />Exabytes per Month of Mobile Data Traffic <br />by 2015<br />High-End Devices Can Multiply Traffic<br />1 EB = 1,000,000,000,000,000,000 B = 1018 bytes = 1 billion gigabytes = 1 million terabytes<br />
  3. 3. The Network Effect<br />Metcalfe's law: Network value rises by the square of the number of terminals.<br />Robert Metcalfe<br />Metcalfe's law characterizes many of the network effects of communication technologies and networks such as the Internet, social networking, and the World Wide Web.<br />http://en.wikipedia.org/wiki/Robert_Metcalfe<br />http://en.wikipedia.org/wiki/Metcalfe's_law<br />
  4. 4. Google App Engine Architecture<br />GAE SDK<br />IDE<br /> Your GAE Application<br />Python / Java Framework<br />Admin<br />Console<br />Blobstore<br />Capabilities<br />Channel<br />URL Fetch<br />Images<br />Mail<br />Memcache<br />Users<br />Multitenancy<br />OAuth<br />Task Queues<br />XMPP<br />Google App Engine Runtime (Python, Java, GO)<br />Google App Engine DataStore<br />BigTable<br />Google File System<br />Google Server Cluster<br />
  5. 5. Google File System<br />GFS is optimized for Google's core data storage and usage needs (primarily the search engine), which can generate enormous amounts of data that needs to be retained;<br />Google File System grew out of an earlier Google effort, "BigFiles", developed by Larry Page and Sergey Brin in the early days of Google, while it was still located in Stanford.<br />Files are divided into chunks of 64 megabytes, which are only extremely rarely overwritten, or shrunk; files are usually appended to or read. It is also designed and optimized to run on Google's computing clusters, dense nodes which consist of cheap, "commodity" computers, which means precautions must be taken against the high failure rate of individual nodes and the subsequent data loss. Other design decisions select for high data throughputs, even when it comes at the cost of latency.<br />http://labs.google.com/papers/gfs.html<br />
  6. 6. File A<br /> (80M)<br />Google File System Architecture<br />Chunk Data #1<br />(64M)<br />Chunk Data #2<br />(16M)<br />
  7. 7. Google App Engine의 실행환경<br />Java 기반의 실행 환경<br />Python기반의 실행 환경<br />Release: 2008.04<br />GAE SDK 1.5.1<br />Python 2.5.2<br />C 기반의 확장을 지원하지 않음.<br />Django<br />Webapp라는 간단한 웹 프레임웍 지원<br /><ul><li>Release: 2009.08
  8. 8. GAE SDK 1.5.1
  9. 9. JDK 1.6
  10. 10. EJB와 같은 JavaEE관련 기술을 모두 지원하지 않음.
  11. 11. Thread 생성을 지원하지 않음.
  12. 12. Servlet(JSP)
  13. 13. Google Web Toolkit(GWT)</li></li></ul><li><ul><li>Java SDK
  14. 14. http://java.sun.com/javase/downloads/index.jsp
  15. 15. Google Web Toolkit
  16. 16. http://code.google.com/intl/ko-KR/webtoolkit/
  17. 17. Eclipse IDE
  18. 18. http://www.eclipse.org/downloads/
  19. 19. Google Plugin for Eclipse, for Eclipse 3.6 (Helios)
  20. 20. http://dl.google.com/eclipse/plugin/3.6</li></ul>GAE for Java 개발 환경<br />
  21. 21. Java Data Objects (JDO)<br />Java Persistence API (JPA)<br />Java Server Faces (JSF) 1.1 - 2.0 **<br />Java Server Pages (JSP) + JSTL ***<br />Java Servlet API 2.4<br />JavaBeans™ Activation Framework (JAF)<br />Java Architecture for XML Binding (JAXB)<br />JavaMail<br />GAE for Java 지원 기술 사항<br /><ul><li>XML processing APIs including DOM, SAX, and XSLT
  22. 22. HTTP Session support (need to enable explicitly)
  23. 23. JRuby (Ruby)
  24. 24. Jython (Python)
  25. 25. Quercus (PHP)
  26. 26. Rhino (JavaScript)
  27. 27. Spring Framework</li></ul>**: JSF 1.2 and JSF 2.0 should also work if you set the com.sun.faces.enableMultiThreadedStartup context parameter to false to your web.xml file.<br />*** JSP session beans are not supported; to enable EL parsing, add <%@page isElIgnored="false" %> to your JSP.<br />http://groups.google.com/group/google-appengine-java/web/will-it-play-in-app-engine <br />
  28. 28. Enterprise Java Beans (EJB)<br />JAX-RPC<br />JAX-WS<br />Java Database Connectivity (JDBC) **<br />Java EE™ Connector Architecture (JCA)<br />Java Management Extensions (JMX)<br />Java Message Service (JMS)<br />Java Naming and Directory Interface (JNDI)<br />GAE for Java미지원 기술 사항<br /><ul><li>Remote Method Invocation (RMI)
  29. 29. Apache POI
  30. 30. ICEFaces
  31. 31. Hibernate</li></ul>보안 ‘sandbox’ 환경에서 구동<br />- 쓰레드를 독자적으로 실행할 수 없음<br />- 로컬 파일 시스템에 접근할 수 없음<br />- Socket 오픈 할 수 없음<br />http://groups.google.com/group/google-appengine-java/web/will-it-play-in-app-engine <br />
  32. 32. JSR을 중심으로 다음과 같은 표준 기술을 지원한다.<br />GAE for Java의 기술 표준<br />
  33. 33. RESTful Architecture<br />Representational State Transfer (REST) is a style of software architecture for distributed hypermedia systems such as the World Wide Web. The term Representational State Transfer was introduced and defined in 2000 by Roy Fielding in his doctoral dissertation.<br />
  34. 34. RESTful Architecture Constraints<br />Client–server<br />Clients are separated from servers by a uniform interface.<br />Stateless<br />The client–server communication is further constrained by no client context being stored on the server between requests. Each request from any client contains all of the information necessary to service the request, and any session state is held in the client.<br />Cacheable<br />As on the World Wide Web, clients are able to cache responses.<br />Layered system<br />A client cannot ordinarily tell whether it is connected directly to the end server, or to an intermediary along the way. <br />Code on demand (optional)<br />Servers are able to temporarily extend or customize the functionality of a client by transferring logic to it that it can execute.<br />Uniform interface<br />The uniform interface between clients and servers, discussed below, simplifies and decouples the architecture, which enables each part to evolve independently.<br />
  35. 35. RESTful Web Service<br />ITEM 0001<br />POST /item/0001<br />GET /item/0001<br />PUT /item/0001/01<br />DELETE /item/0001/<br />
  36. 36. RESTful Web Service Design<br />Data<br />Store<br />(BigTable)<br />Jersey<br />Or<br />Spring REST<br />Spring<br />Component<br />(Bean)<br />JDO<br />(PMF)<br />
  37. 37. Demo<br />
  38. 38. XML Binding<br />XML<br />Simple Framework<br />Simple is a high performance XML serialization and configuration framework for Java<br />Its goal is to provide an XML framework that enables rapid development of XML configuration and communication systems.<br /><ul><li>Jersey
  39. 39. Jersey is the open source, production quality, JAX-RS (JSR 311) Reference Implementation for building RESTful Web services.
  40. 40. But, it is also more than the Reference Implementation. Jersey provides an API so that developers may extend Jersey to suit their needs.</li></ul>http://jersey.java.net/<br />http://simple.sourceforge.net/<br />
  41. 41. Thanks!<br /><ul><li>모리스와퍼거슨(C. R. Morris and C. H. Ferguson, 1993)은 과거 컴퓨터 산업의 경쟁에서 유수한 업체들의 성공과 몰락의 원인분석을 바탕으로 앞으로 다양한 산업경쟁에서 기업들이 어떠한 전략으로 기업을 운영해야하는지 제시하였습니다.
  42. 42. 여기서 이들은 개방형시스템(Open System)의 독점적 아키텍처(Proprietary Architecture)가 경쟁에서 승리하는데 가장 중요한 요소라고 이야기 하였습니다. </li></ul>Service<br />Service<br />SaaS<br />Service<br />독점적인 서비스 아키텍처<br />Proprietary Service Architecture<br />Scalability<br />New<br />Service<br />Service<br />서비스 기반의 개방형 시스템<br />Service Based Open System<br />Service<br />Service<br />Service<br />Service<br />Service<br />Service<br />Service<br />Service<br />Configurable<br />Multi-tenant efficient<br />Jang, Sun-Jin (jangsunjin@softwareinlife.com)<br />
  43. 43. 감사합니다.<br />http://code.google.com/p/devmento-gae-seminar<br />

×