Apakah waktu startup aplikasi web benar-benar penting?


11

Bercakap-cakap dengan seseorang tentang menambahkan beberapa kode inisialisasi pada startup aplikasi dan dia mengeluh tentang hal itu menyebabkan peningkatan waktu startup. Dia tidak bisa benar-benar menyatakan alasan (firasat atau sesuatu, tidak tahu). Ini bukan aplikasi yang banyak digunakan dan dimulai sekitar satu menit atau lebih, kami menyebarkan beberapa kali setahun.

Saya ingat pernah membaca saran tentang pertanyaan pada SO beberapa waktu lalu, orang yang menyarankan untuk menginisialisasi pada startup alih-alih pada akses halaman dengan cap "jika Anda mampu membayar penalti".

Saya telah bekerja dengan aplikasi web yang dimulai dari 30 detik hingga 4-5 menit tetapi begitu online mereka bergoyang.

Jadi apa yang saya lewatkan? Kecuali itu aplikasi penting seperti ... Saya tidak tahu ... untuk pasar keuangan, aplikasi medis, eksplorasi ruang angkasa dll, apakah benar-benar penting saat startup?

PS Saya benar-benar merujuk ke aplikasi web, aplikasi desktop terikat untuk mulai cepat kilat.


Apakah ada persyaratan non-fungsional yang ditentukan untuk memulai aplikasi atau hanya diskusi dalam pengembangan?
StuperUser

@StuperUser: tidak ada persyaratan, hanya diskusi sejauh ini.
JohnDoDo

Sebenarnya ada situs Pengalaman Pengguna di mana ini akan lebih baik ditanyakan.
Cyclops

@ Cyclops: Saya sebenarnya lebih tertarik pada alasan di sisi server pagar, bukan dari sisi pengguna.
JohnDoDo

Jawaban:


18

Ini bisa menjadi faktor besar selama pengembangan: jika platform Anda tidak mendukung perubahan kode dalam aplikasi yang berjalan, maka waktu startup menjadi bagian dari siklus umpan balik Anda, dan di sana, bahkan 30 detik terasa menyakitkan dan merupakan ancaman terhadap produktivitas.

Untuk lingkungan produksi, itu tidak masalah; entah downtime kecil dapat diterima dan 5 menit masih tidak banyak, atau tidak dan Anda harus menerapkan semacam peralihan langsung.


Ya, saya tahu banyak tentang siklus pengembangan, tetapi tidak seperti kita mengubah koma, menggunakan, mengubah nama variabel, menggunakan dll. Saya pribadi menggunakan pada pengembangan maksimal 10 kali / hari. Startup satu menit atau 1,2 tidak banyak perbedaan.
JohnDoDo

7
@JohnDoDo: Seberapa banyak dari itu adalah alur kerja yang benar-benar alami dan seberapa sering menghindari penyebaran yang lama? Siklus umpan balik cepat dapat sangat membantu produktivitas. Terkadang membuat perubahan kecil dan bertahap dan segera melihat hasilnya adalah yang Anda butuhkan. 50 tahun yang lalu orang menulis program di atas kertas, menyerahkannya ke operator dan mendapatkan hasil cetakan pada hari berikutnya - kadang-kadang hanya kesalahan penyusun. Bukankah itu sepertinya cara yang sangat tidak efisien untuk bekerja untuk Anda? Bagi banyak programmer, 10 penyebaran Anda per hari tampak seperti itu.
Michael Borgwardt

1
Jika memungkinkan, evaluasi opsi untuk melakukan "mock" init, atau untuk membuat struktur serial ke disk dengan data uji untuk mempercepat waktu startup selama pengembangan.
Vinko Vrsalovic

Saya setuju dengan Vinko, adakah cara Anda dapat mematikan fungsi init () yang mahal saat membangun dalam mode Debug? Jangan repot-repot jika apa yang Anda inisialisasi akan memberi Anda hasil yang berbeda pada Dev dan Produksi.
AndyMcKenna

4

Saya percaya ini adalah kasus ketika prinsip dialektis Hegel yang terkenal tentang transisi dari kuantitas ke kualitas benar-benar berfungsi.

Anda lihat, waktu selalu penting. Saya setuju dengan kata-kata Michael Borgwardt tentang pentingnya membangun cepat selama pengembangan / pengujian, tetapi saya bersikeras bahwa (mungkin dengan cara lain) itu juga sangat penting untuk produksi.

Setiap pengembang yang menggunakan beberapa kode buruk untuk produksi tahu bahwa perbaikan terbaru yang disediakan dalam 5 menit dan dalam 1 menit adalah hal yang benar-benar berbeda.


2

Pertanyaan sebenarnya adalah apakah aplikasi akan bekerja tanpa inisialisasi. Kami memiliki karyawan baru yang terobsesi dengan "kinerja", jawaban saya adalah saya tidak peduli seberapa cepat Anda memberikan hasil yang salah. IMHO memotong sudut, algoritma mangling karena "akan lebih cepat dengan cara ini", dan ide-ide hebat lainnya hanya memperkenalkan bug.

Jika inisialisasi diperlukan maka lakukanlah. Berapa banyak waktu yang terbuang ketika pengguna akhir mendapatkan hasil yang salah, akhirnya mengetahui bahwa aplikasi web salah, menelepon Anda dan mengeluh, dan Anda harus kembali dan men-debug / memperbaiki / menguji / memindahkan kembali? sekarang tanyakan kepada kolega Anda bagaimana waktu telah dihemat. (Dan saya berani bertaruh inti server Anda 99% diam)


2

Pertanyaan ini tidak menanyakan tentang platform tertentu. Ada beberapa platform di mana waktu startup sangat penting.

Misalnya, di Google App Engine; jika halaman Anda tidak diakses (atau lebih tepatnya, diakses lebih jarang dari aplikasi lain pada node yang sama), itu akan dibongkar sesekali.

Jadi, jika Anda berada di bawah 99% dari frekuensi akses situs, maka waktu startup adalah waktu akses; aplikasi Anda sedang dimulai ulang di hampir setiap akses. jika Anda berada di 1% teratas, maka aplikasi Anda memulai banyak node, dan meskipun banyak akses halaman akan kembali dari instance yang sudah dimulai, beberapa masih tidak, dan Anda akan memiliki waktu akses yang lama dan lama, .

Hal yang sama juga berlaku pada banyak lingkungan hosting lainnya. Kebocoran di perpustakaan pihak ketiga, atau bahkan dalam kode Anda sendiri yang hanya menghindari penemuan, mungkin berarti bahwa satu-satunya cara yang dapat diandalkan untuk menjalankan layanan web Anda adalah dengan memuat ulang setiap begitu banyak permintaan (seringkali antara 100 hingga 10.000), dan sebagainya waktu mulai dibayar sering. Menggunakan pola ini dapat diterima saat aplikasi bocor, tetapi mulai dengan cepat; itu tidak berfungsi ketika aplikasi membutuhkan waktu lebih dari beberapa detik untuk memulai.


1

Anda menjalankan risiko aplikasi Anda dianggap di bawah standar atau lebih buruk lagi, kemampuan pengembangan Anda. Sekarang, aplikasi ini mungkin menghemat banyak waktu dan / atau melakukan tugas yang dibutuhkan sehingga pengguna yang berterima kasih dapat melihat melewati startup yang panjang.

Mungkin butuh waktu lebih lama untuk memprogram sedemikian rupa untuk memuat aplikasi dengan malas, tetapi hanya para pemangku kepentingan yang dapat menentukan apakah itu layak. Saya punya laporan yang berjalan dalam 55 detik. dan kami turun ke 35. Tidak ada yang memperhatikan. Meskipun saya menghabiskan dua kali lebih banyak waktu untuk mendapatkannya dari usia 35 hingga 18 tahun, semua orang memperhatikan dan berterima kasih dan terkesan. Pergi dari 5 hingga 3 menit untuk aplikasi yang digunakan beberapa kali setahun bukanlah masalah besar. Pengguna hanya akan memiliki lebih sedikit waktu untuk dihabiskan di Facebook atau mendapatkan kopi.

Persepsi adalah kuncinya. Jika perusahaan tidak senang dengan tim pengembang secara umum dan aplikasi ini secara khusus, Anda mungkin ingin membangun niat baik dan mempercepatnya.


Waktu startup aplikasi web seharusnya tidak mempengaruhi pengguna normal. Pengembang lain kesal karena ia secara pribadi me-restart aplikasi beberapa kali sehari sebagai bagian dari pengembangan reguler.
AndyMcKenna
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.