Solution Architect Cheatsheet — Part 2
Membangun Sistem dengan Pengetahuan dan Cara yang Benar
Sebelumnya pada Solution Architect Cheatsheet — Part 1 telah dibahas hal-hal penting yang mesti diketahui oleh seorang solution architect. Berikut adalah lanjutan pembahasannya.
Apa itu Latency
Latency adalah waktu yang dibutuhkan oleh suatu request dari mulai datang ke server sampai respon diterima oleh yang melakukan request. Latency dapat berarti pula waktu perjalan dari awal sampai tempat tujuan. Latency diukur dalam satuan mili detik. Latency secara mudah dapat diartikan sebagai delay atau waktu penundaan.
Latency yang terjadi dalam hitungan sepersekian detik, dapat dibilang masih cukup bagus dan wajar. Akan tetapi, jika sudah masuk hitungan detik maka sudah termasuk latency tinggi. Harus ada beberapa tindakan untuk menyelesaikan permasalahan high latency ini. Dimulai dari mencari penyebab terjadinya latency sampai menyelesaikan atau memperbaiki permasalahan yang mengakibatkan latency tadi.
Terdapat beberapa hal yang menghasilkan suatu proses mengalami latency. Berikut adalah penyebab-penyebabnya.
- Media transmisi, semakin jauh jarak antar server dan client maka akan terdapat latency walau kita menggunakan jaringan yang sangat cepat misalkan fiber optic.
- Media penyimpanan, jenis hardisk SSD memiliki latency yang lebih rendah daripada media penyimpanan magnetic. Pastikan jika sistem yang kita harapkan memiliki kecepatan read yang lebih bagus maka gunakan lah SSD daripada harddisk magnetik.
- Konfigurasi jaringan dan server, semakin banyaknya Hop atau point of presence yang harus dilewati data untuk bisa sampai pada tujuan maka peluang latency akan semakin besar. Hindari membuat konfigurasi jaringan yang rumit, sehingga menghambat laju data. Salah satu cara untuk membantu adalah dengan penggunaan Content Delivery Network (CDN).
- Gangguan frekuensi radio, cuaca bisa mempengaruhi latency. Ketika hujan maka sistem dengan banyak memanfaatkan jaringan radio akan mengalami latency yang lebih tinggi daripada yang menggunakan fiber optik.
Latency berbeda dengan bandwidth. Terkadang orang mengartikan dengan cara yang sama. Kalau kita analogikan dengan pipa air maka bandwidth merupakan ukuran seberapa sempit atau lebar nya ukuran pipa. Semakin besar ukuran pipa maka semakin banyak air (data) yang bisa dikirimkan. Sedangkan latency menyatakan seberapa cepat konten yang ada di dalam pipa untuk ditransmisikan.
Apa itu Blocking dan Deadklock
Blocking adalah proses yang berhenti atau masih berjalan lama sehingga membuat proses yang lain menunggu proses yang sedang berjalan ini. Proses selajutnya dapat berjalan apabila resource yang digunakan oleh proses sebelumnya sudah tidak digunakan. Blocking proses umumnya terjadi pada synchronous proses.
Deadlock adalah suatu keadaan buntu yang tidak dapat diproses karena kedua proses atau lebih saling menunggu proses satu sama lain. Mungkin contoh berikut dapat menjelaskan deadlock dengan mudah.
Ahmad dan Dodi bekerja di sebuah dapur yang semua barang dan alat cuma ada satu. Ahmad dan Dodi keduanya mempunyai tugas untuk membuat sebuat Salad Roti. Ahmad sudah memegang pisau terlebih dahulu dan Dodi sudah memegang roti. Karena masing-masing membutuhkan satu sama lain maka pekerjaan keduanya tidak akan pernah beres. Apabila keduanya terus saling menunggu maka mereka menemukan kebuntuan. Solusi ada jika mereka mau saling mengalah dan membiarkan salah satu orang menyelesaikan proses dan rotinya mereka bagi dua.
Pada sistem komputer atau lebih tepatnya software keadaan ini akan sering terjadi, kecuali kita memiliki cara untuk menghentikan proses dan membiarkan salah satu proses untuk berjalan sehingga resource tidak digunakan serta satu sama lain tidak saling menunggu.
Apa Perbedaan dari Monolith, SOA, dan Microservice
Monolith arsitektur adalah mirip dengan software dengan wadah besar di mana semua komponen perangkat lunak aplikasi dirakit bersama dan dikemas dengan erat.
SOA adalah Service-Oriented Architecture adalah kumpulan service yang berkomunikasi satu sama lain. Komunikasi dapat melibatkan pengiriman data sederhana atau dapat melibatkan dua atau lebih service yang mengkoordinasikan beberapa aktivitas.
Microservice arsitektur adalah arsitektur yang menyusun aplikasi sebagai kumpulan service otonom kecil yang dimodelkan berdasarkan domain bisnis.
Dengan demikian , kita tau SOA bukanlah microservice. SOA lebih kebagai mana suatu service di expose sedangkan microservice lebih ke bagaimana service di buat.
Apa itu God Class dan Mengapa tidak Bagus
God class adalah suatu class code yang mengandung banyak fungsi dan bertanggung jawab terhadap banyak proses. God class mudah untuk di buat tetapi sangat tidak sarankan untuk di buat karena sangat susah untuk di maintenance.
Apabila terjadi perubahan di suatu tempat maka akan banyak sekali kemungkinan proses dan fungsi yang lain akan terganggu. Dengan demikian rata-rata team developer enggan untuk melakukan perubahan atau perbaikan. Mereka lebih memilih untuk menambahkan fungsi baru daripada merubah code yang telah dan god class ini semakin tidak bisa di kalahkan.
Cara terbaik kita harus selalu menjauhi membuat god class. Buatkan suatu class dengan satu fungsi. Misal EmailSender hanya mengandung proses pengiriman email dan SMSSender hanya mengandung proses pengiriman sms. Usahakan membuat class dengan pendekatan single responsibility principle.
Apa itu SRP
SRP yang merupakan kependekan dari Single Responsibility Principle adalah kondisi dimana class atau method hanya bertanggung jawab terhadap satu fungsi atau tanggung jawab saja. Dia harus memiliki kohesi yang tinggi sehingga jelas fungsinya dan mudah untuk di maintenance.
Contoh apabila kita misalnya memiliki class EmailSender maka dia hanya melakukan
- Hanya berurusan dengan proses pengiriman email saja.
- Tidak berurusan dengan proses loading content email atau bahkan tidak bertanggung jawab terhadap formatting content email sebelum dikirim.