G Suite Developers Blog
Information for G Suite Developers
Google Apps security and high availability support EZasset success
March 15, 2010
Editor's Note: This post was written by Paul Marsolan from
StrongTech
, an asset management company, and makers of EZasset. We invited StrongTech to share their experiences building an application on top of Google Apps utilizing some of our APIs.
StrongTech Asset Management
is a leading asset manager for federal agencies, institutions, enterprises and financial intermediaries, worldwide. StrongTech provides strategies and services that span the full spectrum of asset classes including: IT assets, wireless assets, weapons, healthcare assets, real estate, infrastructure, and energy.
In 2009, StrongTech, makers of EZasset, made the decision to port our application from Amazon EC2 to Google App Engine for two reasons: security and server management. While Amazon EC2 is an excellent platform, due to our government contracts and growing business clients we needed the most secure platform possible. The Amazon EC2 is a raw nuts and bolts server system. The EC2 offers developers the same environment as if there were servers in a server room at the office. EZasset decided that we did not want to worry about backups, server patches, firewall settings, load balancing, scalability, or other issues. We wanted to focus on programing and offer a great product for a great price. We made the decision to let Google focus on the server and security management for us.
What attracted us to the Google Apps Marketplace from the technical standpoint was the security offered through the Marketplace, and the scalability. We don’t need to worry if we have a thousand new clients sign up in one day: Google Apps Marketplace can handle our success. From the business side, getting EZasset in front of customers on the Google Apps Marketplace, and credibility of Google itself, are immeasurable. Millions of people use Google to find solutions for problems; it would have been foolish of us to not be a part of the Marketplace.
Google services enhance our already feature rich applications. Integrating Google Calendar, Google Documents, and others, has allowed our software to be more powerful without sacrificing user friendliness. We use Google Calendar for maintenance tracking and notifications, Google Talk for real time communication, Google Docs for easy document uploads, and Google Spreadsheet for importing and exporting data into and out of EZasset.com. We’re even able to offer a robust support forum for our customers by using Google Sites.
The security, ease of integration and scalability of Google Apps and the high availability of Google App Engine made porting an easy choice. EZasset has grown with Google, and now with Google's application marketplace, we can grow our business even more.
To put it simply: We are able to focus on what we do best, providing an easy to use asset management system, while Google does what they do best; providing secure, high availability servers.
Like any platform, there are positives and negatives. But the flexibility and power of the system, allows for creative solutions. Since there is no “computer” that the code actually sits on, development of applications is done differently than on classic web servers (EC2, your own servers). With our former deployment on EC2, uploaded photos could be stored on a web server hard drive. Google App Engine doesn’t have a hard drive to access per se, but we were able to use Google Datastore, and store the photo as a data “blob”. Other platforms might not have allowed such a creative solution.
Google Data Store is easy to work with. Below are code snippets that show how we upload and store pictures in the Google Data Store.
Upload image on Google App Engine code
:
1.1 Create Data Bean Class, for example Photo
import javax.persistence.Entity;
import javax.persistence.Enumerated;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import com.google.appengine.api.datastore.Blob;
@Entity
public class Photo implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long key;
@Enumerated
private Blob imageData;
......
}
1.2. In code, create instance for class Photo and fill it.
...
InputStream stream = ..
Photo photo = new Photo();
photo.setImageData( new Blob(IOUtils.toByteArray(stream)));
...
1.3 Save instance
EntityManager em = null;
try{
em = EMF.getEM();
em.getTransaction().begin();
em.persist(photo);
em.getTransaction().commit();
}catch(Throwable t){
t.printStackTrace();
if(em != null){
em.getTransaction().rollback();
}
}
finally{
if(em.isOpen() || em != null ){
em.close();
}
}
TIP:
Google App Engine offers high availability by loading applications across many different “servers” in the platform. This allows your application to be instantly accessible when it is in frequent use. When an application is not getting consistent traffic, Google App Engine will “spin down” the application after some inactivity. This can cause a slower initial load of the large complex applications. Compare it to revisiting a website with no “cookies” saved. After the initial load the application will run quickly once more.
Getting Started Is Easy
- Google App Engine is a platform, and it is different than programming on a server. There is a learning curve associated with development on GAE. Once our developers had a week or so to play around with the GAE, they found it is was very easy to program on it. Google supplies a Google Group that has a wealth of information from developers, with Googlers answering questions. We were able to make the port of EZasset in a shorter time then we expected. We also get all the great benefits of high availability, better server management, and security.
Our asset management software is innovative, high quality, powerful and feature rich. We needed a platform that would allow us to continue to provide the high level of quality our customers expect. Google App Engine has allowed us to do that, and do it in the most secure, available platform.
See EZasset in action at the Google I/O Conference in the
Developer Sandbox
.
Free Trial
Labels
.NET
3
#io15
1
#io16
1
Admin SDK
10
Administrative APIs
31
AdSense
1
analytics
5
Android
8
API
3
APIs
3
App Engine
5
Apps
1
Apps Script
118
Audit
2
Auth
5
billing
4
Charts
2
Chrome OS
1
classroom
3
Cloud Storage API
1
Community
1
decks
1
Design
1
Developers
12
Directory API
3
Drive
4
Drive SDK
41
execution API
2
Firebase
1
Forms
1
Freemium
1
Fusion Tables
2
G Suite
24
Gadgets
5
Gmail
7
Gmail APIs
23
Google
3
Google APIs
36
Google Apps
33
Google Apps Marketplace
7
Google Calendar API
25
Google Classroom
4
Google Cloud Directory
1
Google Contacts API
4
Google Data Protocol
8
google docs
5
Google Docs API
22
Google Drive
8
Google Drive SDK
7
Google Forms
8
Google I/O
3
Google Prediction API
3
Google Profiles API
2
Google sheets
11
Google Sheets API
7
Google Sites API
5
Google Slides API
10
Google Spreadsheets API
5
Google Talk
1
Google Tasks API
8
Google+
3
googlenew
1
Groups
2
GSuite
3
Guest Post
43
Hangouts Chat API
1
I
1
Inbox
1
iOS
2
issue tracker
1
ISVs
2
java
1
JavaScript
6
marketing
3
Marketplace
47
Marketplace ISV Guest
21
Migration
2
Mobile
5
mpstaffpick
1
oauth
16
OpenID
8
PHP
1
presentations
1
python
7
realtime API
2
Resellers
2
Ruby
1
SaaS
1
security
5
Sheets API
3
spreadsheets
3
Staff Picks
2
tool
1
tools
2
tutorials
2
video
4
videos
1
webinar
2
Archive
2018
Jul
Jun
May
Mar
Feb
Jan
2017
Dec
Nov
Oct
Sep
Aug
Jul
Jun
May
Apr
Mar
Feb
Jan
2016
Dec
Nov
Oct
Sep
Aug
Jul
Jun
May
Apr
Mar
Jan
2015
Dec
Oct
Sep
Aug
Jul
Jun
May
Apr
Mar
Feb
2014
Dec
Oct
Sep
Aug
Jul
Jun
May
Mar
Feb
Jan
2013
Dec
Nov
Oct
Sep
Aug
Jul
Jun
May
Apr
Mar
Feb
Jan
2012
Dec
Nov
Oct
Sep
Aug
Jul
Jun
May
Apr
Mar
Feb
Jan
2011
Dec
Nov
Oct
Sep
Aug
Jul
Jun
May
Apr
Mar
Feb
Jan
2010
Dec
Nov
Oct
Sep
Aug
Jul
Jun
May
Apr
Mar
Feb
Feed
Google
on
Follow @gsuitedevs