Category Archives: Open-Source

Talk @ WordcampID 2010 : High Performance WordPress : done quick, cheap, and easy

Untuk para pembaca setia dari Indonesia : Silahkan klik tombol Google Translate di atas artikel ini.
Terimakasih 🙂

Last year I was contacted by Valent Mustamin, whom I started to be acquainted with by Twitter. He asked me if I’d be interested to speak in WordcampID 2010. My response was “HELL YES!” – well, ok, not exactly like that 🙂 but, you get the idea.

Before we continue, I must say it was very nice of him to get in touch with me quite that far in advance. Usually, sometimes, I was called and asked, “hey, how about speaking in this seminar which, by the way, is gonna be held tomorrow?”. Ouch. Sometimes I have problems booking a date even for the next week.
With WordcampID 2010, I was able to prepare the material well, and also booked the date of the event (30 January 2010) before I got other appointments. Zero conflict. Peace on earth.

Back to the topic – I proposed to speak about “High Performance WordPress”, which, of course, discusses ways to speed up WordPress. My talk will adhere to 3 main criterias : easy, cheap, faster.
Easy : it’s easy to do, kinda drop-in solution which you can do in 15 minutes flat.
Cheap : it’s not gonna cost you the arm & the leg. Basically, a dedicated server (dual core, 2 GB RAM) will suffice. It’s not some kind of highly complex, multiple-servers setup.
Faster : it will speed up your WordPress installations by multiple times AND will increase its capacity as well – capability to serve multiple concurrent visitors at the same time.

This solution is aimed to the websites in “growing-pains” period : too big for shared webhosting, but still too small in revenue to afford multiple-servers infrastructure.
In my experience, these websites usually are ranked between 10000 to 100000 in Alexa.

With the solution presented, I hope to be able to help these websites to grow their traffic significantly, and finally move up to the elite leagues with no problem.

You may ask, why another discussion on this topic? Isn’t this already discussed in many blog postings everywhere?

Indeed, however, soon I spotted a problem. When I was helping my friend, Mr Romi, to speed up his WordPress-based website, the highly popular IlmuKomputer.com, I noticed that the tutorials on this topic are :

(1) Suggests the hardest way with the least gain – first, and/or
(2) Only works for lesser websites (eg: Alexa rank > 200.000), and/or
(3) Potentially will your website to become buggy / to lose data, and/or
(4) It may cost you your first unborn child, and your arm, and your legs, and/or
(5) Did I mention that the methods are sometimes pretty hard to do ?, and/or
(6) Oh, did I already mention that it sometimes only offer 25% performance gain ?

The method I discussed can give 100000% performance gain. With 15 minutes of work.
And with very minimal messing (only normal config changes) with current installation of Apache/PHP/MySQL.

In a server, I tested its LAMP (Linux – Apache – MySQL – PHP) stack performance, and I got 2 requests / second.
After I finished optimizing it, I got 2000 requests / second. No kidding.

I know that in the audience there are several people from webhosting companies, who can get financial gain from this. Not just poor webmasters having problems with their ever-popular websites. But I don’t care. I love to share knowledge, and I believe only good things will come out from sharing them.
So there 😀

Anyway, enough rambling – on to the goodies !

[ High Performance WordPress – OpenOffice format ]
[ High Performance WordPress – PDF format ]
[ High Performance WordPress – Flash format ]

Note: The slides here have been updated with the excellent suggestion from Simon Lim regarding DNS.

Also, at the moment I’m working on another solution which is as easy, but offers even MUCH faster performance gain. Stay tuned.
Enjoy ! 🙂

Sistim SMS Pemilu Pilpres 2009 : 100% Powered by Open Source

Tim SERIS - SMS Election Result Information System

Alhamdulillah, tadi malam telah selesai satu pekerjaan besar, yaitu Sistim SMS Pemilu Pilpres 2009, yang diberi nama SERIS.
Sistim ini memungkinkan tabulasi Pemilu yang :

  1. Cepat : dalam waktu singkat, data dari puluhan ribu TPS sudah masuk. Kami sendiri cukup surprise 🙂 memang dengan SMS pasti akan lebih cepat, namun performa sistem SERIS kemarin ini melebihi bahkan ekspektasi kami sendiri.
  2. Luas : kerjasama dengan Telkomsel memungkinkan SERIS untuk menjangkau 95% dari wilayah Indonesia. Salah satu sesi Technical Meeting
  3. Transparan : Alur proses di sistim SERIS adalah full 100% otomatis, end to end. Mulai dari pengiriman SMS, masuk ke jaringan provider (Telkomsel), proses di sistim SERIS, sampai penayangan tabulasi – sistim berjalan dengan lancar tanpa intervensi.
  4. Akurat : proses perhitungan otomatis di engine SERIS sangat akurat, karena proses parsing yang minim resiko kekeliruan deteksi; dan didukung oleh berbagai algoritma verifikasi & validasi internal.
  5. Secure : sistim SERIS di desain untuk semaksimal mungkin mendekati tingkat keamanan 100%. Infrastruktur SERIS terisolir dari Internet & jaringan publik, tayangan data di push dari jaringan internal secara rutin (sehingga jika di deface maka akan cepat kembali sebagaimana semula kembali), aliran SMS terisolir hanya pada jaringan internal provider (Telkomsel) & SERIS, dan berbagai metode keamanan lainnya. Mencapai tingkat keamanan 100% adalah hal yang mustahil, terutama dengan keterbatasan waktu pada proyek ini. Namun kami berusaha semaksimal kemampuan kami untuk mengusahakan pencapaian yang sedekat mungkin pada target tersebut. Mudah-mudahan kami telah berhasil melakukannya.
  6. Accountable : aliran data dicatat & direkam secara redundant di berbagai titik. Ditambah lagi dengan proses snapshot yang dijalankan setiap beberapa menit, yang memungkinkan kita untuk mengetahui gambaran situasi internal sistem pada suatu titik waktu & lokasi tertentu. Usaha untuk melakukan tampering pada berbagai titik pada sistem akan bisa diketahui dengan mudah misalnya dengan melakukan crosscheck pada berbagai audit logs tersebut. Diagram Sistem
  7. Murah : sistim ini, walaupun berskala nasional, namun total biayanya sangat murah. Penggunaan teknologi Open Source membantu pencapaian ini secara signifikan – engine Database SERIS misalnya; walaupun hanya menggunakan 1 buah server fisik, namun performanya sangat bagus (23.000 transaksi/detik) tidak kalah dengan rekannya di jaringan Telkomsel (18.000 transaksi/detik) yang terdiri dari beberapa server. Teknologi Open Source kini sudah sangat mature, dan memungkinkan kami untuk memanfaatkan potensi sistim secara amat maksimal. Total server yang digunakan di sistim ini hanya 7 buah, serta beberapa switch, hub, dan firewall.
  8. Easy to Use : Siapa sih yang tidak kenal dengan SMS ? 🙂 Ini adalah salah satu alasan pemilihan teknologi ini – siapa saja bisa menggunakannya. SMS memang jelas kalah sexy jika dibandingkan dengan jargon-jargon seperti OMR, ERP, EAI, dst – tapi pada proyek dengan profil pengguna yang sedemikian ekstrim variasinya, maka sistim ini harus melakukan penekanan yang besar pada aspek kemudahan penggunaan.
  9. Easy to Deploy : Indonesia adalah negara kepulauan terbesar di dunia. Ini adalah fakta.
    Sebuah sistim yang akan digelar pada kondisi geografis seperti ini harus melakukan fokus kepada kemudahan deployment. Sistim SERIS di desain untuk bersifat centralized, sehingga beban pada sisi client menjadi amat sangat minim. Pada gilirannya ini memudahkan deployment, tanpa mengorbankan aspek-aspek lainnya.

  10. Powerful : walaupun hanya ada sedikit waktu untuk melakukan tuning, engine Database SERIS mampu menangani 23.000 transaksi per detik. Sedangkan frontend SERIS (tayangan tabulasinya) mampu melayani 15.000 request per detik.

Tim SERIS berfoto bersama di Ready Room

Tentu saja sistim ini masih belum sempurna. Development sistim berlangsung intens dalam waktu hanya 2 minggu. Secanggih apapun sumber daya yang ada, dengan time constraint seperti ini maka kita hanya bisa berusaha untuk mendekati kesempurnaan.

Beberapa pelajaran yang kami dapatkan & hal-hal yang masih bisa disempurnakan :

  1. Dokumentasi & Komunikasi : kesibukan dengan hal teknis membuat aspek ini agak terabaikan. Akibatnya, stakeholder sistim, KPU, seringkali tidak mendapat informasi yang memadai mengenai sistim SERIS dan perkembangannya. Ditambah lagi dengan gangguan dari berbagai pihak yang mungkin mempunyai kepentingan / conflict of interest, membuat proyek ini beberapa kali nyaris dibatalkan. Alhamdulillah, kami bersyukur bahwa stakeholder sistem ini memberikan dukungan yang sangat besar untuk proyek ini, sehingga berbagai masalah yang muncul seputar hal ini bisa diatasi bersama-sama.
  2. Performa : mungkin menurut Anda performa sistim SERIS ini sudah bagus, namun secara pribadi, kami masih belum puas 🙂
    Diperkirakan bahwa, dengan ketersediaan waktu dan sumber daya, sistim ini masih bisa mencapai peningkatan performa sampai, minimal, 3x lipat.

Terkapar !

Pada saat ini para personil tim SERIS sedang terkapar di berbagai penjuru Jakarta & Bogor 😀 , setelah bekerja keras selama berhari-hari untuk membangun sistem ini. Mereka adalah (diurut berdasarkan alfabet):

  • Abdullah Andi Koro : network admin, veteran di komunitas Open Source dan Internet. Bantuannya sangat besar dalam menjamin bahwa berbagai jaringan yang ada (provider/Telkomsel, internal, internet) bisa berfungsi dengan baik, terkoneksi di titik-titik yang diperlukan, berjalan dengan lancar & optimal.
  • Digit Oktavianto : system administrator, kami kenal dari komunitas Open Source (Linux Aktivis, MySQL, Ubuntu, dst). Banyak membantu juga dengan berbagai hal seputar database. Kecepatan kerjanya amat banyak membantu menyelesaikan berbagai masalah pada saat yang kritis.
  • Harry Sufehmi : system architect, saya bertugas mendesain arsitektur sistem, dan mengawasi agar sistem bisa bekerja secara optimal. Saat ini juga mendapat amanah sebagai Wakil Ketua II AOSI (Asosiasi Open Source Indonesia), dan anggota beberapa komunitas (Blogger, Ubuntu, Linux Aktivis, dst)
  • Johan Rukmana : Flash developer, interface tabulasi pemilu hasil karyanya dipuji oleh KPU, dan pada saat ini sedang dalam proses transfer untuk dihosting di server KPU sendiri.
  • Riyogarta Pratikto : lead developer, penggagas awal dari sistim SERIS. Anggota komunitas developer (PHP), Open Source (Ubuntu Indonesia), dan blogger. Juga berfungsi rangkap sebagai interface kami ke IFES, Telkomsel, dan KPU 🙂 Foto bersama Tukang Internet :)
  • Rizki : system administrator, anggota komunitas Open Source (MySQL, Linux). Nicknamenya di komunitas adalah crazynuxer. Kalau sedang terlihat lowong, biasanya langsung ditarik ke tempat saya, dan dipaksa untuk melakukan optimisasi performa sistem 😀
  • Wibisono Sastrodiwiryo : senior developer, dikenal dari komunitas Blogger dan Developer (PHP). Fungsinya amat vital dalam pembangunan sistim ini. Mampu bekerja dengan sangat cepat dan secara maraton ketika diperlukan pada waktu-waktu kritis di proyek ini. Juga banyak memberikan masukan & input yang berharga pada pengembangan sistem. Sekaligus merangkap Seksi Dokumentasi Proyek 🙂 foto-foto yang Anda nikmati di artikel ini adalah hasil karya beliau.
  • Yanmarshus : QA (quality assurance), tugasnya mungkin adalah yang paling penting dalam tim ini. Advokat distro Slackware 🙂 beliau bertugas menjamin bahwa sistim ini bisa memiliki kualitas tinggi, walaupun ada keterbatasan waktu & sumber daya yang signifikan.

Sebelum menutup mata (baca: terkapar di tempat tidur), saya ingin menghaturkan ucapan terimakasih kepada berbagai pihak yang telah memungkinkan berlangsungnya tugas ini dengan lancar :

Screenshot SERIS

  • IFES : LSM dari Amerika ini memberikan bantuan hibah dana, konsultasi, dan dukungan moril kepada tim SERIS. Selama berbulan-bulan saya berhubungan dengan mereka, tidak sekalipun ada usaha mereka untuk mengintervensi proyek ini. Mereka bahkan justru membantu kami mengatasi usaha intervensi dari pihak lainnya. Karena itu maka proyek SERIS ini bisa dijalankan oleh tim kami dengan independen. Secara ringkas, tanpa IFES, maka sistim SERIS ini tidak akan terwujud. Secara khusus terimakasih saya sampaikan kepada Adam, Pak Anhar, Mike, Hank, Mauri, dan rekan-rekan lainnya di IFES. Let it be known that your help is much appreciated. Thanks guys.
  • KPU : terimakasih dan penghargaan kami sampaikan kepada KPU, untuk kepercayaan yang telah diberikan mereka kepada kami, wakil dari berbagai komunitas, untuk membangun sistim Pemilu Nasional ini. Berkat kepercayaan ini maka kami, komunitas, jadi bisa membuktikan bahwa kami pun bisa berkarya dan berkontribusi untuk negara ini. Secara khusus terimakasih kami haturkan kepada Pak Aziz, untuk semua bantuan dan dukungannya kepada tim kami. Kemampuan diplomasi Anda adalah inspirasi & contoh yang sangat berharga bagi saya pribadi.
  • Telkomsel : What can I say – these are a bunch of spectacular guys. Terimakasih kepada Pak Sarwoto dan Pak Irfan, untuk dukungan bagi proyek ini dari sisi senior management. Dedikasi mereka terhadap kesuksesan proyek nasional ini adalah inspirasi bagi kita semua. Terimakasih kami haturkan pula kepada kawan-kawan, comrade, kami di tim Telkomsel — Tetra, Faisal, Nugroho, dan banyak lagi. Anda sekalian adalah kawan seperjuangan kami dalam tugas negara ini. Kami tidak mampu menyampaikan rasa terimakasih kami secara memadai untuk semua kerjasama dan bantuan yang telah Anda berikan. Our millions of thanks are yours.

Sebetulnya masih banyak lagi pihak yang membantu dan turut urun rembuk dalam pekerjaan ini. Beberapa kontribusi mereka bahkan jauh lebih signifikan daripada kontribusi saya pribadi.

Namun, mereka meminta, malah memaksa, saya untuk tidak memaparkankan nama-nama & kontribusi mereka. Mereka adalah pahlawan sejati pada tugas, dan amanah nasional ini. Saya amat bahagia mengenal mereka, dan salah satu kebanggaan terbesar saya adalah pengakuan mereka terhadap saya sebagai “kawan” mereka.
Thanks a zillion guys. You know who you are.

Demikian ringkasan catatan dari proyek SMS Pemilu Pilpres 2009 ini. Saya mohonkan maaf jika ada kekurangan atau kesalahan dalam penulisan artikel ini. Silakan sampaikan pesan Anda pada form komentar, maka saya akan koreksi secepatnya. Terimakasih.

Hidup Open Source Indonesia ! 🙂
.
.
.

MySQL – Sharding

Beberapa hari yang lalu saya hadir di konferensi online yang diadakan oleh komunitas MySQL Indonesia. Praktis, karena online, jadi bisa dihadiri dari mana saja. Tapi sialnya, saya keliru waktu – saya kira dimulai pukul 22:00, ternyata sudah berjalan sejak pukul 20:00 🙂

Untunglah setiap konferensi dicatat, dan kemudian diposting di milis mysql-indonesia@googlegroups.com
Terlampir adalah catatan konferensi online pada tanggal 25 Juni 2009, dengan topik “Horizontal partitioning dengan menggunakan MySQL-Proxy dan Spock“, yang diadakan di channel #id-mysql di irc.freenode.net

Selamat menikmati.

<iis> ok..selamat malam teman-teman
<iis> malam ini confernce # 18
<iis> materinya tentang horizontal partitioning
<iis> yang akan ngizi crazynuxer
<iis> silahkan dimulai..
<crazynuxer> ok 🙂
<crazynuxer> beberapa minggu lalu sudah dijelas kan oleh bro dendie
<crazynuxer> mengenai partition di mysql database
<crazynuxer> cuman itu disebut sebagai vertikal partitioning
<crazynuxer> jadi partition hanya di satu mesin
<crazynuxer> nah horizontal partition ini
<crazynuxer> adalah partition di beda mesin
<crazynuxer> atau istilah kerennya sharding
<iis> jadi istilah yang lebih dikenal sharding?
<crazynuxer> atau klo saya istilahkan lebih mudahnya itu
<crazynuxer> iya
<crazynuxer> intinya sih load balance database berdasarkan record
<crazynuxer> jadi misalnya kita ada 10 record
<crazynuxer> 5 record di server A dan 5 record lagi di server B
<crazynuxer> kira-kira sampai sejauh
<crazynuxer> bisa dibayangin ga
<crazynuxer> sharding itu gmn ?
<mediEvil44> bisa
<crazynuxer> klo dari wikipedia
<crazynuxer> Horizontal partitioning is a design principle whereby rows of a database table are held separately, rather than splitting by columns (as for normalization). Each partition forms part of a shard, which may in turn be located on a separate database server or physical location.
<crazynuxer> jadi kita melakukan scale out
<crazynuxer> untuk meningkatkan performance secara scale out karena dukungan scalabilitas
<iis> scale out itu apa ya? 😀
<crazynuxer> ada scale out dan scale in
<crazynuxer> gini
<crazynuxer> misalkan server kita udah bottleneck nih
<crazynuxer> dan bottleneck itu karena hardware resource yg ga mumpuni atau mencukupi lagi
<crazynuxer> ada 2 solusi untuk masalah ini
* d3ptzz (n=d3ptzz@125.163.244.26) has joined #mysql-id
<crazynuxer> yang pertama kita beli server baru lagi
<crazynuxer> dengan spesifikasi hardware yg lebih bagus dan lebih handal
<crazynuxer> kemudian kita pindah datanya
<crazynuxer> dan jalankan lagi servernya
<crazynuxer> solusi ini disebut scale in
<iis> trus?
<crazynuxer> kelemahannya kita harus mengeluarkan banyak waktu dan tenaga
<crazynuxer> selain itu kita juga harus rugi
<crazynuxer> karena ada downtime
<crazynuxer> lalu ada solusi lagi
<crazynuxer> selain itu
<crazynuxer> scale out istilahnya kerennya
<crazynuxer> jadi kita memakai semacam balancer
* d3ptzz (n=d3ptzz@125.163.244.26) Quit (Remote closed the connection )
<crazynuxer> dan dibelakang balancer itu ada beberapa server sebagai backend nya
<crazynuxer> jadi ketika server kita sudah overload kita tinggal nambah backend lagi dibelakangnya
<crazynuxer> jadi mempunyai skalabilitas yang bagus
<crazynuxer> kita bisa menambah tanpa downtime
<crazynuxer> dan mengurangi backend tanpa downtime
<crazynuxer> karena dari sisi user diakan akan mengakses ipnya balancer
<crazynuxer> lalu oleh balancer akan diberikan atau dibagi ke backend sesuai dengan algoritma
<crazynuxer> sejauh ini masih paham ?
<the_curious> algoritma nya?
<crazynuxer> algoritmanya macem2
<crazynuxer> tergantung jenisnya dan kebutuhannya
<crazynuxer> ada round-roubin, least-connection, weight least connection
<crazynuxer> dll
<crazynuxer> itu juga tergantung dari balancernya support apa ga
<crazynuxer> ada juga yg berdasarkan schema
<crazynuxer> misalnya spock proxy
<crazynuxer> atau mysql-proxy
<crazynuxer> yg berdasarkan algoritma didalam script lua nya
<crazynuxer> nanti yg akan kita bahas adalah mengenai spock proxy
<iis> “script lua nya”, mksdnya apa ya?
<crazynuxer> dan mysql-proxy sebagai software horizontal partition di mysql
<crazynuxer> lua itu jenis bahasa pemrograman
<crazynuxer> yg biasanya di buat untuk game 😀
<crazynuxer> sampai sejauh ini bagaimana ?
<the_curious> 😀
<the_curious> asiiikkk
<the_curious> 😀
<tundra1> lumayan
<crazynuxer> ok
<mediEvil44> keren
<crazynuxer> di mysql sendiri ada beberapa software yg digunakan untuk kebutuhan ini
<crazynuxer> bahkan sudah ada engine yg sudah diciptakan
<crazynuxer> ada mysql-proxy,spockproxy , sqlrelay dll
<crazynuxer> mysql-proxy+hscale
<crazynuxer> dan untuk engine sudah ada engine baru
<crazynuxer> namanya spider engine
<crazynuxer> cuman gue belum nyoba
<crazynuxer> yg udah gue coba mysql-proxy dan spock proxy
<crazynuxer> 😀
<iis> mysql-proxy dan spock proxy itu software ?
<crazynuxer> pertama kita mulai dengan mysql-proxy ya 😀
<crazynuxer> iya
<crazynuxer> mysql-proxy sekarang masih dalam tahap alpha
<crazynuxer> dan belum layak untuk production
<crazynuxer> hanya untuk main-main dan belajar saja
<crazynuxer> 😀
<crazynuxer> itu yang dijelaskan di manualnya mysql-proxy
<crazynuxer> untuk manualnya silahkan download di mysql.com
<crazynuxer> 🙂
<crazynuxer> cuman sebenernya mysql-proxy ini sangat flexible karena mendukung scripting language
<crazynuxer> menggunakan lua
<the_curious> brarti belajar Lua juga dong
<the_curious> kekekekeke
<crazynuxer> oh ya untuk sedikit info saya menggunakan linux ketika melakukan ujicoba kedua software ini
<crazynuxer> hehehe
<crazynuxer> iya
<crazynuxer> tidak pun tidak2 apa
<crazynuxer> karena sudah banyak scritpt yg siap pakai
<crazynuxer> tapi…
<the_curious> Enakan bisa
<crazynuxer> keahlian untuk membaca script tetep harus dimiliki
<the_curious> buat kustomisasi
<the_curious> 😀
<crazynuxer> karena untuk proses troubleshoot 🙂
<crazynuxer> klo bisa ya berarti lebih mantap 😀
<crazynuxer> ketika kita akan melakukan installasi mysql-proxy itu dari source
<crazynuxer> jadi harus compile 🙂
<crazynuxer> dan disource nya itu ada banyak contoh script2 lua yg bisa di coba
<crazynuxer> 🙂
<crazynuxer> mysql-proxy tidak hanya bisa melakukan load balance
<crazynuxer> tapi bisa memanipulasi query
<crazynuxer> 🙂
<the_curious> mksdnya?
<crazynuxer> jadi juga bisa dipakai untuk menambah fitur keamanan
<the_curious> di manipulasi nya gimana nih
<crazynuxer> karena dia bisa membaca dan menganalisa query
<crazynuxer> yg bisa dilakukan oleh mysql-proxy
<crazynuxer> create new commands
<crazynuxer>  filter queries (deny specific queries)
<crazynuxer>  collect statistics on usage
<crazynuxer>  implement usage quotas
<crazynuxer>  execute shell commands
<crazynuxer> load balancing servers
<crazynuxer> jadi beberapa hal diatas bisa dijalankan oleh mysql-proxy
<crazynuxer> cuman satu kelemahan mysql-proxy
<crazynuxer> 😀
<crazynuxer> belum stable 🙂
<crazynuxer> untuk install tinggal download
<crazynuxer> lalu ekstrak menggunakan perintah tar
<crazynuxer> tar zxvf mysql-proxy.tar.gz -C /usr/local/src/
<crazynuxer> cd /usr/local/src/mysql-proxy/
<crazynuxer> ./configure –prefix=/opt/mysql-proxy
<crazynuxer> make -j4 && make install
<crazynuxer> finish
<tundra1> sama di semua linux mas
<crazynuxer> yups 🙂
<crazynuxer> harusnya sama semua
<crazynuxer> yang make -j4 itu bisa diganti make saja
<crazynuxer> 🙂
<crazynuxer> -j4 itu jika kita menggunakan prosesor yg quad core
<crazynuxer> klo cuman single core ya make saja
<crazynuxer> 🙂
<crazynuxer> biar lebih cepet compile nya
<crazynuxer> ada pertanyaan ?
<crazynuxer> sejauh ini masih paham ?
<the_curious> yang lain
<the_curious> 😀
<the_curious> Bobo yah
<the_curious> Ahahaha
<mediEvil44> lumayan
<iis> lagi liatin scriptnya 😀
<crazynuxer> ada cara yg lebih mudah jika pake ubuntu 😀
<crazynuxer> tinggal apt-get install mysql-proxy
<mediEvil44> ada di repo
<tundra1> wuih enak ya pake ubuntu..
<the_curious> 😀
<the_curious> slacker yah mas tundra
<the_curious> kekekekeke
<the_curious> source aja ams
<the_curious> 😀
<the_curious> Mas
<crazynuxer> —
<crazynuxer> — read_query() gets the client query before it reaches the server
<crazynuxer> —
<crazynuxer> — @param packet the mysql-packet sent by client
<crazynuxer> —
<crazynuxer> — the packet contains a command-packet:
<crazynuxer> — * the first byte the type (e.g. proxy.COM_QUERY)
<crazynuxer> — * the argument of the command
<crazynuxer> —
<crazynuxer> — http://forge.mysql.com/wiki/MySQL_Internals_ClientServer_Protocol#Command_Packet
<crazynuxer> —
<crazynuxer> — for a COM_QUERY it is the query itself in plain-text
<crazynuxer> —
<crazynuxer> function read_query( packet )
<crazynuxer> if string.byte(packet) == proxy.COM_QUERY then
<crazynuxer> print(“we got a normal query: ” .. string.sub(packet, 2))
<crazynuxer> end
<crazynuxer> end
<crazynuxer> itu contoh script yg simple nya
<crazynuxer> jadi nanti ketika anda menjalakan mysql proxy dan melakukan query
<crazynuxer> akan tampil we got a normal query: “query_anda”
<crazynuxer> di console 🙂
<crazynuxer> di mysql-proxy ini
<crazynuxer> ketika kita menjalankan
<crazynuxer> akan ada 2 port yg dilisten
<crazynuxer> yg pertama untuk admin port
<crazynuxer> yg kedua itu port untuk balancer yg akan diakses user atau aplikasi
<crazynuxer> saya menggunakan port 4041 untuk admin nya
<crazynuxer> 4040 untuk diakses user atau aplikasi
<crazynuxer> berikut saya kasih contohnya
<crazynuxer> bentar ssh dulu ke mesinnya
<crazynuxer> :LD
<crazynuxer> 😀
<crazynuxer> untuk menjalankannya
<crazynuxer> /usr/sbin/mysql-proxy –proxy-lua-script=/opt/proxy/lib/mysql-proxy/example.lua –proxy-address=xxx.xxx.xxx.xxx:4040 –proxy-backend-addresses=xxx.xxx.xxx.xxx:3306 –proxy-backend-addresses=xxx.xxx.xxx.xxx:3306
<crazynuxer> mysql-proxy –> itu binary nya
<crazynuxer> –proxy-lua-script itu agar mysql-proxy menggunakan script example.lua
<crazynuxer> –proxy-address=xxx.xxx.xxx.xxx:4040 ini adalah sebagai ip dan port yg akan diakses oleh client atau aplikasi
<crazynuxer> atau ip balancer nya
<crazynuxer> sedangkan backend address nya itu adalah server2 database yg dibelakang balancer
<crazynuxer> setelah menjalankan perintah diatas kita bisa ngecheck apakah port 4040 dan 4041
<crazynuxer> sudah listen
<crazynuxer> root@crazynuxer:~# netstat -nltp
<crazynuxer> Active Internet connections (only servers)
<crazynuxer> Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
<crazynuxer> tcp 0 0 xxx.xxx.xxx.10:4040 0.0.0.0:* LISTEN 29432/mysql-proxy
<crazynuxer> tcp 0 0 0.0.0.0:4041 0.0.0.0:* LISTEN 29432/mysql-proxy
<crazynuxer> tcp 0 0 xxx.xxx.xxx.9:3306 0.0.0.0:* LISTEN 25706/mysqld
<crazynuxer> tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 19049/sshd
<crazynuxer> tcp6 0 0 :::22 :::* LISTEN 19049/sshd
<crazynuxer> kita lihat sudah listen
<crazynuxer> klo gitu kita akan coba melakukan query ya
<crazynuxer> mysql -uroot -h xxx.xxx.xxx.10 -P 4040 -e ‘select * from mysql.user’ -p
<crazynuxer> dan masukkin passwordnya
<crazynuxer> maka diconsole akan tampil
<crazynuxer> Hello world! Seen the query: select @@version_comment limit 1
<crazynuxer> Hello world! Seen the query: select * from mysql.user
<crazynuxer> sesuai dengan isi script yg ada diexample.lua
<crazynuxer> berikut isi example.lua
<crazynuxer> function read_query(packet)
<crazynuxer> if string.byte(packet) == proxy.COM_QUERY then
<crazynuxer> print(“Hello world! Seen the query: ” .. string.sub(packet, 2))
<crazynuxer> end
<crazynuxer> end
<crazynuxer> print(“test”
<crazynuxer> )
<crazynuxer> jadi di mysql-proxy ini bisa memanipulasi query dan me load balance
<crazynuxer> sesuai dengan isi script lua nya
<crazynuxer> jadi sangat2 flexible
<crazynuxer> dan untuk load balance ini di mysql-proxy sudah ada plugin
<crazynuxer> namanya hscale
<crazynuxer> bisa coba akses situsnya
<crazynuxer> hscale.org klo ga salah 🙂
<crazynuxer> itu juga dalemnya lua
<crazynuxer> jadi nantinya proses load balance nya akan dihandle oleh hscale
<crazynuxer> dengan script lua didalamnya
<crazynuxer> untuk menjalankannya silahkan download di hscale.org
<crazynuxer> dan untuk installation tinggal download dan ekstrak kemudian set env variable dan local variable nya
<crazynuxer> sesuai dengan petunjuk dari situs hscale.org
<crazynuxer> itu sedikit info mengenai mysql-proxy 🙂
<crazynuxer> untuk ubuntu konfigurasinya ada di /etc/default/mysql-proxy dan /etc/init.d/mysql-proxy
<crazynuxer> 🙂
<crazynuxer> ok sekarang kita akan bahas spock proxy
<crazynuxer> spockproxy ini sudah bisa digunakan di production
<crazynuxer> ini dikeluarkan oleh spock.com
<crazynuxer> salah satu search engine 🙂
<crazynuxer> coba deh liat www.spock.com
<crazynuxer> dan ini merupakan forking dari mysql-proxy
<crazynuxer> untuk situs resminya
<crazynuxer> spockproxy
<crazynuxer> http://spockproxy.sourceforge.net/
<crazynuxer> spockproxy yg terbaru baru versi 0.8.7
<crazynuxer> spockproxy ini hampir sama dengan mysql-proxy
<crazynuxer> cuman spockproxy tidak pake lua
<crazynuxer> dan horizontal partition menggunakan system range base
<crazynuxer> jadi misalnya ada 10 query
<crazynuxer> nanti dia akan bagi berdasarkan range yg sudah disetting
<crazynuxer> didalam database schema
<crazynuxer> jadi spock ini dalam pengaturannya menggunakan database schema
<crazynuxer> didalam database schema itu terdapat 3 buah table
<crazynuxer> shard_database_directory
<crazynuxer> shard_table_directory
<crazynuxer> shard_range_directory
<crazynuxer> table database directory itu untuk mengatur koneksi
<crazynuxer> jadi pendefinisian backend beserta database yg mau disharding
<crazynuxer> klo table shard_table_directory itu berdasarkan table yg mau disharding
<crazynuxer> kita mendefinisikan column
<crazynuxer> sedangkan range yg range yg akan kita atur nanti
<crazynuxer> jadi misalnya kita ada 10 query
<crazynuxer> range query 0-5 di lemparkan kemesin backend database A
<crazynuxer> 6-10 itu dilempar ke mesin database B
<crazynuxer> dan seterusnya
<crazynuxer> sampai sejauh ini bagaimana ?
<the_curious> masalahnya
<the_curious> 😀
<the_curious> kalo ga tau wuery nya berapa banyak
<the_curious> gimana?
<the_curious> iya kan?
<the_curious> 😀
<the_curious> *query
<crazynuxer> hehehe
<crazynuxer> yups betul banget saudara digit 😛
<crazynuxer> bagaimana dengan yg lain ?
<crazynuxer> untuk sejauh ini ?
<sufehmi> halo, saya agak sedikit rancu soal range query
<the_curious> iya pak
<sufehmi> jadi itu benar2 berdasarkan urutan query yang datang ya?
<sufehmi> bukan bagaimana isi querynya?
<sufehmi> oooo ok
<sufehmi> eh sori kirain mengkonfirmasi, layar saya terlalu terang
<sufehmi> bentar…. ***atur brightness layar**
<crazynuxer> berdasarkan isi nya
<crazynuxer> jadi misalnya kita setting id sebagai column yg ingin disharding
<crazynuxer> maka spock ini akan melihat idnya
<crazynuxer> lalu berdasarkan range nya
<crazynuxer> dia akan lempar ke backend
<crazynuxer> jika didalam range tidak ada
<crazynuxer> maka akan ditolah
<crazynuxer> ditolak
<crazynuxer> itu yang saya alami kemarin 🙂
<sufehmi> oke, menarik… jadi kita bisa setup semacam rule ya
<sufehmi> untuk menentukan query yang mana untuk ke backend yang mana
<crazynuxer> iya
<sufehmi> kalau berdasarkan urutan datangnya query saja, gimana?
<sufehmi> bisa atau tidak ya?
<sufehmi> memang terlalu simple sih, tapi kadang ada kasus yang sudah cukup dengan seperti ini
<sufehmi> jadi misalnya; query yang pertama datang akan di opern ke backend1
<sufehmi> opern=oper
<sufehmi> query kedua dioper ke backend2
<sufehmi> query ketiga kembali ke backend1
<sufehmi> query keempat ke backend2
<sufehmi> dst
<crazynuxer> iya
<sufehmi> jadi cuma sekedar load balancer sederhana
<crazynuxer> kelemahan kita harus set itu semua 🙂
<sufehmi> hehehe
<crazynuxer> iya sederhana sekali cara kerjanya
<crazynuxer> waktu kita select pun
<crazynuxer> sebenernya si spock ini melakukan query select di semua backend
<sufehmi> ooo
<sufehmi> ini topik yg sangat menarik, karena ada bbrp customer saya yang sudah perlu pakai multiple backend
<sufehmi> pada saat ini, ada bbrp customer saya yang traffiknya setara dengan republika.co.id
<sufehmi> jawapos.co
<sufehmi> padahal servernya cuma dual-core, 2 GB RAM 🙂
<sufehmi> tertolongnya karena saya pakai squid, sehingga mayoritas hits mengenai squid. Bukan ke Apache/PHP
<sufehmi> tapi, traffic nya bertambah terus
<sufehmi> jadi musti siap2 utk multiple backend juga
<crazynuxer> iya 🙂
<crazynuxer> sebaiknya mulai membuat solusi scale out 🙂
<sufehmi> nah, sharding selama ini memerluka coding ulang dari web-apps ybs
<sufehmi> dengan spock, jadi ada harapan bahwa ini tidak perlu
<crazynuxer> iya 🙂
<sufehmi> jadi shardingnya di handle di level “middleware” / spock
<sufehmi> bukan di aplikasi
<sufehmi> wah, sedap betul ini 🙂
* hilman (n=adit@125.161.205.58) has joined #mysql-id
* hilman is now known as adit
<adit> ya telat ya
<crazynuxer> sepertinya begitu dit 🙂
<adit> 🙁
* sufehmi sambil testing game StarTrek Voyager : Elite Force di Ubuntu 9.04 🙂
<crazynuxer> hahaha
<the_curious> donlot dimana
<the_curious> di share dunk
<the_curious> Hahahaha
<adit> tadi keasyikan nonton opera van java
* the_curious mupeng
<adit> 😀
<crazynuxer> bagaimana sejauh ini yg masih belum jelas ?
<adit> tadi ngebahas apa ki?
<adit> tumben banget info nya telat di milis
<adit> lagi pada sibuk ya? ;))
<crazynuxer> hehehe
<crazynuxer> yups
<crazynuxer> jadi konsepnya sperti itu untuk spockproxy
<crazynuxer> untuk install nya silahkan download
<crazynuxer> lalu ekstrak,
<crazynuxer> install dengan perintah
<crazynuxer> ./autogen.sh
<crazynuxer> ./configure
<crazynuxer> make
<crazynuxer> dan make install
<crazynuxer> untuk ubuntu jaunty
<crazynuxer> harus sedikit menyesuaikan gcc nya 😀
<crazynuxer> untuk yg pake centos tidak perlu
<crazynuxer> untuk lebih detailnya nanti akan saya demokan di mysql monthly meeting
<crazynuxer> 🙂
<crazynuxer> demikian dari saya
<crazynuxer> jika ada yg mau ditanyakan , silahkan
<adit> membahas apa toh ? 😀
<adit> sangat2 ketinggalan neh
<crazynuxer> adit: loe lihat log nya aja 😛
<adit> ok2 :p
<iis> jadi gmn teman-teman?
<iis> ada yang mau tanya ke nuxer?
<crazynuxer> bagaimana ?
<iis> sepertinya tidak ada yang bertanya nih..?
<iis> kalo gak ada mau ditutup nih confernce nya..
<crazynuxer> ok 🙂
<mediEvil44> ok
<iis> baiklah…
<iis> conference mysql indonesia ke 18 berakhir disini
* udie_mysql (n=chatzill@114.123.173.175) Quit (“ChatZilla 0.9.85 [Firefox 3.0/2008052906]” )
<iis> kalo nanti tiba2 teringat ada yang mau ditanyain ttg materi ini, pm aja ke nuxer
<iis> atau kirim ke milis juga gpp..
<iis> lognya akan segera dikirim ke milis
<mediEvil44> sip
<crazynuxer> bener
<iis> terima kasih atas kesediaan temen2 ikut confernce malam ini
<iis> assalamu’alaikum semuanya..
<crazynuxer> waalaikumsalam
<iis> sampai jumpa di confernce berikutnya
* adit (n=adit@125.161.205.58) has left #mysql-id
<iis> jangan lupa mysql meeting 2009.06 tanggal 4 juli di kantor SUN di Jl. Sudirman

Materi Workshop @ Timor Leste – gratis + copyleft

Beberapa hari yang lalu saya diundang oleh Ristek untuk berkunjung ke Timor Leste selama 5 hari. Disana saya bersama Pak Onno Purbo memberikan workshop / seminar selama 3 hari. Untuk acara tersebut, saya membuat 4 buah dokumen training / tutorial.

Semua dokumen tersebut saya buat dengan lisensi GPL v2. Artinya, Anda bebas menggunakannya untuk kebutuhan Anda sendiri. Termasuk memodifikasinya untuk keperluan Anda.

Terlampir adalah dokumen-dokumen ybs :

[1] Cara Cepat Pemrograman Web – bagian 1 : berbasis Open Source (1,2 MB)
[ format PDF (280 KB)]
[2] Cara Cepat Pemrograman Web – bagian 2 : berbasis Open Source (1,2 MB)>
[ format PDF (282 KB)]
[3] Pengenalan Virtualisasi (1,6 MB) [ format PDF (888 KB)]
[4] Tutorial Open Office (4,5 MB) [ format PDF (2,9 MB)]

Dokumen ke 4 dibuat oleh Hasan (Ardelindo.com) dengan lisensi GPL. Sebetulnya dokumen tersebut membahas Open Office v2. Karena lisensinya bebas, maka saya jadi bisa meng update dokumen tersebut untuk versi 3, melakukan beberapa editing, beberapa revisi – dan lalu menyediakannya kembali untuk Anda sekalian.

Dengan membebaskan dokumen / artikel, yaitu melisensikannya secara bebas (GPL atau setara), maka dokumen tersebut seakan-akan menjadi hidup. Dia jadi bisa diakses oleh siapa saja, bermanfaat oleh siapa saja, dan bahkan jadi bisa terus relevan sesuai dengan perkembangan zaman.
Terimakasih kepada Hasan yang sudah menginspirasi saya untuk membebaskan dokumen-dokumen saya sendiri juga.

Kembali ke acaranya; mengenang kunjungan tersebut, terlampir adalah lagu “Juni di kota Dili” oleh Rita Effendi. Selamat menikmati 🙂

Mobile Dev Joy : The Adventure with Mobile Browser

My post today will be rather technical, but I’m sure some will find it interesting because it’s about a topic that’s not as widely discussed as others. Some may even find it useful. It’s about my brief stunt with mobile development.

Some time ago I was asked to look at a web-based apps which is to be used with a mobile phone. A Nokia E70 to be exact. It’s based on Symbian S60 3rd edition platform. Basically, a Javascript which is supposed to run won’t. So I looked into it.

This piece of Javascript is vital for usability reasons. Without it, the input process will take up to 50% longer. So I thought, yeah I’ll set aside a bit of my time and hack this.

Then I realized that when I thought the browser situation on the PC / desktop platform is a mess; it actually look very tidy and well-ordered compared to the situation on the mobile platform 🙂

First, mobile platform is much more limited — in terms of CPU / processor power, memory capacity, secondary storage (hard disk / flash ram) capacity, power, etc. These limitations in turn must be taken into account by all mobile browsers. Which causes various quirks / incompatibilities to surface when you dig deeper into it.

Second, free(dom) software has not yet made as much impact here as it is on the desktop. Therefore we have plethora of proprietary technologies, which sometimes doesn’t work together / conform to the open standards.

Third, there’s not as many documentations available on the topic. As I googled around, I realized in horror that I may have to hack around much more than I thought necessary.

Back to the hack – first thing I tried was to install Opera mobile (not Opera mini). Yes, we’re willing very willing to pay Opera if it works. In short – the Javascript works on it.
Unfortunately, Opera mobile crashes around so much, it’s impossible to enjoy any kind of productivity with it.

Also there are a LOT of quirks with Opera mobile when used with keypad.
They are small things, but gets annoying very quickly. Which doesn’t help when you’re trying to accomplish good amount of work.

Maybe it’d be better if I try an older version of it, but seeing it consume too much RAM anyway; I thought I’ll give the built-in browser a try first.

Called “Nokia Mini Map Browser” because of its “mini map” feature, it’s speedier than Opera mobile and doesn’t use as much memory. However, the Javascript on our web-apps doesn’t work there.

So I thought, perhaps this browser doesn’t support the latest version of Javascript. Or worse, perhaps it has its own version of Javascript. That would suck greatly.
Anyway, I started to try looking for documentation on the topic, also for a tool to help me debug the problems there.

I found Nokia Mobile Browser Simulator 4.0. It’s Java-based. However, it seems to be hard-coded for Windows, with Windows installer too. Ok so I found a Windows machine, and set it up.

To my dismay, it doesn’t work very reliably. To be precise, it won’t even load the web-apps. While the actual browser in Nokia E70 will display it correctly.

With documentation on the subject (Javascript capabilities of Nokia Mini Map Browser) also very lacking, this is starting to look like a dead end.
Until I found out that the Nokia Mini Map Browser is actually an open source project !

Code named “S60browser”, or “S60Webkit”, it’s available from opensource.nokia.com
There’s hope – if there’s code available, then anything can always be traced / found out.

My sharp-minded readers will quickly realize another thing – yes, it’s basically the same as the Safari browser, the one on Mac OS X 🙂

Nokia Mini Map Browser aka S60browser aka S60Webkit is based on another open source project called WebKit. Which happens to be the foundation used as well by Apple to build their browser, Safari.

Now this is getting interesting 🙂

I dug deeper into these new clues, and began to feel sure that both browser’s cores are indeed identical. Which means that I’d be able to debug the problem with Safari browser.

safari-pref-advanced
I fired up Safari, invoked the Preferences screen, and clicked on Advanced icon. I enabled “Show Develop menu in menu bar”, then I restarted Safari. A new menu then showed up. I chose Develop – Show Web Inspector (also accessible via Cmd-Alt-i)

I got the detailed error message in no time. It’s “Object [object HTMLInputElement] (result of expression document.getElementById(“testForm”).submit) does not allow calls“.
As I already mentioned, the script works on Firefox and Opera, but somehow it doesn’t work on Safari. So it’s Googling time again.

Turn out it’s a generic error message whenever Safari have problems executing a function.
So it could be that the function doesn’t exist. Or the function name is mispelled. Or any other function-calling related problems.
Great, looks like this will cause more questions than it answers…

Thankfully I wasn’t on the wild goose chase for too long. A comment on a blog post gave me the hint I needed :

I gave a form button the *same name* as the function it was calling in its onclick. This error was the result.

Joshua, thank you. That’s exactly what happened in my case 🙂
A line in the script is as follows :

document.getElementById(“testForm”).submit();

While there’s also a button on the same script named, you guessed it, submit :

<input type=”submit” name=submit />

So Safari got confused, and threw this generic error message.

And it’s very easy to fix, I just need to change the button’s name value to something else – and it works now on Safari & Nokia Mini Map Browser, as well as on Firefox and Opera.

I love happy endings 🙂

Moral of the story ? Open source software empowers developers.

And this is not the first time – my MSc thesis was about to fail; when I found ping’s source code on the Internet. It gave me the hint needed to continue the project. The thesis got among the best mark at that year.

With availability of the source, we can learn from the brightest minds on Earth with ease. The knowledge and wisdom become available for all.
Even to the ones with feeble minds, like me.

Here’s another cheer for free(dom) software movement : May the source be with you 🙂

(oh, and also, all hail Google !)

Monty Python Goes Marketing 2.0

Beberapa waktu yang lalu, datacenter yang menghosting salah satu server saya mengirimkan sebuah surat yang mengejutkan – DMCA notice dari Lionsgate Films. 

Surat tersebut menuduh bahwa server saya telah terlibat dalam pembajakan salah satu film mereka, yaitu Transporter 3. Sebuah tuduhan yang sangat serius. Ditambah lagi bahwa server saya tersebut berada di Amerika, sehingga bisa diproses berdasarkan hukum mereka (yang ngawur berat itu).

Masalahnya :

(1) Saya tidak pernah membajak film tersebut 😀

(2) Server tersebut masih kosong, jadi tidak mungkin hal tersebut dilakukan oleh customer saya

Sekedar meyakinkan, saya lakukan search terhadap seluruh isi hard disk server tsb, dan hasilnya memang bersih. Lalu sambil nyengir, saya kirimkan hasilnya ke datacenter saya, yang menerimanya sambil nyengir juga 🙂 sepertinya ini bukan kejadian yang pertama kali, he he.

Ajaib – memang IP address yang tercantum di surat tersebut adalah milik server saya. Tapi padahal kan tidak ada pelanggaran yang saya lakukan. Ha ha ha…  😀  sekedar mendeteksi IP address saja tidak becus. 

Jadi bergidik membayangkan kalau saya adalah warga Amerika – dan kena tuduhan yang keliru seperti ini. Hidup saya bisa hancur berantakan (untunglah nenek Sarah mendapat bantuan dari EFF), walaupun saya tidak melakukan kesalahan apapun.

Anyway, ini adalah salah satu alasan saya sangat mendukung gerakan Creative Commons. Nyaris seluruh foto saya di flickr.com berlisensi bebas. Juga seluruh artikel di blog ini.

Konten yang bebas bisa sangat bermanfaat bagi sangat banyak orang. Saya sudah merasakannya sendiri. Dan karena itu juga berusaha memberikan kontribusi dalam hal ini. 

Tidak itu saja – konten yang bebas juga menguntungkan pemiliknya secara finansial. Ini sudah terbukti berkali-kali selama puluhan tahun.

Contoh: dulu para pemilik kontek protes bahwa VHS / betamax adalah sarana pembajakan. Kemudian mereka menyadari bahwa ini adalah pangsa pasar baru.

Maka  kemudian selama puluhan tahun, mereka meraup keuntungan yang sangat besar dari sini.

Ketika stasiun radio mulai bermunculan, para pemilik konten protes. “Ini adalah pembajakan konten kami, untuk keuntungan para pemilik stasiun radio!“, begitu kira-kira protes mereka.
Belakangan mereka menyadari bahwa ini adalah promosi gratis.  Lagu yang sering diputar di radio cenderung mengalami peningkatan penjualan. Maka kemudian malah terjadi kongkalikong antara pemilik konten dengan pemilik/jaringan stasiun radio – untuk mendongkrak penjualan lagu tertentu.

Walaupun tetap saja mereka berusaha mendapatkan “uang preman” dari stasiun radio…. *sigh*, human’s greed know no bound, indeed.

Di tengah berbagai kekonyolan ini, sebuah kelompok yang terkenal dengan kekonyolannya malah melakukan sesuatu yang brilian. 

Luar biasa – kru Monty Python menyediakan berbagai klip videonya di Youtube.com, dan mengakibatkan peningkatan penjualan DVD Monty Python sampai 23000% !

Di zaman elektronik ini, ada banyak kesempatan. Dan yang akan menang adalah mereka yang kreatif. Kru Monty Python mungkin konyol, tapi mereka bukan orang bodoh & rakus. Maka mereka bisa meraup keuntungannya.

Posting ini saya cantumkan juga di kategori OpenSource, karena ini adalah juga bagian dari keterbukaan. Open software, Open content, malah juga Open hardware — keterbukaan adalah hal yang penting bagi peradaban manusia. 

Selama beribu-ribu tahun, manusia selalu saling membagi penemuan mereka. Sehingga peradaban manusia bisa berkembang tanpa perlu mengulang-ulang melakukan hal yang sama. Dan semua penemuan jadi bisa bermanfaat bagi semua pihak – bukan cuma untuk segelintir orang saja. 

Selamat dan salut sekali lagi kepada kru Monty Python. Semoga teladan yang baik ini bisa ditiru oleh kita semua !

Terlampir adalah surat DMCA dari Lionsgate Films :) 

 

Continue reading Monty Python Goes Marketing 2.0

WordPress, dan blogging, di Indonesia

Satu acara yang saya terpaksa lewatkan dengan penuh sayang adalah Wordcamp Indonesia. Tapi namanya deadline harus dikalahkan terlebih dahulu. Jadi saya gembira sekali ketika ada laporannya di blog Kun.co.ro.

Beberapa informasi yang menarik :

  1. B.Indonesia menduduki rangking ke #3 di WordPress.com, hanya kalah dari b.Inggris & Spanyol
  2. B.Indonesia adalah yang tumbuh tercepat nomor #2 di WordPress.com
  3. Pengguna WordPress.org dan WordPress.com cukup berimbang : ini kejutan yang cukup menarik. Ternyata cukup besar pengguna WordPress yang bisa memasangnya sendiri (download dari wordpress.org, lalu setup)
  4. Update: Ma.tt Mullenwegg mengatakan bahwa kini lebih besar kemungkinan kita mendapatkan uang KARENA blog – bukan DARI blog. Akur sekali, ini juga pengalaman saya selama ini.

Banyak kesimpulan menarik dan potensi peluang yang bisa ditarik dari beberapa data ini.
Satu contoh, jika traffic WordPress.com dari Indonesia menyamai traffic Detik.com (dan mengalahkan Kompas.com), maka dengan data dari poin 3 – berarti traffic WordPress.com DAN WordPress.org bisa 2x lipat dari traffic Detik.com. Wow.

Update: Detil & informasi lebih lanjut bisa dibaca di kanal Wordcamp di Twitter (trims mas Koen dkk).

Inilah kekuatan platform blog yang dimungkinkan dengan software open source. Beberapa dari kita mungkin masih ingat bagaimana blog dulu tidak terlalu meledak ketika toolsnya masih proprietary dan/atau mahal dan/atau tidak terbuka. Kini ketika platform blog telah dibebaskan dengan berbagai software blog open source yang nyaman digunakan, maka kita semua yang meraup manfaatnya.

Terus nge-Blog ! 🙂

Virus di Linux

Salah satu pertanyaan lainnya yang paling banyak ditanyakan di berbagai seminar mengenai Open Source / Linux adalah tentang virus – apakah ada virus di Linux ?

Secara teknis, ya, ada virus di Linux. Itu adalah fakta yang tidak bisa dibantah.
Namun itu belum menjelaskan – karena SEMUA sistim komputer pasti bisa dibuatkan virusnya. Yang lebih penting untuk diketahui adalah kemudahan penularannya. Karena jika ada banyak virus, namun tidak menyebar, maka sama saja seperti dengan tidak ada virus kan?

Karena itu mari kita ubah pertanyaannya :
Apakah mudah bagi virus untuk menyebar di Linux ?

Jawabannya : Tidak 🙂
Bagi seekor virus, sangat sulit untuk menyebar di platform Linux.
Apalagi sampai pada level epidemik, dimana bisa ada jutaan komputer yang terinfeksi setiap harinya. Ini akan sangat sulit terjadi di Linux, dan memang belum pernah ada yang berhasil melakukannya.

Terlampir adalah sebuah email diskusi soal ini dengan kawan saya :

menurut saya linux tidak kebal terhadap virus, hanya bedanya dengan
windows:
– windows sudah lebih banyak yang pakai (pembuat virus tentu saja ingin
“ketenaran” semakin banyak yg terinfeksi akan membuatnya lebih bangga)
– varian linux terlalu banyak –> capek bikin virus yang bervariasi per
distro

beberapa reference:
http://www.desktoplinux.com/articles/AT3307459975.html
http://www.theregister.co.uk/2003/10/06/linux_vs_windows_viruses

Artikel2 ini sudah dibuat sejak tahun 2003. Dan saat ini (desktop) Linux jelas sudah JAUH lebih populer daripada 5 tahun yang lalu – sehingga mustinya sudah jauh lebih menarik untuk menjadi target .

Pertanyaannya: dimana virus Linux ? 🙂

Ada beberapa penyebab kenapa virus sulit berkembang di Linux :

(1) Secure default install : closed services :
Berbagai distro Linux sekarang sudah jauh lebih bijak daripada 5 tahun yang lalu. Misalnya, default install Ubuntu bahkan tidak menjalankan SSH server. Default install berbagai distro Linux sekarang tidak ada menghasilkan open listening port.

(2) Secure default install : non-admin default access :
Berbagai distro Linux sekarang mempraktekkan hal ini dengan baik, dan berimbang dari segi kemudahan vs keamanan : dengan implementasi sudo, maka sehari2 user bisa bekerja dengan produktif dengan aman karena bukan sebagai root user.

(3) Application-level firewall :
Merupakan software terpisah di Windows — di beberapa distro ini adalah layanan yang sudah disertakan secara default. Misal: AppArmor di Suse/Imunix/Ubuntu/dll.

App-firewall kini makin penting, karena makin banyak security hole di aplikasi yang di eksploit — bukan lagi di level operating system.

Dan masih ada beberapa hal lainnya.
Bagi pemerhati topik computer security, sangat menggembirakan melihat bahwa ada tindakan-tindakan proaktif dari berbagai vendor Linux. Dan karena disandarkan pada pondasi security yang solid, Unix/Linux, maka hasilnya juga cukup menggembirakan.
Yaitu tercapainya keseimbangan antara security dengan kemudahan pemakaian.

Menilik semua faktor tersebut, saya kira akan sulit bagi sebuah virus untuk dapat berkembang sampai ke level epidemik — sebagaimana yang terjadi dengan berbagai virus di platform Windows.

Salam, HS

Satu lagi pendapat yang menarik adalah dari John Stewart, Chief Security Officer Cisco. Pada pidatonya di konferensi AusCERT 2008, John menyatakan bahwa karena anti-virus yang ada tidak efektif (komputer tetap bisa terinfeksi), maka sebetulnya sia-sia / tidak ada gunanya.

Dikutip :

By Liam Tung, ZDNet Australia
Posted on ZDNet News: May 21, 2008 5:41:27 AM

Companies are wasting money on security processes–such as applying patches and using antivirus software–which just don’t work, according to Cisco’s chief security officer John Stewart.

Speaking at the AusCERT 2008 conference in the Gold Coast yesterday, Stewart said the malware industry is moving faster than the security industry, making it impossible for users to remain secure.

“If patching and antivirus is where I spend my money, and I’m still getting infected and I still have to clean up computers and I still need to reload them and still have to recover the user’s data and I still have to reinstall it, the entire cost equation of that is a waste.

“It’s completely wasted money,” Stewart told delegates. He said infections have become so common that most companies have learned to live with them.

Jadi kuncinya adalah pencegahan. Jika suatu sistem sulit untuk ditembus, maka virus akan sulit untuk bisa menyebar. Dan pada pembuat virus pun jadi kehilangan minat.

Dengan menggunakan Linux, kita sudah secara efektif memblokir berbagai macam virus / trojan / spyware. Kita jadi bisa bekerja dengan tenang tanpa perlu memusingkan soal virus lagi. Sangat menyenangkan bukan ?

Open Source Software : Terbuka, jadinya tidak aman ?

Hampir pada setiap seminar open source saya mendapatkan pertanyaan-pertanyaan yang menarik. Mulai dari yang lugas & tanpa basa-basi (halo Medan!), sampai yang menanyakan “udang di balik batu” dari gratisnya software Open Source 🙂
Salah satu yang paling berkesan adalah pertanyaan dari seorang peserta yang kebingungan : “kalau source code programnya dikasih, gimana datanya bisa aman?”

Para peserta kemudian mulai bergumam satu dengan lainnya. Mungkin mereka menganalogikan software seperti rumah, dan data seperti isi rumahnya ya. Kalau pintu rumahnya terbuka – bagaimana isi rumahnya mau aman ?

Dan pertanyaan ini bukan cuma muncul satu-dua kali. Salut sekali bisa ada banyak yang mampu berpikir kritis seperti ini. Mereka langsung bisa menyadari hal yang paradoks / bertolak belakang ini.
Kita perlu lebih banyak lagi orang-orang yang bisa berpikir – dan bukan cuma menelan mentah-mentah semua perkataan orang lain.

Saya ucapkan terimakasih untuk pertanyaan tersebut, dan kemudian mulai menjelaskan.

Dimulai dari fakta. Bahwa, beberapa software paling aman di dunia justru adalah yang open source.
Seperti OpenBSD, sistim operasi yang sangat terkenal dengan securitynya. OpenSSH, yang memungkinkan kita mengontrol server-server kita dari jarak jauh dengan sangat aman. Juga jangan lupa OpenSSL, yang memungkinkan jutaan transaksi elektronik setiap hari berjalan tanpa was-was.

Nampak beberapa wajah terkesiap di tengah hadirin. Aneh lho, softwarenya terbuka, tapi kok bisa tetap aman ya?

Saya tersenyum, dan kemudian melanjutkan dengan penjelasan dari fakta tersebut. Agak sulit, karena audiens saya awam / non-teknis, jadi saya musti mencoba jelaskan dengan sesederhana mungkin.
Nah, karena kebetulan audiens kali ini adalah kalangan akademis, jadi saya pakai analogi jurnal ilmiah.

Saya jelaskan, bahwa jurnal ilmiah yang bagus itu adalah yang ada peer review nya kan? Banyak kepala mengangguk, tapi masih bingung apa maksud saya dengan menyebutkan ini.
Jadi saya lanjutkan – bahwa software pun demikian. Jika banyak yang melakukan peer review terhadap software ybs; maka kualitasnya pun juga akan jadi bagus.
Dan, ini bisa terjadi pada software open source, karena source codenya tersedia.

Serempak ada terdengar nada “Oooh” dari hadirin 🙂

Berbagai software open source, terutama yang berurusan dengan soal enkripsi data / cryptography, di review dengan sangat ekstensif oleh para pakarnya. Algoritma cryptography yang bagus memang di desain agar walaupun algoritma dan softwarenya terpublikasi secara luas, namun datanya sendiri tetap aman.

Keterbukaan di open source juga menyebabkan satu fenomena menarik lainnya — jika ada ditemukan security hole, maka biasanya bisa ditutup dengan sangat cepat.
Ini karena semua orang bisa turut berkontribusi untuk membuatkan solusinya.

Berbeda sekali dengan software proprietary, dimana kita musti menunggu vendor ybs dulu untuk membuatkan solusinya. Sementara infrastruktur IT kita sedang diserang melalui security hole tersebut. Beberapa kali kejadian security holes di software proprietary belum juga di patch walaupun sudah diketahui keberadaannya selama bertahun-tahun.
Paling fatal kalau vendornya sudah tidak ada lagi (misalnya: bangkrut). Ya, tamatlah sudah, tidak ada lagi yang bisa menambal lubangnya 🙂

Belum lagi masalah trojan/spyware — pernah kejadian ada “bom” yang disisipkan di software proprietary oleh CIA. “Bom” software tersebut kemudian menyebabkan ledakan pada jaringan pipa gas di Siberia. Kekuatan ledakannya sangat dahsyat (3 kiloton) sampai terlihat dari luar angkasa dan terdeteksi oleh jaringan satelit badan intelijen Amerika sendiri. Mereka sendiri sempat terkecoh & bingung, mengira ada ledakan nuklir di Rusia — tapi kok tidak ada terdeteksi radiasi radioaktif? Ternyata sebetulnya bukan ledakan nuklir, tapi adalah hasil sabotase mereka sendiri 🙂

Pada software open source, karena source code nya tersedia, maka kita bisa melakukan audit untuk meyakinkan bahwa software yang diserahkan tidak ada sisipan “bom” di dalamnya.

Jadi kalau kita serius dengan soal keamanan, lebih selamat menggunakan berbagai solusi open source yang ada. Semoga bermanfaat.

Linus Airways !




Linus Airways !

Originally uploaded by hsufehmi

Here’s something you don’t see everyday – apparently, there’s an airline named Linus. And it’s an Indonesian company. How cool is that ?

Linus Torvalds might chuckle if he finds out about this 🙂

Sorry for the quality of the shot – I was late to realize it, and had only very little time to took the shot. If you can’t see clearly – the Linus Airways banners are the middle and bottom ones.

Linus Airways FTW !

Gartner : 85 persen Perusahaan pakai Open Source

Just stating the obvious that we / FOSS activists have known for a while, anyway this will still very useful to inform people – Open Source sekarang sudah dipakai dimana-mana.

Pengalaman saya, Gartner itu cenderung menyatakan sesuatu yang sudah merupakan kelaziman (stating the obvious). Jarang mereka menyatakan tren-tren baru.
Jadi, sebetulnya ini (penggunaan Open Source sudah merata di mana-mana) sudah terjadi cukup lama.

Hari gini belum pakai Open Source ?
Rugi besar lho 😉

Berita selengkapnya : Gartner : 85 persen perusahaan pakai Open Source

Seminar : Open Source untuk Industri Media

Hari ini AOSI (Asosiasi Open Source Indonesia) mengadakan acara seminar dengan judul “Open Source untuk Industri Media”.

Seminar ini berlokasi di JCC, board room 6, pada pukul 13:00 s/d 15:30, tanggal 12 November 2008.

Jika Anda aktif di bidang media, baik konvensional maupun online, silahkan bisa hadir di acara ini untuk menemukan bagaimana Open Source bisa membantu media Anda.

Pembicaranya adalah Betti Alisjahbana dan Mario Alisjahbana. Mario Alisjahbana adalah Presiden Direktur PT Dian Rakyat dan PinPoint Publications. Betti Alisjahbana adalah Presiden Direktur IBM Indonesia selama 8 tahun, sebelum keluar untuk mendirikan Quantum Business International.

Semoga bermanfaat.

Selamat ulang tahun ke 25, GNU & Free Software (software bebas) !

OK ini memang telat, tapi lebih baik terlambat daripada tidak sama sekali 🙂

Pada tanggal 2 September, 25 tahun yang lalu, Richard Stallman memulai gerakan Free Software (software bebas – bukan software gratisan). Dulu hanya mempengaruhi komunitas developer, ternyata, sejalan dengan semakin meratanya penggunaan komputer di segala aspek kehidupan, kini Free Software telah semakin dikenal oleh masyarakat umum.

Termasuk oleh Stephen Fry, aktor Inggris yang terkenal dengan perannya di film-film sukses seperti “A fish called Wanda” dan “V for Vendetta”. Perannya di “V for Vendetta” cukup terkenal – disitu dia tewas dihukum mati oleh rezim diktator karena nekat menyimpan sebuah karya literatur terlarang di zaman tersebut, yaitu Al-Quran 😀
Cukup unik (and, at the same time; weird, amused, amazed) mendengar bagaimana karakternya di film tersebut, Gordon Dietrich, yang homoseksual, memuja Quran (this is the second time I’ve encountered such thing) karena “bahasanya yang indah”. Dan dia lebih memilih tewas daripada mengorbankan kebebasannya (untuk menghargai semua hal yang dilarang oleh rezim tersebut).

Hadiah dari Stephen Fry adalah sebuah video khusus yang merayakan hari ulang tahun Free Software yang ke 25. Pada video tersebut, Stephen menjelaskan tentang Free Software & GNU dalam bahasa yang sangat mudah dipahami. Cukup mencengangkan melihat orang tua yang lucu ini (Stephen Fry terkenal sebagai komedian di Inggris) ternyata memahami berbagai konsep dan filosofi dibalik gerakan Free Software. This guy is truly awesome.

Dan dia ternyata merasa tergerak untuk turut mempromosikan soal Free Software ini kepada masyarakat luas.
Saya jadinya tergerak juga untuk menyebarkan video yang unik ini kepada masyarakat kita 😀

Silahkan video Ulang Tahun 25 GNU bisa Anda download dari sini (7 MB)

Jika Anda menggunakan video player yang mendukung subtitle, seperti V L C, silahkan download subtitle Bahasa Indonesia disini. (8 kb)

Versi lainnya :

[ Selamat Ulang Tahun 25 GNU Medium Quality ] (21 MB)

[ Selamat Ulang Tahun 25 GNU High Quality ] (33 MB)

[ Selamat Ulang Tahun 25 GNU Best Quality ] (125 MB)

File video ini adalah dalam format Ogg, yaitu format video yang, tentu saja, bebas tersedia untuk siapa saja. Tanpa batasan apapun.
Panduan untuk setup driver/codec untuk format video Ogg ini bisa dibaca disini.

Selamat menikmati, dan, selamat ulang tahun 25 untuk GNU & Free Software !

Jonathan Schwartz : Open-Source Business Strategy

Now here’s something you don’t see every day – an article about business strategy utilizing open-source, written in clear and no non-sense language. Very easy to understand.

In summary; he recognizes the value of the community behind the open-source movement. He realized that with open-source, it may not be a quick sell. But within several years later, people will be coming at you in droves.

Understandably, this is not something that’s easy to be grasped by average company executives. But Schwartz realized this years ago, and able to explain it in ways that makes it easy to understand.
If you’re in IT business, do NOT miss this article.

Quoted :

All of which is to say – no amount of fear can stop the rise of free media, or free software (they are the same, after all).

The community is vastly more innovative and powerful than a single company.

And you will never turn back the clock on elementary school students and developing economies and aid agencies and fledgling universities – or the Fortune 500 – that have found value in the wisdom of the open source community.

Open standards and open source software are literally changing the face of the planet – creating opportunity wherever the network can reach.

I’m also starting to like this guy.
When his business was threatened by the competitions from open-source camp, he didn’t litigate. He didn’t choose the (seemingly, easy & safe choice). He choose to innovate.

And he’s reaping the benefit now. Even at the times of this financial crisis.

Well done Schwartz. Here’s hoping to the continued success of Sun in the future.

Cara mudah blokir situs porno dengan Ubuntu – gratis

Saya bersyukur sekali bahwa di cluster saya ada akses Internet unlimited murah-meriah, hasil gotong-royong para warganya. Sudah sangat sering saya terbantu dengan fasilitas ini. Anak-anak pun jadi mendapatkan akses ke dunia yang sangat luas dan bisa menambah wawasan mereka kapan saja.

Namun di balik itu semua, selalu ada aspek negatif yang musti kita waspadai. Tanpa disengaja pun kadang kita bisa nyasar mendarat di situs yang tidak diinginkan. Apalagi jika memang disengaja, amat mudah untuk menemukan situs-situs porno, kekerasan, dan lain-lainnya. Ditambah dengan sifat anak yang selalu ingin tahu, maka kita perlu untuk selalu waspada.

Ada cara yang sangat mudah untuk memblokir situs porno, yaitu dengan memanfaatkan OpenDNS.
Namun kadang, dalam beberapa kasus, ini masih belum mencukupi; kadang masih ada situs yang lewat, dan kadang jadi sering gagal membuka website yang diinginkan (karena OpenDNS agak lambat jika digunakan dari Indonesia).

Jika Anda mengalami masalah-masalah tersebut, dan/atau ingin menikmati fleksibilitas ekstra, dan/atau alasan-alasan lainnya; maka bisa mencoba berbagai software internet filtering yang ada.

Pada saat ini saya sudah setup filter internet dengan memanfaatkan software DansGuardian, di komputer Ubuntu Linux.  Dan daftar situs yang diblokir di update secara otomatis, dengan memanfaatkan daftar blacklist dari Shalla.

Caranya mudah saja :

Continue reading Cara mudah blokir situs porno dengan Ubuntu – gratis

Shard-ing made easy : Scale-out your web-apps to infinity with no code rewrite

I’ve always believed that the best solution is the simplest one. They tend to be more fool-proof, reliable, and easier to maintain in the long run.
That said, I had a hard time believing my own eyes when I found what might be the holy grail of High Availability (HA) and High Performance Computing (HPC) : easy & transparent (no apps recode) sharding, with HSCALE.

A bit about sharding : also known as “shared nothing architecture”, this will enable almost infinite scalability to any system. Google, Facebook, Flickr, MySpace – you name any high-traffic website, and there’s very good chance that they already implemented it in one way or another. Whenever they need more performance, they only need to throw another box into the system, and that’s it. Instant performance gain.
However, there’s a significant drawback – to most, sharding means a total rewrite of your application.

I’ve been providing consultation services to several high-traffic websites. They’re doing pretty well now, but some are about to go to the next level. Where their current standard 4 tier architecture; edge server – webserver – apps server – database, no longer suffices, and will need to scale up (bigger server), or scale out (more servers).
Most, however, could not rewrite their apps for sharding for various reasons; number of resources needed, development time, potential reliability issues, and so on.

Let’s back up a bit (this can be very helpful; sometimes we’re to busy charging forward, as fast as we can – thus missing all the hints we encountered along the way).
If we examine this infrastructure, almost all aspects of it are already easily scalable. Edge servers: check, you can throw another box and instant performance gain. Webserver & Apps server: checked as well, especially with PHP where it already implements the shared-nothing architecture. We can even load-balance them using software and have it outperform and out-feature the hardware load-balancers [1].
So that leaves the database as the bottleneck.

For the database, my requirements are simple (cough) :

  • Scale out, not up : There’s a limit to how big a server can be. Several high-traffic websites (YouTube, MySpace) had chosen this path and they’ve experienced the pain when they hit the dead-end – no more server bigger than what they already have. So it definitely will have to be a scale-out (more boxes) solution.
  • Transparent : No application recode.
  • Easy to maintain : I want a system that doesn’t need constant babysitting. I (we all) have better things to do with my (our) time.
  • Works for MySQL : it’s the most used database for web-apps, currently.
  • Affordable : at least, provides several pricing schemes. Not just one. We all have different needs and budgets.

Yeah, I’m picky. And that caused me serious headache – for weeks I was not able to find anything.

Several that I looked into :

  • MySQL cluster : NDB = memory/RAM-only tables? Full backup/restore everytime we add new server? No thanks.
  • MySQL replication : I looked into single/multiple master – multiple slaves setup. Doesn’t like it (1) I have systems which will need scalability for write ops as well (2) for read ops, caching (especially memcache) can provide better performance gain with less headache (3) It’s Asynchronous – meaning: the user edited his profile, clicked save; and lo, the old profile is still there (because the update hasn’t reached the slaves yet) (4) multiple master scheme seems only safe for up to 2 masters; I don’t fully understand the risks with more than 2 masters (not enough case studies).
  • MySQL partition : Good idea (although doesn’t do vertical / column-level partitioning yet, but that’s ok [2]). There are limits, but it’s not a showstopper for most. However, it doesn’t scale-out.
  • Various MySQL load-balancers, replication, HA solutions : Pick any / several of these : unproven, costs an arm and a leg, proprietary, needlessly complex, need loads of maintenance work, etc.

So it was with great disbelieve when I read the description of HSCALE by Michael Shadle : “Sharding pushed from application level, to transparent DB proxy”.

Here’s the beauty of its simplicity : It’s just a plugin for MySQL-Proxy 🙂
MySQL-Proxy is a high-performance proxying daemon for (guess what) MySQL, created by Jan Knesche – also well-known for Lighttpd: one of the fastest webserver on Earth. Then Peter Romianowski decided that he’ll build his sharding-proxy upon this great foundation.
So we have HSCALE.

Amazing, this solution to high-performance database (HSCALE) is similar to high-performance Apps server (HAproxy) : through proxying 🙂

Configuration is dead simple. Ability to spread queries to multiple backend servers (with some minor limitations, but it’s being actively worked on) – transparent to the application. Version 0.3 will enable us to run multiple instances of HSCALE (to avoid it becoming the bottleneck). And it’s free (do remember to contribute back if your website becomes successful because of it). With MySQL-Proxy’s scripting capability, it provides an easy & clean way to extend it to fulfill your own requirements. Etc.

Currently not many people knows about HSCALE’s existence, so I’m writing this article to let more people know about it.
At the moment HSCALE’s is already making great progress. I’m sure it’ll become better at much faster rate if more people know that it existed. So here it is.
And kudos to Peter Romianowski & Jan Knesche for their software. Here’s cheering for great future of both MySQL-Proxy & HSCALE.

A small FAQ for now, no doubt the list will be bigger as I (and you) found out more about this :

  • Q: So, come again, how does HSCALE works?
    A: First you define the partitioning scheme on HSCALE’s config file. Then it’s all automatic from there, HSCALE will partition / regroup the rows – not your application.
  • Q: What’s the difference then with MySQL’s partition feature ?
    A: You can spread HSCALE’s partitions to multiple databases (meaning: multiple backend servers), while MySQL’s only works on a single database.

OK, my head still hurts from doing marathon reading of so much documentations on this topic (transparent sharding) ! Chances are great that there are errors in this article. If you do find them, please leave a comment so I can fix it. Thanks !

In the meantime, shall we play with HSCALE in the Sandbox? Have fun !

[1] HAproxy seems indeed is the leader of the pack (apps/web server high availability + load balancers) at the moment. It can load-balance 20 Gbps with the CPU 85% idle, have loads of great features, and secure. Even 37signals.com swears by it (and so does several Forbes 500 companies).

[2] MySpace found out that vertical-partitioning does not scale.

AOSI – Asosiasi Open Source Indonesia

Alhamdulillah, setelah bekerja selama sekitar 1 bulan (sesuai dengan target yang diberikan), akhirnya AOSI (Asosiasi Open Source Indonesia) resmi terbentuk pada tanggal 30 Juni 2008 kemarin ini. Pada acara di gedung Depkominfo tersebut hadir 15 anggota pendiri berikut tim formatur, dan juga jajaran pejabat Depkominfo serta Depristek. Acara berlangsung ringkas, penuh semangat dan komitmen.

Ini bukan hasil akhir, namun adalah awal dari perjuangan kawan-kawan di AOSI. Mohon doa restunya agar mereka bisa mengemban amanah ini dengan baik, dan bisa mencapai berbagai tujuan AOSI tanpa masalah yang berarti.

Liputan mengenai acara pendiriannya saya kira sudah banyak dibahas oleh berbagai media massa, beberapa saya lampirkan di akhir posting ini. Jadi disini saya akan lebih banyak berbagai mengenai berbagai cerita di balik layar dan di seputar pendirian AOSI saja.

Awalnya adalah usulan saya mengenai pembentukan Aliansi Open Source Indonesia (AOSI), yang saya sampaikan kepada ibu Lolly Amalia / Depkominfo pada tanggal 26 Mei 2008. Di luar dugaan, ternyata ide tersebut langsung disambut dan ditindak lanjuti dengan sangat cepat, dan langsung diberi bentuk yang lebih riil – yaitu sebagai Asosiasi (Open Source Indonesia).
Pada tanggal 28 Mei 2008 kemudian langsung diadakan forum diskusi di acara IGOS Summit 2, dimana AOSI disepakati. Dan terus dilanjutkan dengan acara penutupan IGOS Summit 2, yang sekaligus juga mengumumkan mengenai AOSI untuk pertama kalinya, serta menunjuk 5 orang sebagai tim formaturnya; ibu Betti Alisjahbana, Bpk. Rusmanto, Bpk. Sumitro Roestam, Bpk. Teddy Sukardi, dan saya sendiri.

Sedikit kilas balik – sebetulnya ide Asosiasi ini sudah lama. Kawan-kawan aktifis Open Source lainnya seperti Effendy Kho (Ase) dan juga yang lainnya sudah menyuarakan ide ini sejak 5 tahun yang lalu. Pak Sumitro Roestam malah sudah mengusulkan nama AOSI di tahun 2003. Kalau tidak salah, beliau malah sudah sempat langsung mencadangkan domain name aosi.org 🙂

Jadi sebetulnya ide saya ini tidak orisinil. Cuma saja mungkin situasi ketika itu belum memungkinkan, sehingga belum bisa diwujudkan pada saat tersebut.

Kembali ke beberapa minggu yang lalu – meeting pertama tim formatur AOSI diadakan di kantor PANDI, gedung Arthaloka lt. 13.
Sedikit melenceng lagi – disitu kita juga sempat membahas sekilas mengenai PANDI. Sangat menarik karena saya tahu beberapa sejarah pengelolaan .ID – sejak pertama kali didapatkan berkat usaha dari pak Samik, kemudian dikelola oleh para aktivis Internet, sampai kemudian terjadi konflik yang cukup mengenaskan. Pak Budi Rahardjo dan rekan-rekannya mengalami berbagai kerugian (waktu, pikiran, tenaga, dst) pada masa konflik tsb. Pada intinya PANDI adalah bantuan solusi dari pemerintah untuk menyelesaikan konflik pengelolaan TLD .ID tersebut. Kalau saya tidak salah dengar, bentuk PANDI adalah yayasan, sehingga non-profit (CMIIW)
Mudah-mudahan dengan demikian maka PANDI bisa banyak berperan aktif dalam memajukan dunia Internet di Indonesia.

Acara pertemuan pertama AOSI tersebut berjalan cukup lancar, dan semua tim formatur alhamdulillah bisa hadir. Pada pertemuan-pertemuan selanjutnya tidak pernah bisa lengkap lagi seperti ini, karena memang tim formatur ini isinya orang sibuk semua (kecuali saya yang sok sibuk 🙂 ); ibu Betti setelah lepas dari IBM pada tanggal 1 April 2008 kemudian membentuk PT Quantum Business International, yang membawahi beberapa bisnis. Pak Rusmanto menjabat posisi di berbagai lembaga seperti Nurul Fikri, Infolinux, YPLI – dan juga sering berkeliling Indonesia untuk mempromosikan Open Source. Pak Sumitro Roestam juga aktif mempromosikan Open Source serta menjabat sebagai Ketua MASTEL. Pak Teddy memiliki beberapa perusahaan dan juga adalah ketua FTII (Federasi Teknologi Informasi Indonesia), dimana nanti AOSI akan menginduk kesini pula.

Sebagai pimpinan rapat secara otomatis kami menyerahkan kepada ibu Betti. Dan tidak salah, terlihat jelas pengalaman beliau memimpin di IBM selama bertahun-tahun pada meeting tersebut. Rapat yang biasanya di Indonesia lazim menyasar keluar dari topik dan memakan waktu lama dan tanpa hasil yang jelas, kali ini bisa berlangsung dengan efisien serta tetap menarik.

Dengan cepat; tujuan, target, visi & misi AOSI selesai didefinisikan. Demikian pula agenda untuk pertemuan berikutnya. Kami semua kembali dengan semangat yang tinggi, karena kini sudah semakin jelas kelihatan berbagai manfaat yang bisa dicapai oleh AOSI.

Pertemuan-pertemuan selanjutnya terus berlangsung seperti itu. Sangat menyenangkan. Lokasi pertemuan juga kemudian ada dilakukan di kantor ibu Betti. Namun, waktu terus mendekat ke batas waktu 1 bulan yang telah diumumkan.

Tanpa terasa, tiba-tiba kami sudah sibuk secara cukup intens mengenai penyelenggaraan acara peresmian AOSI ini. Sampai menit-menit terakhir saya masih menerima revisi daftar anggota pendiri. Demikian juga pak Sumitro masih terus mendapat masukan-masukan untuk revisi AD/ART nya. Menilik intens nya persiapan acara tersebut, sangat melegakan ternyata kemudian acara dapat berlangsung dengan sangat baik tanpa masalah. Bahkan Pak M. Nuh / Menkominfo yang baru diberitahu juga kemudian langsung menyanggupi untuk hadir. Tentu ini sangat memberikan semangat kepada semua an

ggota pendiri dan hadirin, apalagi ketika dengan jelas Menkominfo menyatakan bahwa komitmen dukungan Depkominfo kepada AOSI adalah dukungan moral dan riil. Depkominfo akan berpartner & bekerjasama secara aktif dengan AOSI.

Di balik itu tetap saja ada beberapa kekurangan pada acara ini. Misalnya, beberapa institusi Open Source di Indonesia sempat nyaris tidak diundang sebagai anggota pendiri, seperti Linuxindo. Beberapa malah akhirnya tidak sempat kami undang 🙁 seperti  Bajau, Indolinux, Ardelindo, Meruvian, dan banyak lagi yang lainnya. Mengkoordinasikan 15 anggota pendiri itu saja kami sudah cukup pontang-panting.
Mudah-mudahan keterbatasan kami tersebut dapat dimaklumi dan tidak mengecewakan. Anyway, status anggota pendiri sebetulnya sama saja dengan anggota biasa, cuma saja anggota pendiri itu hadir pada acara peresmian AOSI ini – itu saja. Tidak lebih.

Tentunya masih ada banyak sekali pertanyaan seputar AOSI ini.
Misalnya, saya mendapat pertanyaan mengapa komunitas JUG (Java User Group) tidak diundang pada acara peresmian AOSI. Saya jawab karena keterbatasan waktu kami, sehingga ada banyak pihak yang seharusnya diundang namun tidak sempat kami undang; dan saya pribadi minta maaf untuk hal tersebut. Jawaban tersebut sepertinya cukup memuaskan kawan kita tersebut, dan beliau mengucapkan selamat atas telah diresmikannya AOSI.

Namun saya sendiri baru sadar belakangan – Asosiasi ini adalah format untuk institusi komersial. Jadi, selama ini sudah ada banyak komunitas non-profit Open Source di Indonesia. YPLI, KPLI, JUG, Yayasan Ubuntu Indonesia, dan seterusnya. Tetapi, komunitas Open Source yang komersial belum ada. Pada gilirannya, ini adalah suatu kekosongan yang perlu diisi, karena telah terbukti menyebabkan berbagai ketimpangan dan masalah pada berbagai implementasi open source di Indonesia.

Nah, dengan adanya AOSI, bersama-sama dengan para aktivis Open Source, Akademisi, dan Pemerintah; maka diharapkan ekosistem Open Source Indonesia sudah menjadi lengkap. Dan karena itu gerakan Open Source di Indonesia bisa jadi semakin efektif lagi.

Mudah-mudahan kami (tim formatur) dan (nantinya) pengurus Asosiasi dapat melayani semua pertanyaan & harapan-harapan dari semua pihak dengan baik.

Terlampir di akhir artikel ini adalah definisi AOSI, kriteria sukses, serta rencana program kerja.

Artikel terkait :

Bersatunya para pendukung open source
AOSI resmi terbentuk
Komunitas Open Source Indonesia ‘Merapat’
Asosiasi open source dibentuk
Asosiasi Open Source Indonesia resmi berdiri

AOSI – perhimpunan organisasi pencinta, penggiat, pengembang, pemakai, pendidik dan pendukung open source yang bekerja sama membangun sinergi untuk mencapai sukses bersama

Ukuran Keberhasilan AOSI

1.Citra open source di mata masyarakat yang positif

2.AOSI menjadi sumber terpercaya dalam menentukan strategi TIK nasional

3.Indonesia melakukan adopsi open standard secara konkret (ODF dll)

4.Meningkatnya pangsa pasar dan jumlah pengguna Open Source (perusahaan, perorangan, pemerintah)

5.Tersedianya produk dan jasa open source untuk berbagai kebutuhan utama

6.Tersedianya piranti pendukung peripherals untuk produk open source (drivers, utilities)

7.Pemerintah memberikan prioritas pengadaan pada open source

8.Unggulnya kompetensi nasional TIK dengan memanfaatkan open source khususnya di bidang jasa dan pengembangan software

9.Adanya program dan regulasi di departemen terkait di pemerintahan  untuk mendukung open source

10.Pendidikan IT di sekolah dilakukan berbasis open source

11.Menurunnya kesenjangan digital di Indonesia sebagai hasil pemanfaatan open source

12.TIK lebih murah dan terjangkau sebagai hasil dari persaingan yang lebih sehat

13.Indonesia bisa mengeksport software aplikasi berbasis

14.Ketersediaan infrastruktur dukungan untuk pengguna open source

15.Bisnis TIK berbasis open source tumbuh secara sehat dan maksimal

16.Terjadi sinergi yang kuat antar  lembaga-lembaga anggota AOSI

17.Layanan publik dari pemerintah maupun swasta tersedia/mendukung open source (antara lain internet banking, pajak, pemesanan tiket, perijinan)

PROGRAM KERJA

Program 30 hari

1. Mendata Para Pebisnis Open Source

2. Terbentuk Kepengurusan Sementara

3. Mengembangkan Keanggotaan

4. Portal AOSI.or.id

Program 100 hari

1. Kepengurusan tetap terbentuk

2. Sosialisasi Open Source by application & industry

3. Training : Technical & Business Skill

4. Focus Group Discussion dengan Pemerintah : Kominfo, Ristek, Diknas, Keuangan Pajak, Depdagri, Deperin Telematika untuk membahas program & regulasi untuk mendukung berkembangnya open source

5. Roadshow, Exhibition & Publikasi Perkembangan Open Source

6. Ensure more drivers availability

7. Membangun Data Base Organisasi pengguna open source

Program 1 Tahun

1. Demo Center di kantor AOSI untuk berbagai aplikasi FOSS

2. AOSI sebagai marketing hub dari open source

3. AOSI go International

Tambahan – DAFTAR PENGURUS AOSI

Ketua Umum – Betti S Alisjahbana
Wakil Ketua 1 – Rusmanto
Wakil Ketua 2 – Sutiono Gunadi
Sekretaris Jenderal – Sumitro Roestam
Bendahara – Soegiharto Santoso

Bidang Di Bawah Wakil Ketua 1

Bidang Regulasi dan Hukum – Aulia Adnan
Bidang Pendidikan dan SDM – Nurlina
Bidang Pengembangan Teknologi – Harry Sufehmi
Bidang Dukungan Teknis dan Layanan Publik – Adi Siswanto

Bidang Di Bawah Wakil Ketua 2

Bidang Kerja-sama Luar Negeri – Gunawan Rianto
Bidang Riset Pasar dan Promosi – Widjaja
Bidang Pengembangan Model Bisnis – Akmaloni

War Stories : LinkedIn.com

Cerita dari garis depan selalu menarik untuk dibaca. Tidak terkecuali cerita-cerita dari garis depan para praktisi IT; dan cenderung lebih menarik karena tidak ada korban jiwa 🙂
Paling korban server, hehe… anyway.

Beberapa hari yang lalu saya menemukan kisah detail mengenai “jeroan” LinkedIn.com
Saya langsung tertarik – LinkedIn.com adalah satu-satunya social networking website yang saya ikuti. Ya, saya tidak punya account Friendster / Facebook / Orkut / dst. So sue me 🙂
Sekilas situs LinkedIn.com terlihat sederhana. Namun saya yakin detail internalnya pasti sangat kompleks. Dan saya tidak keliru.

Oren Hurvitz menemukan 2 presentasi dari tim teknis LinkedIn.com di situs SlideShare.net, yaitu sbb :

Oren kemudian membuat ringkasan dari presentasi-presentasi tersebut di blognya.
Dikutip dari http://hurvitz.org/blog/2008/06/linkedin-architecture :

Site Statistics

  • 22 million members
  • 4+ million unique visitors/month
  • 40 million page views/day
  • 2 million searches/day
  • 250K invitations sent/day
  • 1 million answers posted
  • 2 million email messages/day

Software

  • Solaris (running on Sun x86 platform and Sparc)
  • Tomcat and Jetty as application servers
  • Oracle and MySQL as DBs
  • No ORM (such as Hibernate); they use straight JDBC
  • ActiveMQ for JMS. (It’s partitioned by type of messages. Backed by MySQL.)
  • Lucene as a foundation for search
  • Spring as glue

Salah satu komponen di infrastruktur mereka yang paling mencengangkan adalah “The Cloud” :

The Cloud

  • The Cloud is a server that caches the entire LinkedIn network graph in memory.
  • Network size: 22M nodes, 120M edges.
  • Requires 12 GB RAM.
  • There are 40 instances in production
  • Rebuilding an instance of The Cloud from disk takes 8 hours.
  • The Cloud is updated in real-time using the Databus.
  • Persisted to disk on shutdown.
  • The cache is implemented in C++, accessed via JNI. They chose C++ instead of Java for two reasons:
    • To use as little RAM as possible.
    • Garbage Collection pauses were killing them. [LinkedIn said they were using advanced GC’s, but GC’s have improved since 2003; is this still a problem today?]
  • Having to keep everything in RAM is a limitation, but as LinkedIn have pointed out, partitioning graphs is hard.
  • [Sun offers servers with up to 2 TB of RAM (Sun SPARC Enterprise M9000 Server), so LinkedIn could support up to 1.1 billion users before they run out of memory. (This calculation is based only on the number of nodes, not edges).

Luar biasa ! 😀

Presentasi teknis LinkedIn.com kemudian ditutup dengan beberapa scaling tips :

  • Can’t use just one database. Use many databases, partitioned horizontally and vertically.
  • Because of partitioning, forget about referential integrity or cross-domain JOINs.
  • Forget about 100% data integrity.
  • At large scale, cost is a problem: hardware, databases, licenses, storage, power.
  • Once you’re large, spammers and data-scrapers come a-knocking.
  • Cache!
  • Use asynchronous flows.
  • Reporting and analytics are challenging; consider them up-front when designing the system.
  • Expect the system to fail.
  • Don’t underestimate your growth trajectory.

Detail selengkapnya bisa ditemukan di blog Oren Hurvitz, dan di file asli presentasinya.

Selamat menikmati !