Berhenti Menggunakan Realtime Yang Salah
Ini tidak ada hubungannya dengan latensi dan membuat sistem lebih kompleks.
Saya memerangi perang yang sedang berlangsung ini dengan frasa "real time". Saya ingin menghilangkannya dari kosakata saya, sampai pada titik di mana saya secara teratur membayangkan meluncurkan bot Slack yang secara otomatis merespons frasa "real-time" sebagai respons terhadap frasa "apakah Anda bermaksud mendefinisikan SLO yang jelas?".
Masalah dengan bahasa sehari-hari menggunakan frasa "real-time" antara sebagian besar insinyur perangkat lunak dan perusahaan rintisan yang menggunakannya adalah tidak menetapkan persyaratan eksplisit. Ini digunakan untuk menyampaikan harapan untuk waktu respons yang cepat (yang tidak berarti bahwa. Saya akan membicarakannya lebih lanjut nanti), tetapi tidak mungkin untuk menafsirkannya secara harfiah. Sistem komputer tidak dapat menangani hal-hal secara instan. Selalu ada penundaan, mungkin hanya milidetik atau nanodetik.
Selain masalah, ada bagaimana orang memandang waktu. Dari sudut pandang sebagian besar pengguna, milidetik adalah instan. Tapi begitu juga penundaan 5 detik di siaran langsung TV. Dari sudut pandang teknis, perbedaan antara 5ms dan 5s adalah arsitektur yang sama sekali berbeda.
Misalnya, jika Anda perlu memproses data dalam beberapa milidetik setelah dibuat, Anda mungkin tidak peduli untuk memulihkan paket yang terkadang hilang. Faktanya, data yang sensitif terhadap waktu mungkin tidak mengganggu Anda, karena cenderung sama sekali tidak berguna jika ditampilkan terlambat.
Jika Anda perlu memproses data dalam hitungan detik setelah dibuat, Anda perlu mengalirkannya. Ini adalah seperangkat alat lain yang dapat berarti membungkus data dalam format tertentu agar lebih mudah dipotong dan direkonstruksi.
Jika Anda perlu memproses data Anda dalam beberapa menit, Anda dapat mengelompokkan data. Ini adalah infrastruktur lain. Batching jauh lebih mudah daripada streaming. Secara pribadi, saya tidak ingin mendukung streaming jika saya tidak membutuhkannya.
Jadi, ketika kami menggambarkan berbagai hal sebagai "real-time", kami menciptakan situasi di mana setiap orang memiliki gagasan yang sama sekali berbeda tentang apa yang sedang kami bangun dan apa yang perlu kami optimalkan. Ketika saya menunjukkan ini kepada orang-orang, itu hampir selalu beralih ke frasa yang lebih tidak berguna "mendekati real-time."
"Hampir real time" sama kaburnya dengan "real time", dengan bonus tambahan yang benar-benar tidak masuk akal, seperti dalam istilah teknis.
Karena "real-time" mengacu pada prioritas proses, bukan waktu respons.
Jangan khawatir jika Anda tidak tahu ini. Saya tidak melakukannya sampai baru-baru ini.
Real-time tidak berarti bahwa prosesnya instan atau secepat mungkin, tetapi sistem memiliki tenggat waktu yang jelas bahwa proses harus diselesaikan dalam jangka waktu tertentu. Batas waktu tidak harus milidetik. Ini bisa memakan waktu beberapa minggu. Dalam sistem hard real-time, sistem divalidasi sedemikian rupa sehingga dapat diasumsikan bahwa tidak mungkin melanggar tenggat waktu. Jika Anda melewatkan tenggat waktu, sistem Anda akan rusak.
Sistem real-time hard atau soft, di sisi lain, fokus pada berapa kali tenggat waktu dilanggar. Beberapa sistem berbasis web dapat digambarkan sebagai soft real-time, tetapi bukan karena mereka super cepat. Ini karena kami melacak SLO yang memiliki tenggat waktu dan menentukan seberapa sering pemrosesan diizinkan lebih lambat dari tenggat waktu tersebut. Sekali lagi, tenggat waktu bisa dalam hitungan detik, menit, atau jam. real-time tidak berarti "seperti yang terjadi dalam kehidupan nyata", tetapi "dengan waktu yang ditentukan sebelumnya".
Bagian dari betapa sulitnya real-time adalah karena proses deterministik yang dimaksud. Operasi semantik dengan waktu respons variabel tidak dianggap sebagai bagian dari komponen real-time. Misalnya, mengambil data dari sumber data atau sesuatu yang terkait dengan koneksi jaringan dapat menyebabkan situasi di mana Anda tidak dapat menjamin bahwa proses akan berakhir dalam jangka waktu tertentu. Dari perspektif pengembangan web, ini mungkin tampak seperti sedikit yang tersisa di tabel. Namun, konsep real-time berasal dari sistem tertanam di mana banyak tugas dilakukan dalam perangkat keras tertentu.
Jangan katakan "real-time"
Singkatnya, jangan katakan "real-time" dalam hal latensi rendah. Tetapkan persyaratan dan tetapkan SLO dengan jumlah digit tertentu (menit, detik, milidetik, dll.).
Real-time tidak mengacu pada kecepatan sistem, tetapi pada sifat jaminan bahwa sistem dapat menyelesaikan suatu proses dalam waktu tertentu. Ini menetapkan cara perangkat keras memprioritaskan proses tertentu di atas yang lain dan harapan tentang implikasi keterlambatan.
Menyebut sistem berbasis web "real-time" seperti mengklaim ketersediaan enam sembilan. Saya pikir itu berlebihan yang tidak berbahaya untuk mengesankan orang, tetapi mereka yang memahami arti istilah itu tahu bahwa Anda penuh omong kosong, dan mereka yang tidak harus memenuhi persyaratan yang tidak jelas Membuat keputusan teknis yang buruk.
Terimakasih sudah membaca, semoga bermanfaat :)