DISKON TERBATAS! Masukkan kupon "skillbaru" saat checkout di kelas apa saja

Logo Koala Skodev mengetik

Skodev

Belajar coding dalam bahasa Indonesia

CARA MEMBUAT PERUBAHAN PADA APLIKASI DENGAN AMAN

Pelajari strategi bagaimana cara meminimalisir terjadinya kesalahan saat membuat perubahan pada aplikasi.

Cara Membuat Perubahan pada Aplikasi dengan Aman

Daftar Isi:

Persiapkan Hal Terburuk
Jangan Buat Perubahan yang Bes...
Lakukan Testing yang Efektif

Sebelum merilis aplikasi ke publik, kita bisa bebas membuat perubahan sebesar apapun. Karena hanya kita yang menggunakan aplikasi tersebut.

Namun, ketika aplikasi sudah rilis ke publik, kita tidak bisa lagi mengubah aplikasi dengan semena-mena, karena jika perubahannya bermasalah, maka pengguna akan kecewa dan tidak akan menggunakan aplikasi kita lagi.

Oleh karena itu, sebaiknya kita lakukan langkah-langkah yang bisa meminimalisir terjadinya kesalahan.

Persiapkan Hal Terburuk

Meskipun kita sudah berusaha sebaik mungkin, kita tidak bisa menjamin bahwa perubahan yang kita buat tidak akan bermasalah. Oleh karena itu, kita perlu mempersiapkan apabila terjadi hal terburuk.

Lakukan Back Up Data

Sebelum melakukan perubahan, pastikan kita sudah melakukan back up data. Dengan melakukan back up data, kita bisa mengembalikan data ke kondisi semula jika terjadi masalah.

Yang perlu di back up bisa jadi antara lain:

Tapi tidak semua wajib di back up, karena tergantung perubahan apa yang kita lakukan.

Berikan Cara Rollback

Apa itu Rollback?

Rollback adalah proses mengembalikan aplikasi ke versi sebelumnya. Jika terjadi masalah setelah perubahan, maka kita bisa melakukan rollback untuk mengembalikan aplikasi ke versi sebelumnya.

Cara Agar Aplikasi Bisa Di-rollback

Supaya bisa melakukan rollback, kita bisa gunakan cara-cara berikut:

Beri Waktu untuk Memeriksa dan Mengawasi

Pastikan saat melakukan perubahan, kita memberikan waktu yang cukup untuk memeriksa dan mengawasi aplikasi. Sehingga, jika ditemukan adanya masalah, kita bisa segera memperbaiki masalah tersebut.

Jadi, sebaiknya kita tidak melakukan perubahannya di penghujung waktu kerja, atau jadwalkan waktu lembur dari awal jika perlu.

Jadwalkan Perubahan pada Waktu yang Tepat

Jika perubahan yang dilakukan memerlukan downtime atau waktu aplikasi tidak bisa diakses, maka jadwalkan perubahan pada waktu yang tepat. Misalnya, jadwalkan perubahan pada waktu-waktu yang sedikit pengguna, atau jadwalkan perubahan pada waktu yang tidak krusial.

Gunakan Observability Tools

Apa itu Observability Tools?

Observability tools adalah tools yang digunakan untuk memantau aplikasi. Dengan observability tools, kita bisa melihat bagaimana aplikasi berjalan, dan jika terjadi masalah, tools tersebut bisa memberitahu kita tentang detail masalah tersebut seperti:

Contoh Tampilan Observability Tools Sentry

Contoh Observability Tools

Beberapa contoh observability tools yang bisa kita gunakan adalah:

Jangan Buat Perubahan yang Besar secara Dadakan

Seiring waktu, aplikasi yang aktif digunakan biasanya akan mengalami perubahan. Contohnya berupa perbaikan bug, penambahan fitur, atau perubahan lainnya.

Sebuah perubahan terkadang bisa mengubah cara kerja aplikasi secara signifikan dan berisiko memunculkan masalah-masalah yang tidak dapat diprediksi.

Oleh karena itu, kita memerlukan strategi agar efek samping dari perubahan yang kita buat bisa diminimalisir.

Pertahankan Backward Compatibility

Apa itu Backward Compatibility?

Backward compatibility adalah kemampuan aplikasi untuk tetap berjalan dengan baik meskipun ada perubahan pada aplikasi tersebut dengan mempertahankan dukungan terhadap versi-versi sebelumnya.

Contoh Kasus Tanpa Backward Compatibility

Misalnya, kita memiliki data user seperti berikut:

idfirst_namelast_nameemail
1AliceZubergalice@example.com

Kemudian kita ingin mengubah kolom first_name dan last_name menjadi full_name.

idfull_nameemail
1Alice Zubergalice@example.com

Jika kita langsung mengubah first_name dan last_name menjadi full_name pada kode dan database, maka kita harus memastikan proses deploy berjalan dengan baik, seperti:

  1. Mengkonversi data lama ke format baru pada database
  2. Menimpa kode lama dengan kode baru
  3. Memastikan aplikasi berjalan dengan baik

Selama menjalankan langkah-langkah di atas, aplikasi tidak bisa diakses oleh pengguna, jadi kita hanya bisa men-deploy-nya pada waktu-waktu tertentu. Kemudian, jika ditemukan ada masalah muncul setelah deploy, maka kita perlu melakukan rollback, yaitu mengembalikan aplikasi ke versi sebelumnya.

Contoh Penerapan Backward Compatibility

Pada contoh di atas, proses rollback tidak terlihat sulit. Tapi, pada perubahan yang lebih besar, proses rollback bisa memakan waktu yang cukup lama.

Oleh karena itu, sebaiknya kita pertahankan backward compatibility. Sehingga, langkah yang kita lakukan adalah seperti ini:

  1. Membuat kolom full_name pada database tanpa menghapus kolom first_name dan last_name.
idfirst_namelast_namefull_nameemail
1AliceZubergAlice Zubergalice@example.com
  1. Mengubah kode create dan update untuk mengisi kolom full_name.
// Sebelum
const user = {
  "first_name": "Alice",
  "last_name": "Zuberg",
  "email": "alice@example.com"
};

createUser(user);

// Sesudah
const user = {
  "full_name": "Alice Zuberg",
  "first_name": "Alice",
  "last_name": "Zuberg",
  "email": "alice@example.com"
};

createUser(user);
  1. Mengubah kode read data menggunakan kolom full_name, tetapi ketika full_name tidak ada, maka gunakan first_name dan last_name
if (user.full_name !== '') {
  return user.full_name;
} else {
	return `${user.first_name} ${user.last_name}`;
}

Dengan begitu, kita jadi mendapat beberapa keuntungan:

Setelah kita yakin bahwa semua bagian aplikasi sudah menggunakan full_name, maka kita bisa menghapus kolom first_name dan last_name dari database. Kemudian, jika tidak ada masalah setelah penghapusan kolom dari database, kita bisa menghapus kode yang tidak digunakan lagi.

Buat Versioning

Dalam dunia aplikasi mobile dan desktop, terkadang pengguna tidak menggunakan versi terbaru dari aplikasi. Jika aplikasi tersebut berinteraksi dengan API di server, maka kita wajib untuk membuat versioning.

Buat Feature Flag

Feature flag adalah teknik yang memungkinkan kita untuk mengontrol fitur yang akan diaktifkan atau dinonaktifkan. Dengan feature flag, kita bisa mengaktifkan fitur baru hanya untuk sebagian pengguna, atau mengaktifkan fitur baru hanya untuk pengguna yang kita pilih.

Baca lebih detail apa itu feature flag

Dengan feature flag, kita bisa menguji fitur baru tanpa harus merilisnya ke publik. Jika fitur baru tersebut bermasalah, kita bisa menonaktifkannya dengan cepat.

Salah satu cara termudah untuk membuat feature flag adalah dengan menggunakan konfigurasi. Misalnya, kita bisa membuat konfigurasi seperti ini:

FEATURE_FLAG_NEW_FEATURE=true

Kemudian, kita bisa menggunakan konfigurasi tersebut pada kode aplikasi:

if (process.env.FEATURE_FLAG_NEW_FEATURE) {
  // Tampilkan fitur baru
} else {
  // Tampilkan fitur lama
}

Lakukan Testing yang Efektif

Programmer yang baik pasti menguji perubahan aplikasi sebelum di rilis ke publik. Tapi, tidak semua programmer melakukan testing yang efektif. Testing yang efektif berarti testing yang menguji semua kemungkinan yang bisa terjadi pada aplikasi. Agar bisa melakukan testing yang efektif, kita perlu melakukan hal berikut:

Buat Test Case

Test case adalah daftar kasus yang akan diuji. Test case bisa berupa daftar input dan output yang diharapkan, atau daftar langkah-langkah yang harus dilakukan untuk menguji aplikasi.

Kita bisa menulis test case di mana saja; di notepad, excel, maupun software lain yang bisa digunakan untuk menulis. Dari pengalaman saya, kebanyakan QA yang saya temui menggunakan Google Sheet untuk menulis daftar test case.

Contoh Test Case

Misalnya, kita ingin menguji sebuah fitur manajemen pengguna, maka kita bisa membuat test case seperti ini:

No LangkahLangkah TesHasil yang DiharapkanHasil
1Klik menu manajemen penggunaHalaman manajemen pengguna terbuka
2Klik tombol tambah penggunaHalaman tambah pengguna terbuka
3Isi form tambah penggunaForm terisi❌ Tidak dapat memilih role karena tidak muncul
4Klik tombol simpan penggunaMuncul toast dan pindah ke halaman edit pengguna❗ Belum dapat dilakukan

Dengan menuliskan test case, kita bisa menguji semua kemungkinan yang bisa terjadi pada aplikasi dengan cermat dan tercatat.

Beda halnya jika kita tidak menuliskan test case, maka kita jadi menguji aplikasi secara asal-asalan, dan kemungkinan besar bisa melewatkan beberapa kasus yang bisa terjadi pada aplikasi.

Terapkan Automated Testing

Setelah membuat test case, kita bisa menguji aplikasi dengan test case tersebut. Namun, jika kita menguji aplikasi secara manual, maka kita akan membuang banyak waktu dan tenaga. Terlebih lagi, tidak jarang suatu perubahan itu bisa tanpa sengaja merusak fitur yang sudah berjalan dengan baik. Oleh karena itu, kita perlu menggunakan automated testing.

Automated testing adalah proses pengujian aplikasi dengan menggunakan software yang bisa menguji aplikasi secara otomatis. Dengan automated testing, kita bisa menguji aplikasi dengan cepat dan efektif.

Ada banyak software automated testing yang bisa kita gunakan, seperti Selenium, Cypress, dan lain-lain.

Ilustrasi

Penulis: Faqih Muntashir

/ @itsfaqih_

Halo, saya Faqih, Product Engineer yang hobi ngoding dan desain. Saya di sini ingin menjerumuskan kamu agar menyukai programming dan bisa membangun aplikasi yang berkualitas

Artikel lain di kategori "aplikasi"

Daftar newsletter skodev masukkan emailmu untuk dapat informasi menarik dari dunia koding