Bangun Seam Sejak Hari Pertama
Membangun platform untuk data bervolume tinggi memaksa kita untuk membuat pilihan.
Anda membutuhkan database yang cepat untuk penyimpanan jangka panjang. Namun, menyiapkan sistem yang kompleks pada hari pertama itu sulit. Anda bahkan mungkin belum mengetahui pola data Anda. Pilihan yang aman adalah database relasional standar yang sudah Anda gunakan.
Kesalahannya adalah mengikat kode Anda secara langsung ke database pertama tersebut. Jika setiap bagian dari aplikasi Anda memanggil database secara langsung, Anda sedang membuat jebakan. Beralih ke database yang lebih baik di kemudian hari akan memerlukan refaktor besar-besaran.
Langkah yang tepat adalah membangun sebuah seam.
Seam adalah sebuah kontrak. Ia mendefinisikan apa yang dilakukan sistem tanpa menjelaskan bagaimana cara melakukannya.
- Buat sebuah interface untuk tugas tersebut.
- Tulis driver dasar menggunakan database Anda saat ini.
- Ikatkan driver tersebut ke interface.
Setiap bagian lain dari aplikasi Anda hanya berkomunikasi dengan interface tersebut. Tidak ada yang tahu database mana yang berjalan di latar belakang.
Ketika data Anda berkembang dan Anda membutuhkan sistem yang lebih cepat, pekerjaannya menjadi sederhana. Anda menulis driver baru, mengubah satu baris kode, dan meluncurkannya. Tidak ada dashboard yang rusak. Tidak ada pipeline yang terhenti.
Beberapa orang menyebut ini sebagai abstraksi prematur. Mereka mengatakan Anda belum membutuhkannya.
Saya tidak setuju. Sebuah interface hanya memakan biaya satu file tambahan. Melewatkannya hanya akan memindahkan biaya tersebut ke waktu mendatang. Saat Anda akhirnya perlu melakukan perubahan, Anda akan memiliki ratusan file yang harus diperbaiki di bawah tekanan. Interface adalah asuransi yang murah.
Gunakan tiga kebiasaan ini untuk membuat seam Anda lebih kuat:
Gunakan pengidentifikasi ganda. Gunakan integer yang cepat untuk join database internal. Gunakan UUID untuk apa pun yang keluar dari sistem Anda. Ini menjaga data Anda tetap aman dan join Anda tetap cepat.
Gunakan Enum untuk kosakata bersama. Jangan gunakan string acak untuk status atau tingkat keparahan (severity). Gunakan satu Enum agar setiap bagian dari aplikasi Anda berbicara dalam bahasa yang sama.
Gunakan envelope versi untuk data. Jika sistem Anda menerima data dari banyak sumber, gunakan skema yang ketat. Hanya tambahkan field baru. Jangan pernah menghapus atau mengubah nama field tanpa versi baru. Ini menjaga klien lama tetap berfungsi sementara Anda meningkatkan sistem.
Temukan batasnya. Namai dengan sebuah kontrak. Isi dengan implementasi yang sederhana.
Kontrak adalah janji Anda. Driver hanyalah cara Anda menepati janji tersebut hari ini.
Sumber: https://dev.to/nasrulhazim/build-the-seam-on-day-one-the-second-driver-on-day-ninety-26b
