Amazon Underground yang Aneh

Internet sedang ramai dengan Amazon Underground. Ini proyek baru dari Amazon.com (raksasa e-commerce dan cloud services).

Selama ini kan banyak aplikasi yang berlabel “gratis”, tapi kenyataannya di dalamnya penuh dengan fitur-fitur, virtual item, dsb-nya yang harus dibeli. Istilah kerennya “In-app purchase – IAP”. Di Amazon Underground ini, kita (pengguna Android) bisa mengunduh aplikasi yang benar-benar gratis 100%. Amazon sudah bekerjasama dengan banyak pengembang untuk memungkinkan hal ini terjadi. Singkatnya, sebagai ganti IAP, Amazon membayar ke pengembanga aplikasi untuk waktu yang digunakan pengguna. Jangan khawatir, yang bayar Amazon kok, bukan kita.

Untuk bisa mengunduh aplikasi “Actually Free” ini tidak bisa via Google Playstore. Jadi kita harus download Amazon Underground. Dan itulah yang saya lakukan. Link downloadnya ada di: http://amazon.com/underground.

Setelah selesai instalasi, saya melihat daftar aplikasi gratis di aplikasi Amazon Underground ini. Game “Cut the Rope” ada di situ, berlabel “Actually Free”. Saya klik. Tapi yang keluar malah pesan agar saya memperbaharui Amazon App ke Amazon Underground. Ini aneh, karena tadi yang saya download kan Amazon Underground. Hmm.

Saya coba klik “Update Now”. Tapi makin aneh, yang keluar malah pesan kalau saya tidak dapat memasang aplikasi ini karena batasan geografis yang dilakukan Amazon.


Loh, ada batasan toh? Saya kepingin tahu apa batasannya, jadi saya masuk saya ke link “Why?” itu. Setelah saya baca, makin aneh lagi, ternyata di daftar negara yang boleh menginstal aplikasi ini, ada Indonesia. Lah, kok?

MySQL di Hari Minggu

Semalam dapet kabar kalau webserver F tewas lagi (kedua kalinya dalam bulan ini). Masalahnya sederhana sebenarnya, hardisknya penuh.

Jadi dengan menggunakan Debian 5.0 di Amazon EC2, default setting partisnya dibagi dua. Total kapasitas hardisknya sekitar 500GB, 10 GB nya buat system (/), sisanya dimount di partisi antah berantah. Dulu sudah saya set agar partisi satunya digunakan untuk DocumentRoot Apache. Karena total file di DocumentRoot nya itu nyampe 44GB.., ya harus masuk di partisi kedua. (baru nyadar kalo web F itu total file nya 44GB, pantes dulu pindah dari dedicated server ke Amazon EC2 prosesnya lama banget.., rsync dari jam 11-an malem, pas sahur baru selesai..)

Tapi ada yg saya enggak tahu. Di partisi sistem itu, 10GB saya rasa sudah cukup. Tapi ternyata tidak.., dari hasil monitoring setiap hari space nya selalu terpakai makin banyak, hingga mencapai 100%. Otomatis /tmp nggak bisa ditulisi.., /var/lib/mysql juga nggak bisa ditulisi.. matilah sudah MySQL nya.. Dan tewaslah webnya.. Sampai sekarang saya masih bertanya – tanya apa yang bikin space hardisknya terus – menerus habis, lalu tiba – tiba berkurang lagi.

df-week

Jadi terpaksa lah diambil alternatif lain, bagaimana caranya agar web F tetap jalan sementara saya mencari tahu apa yang memakan space terus menerus..

Beginilah jadinya :

  1. Buat direktori /var/labanux
  2. Ubah /etc/fstab, saya set agar partisi kedua di mount di /var/labanux
  3. Buat direktori /var/labanux/www
  4. Semua file web dipindah ke /var/labanux/www (ini nih yang 44GB itu)
  5. rsync -avz /var/lib/mysql /var/labanux/   (Tadinya pake copy aja.., tapi sepertinya ada yang ndak beres, makanya ganti rsync aja)
  6. Rename /var/lib/mysql /var/lib/mysql-lama
  7. Ubah konfigurasi /etc/mysql/my.cnf (‘datadir  = /var/lib/mysql’ diganti jadi ‘datadir  = /var/labanux/mysql’
  8. Buat direktori /var/labanux/tmp
  9. Delete /tmp
  10. Link : ln -s /var/labanux/tmp /tmp
  11. /etc/init.d/mysql start
  12. GAGAL…!! Error mysqlnya…
  13. Oh iya : chown -R mysql /var/labanux/mysql (karena tadi yang bikin direktori dll nya adalah root, jadi user mysql ndak punya akses toh.., makanya diganti ownernya)
  14. /etc/init.d/mysql start
  15. GAGAL lagi…. Masih masalah disk full..
  16. Ya udah, nekat delete /var/lib/mysql (sekitar 500MB)
  17. /etc/init.d/mysql start
  18. Yiihaaa….! Dah jalan lagi

Jadi sekarang semua data – data MySQL sudah masuk di partisi kedua (sekitar 490-an GB), begitu juga /tmp sekarang masuk di partisi tersebut. Jadi sementara ini partisi root (/) masih bersisa 500-an MB, yang mana nanti juga saya curiga bakal penuh lagi. Tapi setidaknya sementara web F udah bisa jalan lagi.. Tidur lagi ah…

Amazon S3 dengan CakePHP

Beberapa hari ini saya cukup disibukkan dengan memahami cara kerja Amazon Simple Storage Service (Amazon S3), yang merupakan salah satu layanan dari Amazon Web Service (AWS), dilanjutkan dengan menulis beberapa baris kode agar bisa bekerja dengan CakePHP . Ini adalah salah satu bagian dari situs yang sedang saya kerjakan.

Langsung aja. Library PHP5 untuk mengakses layanan Amazon S3 ini saya gunakan Class S3 dari http://undesigned.org.za/2007/10/22/amazon-s3-php-class, hasil karya dari Donovan Schönknecht.

Agar bisa diakses dalam CakePHP, file class S3 tadi (S3.php) diletakkan di folder app/vendor/. Setelah itu saya buat fungsi baru di dalam controller yang mengakses Amazon S3 nantinya.

function _initAws()
{
// AWS access info
if (!defined('awsAccessKey')) define('awsAccessKey', 'AKHTZQYAXRXHTZQYAUUM'); // Sesuaikan dengan AccessKey anda
if (!defined('awsSecretKey')) define('awsSecretKey', 'VJFcyIksmdnk90kngio'); // Sesuaikan dengan SecretKey anda

App::import('Vendor', 'S3', array('file'=>'S3.php'));
$s3 = new S3(awsAccessKey, awsSecretKey);
return $s3;
}

Kemudian jika di dalam salah satu fungsi controller anda (di dalam controller yang sama), anda ingin mengakses S3, cukup gunakan baris berikut :

$s3 = $this->_initAws();

$s3->putBucket('cdn.labanux.com', S3::ACL_PRIVATE); // Membuat bucket baru

$s3->putObjectFile($file_path, 'cdn.labanux.com', 'image/'.$file_name.'.xcf', S3::ACL_PRIVATE);

// Menyimpan ke bucket cdn.labanux.com, dengan nama file image/$filename.xcf (image itu hanyalah virtual folder, karena Amazon S3 tidak mensupport folder. Dengan dinamai seperti itu, maka file anda kelihatan seperti berada di dalam sebuah folder / subfolder

Oh iya, bucket itu unik, ndak ada yang sama di AWS. Terus asyiknya gini, kalau bucket kita bernama : labanux, maka bucketnya beralamat di s3.amazonaws.com/labanux, ataupun labanux.s3.amazonaws.com. Kalo nama bucketnya cdn-ku.org, maka bisa diakses di cdn-ku.org.s3.amazonaws.com, ataupun s3.amazonaws.com/cdn-ku.org

Nah kalo kita punya domain labanux.com, kita bisa nambahin subdomain cdn.labanux.com kan? Nah, di S3 nya kita bikin bucket dengan nama cdn.labanux.com. Jadi ntar bisa diakses dengan alamat cdn.labanux.com.s3.amazonaws.com.

Lalu gimana biar CDN (Content Delivery Network) nya beralamat di cdn.labanux.com? Gampang, di NS servernya dibuat record CNAME cdn.labanux.com diarahkan ke cdn.labanux.com.s3.amazonaws.com

Lalu bagaimana jika kita ingin mengakses file dari AWS untuk di berikan kepada user (di download user) ?

Kalau file & bucketnya public, bisa langsung diakses secara direct (misal filenya : image/fotoku.jpg) : s3.amazonaws.com/bucket/image/fotoku.jpg. Atau kalau mengikuti contoh di atas jadinya : cdn.labanux.com.s3.amazonaws.com/image/fotoku.jpg, atau (ini yang saya pakai) : cdn.labanux.com/image/fotoku.jpg.

Nah, kalau file / bucketnya private. Ada dua cara. Cara pertama : Continue reading

Layanan Baru dari Google : Google App Engine – Pesaing Amazon Web Services

Google App EngineHampir semua blog tentang web di luar negri sejak kemarin memberitakan satu lagi layanan dari Google. Layanan ini bernama Google App Engine. Layanan ini terdiri : GFS – Google FileSystem untuk storage (penyimpanan), dan BigTable untuk database. (Layanan serupa dengan yang diberikan oleh Amazon Web Services *baca di bawah)

Google App Engine ini menyediakan layanan untuk storage (penyimpanan) dan database. Jadi anda bisa menghost data untuk aplikasi web anda (misal : gambar) disini, dan menggunakan database dari layanan ini juga. Dengan begitu anda tidak perlu khawatir akan borosnya pemakaian resource hosting anda karena aplikasi web anda. Karena seringkali hosting menyediakan bandwith unlimited, space sampe ukuran giga – gigaan, unlimited add on domain, dst, tetapi sangat ketat untuk pemakaian resource server.

TechCrunch telah membuat contoh aplikasi sederhana yang dibuat dengan Google App Engine ini, bisa dikunjungi di http://appengine.crunchbase.com/

Salah satu kelebihan *yang sangat penting* dari Google App Engine ini adalah layanan ini disediakan secara gratis. Walaupun tidak gratis untuk penggunaan tak terbatas (unlimited). Layanan ini gratis selama penggunaan quota space anda dibawah 500MB, 200 million megacycles/day dari CPU (prosesor), dan 10GB dari total bandwith. Lebih dari ini akan dikenakan biaya yang menurut Google “cukup kompetitif”.

Sebagai perkiraan, menurut Google dengan batasan layanan di atas, sudah cukup untuk sebuah website dengan 5 juta pageviews sebulan. Wow.. saya rasa itu sudah cukup untuk sebagian besar developer web aplikasi di Indonesia. *karena sepertinya di Indonesia yang punya trafik lebih besar dari itu hanya portal berita atau forum, tidak untuk web application (aplikasi web), CMIIW deh. Continue reading