• Disturb Everyone
– Not by phone rings
– Not by local talks
– By more information
Let’s Know Each Other
Do you code?
Why are you attending?
• Founding Team Member of
– ShopSocially (Enabling “social” for retailers)
– AirTight Neworks (Global leader of WIPS)
• 15+ years in IT industry
– Currently Principal Architect at ShopSocially
– Mostly worked with Startups
• From Conceptualization to Stabilization
• At different functions i.e. development, testing, release
• With multiple technologies
What shall we learn
• Why GAE (Google App Engine)?
• General advantages of
– IaaS (Infrastructure as a Service)
– PaaS (Platform as a Service)
• Using GAE SDK
– Available Services from Google
• Filling the Gap
– Including third party libraries
– Creating MVC structure
• Available boilerplate code for quick start
• Application PaaS maintained by Google
– Same platform that powers Google Applications
• Familiar technologies
– Python, PHP, Java, Go
• Readymade additional services
– Storage, Email, Chat, Task queue etc.
• No (or very low) initial cost
– Free quotas
• Move your local/data center servers to cloud
– Don’t worry about hardware
– Scale up/down as needed
• Simplified logistics for IT admins
• Pay only for used infrastructure
• Custom hardware is not available
• Move your application environment on cloud
– Focus only on your application
– Don’t worry for upgrades
– Easy to scale
– Easy to administer
• Get all benefits of IaaS
• Control in developers’ hand
• No control over machines
– No access to file system
– No ssh
• No native software installation
– Use only the provided software
– Upgrade with the provider
• Limitation on usage of network stack
– No sniffing of traffic
– Limited use of ports
Gearing up for Bigger App
Creating the basic Structure
Webapp2, Django, Ssl, PIL, Pycrypto,
Setuptools, Webob, Yaml, MySQLdb
Endpoints: Libraries for building APIs in an App Engine application.
Jinja2: A modern and designer friendly templating language for Python.
Lxml: A Pythonic binding for the C libraries libxml2 and libxslt.
Markupsafe: A XML/HTML/XHTML markup safe string for Python.
Matplotlib: A 2D plotting library which produces publication-quality figures.
Numpy: A general-purpose library for array-processing.
Protorpc: A framework for implementing HTTP-based remote procedure call (RPC)
PyAMF: A library that provides (AMF) Action Message Format functionality.
– A schemaless object datastore providing robust, scalable storage
for your web application, a rich data modeling API, and a SQLlike query language called GQL.
– Allows your application to serve large data objects, such as
video or image files, that are too large for storage in the
– A distributed, in-memory data cache that can be used to greatly
improve application performance.
– Provides programmatic access to application and request logs
from within your application.
– Creates a persistent connection between your application and
in real time without "polling."
– Sends email messages on behalf of administrators and users
with Google Accounts, and receives mail at various addresses.
• URL Fetch
– Uses Google's networking infrastructure to efficiently issue
HTTP and HTTPS requests to URLs on the web.
– Enables an application to send and receive chat messages to
and from any XMPP-compatible chat messaging service.
• Task Queue
– Allows applications to perform work outside of a
user request, and organize that work into small,
discrete units, called "tasks," to be executed later.
• Scheduled Tasks
– Allows applications to configure regularly
scheduled tasks that operate at defined times or
– Instances of your application that are exempt from
request deadlines and have access to more
memory and CPU resources.
– Manipulates, combines, and enhances images,
converts images between formats, and queries
image metadata such as height and frequency of
App configuration and management
Makes it easy to compartmentalize your data to serve many client organizations from a single instance of
Lets external applications transparently access App Engine services. For example, you can use Remote API to
access a production datastore from an app running on your local machine.
Allows applications to be served via both HTTPS and HTTP via a custom domain instead of an appspot.com
Provides detection of outages and scheduled maintenance for specific APIs and services, so that your
application may bypass them or inform your users.
SSL for Custom Domains
Gives code access to the application identity; provides framework to assert this identity over OAuth.
Allows you to roll out features for your app slowly over a period of time, and do A/B Testing. Traffic Splitting
works by splitting incoming requests to different versions of your app.
Allows applications to sign in users with Google Accounts or OpenID, and address these users with unique
• SendGrid (Email)
– Use SendGrid's library to send emails from your
app and you can see statistics on opens, clicks,
unsubscribes, spam reports and more.
• Twilio (SMS/Voice)
– Enables your application to make and receive
phone calls, send and receive text messages, and
make VoIP calls from any phone, tablet, or
• Google Cloud Endpoints
– Enables automatic generation of APIs, making it easier to create a web
backend for web clients and mobile clients such as Android or Apple's iOS.
• Google Cloud SQL
– A fully-managed web service that allows you to create, configure, and use
relational databases that live in Google's cloud.
• Google Cloud Storage Client Library
– Lets your application read files from and write files to buckets in Google Cloud
Storage, with with internal error handling and retry logic.
– Lets developers factor large applications into logical components that can
share stateful services and communicate in a secure fashion.
– Enables support for outbound sockets using the language-specific, built-in
– An optimized adaptation of the MapReduce computing model for efficient distributed
computing over large data sets.
– Using Google Accounts and the OAuth API, any App Engine application can be an OAuth
– An open technology used for authenticating users across various web services.
– A family of tools that automatically optimizes the performance of your application.
Task Queue REST API
– Enables the use of an App Engine task queue over REST.
Task Queue Tagging
– Leases up to a specified number of tasks with the same tag from the queue for a
specified period of time.
– Allows your application to perform Google-like
searches over structured data such as: plain text,
HTML, atom, numbers, dates, and geographic
• Prospective Search
– A querying service that allows your application to
match search queries against real-time data
Filling the Gap
• Including other libraries
– Place them within your app
– Only pure Python libs can be used
• Creating MVC structure
– Create your own directory structure
– Adjust path for supporting it
Available Code on GitHub
• Implementation of login system
• Just the MVC structure
• GAE is good readymade platform
– For trying out things
– For your side project
• Many services are readily available
• Starts with no (or very low) upfront cost
• Think thrice before you start big business on