Apakah program Anda merupakan fungsi atau layanan?

04 Januari 2021 [Programming, Tech]

Mungkin semua orang sudah mengetahui hal ini, tetapi untuk kejelasan saya sendiri, menurut saya sebenarnya ada dua jenis program komputer:

  • Sebuah fungsi: sesuatu yang Anda jalankan, dan mendapatkan kembali hasilnya. Contoh: alat baris perintah seperti ls
  • Sebuah layanan: sesuatu yang menunggu sesuatu terjadi, dan meresponsnya. Contoh: server web

Bagaimana fungsi bekerja

Program yang pada dasarnya berfungsi harus:

  • Validasi masukan mereka dan hentikan jika salah
  • Berhenti ketika mereka telah menyelesaikan pekerjaannya*
  • Memberi tahu Anda apakah mereka berhasil atau gagal

*Masalah Penghentian menunjukkan bahwa Anda tidak dapat membuktikan bahwa mereka berhenti, jadi saya tidak akan meminta Anda melakukan itu.

Fungsi penulisannya relatif mudah.

Bagaimana layanan bekerja

Program yang bersifat layanan harus:

  • Mulailah ketika Anda menyuruh mereka untuk memulai, bahkan ketika segala sesuatunya tidak beres
  • Teruslah berlari sampai Anda menyuruh mereka berhenti, bahkan ketika hal buruk terjadi
  • Beritahu pengguna tentang masalah melalui beberapa mekanisme komunikasi

Layanan menulis tampaknya sedikit lebih sulit daripada fungsi menulis.

Bagaimana dengan UI?

Saya menyarankan bahwa program dengan UI hanyalah layanan kasus khusus. Apakah Anda setuju?

Bagaimana dengan membiarkannya crash?

Menurut saya, let-it-crash adalah cara yang baik untuk membangun layanan, namun ketika Anda membangun layanan dengan cara seperti itu, saya mempertimbangkan keseluruhan sistem menjadi layanan sebenarnya: ini berarti kode yang kita tulis, ditambah runtime. Dalam hal ini, runtime bertanggung jawab untuk menjaga layanan tetap berjalan (dengan memulai ulang), dan memberi tahu pengguna tentang masalah.

Akibatnya, let-it-crash memungkinkan kita untuk menulis program yang terlihat seperti fungsi (yang menurut saya lebih mudah), dan tetap berperilaku seperti layanan, karena runtime melakukan pekerjaan ekstra untuk kita. Erlang sepertinya contoh yang bagus untuk hal ini.

Apa implikasinya?

Jika Anda sedang menulis suatu layanan, program Anda harus dimulai ketika diminta, dan terus berjalan hingga diminta berhenti, meskipun keadaannya buruk.

Misalnya:

  • layanan yang bergantung pada sumber data harus tetap berjalan ketika sumber data tersebut tidak tersedia, dan mengeluarkan kesalahan yang mengatakan bahwa layanan tersebut tidak dapat berfungsi. Ini akan mulai berfungsi ketika sumber data tersedia. (Sekali lagi, jika Anda menerapkan perilaku ini dengan menggunakan runtime yang memungkinkan Anda menulis dengan gaya let-it-crash, itu bagus untuk Anda.)
  • layanan yang bergantung pada keberadaan direktori mungkin harus membuat direktori tersebut jika tidak ada.
  • layanan yang memerlukan konfigurasi mungkin ingin memulai dengan default yang wajar jika konfigurasi tidak disediakan. Atau mungkin harus mengeluh keras dan melakukan polling agar file dapat dibuat?

Mengapa tidak berhenti ketika ada yang salah?

  • Dengan menggunakan pendekatan ini, urutan memulai layanan tidak menjadi masalah. Semakin banyak pelayanan yang kita miliki, semakin menyakitkan rasanya mendapat perintah yang harus kita ikuti.
  • Sangat menyenangkan ketika segala sesuatunya dapat diprediksi. Kami berharap pelayanan tetap berjalan dalam keadaan normal. Dengan menggunakan pendekatan ini, ekspektasi kita tidak salah ketika terjadi kesalahan.

Apa sisi buruknya?

  • Anda harus memperhatikan pelaporan kesalahan yang berasal dari layanan yang sedang berjalan – layanan tersebut mungkin tidak berfungsi.
  • Layanan akan tetap terhenti, karena bug, atau setidaknya karena kegagalan perangkat keras, sehingga Anda tetap harus memperhatikan apakah layanan sedang berjalan.

Lebih lanjut: 12 Aplikasi Retak

News
Berita Teknologi
Berita Olahraga
Sports news
sports
Motivation
football prediction
technology
Berita Technologi
Berita Terkini
Tempat Wisata
News Flash
Football
Gaming
Game News
Gamers
Jasa Artikel
Jasa Backlink
Agen234
Agen234
Agen234
Resep
Download Film

A gaming center is a dedicated space where people come together to play video games, whether on PCs, consoles, or arcade machines. These centers can offer a range of services, from casual gaming sessions to competitive tournaments.