Tuesday, June 29, 2010

Tuning Performance

Setelah aplikasi dicoding dengan benar, biasanya langkah berikutnya adalah tuning performance. Hal ini banyak ditanyakan di berbagai milis pemrograman yang saya ikuti. Agar tidak berkali-kali menulis jawaban yang sama, berikut artikel tentang metodologi saya dalam melakukan tuning performance aplikasi.

1. Miliki tujuan yang jelas

Misalnya :
Mampu menghandle 100 request/detik dengan response time < 2 detik
dengan 1 juta record di database. Bisa jadi pada tahap ini, ternyata keputusannya adalah tidak perlu tuning, karena performance aplikasi yang sekarang sudah memenuhi keinginan.

2. Pastikan aplikasinya berjalan benar

Make it right, then make it fast.
Gak ada gunanya mentuning aplikasi buggy.
Kita juga harus punya perangkat pengetes yang lengkap.
Supaya nanti setelah tuning, bisa dipastikan bahwa tuningnya tidak menimbulkan bug baru.

3. Pasang monitor di aplikasi

Misalnya :
- CPU usage
- Memory usage
- Aktifitas harddisk
- Aktifitas database

Di linux, CPU dan Memory usage bisa dipantau dengan top,
sedangkan aktifitas harddisk dengan iostat.
Di MySQL, aktifitas database bisa dimonitor dengan perintah show processlist.

4. Setelah monitor siap, penyiksaan dimulai

Berikan load yang tinggi ke aplikasi dengan menggunakan tools penyiksaan seperti misalnya JMeter.
Tingkatkan terus loadnya sampai response time tidak lagi memenuhi syarat.
Misalnya, pada 30 request/detik, response time menjadi 10 detik.

5. Cari bottlenecknya

Amati monitor, aspek mana yang overload.
Apakah CPU, I/O, atau memori.
Perhatikan juga aktifitas database untuk mencari penyebabnya.

6. Lakukan tuning

Silahkan dioprek dengan metode trial and error.
Biasanya pada tahap ini saya mencari kolom mana yang perlu diindex,
bagian mana di source code yang perlu diperbaiki,
atau konfigurasi seperti apa yang optimal.

7. Test lagi

Setelah dioprek, jalankan lagi tools penyiksaan.
Kalau langkah no #5 benar, biasanya bottlenecknya akan pindah.
Misalnya, tadinya CPU maxed out 100%, setelah tuning jadi santai 10%,
tapi memory usage jadi 80%.

8. Ulangi langkah #5 dan #6

Ulangi terus tuning dan test sampai aplikasi memenuhi tujuan yang diset di langkah #0.
Inilah pentingnya langkah #0, supaya kita tahu kapan harus berhenti.

Beberapa hal yang harus diingat dalam tuning performance:

  1. Tidak ada pil ajaib, masing-masing kasus berbeda. Kadang masalahnya ada di index database, kadang di prosesor, dsb.
  2. Jangan main tebak-tebakan, semua keputusan harus berdasarkan hasil monitoring. Soalnya seringkali tebakan kita salah.
  3. Jangan lupakan maintenance source code. Proses tuning mungkin saja akan membuat source code menjadi kompleks dan sulit dibaca. Jangan sampai kita mengorbankan kerapian coding demi sedikit peningkatan performance. Lebih baik upgrade hardware daripada mengotori source code.
  4. Tahu kapan harus berhenti. Tuning merupakan pekerjaan yang menarik, mirip seperti bermain game. Oleh karena itu penting bagi kita untuk punya tujuan. Begitu tujuan dicapai, segera berhenti. Lebih baik menambah fitur yang memiliki business value daripada terus menerus berkutat dengan performance.

Demikian sekilas tentang tuning. Semoga bermanfaat.

sumber : blog Endy


Sunday, June 20, 2010

Blogger vs WordPress


Ini sesuatu pertanyaan yang klasik: platform blog mana yang paling bagus untuk digunakan? Biasanya di Indonesia pertanyaan ini akan mengerucut menjadi dua yang paling populer: Blogger (atau blogspot) dan WordPress.org. Tentunya layanan lain juga banyak, seperti TypePad sampai yang menggunakan CMS seperti Joomla. Tapi WP mungkin paling populer, terutama WordPress.org sebagai CMS. WordPress.com juga populer untuk blogger yang gak ingin pusing. Nah, kalau teman-teman memilih apa? Saya memilih Blogger :)

WordPress.org

Saya sudah coba WordPress.org. Dan menurut saya memusingkan. Kita harus rajin mengupgrade CMS-nya untuk menghindari masalah security. Mengupgrade plugins untuk menjamin kompatibilitas. Belum lagi membackup database dan file-file di sana. Namun memang, lebih fleksibel. Ini adalah primadona bagi blogger-blogger yang cukup serius menekuni blognya.
Bagi yang belum tau bedanya dengan WordPress.com… WordPress.org adalah platform yang bisa anda install di hosting anda. Anda bisa melakukan banyak hal di sini, seperti membuat theme sendiri sampai menambah plugins agar CMS anda lebih powerful.
Tapi kalau rasanya hanya ingin menulis content, rasanya WordPress.org terlalu merepotkan.

WordPress.com

Nah jangan ketuker sama WordPress.org. WordPress.com menggunakan CMS WordPress juga. Tapi dihosting oleh WordPress sendiri. Sepertinya menyenangkan ya. Salah satu CMS blog terbaik, dihosting gratis pula. Tapi sayangnya batasannya banyak sekali. Kita tidak bisa memilih theme selain yang disediakan. Tidak bisa menginstall plugins. Dan berbagai batasan lain.
Nah kabar paling buruk buat yang berangan-angan untuk menguangkan blognya (bahasa kerennya: monetize), WordPress.com tidak mengijinkannya. Kapasitasnya juga tidak terlalu besar. Kecuali memang ngeblog untuk iseng-iseng, WordPress.com jelas bukan pilihan.

Blogger

Layanan blog dari Google ini menurut saya terbilang cukup sakti. Tidak secanggih WordPress.org mungkin. Tapi menurut saya jauh di atas WordPress.com. Meski mungkin punya satu kelemahan: tidak bisa membuat static pages. Dan mungkin hanya satu blogging client yang mensupport upload image ke Picassa: Live Writer.
Blogger masih mengijinkan kita mengedit themesnya. Menambahkan widget juga terbilang sangat mudah. Yang pasti dukungan space dari Google terbilang sangat besar: tidak ada limit. Hanya limit 1GB untuk image yang di host di Picasa, layanan dari Google juga. Seandainya 1GB masih kurang, masih bisa diupgrade dengan biaya yang sangat murah: US$ 5 pertahun. Bayangkan kalau kita hosting sendiri dengan WordPress.org!

Kesimpulan

Ujung-ujungnya pilihan tentu ada di teman-teman semua. Mau pakai platform yang mana. Tapi ada baiknya dicoba dulu semua, supaya dapat feelnya. Jangan memilih hanya karena teman-teman anda pakai CMS tertentu.
Pada akhirnya blog adalah soal content. Buat apa pusing-pusing ngurusin masalah teknis kalau bisa menghindari itu? Jangan-jangan banyak waktu dihabiskan hanya untuk mengoprek CMS dan plugins. Atau mengkontak support hosting.
Saya tidak terlalu ambil pusing dengan dashboard dan web interface untuk menulis. Karena selama ini saya pakai Live Writer untuk menulis secara offline.

sumber