Posted by Wesley Chun, Google Developer Relations team






  • Cloud based editing and deployment of your App Engine projects

  • Autocomplete for Python code, including built-in App Engine libraries

  • OAuth deployment, so DevTable never has access to your Google Credentials

  • Native App Engine deployment for production releases

  • Git DVCS integration, including GitHub support

  • Mimic deploy, for faster intermediate testing feedback



Today’s post comes from Jake Moshenko, founder of DevTable. DevTable is a collaborative hosted IDE which aims to provide a single development environment that can be accessed online from any device or location. It also allows you to collaborate on projects in real-time with your teammates. DevTable supports development and deployment of Google App Engine projects in the cloud.

At DevTable, we support development of Google App Engine apps with Python directly on the cloud, without having to install and run the App Engine SDK locally.  While the App Engine SDK development experience is excellent, it is not yet supported on mobile or web platforms.

Some of the major reasons to use DevTable for App Engine are:



  • Cloud based editing and deployment of your App Engine projects

  • Autocomplete for Python code, including built-in App Engine libraries

  • OAuth deployment, so DevTable never has access to your Google Credentials

  • Native App Engine deployment for production releases

  • Git DVCS integration, including GitHub support

  • Mimic deploy, for faster intermediate testing feedback



To get started, first log in to your DevTable account and create a new project using our Google App Engine template.  This template loads the basic webapp "hello world" project that you’re probably already familiar with from the App Engine documentation.  Follow the instructions to create a new App Engine app and to authorize DevTable to deploy on your behalf.  Don’t worry, we use OAuth deployment, which means we will never ask you for your Google password.








Now that you have everything set up, press the Run Project button and select View on App Engine Mimic, which will deploy the Mimic bootstrap code to a special version of your app.  This may take up to a few minutes, but each test deploy after this should happen instantaneously.  Once Mimic has been deployed, you will see “Hello, world.” proudly displayed in a new browser tab.  Each time you refresh this page, the newest code is pulled from your DevTable project, so editing and testing code is seamless.  Try it now; change the message in your app’s main .py file, then refresh the tab which is showing your project.






Python autocomplete and documentation in DevTable

Mimic works by creating a proxy which intercepts requests to your app and loads your app code dynamically from the datastore.  DevTable keeps this code in sync with your latest changes.  One added bonus to testing your code using DevTable and Mimic is that your test code will be running in the production App Engine environment, so some APIs and capabilities will work that don’t work on the Development Server, such as the App Identity API and making multiple concurrent requests.






Mimic bootstrap code deployment

Once you are happy with how your app works in Mimic, you may want to deploy your application to production. Click the Deploy button, to deploy your app directly to App Engine, which may take a few minutes.  Once deployment is complete, you can view your app at the production url, which is probably something like .appspot.com.

What can you do with this? You can build and deploy apps completely in the cloud.  You can use DevTable as an emergency backup editor to check out your code from Git, fix a small bug, and push to production, without having access to your development machine, from the beach!  You can use our real-time collaboration support to pair program an App Engine app concurrently across the world.  Our users are constantly surprising us with new ways to use DevTable, and we’re excited to see what you can come up with too!

We encourage you to get started now building apps using DevTable on App Engine.  If you have any questions or suggestions, we are always available at support@devtable.com.  Just send us an email and we’ll get back to you as quickly as we can.









- Posted by Zafir Khan, Product Marketing Manager


One of the most rewarding parts of working on Google App Engine is seeing our developers create groundbreaking new applications on top of our infrastructure.  To help our current and prospective users gain insight into the vast array of these applications, we recently added a section to the Google Cloud Platform site with a collection of case studies.  Whether you’re interested in learning about how businesses are building on our platform or just looking for inspiration for your next project, we hope you find these pieces informative.

Rovio
Creator of the blockbuster “Angry Birds” game series used App Engine when creating web versions of their game.  They were able to create customized versions of their game in just 2 weeks using App Engine, allowing them to capitalize on opportunities to grow their business.

GetAround
TechCrunch Disrupt award-winning car sharing service used App Engine to build a marketplace connecting car owners to people looking to rent cars.  They scaled their product without adding additional staff.

MAG Interactive
Developer of mobile casual games, including the hit game Ruzzle, scaled their backend using App Engine.  They grew to over 5 million users, and experienced “no scalability issues at all.”

Nubbius
The Cloud Gate used App Engine to create nubbius, a software-as-a-service offering for lawyers to manage their workflow from anywhere.  They saved more than $130,000 per year while scaling rapidly.

RedBus
Online travel agency used Google BigQuery to unify tens of thousands of bus schedules into a single booking operation.  They analyzed data sets as large as 2 TB in less than 30 seconds, and spent 80% less than they would have on a Hadoop infrastructure,

This is a sample of the many case studies we have on our site.  Check out cloud.google.com/customers to see the full list.  You can read about companies varying in size, industry, and use cases, who are using Google Cloud Platform to build their products and businesses.




- Posted by Zafir Khan, Product Marketing Manager





  • Bronze: All customers get access to online documentation, community forums, and billing support. (Free)

  • Silver: In addition to Bronze, you can email our support team for questions related to product functionality, best practices, and service errors. ($150/month)

  • Gold: In addition to Silver, you'll receive 24x7 phone support and consultation on application development, best practices or architecture for your specific use case. (Starts at $400/month)

  • Platinum: The most comprehensive and personalized support. In addition to Gold, you’ll get direct access to a Technical Account Manager team. (Contact Sales for more information)



Support is as important as product features when choosing a platform for your applications. And let’s face it, sometimes we all need a bit of help. No matter which Google Cloud Platform services you are using—App Engine, Compute Engine, Cloud Storage, Cloud SQL, BigQuery, etc.—or what time of day, you should be able to get the answers you need. While you can go to Stack Overflow or Google Groups, we realize some of you may need 24x7 coverage, phone support or direct access to a Technical Account Manager team.

To meet your support requirements, we’re introducing a comprehensive collection of support packages for services on Google Cloud Platform, so you can decide what level best fits your needs:



  • Bronze: All customers get access to online documentation, community forums, and billing support. (Free)

  • Silver: In addition to Bronze, you can email our support team for questions related to product functionality, best practices, and service errors. ($150/month)

  • Gold: In addition to Silver, you'll receive 24x7 phone support and consultation on application development, best practices or architecture for your specific use case. (Starts at $400/month)

  • Platinum: The most comprehensive and personalized support. In addition to Gold, you’ll get direct access to a Technical Account Manager team. (Contact Sales for more information)



Sign up or click here to find out more information about the new Google Cloud Platform support options.






Today we are announcing two new preview features: Google App Engine Java 7 runtime support and Google Cloud Endpoints. Preview features are ‘experimental’ features on a path towards general availability.


Today we are announcing two new preview features: Google App Engine Java 7 runtime support and Google Cloud Endpoints. Preview features are ‘experimental’ features on a path towards general availability.




Java 7 Runtime Support for App Engine




The App Engine Java 7 runtime allows App Engine developers to keep pace with innovations in the Java language and runtime. It is important that you begin testing your applications with the new Java 7 runtime before the complete rollout in a few months.



Some of the language features you now have access to include:



invokedynamic support, which allows developers, tools providers, and language implementations to take advantage of a new bytecode, invokedynamic, to handle method invocations efficiently even when there is no static type information. For example:





public static void invokeExample() {
  String s;
  MethodType mt;
  MethodHandle mh;
  

  MethodHandles.Lookup lookup = MethodHandles.lookup();
  MethodType mt = MethodType.
methodType(String.class, char.class,
         
char.class);
  MethodHandle mh = lookup.
findVirtual(String.class, "replace", mt);
  s = (String) mh.
invokeExact("App Engine Java 6 runtime",'6','7');
  System.
out.println(s);
}




Try-with-resources, which helps avoid memory leaks and related bugs by automatically closing resources that are used in a try-catch statement.





public static void viewTable(Connection con, String query) throws SQLException {
  
try (
     Statement stmt = con.createStatement();
     ResultSet rs = stmt.executeQuery(query)
  ) {
     
while (rs.next()) {
        
// process results
        
//
     }
  }
catch (SQLException e) {
     
// con resource is auto-closed, no need to do anything here!
     
//
  }
}




Flexible Type Creation when using generics, enabling you to create parameterized types more succinctly. For example, you can write:





Map> myMap = new HashMap<>();



instead of:



Map> myMap = new HashMap>();



In addition to the language features listed above, the App Engine Java 7 runtime also includes:


  • Use of String class in Switch statements.


  • Expression of binary literals using simple prefixes 0b or 0B.


  • Single catch blocks that can handle multiple exceptions.


  • Simplified varargs method invocation.



Want to get started now? Download the latest App Engine Java SDK and then check out the docs here.





Cloud Endpoints Preview




Have you ever wanted a simple way to get a cloud backend for that Android or iPhone app you are working on? Wish it was easier to expose RESTful APIs from your web application? Google Cloud Endpoints simplifies building highly scalable and flexible backends for your web and mobile applications. Use Cloud Endpoints to store application data in the cloud that spans both devices and users. You can now easily expose your own authenticated, reliable, REST-based APIs hosted from an App Engine application and consume them in your Android, iOS, or web clients. Deeply integrated authentication support allows your users to have a transparent yet secure experience accessing your services. You have access to strongly typed client libraries for your custom service optimized for Android and iOS.






To use Cloud Endpoints, you simply write a Java or Python class with methods you want to expose to web or mobile clients. You then annotate the methods with attributes that control exactly how they are represented in REST interfaces on the wire. Finally, use Cloud Endpoints to generate your strongly-typed client libraries for Android, iOS and a lightweight JavaScript library.

For example, you can create a simple class to list some important data:



public class SuperHeroes {
  
public List listSuperHeroes() {
     List list =
new ArrayList();
     list.
add(new SuperHero ("Champion of the Obvious", "Brad Abrams"));
     list.
add(new SuperHero ("Mr. Justice", "Chris Ramsdale"));

     
return list;
  }
}




Then, expose it over a standard REST interface with a simple attribute and a versioning pattern.





@Api(name = "superheroes", version = "v1")public class SuperHeroesV1 {   ...
}



Now you have a simple REST interface.





$ curl http://localhost:8888/_ah/api/superheroes/v1/superheroes
{
"items": [
 {
  
"knownAs" : "Champion of the Obvious",
  
"realName" : "Brad Abrams"
 },
 {
  
"knownAs" : "Mr. Justice",
  
"realName" : "Chris Ramsdale"
 }


And you can make strongly typed calls from your Android clients:





Real result = superheroes.list().execute();



Or Objective-C iOS client:



GTLQuerySuperHeroesV1 *query = [GTLQuerySuperHeroesV1 queryForSuperHeroesList];
[service executeQuery:query completionHandler:^(GTLServiceTicket *ticket,

GTLSuperHeroes *object, NSError *error) {

 NSArray *items = [object items];
}];




Or the web client in JavaScript:





// ...
var ROOT = 'https://' + window.location.host + '/_ah/api';
gapi.client.load(
'superheroes', 'v1',
                loadSuperheroesCallback, ROOT);
// Get the list of superheroes
gapi.client.superheroes.superheroes.list().execute(
function(resp) {
 displaySuperheroesList(resp);
});



Read the documentation for Java or Python to discover how you can build a simple tic-tac-toe game using Cloud Endpoints.



To get started with Cloud Endpoints, download the App Engine 1.7.5 SDK and the latest Google Plugin for Eclipse. Be sure to look at the docs and follow along in the discussion forums on Stack Overflow.



For more on using Cloud Endpoints with Python, check out +Danny Hermes and +Dan Holevoet on Google Developers Live.







We’ve just published a series of great App Engine training videos to help you better understand our platform. These seven voice-over technical videos provide insight for both newbies as well as seasoned App Engine developers.  The videos delve into each major App Engine component’s operation and how a developer can best utilize them. 


Do you wonder how App Engine orchestrates hundreds of instances so smoothly? Can you imagine how Datastore queries and transactions work behind the scenes? Do you want to know the magic of how App Engine experts dramatically reduce traffic costs using edge caching? 



We’ve just published a series of great App Engine training videos to help you better understand our platform. These seven voice-over technical videos provide insight for both newbies as well as seasoned App Engine developers.  The videos delve into each major App Engine component’s operation and how a developer can best utilize them. 









Each video runs for half an hour or less. We recommend you follow the videos in sequence if you are new to App Engine, or you can pick and choose if you’re already familiar with the platform.



Throughout the year, we intend to publish codelabs to complement the voice-over training videos, not only for App Engine, but for  Google Cloud Storage, Google Cloud SQL, Google BigQuery, and Google Compute Engine as well.  So stay tuned for updates!


-Posted by Gary Downing, Cloud Platform Solutions Technical Training Manager







After a brief break last month, the App Engine team is back on our monthly release cycle.  We made lots of improvements to our platform in 2012 and look forward to delivering more this year.

In 1.7.5, we are releasing High-Memory Instances and Mail Bounce Notifications to General Availability.  We’ve heard the feedback that you would like to have more memory without having to pay for more CPU.  With this release, you can now utilize F4 or B4 instances with 1GB memory, which is double the amount of memory available before. Mail Bounce Notifications notify apps when mail sent through App Engine fails to deliver, so you’ll always know whether your communications are going through.

We are also introducing Experimental support for the Java 7 runtime and Google Cloud Endpoints.  Improvements in Java 7 include strings in switch statements, improved type inference for generic instance creation, and the ability to use InvokeDynamic().  Cloud Endpoints makes it easy to expose your code as RESTful and RPC services that can be easily consumed by your own web and mobile applications. Finally, an update to the Google Plugin for Eclipse makes it possible for developers to build App Engine backends that communicate with client-side Android applications via Google Cloud Messaging for Android and Cloud Endpoints.

The complete list of features and bug fixes for 1.7.5 can be found in our release notes. For App Engine coding questions and answers check us out on Stack Overflow, and for general discussion and feedback, find us on our Google Group.  You can also subscribe to the Google Cloud Platform newsletter and read our February edition.  

-Posted by Chris Ramsdale, Product Manager





Last spring Google University Relations announced an open call for proposals for Google App Engine Research Awards. We invited academic researchers to use Google App Engine for research experiments and analysis, encouraging them to take advantage of the platform’s ability to manage heavy data loads and run large-scale applications. Submissions included proposals in various subject areas such as mathematics, computer vision, bioinformatics, climate and computer science. We selected seven projects and have awarded each $60,000 in Google App Engine credits recognizing their innovation and vision.


Last spring Google University Relations announced an open call for proposals for Google App Engine Research Awards. We invited academic researchers to use Google App Engine for research experiments and analysis, encouraging them to take advantage of the platform’s ability to manage heavy data loads and run large-scale applications. Submissions included proposals in various subject areas such as mathematics, computer vision, bioinformatics, climate and computer science. We selected seven projects and have awarded each $60,000 in Google App Engine credits recognizing their innovation and vision.




Today we would like to share a brief introduction of the winning projects and their Principal Investigators:



  • K. Mani Chandy, Simon Ramo Professor and Professor of Computer Science, California Institute of Technology

    Cloud-based Event Detection for Sense and Response: Develop a low-cost alternative to traditional seismic networks. The image below is taken from the Community Seismic Network map showing active clients and events in real time.





  • A dense network of seismic stations enables the Community Seismic Network to perform a finer-grained analysis of seismic events than possible with existing seismic networks.

  • Lawrence Chung, Associate Professor, The University of Texas at Dallas

    Google App Engine: Software Benchmark and Google App Engine Simulation Forecaster: Develop a tool to estimate software performance and cost on Google App Engine.

  • Julian Gough, Professor, University of Bristol, UK

    Personalised DNA Analysis: Develop a service that provides personal DNA analysis.

  • Ramesh Raskar, PhD, MIT Media Lab; Dr. Erick Baptista Passos, IFPI (Federal Institute of Technology, Brazil)

    VisionBlocks: develop a tool that delivers computer vision to people everywhere. The image below shows a current prototype implementation of VisionBlocks.




  • Many algorithms are already included, and you'll be able create your own blocks as well.

  • Norman Sadeh, Professor, Director of Mobile Commerce Lab, School of

    Computer Science, Carnegie Mellon University

    Mapping the Dynamics of a City & Nudging Twitter Users: uncovering local collective knowledge about the a city using social media.

  • William Stein, Professor of Mathematics, University of Washington

    Sage: Creating a Viable Free Open Source Alternative to Magma, Maple, Matlab, and Mathematica.

  • Enrique Vivoni, Associate Professor, Hydrologic Science, Engineering & Sustainability, Arizona State University

    Cloud Computing-Based Visualization and Access of Global Climate Data Sets: provide scientific data on global climate trends.


Congratulations to the award winners! We are excited about the proposals’ creativity and innovation and look forward to learning about their discoveries. To read more about specific projects, go here.


-Posted by Andrea Held, Program Manager, Google University Relations




















Architecture diagram of SongPop
















Continuing our Developer Insights series, today’s guest bloggers are Olivier Michon, CTO, and Alexis Hanicotte, software engineer, from Fresh Planet, maker of the popular mobile application SongPop.  SongPop is a social application where players compete to be the fastest to guess the name of a song or artist.




SongPop is a social mobile app where players compete on who will be the fastest to guess a songs’ artist or title. It is a huge success for our very small team of just 6 engineers. We now have more than 60 million users, were the number 5 most downloaded iOS game of 2012, and went from 0 to more than 10k queries/second on our servers in less than 6 months. This has been made possible in large part because we run on Google App Engine.






App Engine allows us to quickly prototype, iterate and release our games.  We’ve been accumulating experience with the platform since 2009, but really saw the power of autoscaling once SongPop became a hit.





Our experience scaling with App Engine




SongPop was released in May 2012.  During our growth to our first 100,000 daily active users (DAU), our App Engine backend scaled smoothly.  This allowed us to spend our time making actual improvements to the game experience, while our user growth continued at a rapid pace.



We opened a Premier Account with App Engine around the time when we reached 100,000 DAU which gave us access to live customer support.  It came in handy when we encountered two downtimes, with one lasting just 10 minutes and the other for 1 hour.  But we were able to promptly reach Premier Support and had Google engineers investigate these issues with us.  



Once we reached 500,000 DAU, we applied a variety of optimization ideas to reduce latency.  For example, we used to have user data spread over many models, but we combined them into a single entry in the Datastore to reduce read operations.  We also often needed the list of a user’s opponents, so instead of querying every time, we cached this result using Memcache.  It only took one engineer and just 4 days of work to reduce the latency with these optimizations.   



As we reached the milestone of 1 million DAU, some Datastore queries (used to find random opponents in the game) showed high latencies and a high rate of timeouts.  We had to enforce deadlines, implement better fallbacks and identified, with the help of Premier Support, that degraded performance came from the fact that our queries were relying on many different indexed properties.  So the solution was simple - either add a composite index with all the properties we needed or combine into a single one.



Using App Engine + Google Cloud Storage



For each game session, our users need to download song samples in order to play. It is critical that this data gets delivered fast and reliably wherever the user is located. We chose to use Google Cloud Storage for this use case.   It has proved to provide high performance content delivery, as we have been able to serve 17 terabytes/day of songs and images worldwide.


In addition to its reliability, Cloud Storage is great because of its integration with App Engine. We can easily read and write files from our application to Cloud Storage using the same syntax as we would use to write local files (using Python). We found it intuitive and convenient because you do not have to manage opaque keys to retrieve your files (just use the path you specified), and you can browse your files through a directory-like structure. Cloud Storage also allows you to manage access rights, can be used with Google BigQuery, and it is priced affordably compared to other solutions we considered.









Architecture diagram of SongPop









Long live App Engine!






When we speak to other game developers, we always recommend that they use App Engine.  We’ve used other services such as EC2 from Amazon Web Services for other games before, but we’ve found App Engine to be a better service for our needs.  We don’t want to spend time setting up servers and load balancing, when we could instead use that time to build great games and let our service provider handle the infrastructure for us.






When we compare the development of SongPop to stories of other apps, we’re thankful that App Engine allowed us to have only one engineer working full-time on the backend portion of our app.  Even better, he was able to do additional work on adding new features to the game instead of solely focusing on infrastructure issues.  With App Engine, scaling our game was easy.





Others things we want to share




  • Do not worry if documented resources limits and rates look too small, they are just there to make sure one app does not abuse any resource, but they can scale. Most of our limits have been increased by 18-fold! We had days where we made 230,000,000 UrlFetch API calls, for instance.

  • The Location headers is a really great feature,  because it is easily accessible for a wide variety of use cases, such as selecting users’ opponents or building their game profile.




Contributed by Olivier Michon and Alexis Hanicotte, FreshPlanet



Posted by Zafir Khan, Product Marketing Manager, Google App Engine