Sejak diluncurkan pada Oktober 2010 silam, aplikasi foto sharing, jejaring sosial sekaligus video sharing Instagram telah memiliki banyak sekali penggemar. Awalnya Instagram merupakan aplikasi yang dikhususkan untuk pengguna iOS maupun iPhone, kemudian merembet ke beberapa platform seperti Android, dan yang baru ini Windows Phone membuat Instagram semakin digdaya.
Dibalik keganasan aplikasi mobile dan juga web Instagram, bagi para developer tentunya ingin juga mengetahui bagaimana Instagram dibuat ? Dan apa saja kira-kira menu yang dipakai oleh engineer mereka untuk meracik aplikasi buatan Kevin Systrom dan Mike Krieger ini.
Berikut adalah beberapa ringkasan teknis mesin-mesin dibalik Instagram :
Dapur Pacu (Server) Instagram
Instagram telah melayani lebih dari 100 juta pemakai aktif. Dan setiap harinya, puluhan juta foto diupload oleh para pengguna Instagram. Hal ini mengharuskan Instagram dirumahkan ke sebuah server Enterprise yang terletak di Amazon EC2.
EC2 (Elastic Cloud) sendiri merupakan server berbasis Cloud Computing yang dimiliki Amazon. Server cloud handal ini menggunakan teknologi Xen Virtualization, yang memiliki keunggulan dimana beberapa operating sistem dapat bekerja sama untuk mengeksekusi sebuah server.
Sistem Operasi (OS)
Sampai artikel ini ditulis, Instagram masih menggunakan sistem operasi open source Linux Ubuntu 11.04 (codename : Natty Narwhal). Sistem operasi Linux terutama Ubuntu dipilih oleh para Engineer Instagram karena terkenal solid dan juga handal.
Di dalam tubuh Natty Narwhal-nya Instagram, para Engineer memilih Nginx untuk urusan server proxy dan juga Load Balancing aplikasi Instagram. Nginx terkenal sangat cepat, bahkan menurut beberapa sumber Nginx lebih cepat dibandingkan Apache.
Aplikasi Server
Selanjutnya, Instagram juga berdiri tegap pada aplikasi server Django. Web framework ini mempunyai basis bahasa pemrograman tingkat tinggi (high level) Python. Django, karena dibuat menggunakan Phyton terkenal memiliki fleksibilitas dan juga performa yang ciamik untuk urusan aplikasi server.
Instagram juga memanfaatkan sebuah WSGI Server bernama Gunicorn. Perlu pembaca ketahui bahwa WSGI atau Web Server Gateway Interface merupakan sebuah aplikasi interface yang menjembatani antara web server dengan aplikasi web berbasis Phyton.
Gunicorn sendiri adalah WSGI server yang dikhususkan untuk server-server berbasis UNIX dan ditulis dengan bahasa pemrograma Python. Kelebihan Gunicorn adalah dapat diimplementasikan secara cepat, sederhana dan juga memiliki resource kecil pada sebuah server.
Penyimpanan Data (Storage)
Data-data seperti informasi user (pemakai), metadata foto, tag dan lain sebagainya disimpan dalam sebuah database storage bernama PostgreSQL. Data Instagram sangatlah besar, sampai-sampai mereka mereplikasi kedalam 12 zona yang berbeda.
Di dalam server Amazon tersebut, para teknisi Instagram melakukan replikasi menggunakan metode Streaming Replication. Dimaksudkan agar data disimpan secara berbarengan antara satu zona dengan zona yang lain. Seperti sistem server pada umumnya, Instagram juga menggunakan sistem Snapshooting agar suatu kali terjadi permasalahan data, server tetap menyimpan backup terbaru.
Sistem Notifikasi (Push Notification System)
Saat kita menggunakan aplikasi mobile Instagram di iPhone, Android, maupun Windows Phone, suatu saat kita pasti mendapatkan sebuah notifikasi dikala ada teman menyukai atau mengomentari foto kita. Instagram menggunakan sebuah teknologi framework bernama Pyapn untuk sistem notifikasi mereka.
Sedangkan untuk pekerjaan Task Queue, fitur dimana pada saat yang bersamaan Instagram dapat melakukan posting ke beberapa social network lain seperti Facebook, Twitter. Instagram memanfaatkan Gearman. Aplikasi framework ini berbasis open source, fleksibel, cepat dan juga dapat disisipkan berbagai bahasa pemrograman (PHP, C, Perl, Phyton) sesuai API yang disediakan.
Sumber : http://instagram-engineering.tumblr.com/