Sudah 2 project saya telorkan di Google Appengine, tetapi belum satu pun saya bahas di blog saya. Posting kali ini akan membahas tentang suka duka bermain di platform Google Appengine.

Google Appengine dipromokan oleh google dengan kata yang bikin ngiler:

Google App Engine enables you to build web applications on the same scalable systems that power Google applications.

Ada benarnya juga sih, di appengine kita bisa nyimpen data di BigTable — salah satu andalan google sebagai storage yang reliable dan scalable. Saya sendiri belum merasakan ketangguhan dari BigTable selain dari Datastore API dari google yang sangat powerful dan simple. API ini mempunyai konsep dan method yang mirip dengan Django Model API. Cukup kita definisikan model data, dan langsung bisa digunakan tanpa harus create table, melakukan koneksi database, dsb. Contoh snippet yg sederhana:

from google.appengine.ext import db

class Comment(db.Model):
  name = db.StringProperty()
  comment = db.TextProperty()

#penggunaanya
comment1 = Comment(name='ferdhie', comment='Hello World')
comment1.put()
comment2 = Comment(name='ozawa', comment='Love u')
comment2.put()

#kita bahkan bisa melakukan
db.put([comment1, comment2])

#untuk querynya kita bisa

for comment in Comment.all():
  print comment.name, comment.comment

#melakukan filter dan order
query = Comment.all().filter('name = ', name).order('name')
for comment in query:
  print comment.name

#fetch dengan limit
for comment in query.fetch(2):
  print comment.name

Untuk informasi lebih bisa di cek di Dokumentasi datastore appengine.

Ada banyak fitur yang lain yang menambah daya tarik salah satu produk beta google ini antara lain:

Sudah lebih dari cukup membantu kita membuat aplikasi web yang cukup mumpuni dengan cost minimal (Gratis)

Tetapi, ada juga beberapa kekurangan dari Appengine yang menurut saya susah untuk diakalin, antara lain:

  • Tidak ada Cron service / background service — untuk membuat aplikasi kita responsif, cara yang biasa dilakukan adalah memecah beberapa task yang dirasa cukup berat ke background service. — lalukan belakangan. Nah fitur ini ngga ada atau mungkin masih belum ada di appengine.
  • Limit timeout untuk proses akses database, urlfetch dan timeout per request yang terlalu pendek, menyebabkan sering banget timeout untuk beberapa proses yang emang berat. Dan karena limit ini, download file dengan ukuran sangat besar (diatas 10mb) jadi ngga mungkin, bahkan untuk ukuran file yang diupload, dibatasi hanya 1mb per file dan 1000 file per aplikasi.
  • Karena limitasi tersebut, jadi susah juga bagi kita yang udah bikin aplikasi lengkap, kemudian ingin mem-backup data

Tetapi, bagaimanapun juga produk dari Google in patut diacungi jempol karena belum ada vendor lain yang membuka layanan dengan genre yang sama. Ada sih amazon web service, tetapi ngga gratis seperti google.