Evite’s Use of Google App Engine
    
    
    
    
     By Dan
      Mesh, Vice President of Engineering at EviteThis post is part of Who's at
      Google I/O, a series of guest blog posts written by developers who are appearing in
      the Developer
      Sandbox at Google
      I/O.Evite
By Dan
      Mesh, Vice President of Engineering at EviteThis post is part of Who's at
      Google I/O, a series of guest blog posts written by developers who are appearing in
      the Developer
      Sandbox at Google
      I/O.Evite is one of web's oldest social planning
      services. Since the launch in 1998, Evite has delivered over a billion party invitations.
      Although it has served us well, after ten years of operation it became necessary to replace
      the aging platform, and position Evite for another decade of successful party planning.
The reengineering effort took well over a year. Our development team replaced
      Java with Python and saw a significant increase in developer productivity. However, dealing
      with a ten year-old Oracle database remained a challenge. To overcome scalability limitations
      and inflexibility of a large relational DBMS, we designed and implemented a proprietary data
      store. We conducted a series of A/B tests and gradually started migrating production traffic
      to the new system.
Our initial motivation to use 
Google App Engine was fast provisioning.
      We introduced App Engine as a temporary solution while we increased scale and optimized our
      proprietary data store. However, once we imported user profile data and put App Engine backend
      services in production, we never looked back.
Importing a large data
      set of user profiles from Oracle RAC into App Engine was challenging at first because we had
      to perform a bulk import and then keep the data synchronized between the two datastores. As we
      developed our data synchronization tools we gained better understanding of the API and
      performance characteristics of the App Engine datastore.
Once we
      synchronized profile data and enabled production traffic, App Engine really started to
      impress. We would watch our daily traffic grow and observe App Engine’s automatic scaling in
      action. Additional server instances would come online to meet increased demand and disappear
      as traffic lowered, without any sysadmin intervention. Despite our proficiency in the use of
      cloud computing resources and system automation, it was never this easy to provision new
      servers. As Grig, Evite’s devops guru, likes to say "It's not in production until it's
      
monitored and graphed." App Engine’s dashboard automatically manages
      instances and graphs system usage data.
Following our positive experience with
      Evite profiles, we have continued to use App Engine for other services. Occasional
      frustrations with elevated error rates on the 
Master/Slave
      Datastore disappeared as we switched to the 
High
      Replication Datastore. At this point we see no technical obstacles to using App
      Engine more extensively. Architectural decisions and best practices implemented by the App
      Engine team are very well aligned with the choices we made in designing Evite’s new platform.
      This makes it easy to deploy additional services and data sets to App Engine.
The real obstacle to using App Engine exclusively for most Evite services is
      risk management. As reliable and cost-effective as App Engine has been for us, it is difficult
      to depend completely on a single vendor/service provider. To ensure availability of our
      application we use multiple cloud providers. Unfortunately, this strategy prevents us from
      using certain App Engine features and API's because we do not have adequate replacements for
      them in other deployment environments.
Evite’s new platform built on
      Python, 
NoSQL and App Engine has
      been a success. Our new web application has been well received by users, and our first 
iPhone app is receiving
      positive reviews. (Android version is in the works). We look forward to continued use of App
      Engine for data warehousing, rapid launches of new services and other projects.
Come see Evite in the Developer Sandbox at
      Google I/O on May
      10-11.Dan Mesh is a Vice President of Engineering
      at Evite. His extended responsibilities include espresso deliveries and release day food
      orders.Posted by Scott Knaster,
      Editor