Daftar Periksa untuk Peninjauan Kode dalam Sistem Terdistribusi

sudut pandang oleh



arsitektur sanja Microservice tersebar luas dalam pengembangan perangkat lunak. Tetapi organisasi yang menggunakannya, selain kesulitan dalam menerapkan logika bisnis, juga menghadapi kegagalan terdistribusi.



Kesalahan komputasi terdistribusi didokumentasikan dengan baik tetapi sulit untuk dideteksi. Akibatnya, membangun arsitektur sistem terdistribusi skala besar dan andal menjadi tantangan yang kompleks. Kode yang terlihat bagus pada sistem monolitik dapat menjadi masalah setelah Anda berpindah ke jaringan.



Tim Solusi Cloud Mail.rumenerjemahkan artikel, yang penulisnya telah terlibat dalam mendeteksi kegagalan umum dalam kode produksi selama beberapa tahun dan mempelajari alasan yang menyebabkan hasil ini. Artikel ini memberikan pedoman tinjauan kode yang penulis gunakan sebagai daftar periksa dasar.



Sistem jarak jauh gagal



Tidak peduli seberapa hati-hati sistem dirancang, itu akan macet di beberapa titik - ini adalah fakta ketika perangkat lunak diluncurkan ke produksi.



Kegagalan terjadi karena berbagai alasan: bug, masalah infrastruktur, lonjakan lalu lintas yang tiba-tiba, pembusukan karena kelalaian, tetapi hal itu hampir selalu terjadi. Ketangguhan dan keandalan seluruh arsitektur bergantung pada bagaimana modul pemanggil menangani kesalahan:



  1. . . , , . β€” . , .
  2. . , . ? ? , ? ? .




Situasi ini lebih buruk daripada crash total karena tidak diketahui apakah sistem jarak jauh sedang berjalan. Oleh karena itu, untuk menangani skenario ini, Anda harus selalu memeriksa masalah yang dijelaskan di bawah ini.



Beberapa masalah dapat diselesaikan secara transparan ke kode aplikasi dengan menggunakan teknologi Service Mesh seperti Istio. Namun, Anda perlu memastikan bahwa masalah tersebut ditangani apa pun metodenya:



  1. Setel batas waktu untuk panggilan sistem jarak jauh . Ini juga berlaku untuk waktu tunggu untuk panggilan API dan database jarak jauh, penerbitan acara. Periksa apakah trailing dan batas waktu yang wajar disetel untuk semua sistem jarak jauh dalam panggilan. Hal ini untuk menghindari pemborosan sumber daya saat menunggu jika sistem jarak jauh menjadi tidak responsif.
  2. -. , β€” . , .



    , - (, ). , , . β€” , .
  3. (Circuit Breaker). , , Hystrix. . , Circuit Breaker . β€” .
  4. - . - β€” , . , . , -. , .
  5. . , . , , .
  6. . , ( API, ), β€” . : , , . .


,



  1. , API . - API. , API . API API, β€” .
  2. SLA β€” . SLA , . , .



    SLA : β€” . , SLA. β€” , , .
  3. API-. SLA β€” SLA.
  4. . β€” , . , , , . .



    β€” «» , «» . , id = 123, id =123. , «» , Β« Β». .




  1. . , , . , Redis, . , .
  2. . API (), ? , , ? API ?
  3. . , , , . . . , , . . .




  1. Periksa masukan di setiap titik masuk. Dalam lingkungan terdistribusi, setiap bagian dari sistem dapat disusupi dari sudut pandang keamanan atau memiliki bug. Oleh karena itu, setiap modul harus memeriksa apa yang diterimanya sebagai input. Dan jangan berasumsi bahwa dia akan menerima masukan yang bersih, yaitu, masukan yang aman.
  2. Jangan pernah menyimpan kredensial di repositori kode. Ini adalah kesalahan umum yang sulit disingkirkan. Namun, kredensial harus selalu dimuat ke dalam runtime sistem dari penyimpanan eksternal, sebaiknya yang aman.


Saya harap panduan ini bermanfaat bagi Anda dalam mengurangi bug umum dalam kode sistem terdistribusi.



Semoga berhasil!



Apa lagi yang harus dibaca:



  1. , : .
  2. -Agile .
  3. .



All Articles