lesson learned, life

Follow You

Vocalist Oli Sykes shared in a track-by-track commentary with Spotify that he and Jordan Fish wrote “Follow You” while they were writing “Drown”. He also shared:

And when it got to that certain point like “this fucking sucks and I don’t really want to do this anymore,” that’s when you have that realizations. I realized no matter how bad being together can sometimes get, the alternative is so much worse.

Lyrically, it comes from me and my other half were going through a particular rough patch where things weren’t looking too good and it gets to a certain point. And when it got to that certain point like “this fucking sucks and I don’t really want to do this anymore,” that’s when you have that realizations. I realized no matter how bad being together can sometimes get, the alternative is so much worse. It’s one of those beautiful realizations that can only come from something really ugly.

Source: http://genius.com/Bring-me-the-horizon-follow-you-lyrics

Standard
code, lesson learned, technology, Tips

Apa itu High Availability?

Selama ini gw pikir High Availability (HA) semata-mata hanya mempersiapkan cadangan kalau bencana (disaster) muncul. Mempersiapkan cadangan dalam artian data backup. Ternyata pemahaman tersebut tidak sepenuhnya benar. Hal ini baru gw sadari setelah diberikan pekerjaan untuk membuat solusi kalau sampai layanan telekomunikasi yang digunakan tim Customer Service (CS) kena bencana.

Hasil akhir yang diharapkan — ingat selalu untuk berpikir dari hasil akhir yang diharapkan — adalah: tim CS harus selalu dapat menggunakan layanan telekomunikasi. Mereka tidak peduli dan tidak perlu tahu* kalau ada bencana terjadi. Yang mereka pedulikan adalah mereka datang ke kantor dan melakukan pekerjaan mereka: menghubungi dan dihubungi pelanggan.

Untuk itu harus ada minimal 2 (dua) layanan telekomunikasi yang berfungsi dalam waktu bersamaan. Namun hanya ada 1 (satu) layanan yang aktif digunakan dalam satu waktu*. Katakanlah ada layanan utama dan layanan cadangan.

Ketika bencana terjadi (pasti terjadi, hanya masalah waktu) dan mengakibatkan layanan utama gagal beroperasi, maka saatnya layanan cadangan yang aktif. Istilah yang digunakan untuk mewakili proses ini adalah failover.

Ketika bencana berakhir dan layanan utama kembali normal. Maka layanan utama harus kembali aktif, menggantikan layanan cadangan. Proses mengembalikan penggunaan dari layanan cadangan ke layanan utama disebut fallback.

Hubungan failover dan fallback bisa dilihat pada gambar berikut ini. Gambar ini gw dapat dari dokumentasi “Building Elastix-2.4 High Availability Clusters with DRBD and Heartbeat (using a single NIC)“. Sumber: http://www.theserverexpert.com/elastix_2.4_ha_cluster-updated.pdf

Failover and fallback.

Beberapa pertanyaan yang harus dijawab adalah:

  1. layanan-layanan apa saja yang vital dan harus selalu tersedia?
  2. apakah layanan-layanan tersebut dapat dibuat duplikasinya? hal ini harus menjawab pertanyaan lain, yaitu:
    • apa saja kebutuhan layanan-layanan tersebut?
    • bagaimana membuat duplikasi kebutuhan-kebutuhan tersebut?
    • seberapa mudah membuat duplikasi layanan tersebut?
  3. data apa saja yang harus tersedia?

Sejauh ini baru itu saja yang terpikirkan. Seharusnya ada beberapa lagi, tapi gw belum sampai di sana.

Pertanyaan tadi keluar dari pengalaman ketika berusaha membuat duplikasi layanan telekomunikasi berbasis Asterisk. Asterisk dikelola dengan FreePBX, dan diberi nilai tambah oleh produk bernama Elastix. Elastix merupakan sekumpulan alat bantu yang dikembangkan di atas sistem operasi CentOS.

Asterisk memiliki modul bernama CDR (Call Detail Recording) yang berfungsi untuk menyimpan metadata komunikasi telepon yang dilakukan melalui sistem.  Terdapat juga modul lain yang merekam semua pembicaraan. Oleh karena itu, data tadi harus selalu tersedia.

Elastix menggunakan SQLite sebagai penyimpanan data konfigurasi. FreePBX sebagai antarmuka Asterisk sepertinya tidak membutuhkan penyimpanan data apapun, namun memiliki beberapa modul tambahan yang mungkin saja membutuhkan penyimpanan data untuk menyimpan konfigurasi*.

Yang ingin gw sampaikan adalah pentingnya identifikasi detail kebutuhan tiap layanan karena menentukan apa yang harus diduplikasi dan caranya.

Apa yang dimaksud dengan kebutuhan tiap layanan?

Di atas sudah gw jelaskan bahwa modul Asterisk bernama CDR membutuhkan MySQL untuk penyimpanan data. Hal ini memaksa untuk mencari tahu apakah MySQL memiliki fitur untuk melakukan duplikasi layanan. Setelah dicari tahu ternyata MySQL memiliki fitur replikasi. Lalu muncul pertanyaan selanjutnya, MySQL versi berapa yang digunakan? Apakah versi tersebut sudah mendukung skenario replikasi yang kita butuhkan? Intinya adalah pemahaman tools yang digunakan, layanan yang ditawarkan tool tersebut, serta kompleksitasnya.

Kesimpulan

High Availability (HA) sulit dan kompleks sekali. Karena harus dipikirkan secara matang dan dilakukan oleh mereka yang paham dan kenal betul karakteristik penggunaan layanan, karakteristik layanan itu sendiri, karakteristik kebutuhan layanan, dan sebagainya.

Tulisan ini gw buat semata-mata untuk mengeluarkan isi pikiran saja. Mungkin saja berguna buat orang lain.

Standard
lesson learned, work

Stay Competitive

how to stay relevant?
how to stay competitive?

what is competitive advantage? why should you care about it?

okay, got it, how to do it?

knowledge management?
what is knowledge management?
why should i care about it?
why should my organization care about it?

how to do knowledge management?
what is knowledge management cycle?

how to create knowledge?
how to capture knowledge?
how to disseminate knowledge?
how to apply knowledge?

Has been a draft for a while and not yet able to complete it. Decided to just post it as-is.

Standard
lesson learned, life, random

Piring Kaca

Letakkan sebuah piring kaca di wastafel/kitchen sink.

Buka keran sehingga air yang keluar sangat kencang.

Permukaan piring kaca akan memantulkan air.

Sekarang kecilkan aliran air dari keran sehingga piring kaca tersebut tergenang oleh air.

Lesson learned: ternyata amat sangat tidak bijaksana memaksakan keinginan kita pada individu keras kepala yang merasa dirinya sudah mengetahui segalanya. Triknya adalah memberikan masukan atau ide secara perlahan. Bersabar hingga akhirnya ide dan gagasan kita bisa memenuhi pikiran individu tersebut.

Catatan:
1. hal ini berlaku untuk diri sendiri
2. selalu tahu kapan harus berhenti karena mungkin saja piring kaca tersebut teramat datar sehingga tidak bisa menampung air — hindari pekerjaan yang sia-sia.

Photo credit: Thanasis Zovoilis

Standard