Building Your Own SaaS with Google App Engine

Software architects interested in building Software-as-a-Service (SaaS) have a wide variety of deployment options at their disposal, with multiple vendors providing services that cater to their individual needs and requirements. Google App Engine (GAE) is one of the more popular platforms in this arena, providing robust and scalable services inherent with its namesake. With GAE, developers can build a SaaS with the language of their choice while reaping the benefits of cloud computing in hosting their application: infinite and automatic horizontal scalability, metered usage and on-demand deployment of services.

PaaS versus IaaS: Google App Engine and Amazon Web Services

In cloud-computing, GAE is considered a Platform-as-a-Service (PaaS)--a model of computing that offers an environment for building and running custom applications to developers. The management and configuration of underlying hardware and software infrastructure is left to the service provider, allowing developers to focus on what they do best -- building software. In contrast to Amazon Web Services (AWS), an Infrastructure-as-a-Service (IaaS) provider, GAE does not provide access to low-level software, hardware and network devices and services. While both offer on-demand, pay-as-you-go computing, AWS offers deeper granular access and control of the underlying infrastructure. With GAE, virtual servers cannot be directly deployed and leased on demand, nor can developers configure and deploy their data center in the cloud, as with AWS.

That being said, infrastructure abstraction is usually a boon for software architects. Consider the plight of developers looking to build and host a PHP/MySQL-based SaaS with Amazon AWS; they would need to set up the physical Linux server, install the necessary software components (including the Apache, PHP and MySQL database), configure/manage security and set up the necessary auto-scaling and load balancing mechanisms. Granted, as of late, AWS has made these tasks easier with preconfigured options and templates, but developers still need some prerequisite systems administration knowledge to implement a SaaS development environment -- all of this before writing a single line of code. GAE gives developers the environment and tools to build their software while shielding them from the complexities of systems administration.

Google App Engine Features and Benefits

GAE supports Java, Python, PHP and Go, as well as the associated development frameworks for these languages -- namely, Spring, Struts and Django, among others. Traditional databases such as MySQL are supported, as well as next-generation NoSQL datastores and big data distributions such as MongoDB and Hadoop, respectively. Developers have at their disposal a wide variety of IDEs compatible with GAE, including NetBeans, Eclipse and Komodo.

Management takes place within GAE's admin console, the primary web interface through which developers access their application. Through the admin console, developers can perform basic configuration, create/disable/delete applications, view usage and performance statistics, and other maintenance tasks. A particular functionality of the admin console worth mentioning is the ability to set performance options. This essentially allows app optimization based on the developers' preference -- for example, tuning down the servers to an optimal pricing range to alleviate costs. Conversely, one may opt to configure their application for the highest availability and best response time possible. GAE's admin console allows these and many other configuration options.

Google promises 99.95% uptime in its SLA -- which translates to an average of less than five minutes of downtime per month. The performance and status of GAE services can be monitored publicly on GAE's system status page. If it is unable to meet the SLA, Google offers customers a certain amount of free service days per billing cycle.

Google App Engine Pricing

GAE applications are priced based on the computing resources they consume. Each account can host 25 free applications and an unlimited number of paid applications. Generally speaking, there is no cost to host applications until the resources within their free quotas are depleted. For example, each application is automatically allotted 5 GB of free storage (called a Google Cloud Storage bucket). According to Google, the free quota configurations for each application translate to roughly 5 million monthly page views for an efficiently run application. For over-quota and paid-for services, developers can view an updated GAE resource billing rate on the GAE pricing page.

Vendor Lock-In and Application Posterity

A major challenge for the cloud computing industry is the lack of standards and subsequent vendor lock-in. Because deploying with one provider means necessarily adopting their specific tools, protocols and operating environments, migrating off their platforms to another provider can prove daunting and expensive–in many cases, prohibitively so. GAE is no exception to this, as building an application in Google's PaaS involves writing software code customized to the nuances and specifics of the environment.

As cloud computing matures, however, industry standards will inevitably come about. With such huge market dominance and presence, Google will no doubt play a large role in whatever standards do form. So in this sense, GAE is a safer bet for PaaS customers than other platforms. In the interim, solutions such as AppScale offer open-source frameworks for building GAE applications that enable application portability, in case there is a need to migrate from Google's PaaS.

In short, GAE is an inviting PaaS for developers wishing to build their own cloud software in a robust and scalable environment. The platform offers an attractive complementary tier with a significant free usage quota and a competitive pricing model thereafter. Software architects using GAE to build and deploy applications can rest assured knowing that their SaaS is powered by the world's largest Internet company.