Google App Engine Mandeep Singh (37926) Victorian Institute of Technology Introduction Datastore Types Two different data store types are 1. High Replication Datastore(HDR) – it is replicated across multiple data center. It has highest level of availability. It has higher latency on writes. Query data is eventually consistent. 2. Master/Slave – in this data storage one data centers holds master copy of the data. Data in the master is asynchronously copied to slaves. Periods of unavailability. Low latency. Highest level of consistency. Google App Engine is Google’s platform to build web applications on the cloud. It is a Platform as a Service (PaaS) product. It is a dynamic web server with full support to common web. It is designed to host applications with many simultaneous users. Unlike traditional web hosting or self-managed servers, with Google App Engine, you only pay for the resources you use. These resources are measured down to gigabyte. App Engine can be described as three parts: application instances, scalable data storage and scalable services. Google App Engine provides more infrastructure than other scalable hosting services such as Amazon Elastic Compute Cloud (EC2). The App Engine also eliminates some system administration and developmental tasks to make it easier to write scalable applications. To build an App engine application, you write code for one or more request handlers, and describe to App Engine which request go to which handlers, using configuration. The life of a request handler begins when a single request handler begins when a single request arrives, and ends when the handler has done the necessary work and calculated the response The Java Persistence API The App Engine Java SDK includes implementations of two data access interface standards: the Java Persistence API (JPA) and Java Data Objects (JDO) The JDO and JPA standards are similar, and share similar roots. The concepts that apply to the App Engine data store have similar interfaces in both standards but with different terminology and minor behavioral differences. Which one you choose may depend on how familiar you are with it, or how well it is implemented for your most likely porting target, if you have one in mind. billing and metering metrics and services Each Google App Engine application has a limited free quota, which can be used during development and to serve low-usage applications. As your resource usage grows, you only pay for what you use, eliminating the inefficiency of over-provisioning to prevent down time. Premier Accounts are also available for customers interested in operational support and high-volume pricing. Service level agreement (SLA) -Google App Engine offers an SLA of 99.95 percent availability within a monthly billing cycle for paid applications using the high replication data store. Frameworks that Google App Engine Support Java App Engine's Java runtime works with many popular Java frameworks including Struts 2 and Spring MVC. App Engine also supports several popular JVM-compatible languages such as JRuby and Scala. Python App Engine can run most Python web frameworks out-of-the box with few or no modifications. Go The Go runtime for App Engine includes almost all of the standard library, including the net/http package, which is sufficient for writing complete web apps. Many third-party libraries also work on App Engine without any modification. Entities and Keys In JPA, you define data classes as plain old Java objects (POJOs). You use annotations to tell JPA which classes to persist to the data store, and how to store its members. Defining your data exclusively in terms of the Java classes your application uses makes it easy to manipulate your persistent data. It also makes it easy to test your application, since you can create mock data objects directly from the classes. JPA also lets you use an XML file instead of annotations to describe Prepare App Engine service as Microservices In App Engine project, you can deploy multiple microservices as separate services, previously known as modules in app engine. These services have full isolation of code in these services. the only way to execute code in these services is through an HTTP invocation, such as a user request or a Restful API call. Code in one service can't directly call code in another service. Code can be deployed to services independently, and different services can be written in different languages, such as Python, Java, Go, and PHP. Auto scaling, load balancing, and machine instance types are all managed independently for services Applications created with App Engine are intended to meet the requests from the clients by means of the web. In particular, a client utilizes the application by playing out a HTTP ask for, more often than not through a program. A heap balancer guides the demand to a specific server frontend, which recognizes the asset of enthusiasm by ID, space and any sub area determined in the URL. For every application a free sub-space like appspot.com is allocated. Micro services Architecture on Google App Engine Micro services refers to an engineering style for creating applications. It enables a large application to decay into free resulting parts, with each part having its own domain of duty. Properly actualized microservices based application can accomplish following objectives:- Define solid contact between different micro services. Improve general application versatility and unwavering quality Allow for free deployment cycles, including rollback. Minimize test automation and quality confirmation overhead. Improve clearness of logging and observing. References:- http://www.reedbushey.com/91Programming%20Google%20app%20Engine%202nd%20Edition.pdf http://www-personal.umich.edu/~csev/books/gae/lectures/01-AppEngine-Intro.pdf https://www.slideshare.net/dimityrdanailov/google-app-engine-varna-lab-19062013