Google App Engine

Google App Engine Seminar report
Google App Engine is a platform where web applications can be developed and hosted in Google managed Cloud Computing data centers.It enables us to run web applications on Google's infrastructure.These applications are easy to build,maintain and helps in scaling whenever data storage tends to grow. There is no specific application to be maintained by the servers but the uploaded application is ready to serve for the users.Applications can be shared with the world or limit its access to members of a particular organization. App engine allocate and control resources to the web application with respect to the demand of resources in an automatic way.No set up costs and no recurring fees but resources used such as bandwidth and storage used are measured in gigabyte and are billed when the usage exceed above free levels.Google developed its initial release on April 7,2008 and published a stable release recently on 13 February 2013.One user can serve their app either from their own domain name through Google apps or using a free name on appspot.com. In comparison with Amazon EC2,App engine provide more infrastructure for scalable applications. But it allows to run a limited range of applications in that infrastructure.App Engine's infrastructure removes many of the system administration and development challenges of building applications to scale to hundreds of requests per second.When required ,Google can handle code deploying cluster, monitoring, fail over, and launching application instances.Web applications using a relational database will not run on App Engine without modification.

Using Google app engine,reliable applications can be developed even under heavy load and with large amounts of data.App engine includes various features:dynamic web serving with full support for common web technologies,persistent storage with queries, sorting and transactions,automatic scaling and load balancing APIs for authenticating users and sending email using Google Accounts,a fully featured local development environment that simulates Google App Engine on computer, task queues for performing work outside of the scope of a web request, scheduled tasks for triggering events at specified times and regular intervals.

Basically app engine serve as a sandbox. The sandbox isolates application in its own secure, reliable environment that is independent of the hardware, limited access to operating system and physical location of the web server.These limitations allow App Engine to distribute web requests for the application across multiple servers, and start and stop servers to meet traffic demands. Examples of the limitations of the secure sandbox environment include:An application can only access other computers on the Internet through the provided URL fetch and email services. Other computers can only connect to the application by making HTTP or HTTPS requests on the standard ports. ; Applications cannot write to the file system in any of the run time environments. An application can read files, but only files uploaded with the application code. The app must use the App Engine data store, memcache or other services for all data that persists between requests. The Python 2.7 environment allows byte code to be read, written, and modified. ; Application code only runs in response to a web request, a queued task, or a scheduled task, and must return response data within 60 seconds in any case. A request handler cannot spawn a sub-process or execute code after the response has been sent.

Google app engine support applications written in different programming languages. Three run time environment used popularly:go environment,java run time environment and python run time environment.Each environment provides standard protocols and common technologies for web application development.

With Go run time environment a convenient way for deploying web applications in go programming language can be done.This run time runs with the latest version of Go 1 and the SDK used includes the Go compiler and standard library with no additional dependencies.For example, attempts to open a socket or write to a file will return an OS. EINVAL error.The SDK includes an automated build service to compile app that will never need to invoke the compiler itself.The Go environment provides idiomatic Go APIs for most of the App Engine services. The third-party libraries can be uploaded along with the application, as long as they are implemented in pure Go.

With java run time one can build applications using java technologies including JVM, Java servlets and java programming language or any language using JVM based interpreter or compiler such as javascript or ruby. Not all standard library's functionality is available inside the sandbox as in go run time. The App Engine Java SDK supports developing apps using either Java 5 or 6.The Java run time environment uses Java 6. The environment includes the Java SE runtime Environment (JRE) 6 platform and libraries. The restrictions of the sandbox environment are implemented in the JVM. An app can use any JVM bytecode or library feature, as long as it does not exceed the sandbox restrictions. For instance, bytecode that attempts to open a socket or write to a file will throw a runtime exception.For the App Engine datastore, the Java SDK includes implementations of the Java Data Objects (JDO) and Java Persistence API (JPA) interfaces. App can use the JavaMail API to send email messages with the App Engine Mail service. The java.net HTTP APIs access the App Engine URL fetch service. App Engine also includes low-level APIs for its services to implement additional adapters, or to use directly from the application.

With python runtime,python interpreter and python library can be build.Same as java runtime, here also not all standard library's functionality is available inside the sandbox as in go runtime. For example,a call to a method that attempts to open a socket or write to a file will raise an exception.With the Python SDK app will be automatically re-built whenever a change in the source occured. App Engine includes rich APIs and tools for Python web application development, including a feature rich data modeling API, an easy-to-use web application framework, and tools for managing and accessing app's data. The primary Python runtime environment uses Python version 2.7.3 and Python 2.5.2 runtime. Application code written for the Python environment must be written exclusively in Python. Extensions written in the C language are not supported.The Python environment provides rich Python APIs for the datastore, Google Accounts, URL fetch, and email services. App Engine also provides a simple Python web application framework called webapp2 to make it easy to start building applications.Also one can upload other third-party libraries within the existing application, as long as they are implemented in pure Python and do not require any unsupported standard library modules.

The App Engine environment provides options for data storage: App Engine Datastore provides a NoSQL schemeless object datastore, with a query engine and atomic transactions ; Google Cloud SQL provides a relational SQL database service for your App Engine application, based on the familiar MySQL RDBMS ; Google Cloud Storage provides a storage service for objects and files up to terabytes in size, accessible from Python and Java applications.

App Engine provides a distributed NoSQL data storage service that features a query engine and transactions that grows with increase in data growth. The App Engine datastore is not like a traditional relational database. Data objects, or "entities," have a kind and a set of properties. Queries can retrieve entities of a given kind filtered and sorted by the values of the properties. Property values can be of any of the supported property value types. Datastore entities are schemeless. The structure of data entities is provided by and enforced by the application code. The Java JDO/JPA interfaces and the Python datastore interface include features for applying and enforcing structure within the app.The datastore provides ACID transactions using optimistic concurrency control. An update of an entity occurs in a transaction that is retried a fixed number of times if other processes are trying to update the same entity simultaneously. Also one application can execute multiple datastore operations in a single transaction which either all succeed or all fail, ensuring the data integrity. The datastore implements transactions across its distributed network using "entity groups." A transaction manipulates entities within a single group. Entities of the same group are stored together for efficient execution of transactions. The application can be used to assign entities to groups when they are created.

Google Cloud SQL means a zero maintenance SQL database that supports JDBC and DB-API. This service allows to create, configure, and use relational databases with App Engine applications. The database engine is MySql Version 5.1.59 and the database size must not be larger than 10GB.

Google Cloud Storage API enables developers to store their application data in the Google Cloud and they are responsible for the application consume storage .These services allow programmatic functionality access.The storage is intended to be accessed primarily through its API and provides all the functionality necessary for developers to use it as a backing store for their own applications. For example, a developer could store and host media and other static assets for a web game in Google Cloud Storage. Google Cloud Storage can also be used for online archives, backup replacement, and so on.

App Engine supports integrating an app with Google Accounts for user authentication. It is free and easy to create
an app engine application. Create an account and publish application for usage free up to 1 GB of storage.According to developers needs budget for resource can be set.Also register up to 10 applications per developer account. The Administration Console is the web-based interface for managing applications running on App Engine. Use it to create new applications, configure domain names, change which version of application, examine access and error logs, and browse an application's datastore.It also saves the effort of implementing a user account system just for the application.

References:
Cloud Computing
https://developers.google.com/appengine/docs/whatisgoogleappengine
http://en.wikipedia.org/wiki/Google_App_Engine
http://www.collegelib.com/t-cloud-computing-seminar-preparation.html
http://www-numi.fnal.gov/computing/minossoft/releases/R2.3/WebDocs/Errors/unix_system_errors.html
List of new technologies in computer science engineering for seminar:
Latest CSE Seminar Topics
CSE Seminar Topics with Abstracts Part 2
CSE Seminar Topics with Abstracts Part 3
2019:100 Seminar topic suggestions for CSE [August 2019]
2019:Latest Technology topic list for CSE
2019:CSE Seminar topics 2019, Collection of latest top 100 latest Computer technologies [July 2019]
2019:100 Seminar topics for Computer Science (Selected latest topic list 2019)
2019:Seminar Topics CSE. Latest technology topics for Computer Science 2019
2019:Technical Seminar topics ideas 2019 (Computer Science and Engineering)
2019:Trending Computer Science Seminar topics List 2019 (CSE Topics)
2019:Upcoming Computer Science Seminar topics List 2019
2019: Seminar topics updated list For 2019
2019: Computer Seminar Topics Comupter Science 2019
2018: Seminar Topics Comupter Science 2018
2018: Latest Seminar topics for Computer Science Engineering(CSE 2018)
2015: Computer Science Engineering Latest 2015 (CSE NEW Topics)
2014: Computer Science Seminar Topics (CSE Latest Technical Topics)
2014: Latest CSE/IT Technologies
2013(a), 2013(b), 2012, 2011(a), 2011(b), 2010
Data Mining, Data Analytics, Big data, Predictive Analytics
Google Project Topics
2000+ Topics for Computer Engineering Projects