Saya mencoba menentukan cara untuk mendistribusikan pembaruan perangkat lunak untuk aplikasi web yang dihosting / di tempat yang mungkin memiliki pembaruan mingguan dan / atau bulanan. Saya tidak ingin pelanggan yang menggunakan produk di tempat harus khawatir tentang memperbarui secara manual. Saya hanya ingin mengunduh dan menginstal secara otomatis ala Google Chrome. Saya berencana menyediakan file OVF dengan Ubuntu dan perangkat lunak diinstal dan dikonfigurasi.
Pikiran pertama saya tentang bagaimana mendistribusikan perangkat lunak adalah membuat enam repositori / saluran Apt (tidak yakin mana yang lebih baik pada saat ini) yang akan diakses melalui SSH menggunakan kunci sehingga jika pelanggan tidak memperbarui langganan mereka, kami dapat menonaktifkan akun mereka :
- Beta - Digunakan secara internal pada data uji untuk memeriksa paket untuk cacat utama.
- Internal - Digunakan secara internal pada data langsung untuk memeriksa paket untuk cacat (tahap makanan anjing).
- Eksternal 1 - Digunakan untuk 1% dari basis pengguna kami (dipilih secara acak) untuk memeriksa cacat.
- Eksternal 9 - Digunakan untuk 9% dari basis pengguna kami (dipilih secara acak) untuk memeriksa cacat.
- Eksternal 90 - Digunakan untuk sisa 90% pengguna.
- Hosted - Digunakan untuk lingkungan yang di-host.
Dibutuhkan tanda pada setiap tahap untuk pindah ke repositori berikutnya jika ada masalah yang dilaporkan.
Pertanyaan saya kepada komunitas adalah:
- Adakah yang pernah mencoba sesuatu seperti ini sebelumnya?
- Adakah yang bisa melihat kelemahan prosedur jenis ini?
- Apakah ada cara yang lebih baik?
sumber
Jawaban:
Secara keseluruhan, saya suka pendekatannya. Masalah pembajakan tidak dapat diatasi, baik melalui distribusi tradisional atau otomatis, dan Anda dapat menghindari ketidaknyamanan skema lisensi.
Anda mungkin mendapatkan masalah dengan pilihan acak. Apakah pelanggan memilih untuk menjadi pengguna awal selama seluruh hubungan bisnis Anda? Jika tidak, bagaimana downgrade dari eksternal 1 ke eksternal 9 dapat terwujud?
sumber
Sudahkah Anda memikirkan tentang lisensi umum dan perlindungan tipe telepon rumah untuk perangkat lunak Anda?
Masalah yang saya lihat di sini (tanpa lisensi) adalah bahwa saya dapat membayar selama sebulan, berhenti, lalu terus berjalan pada versi ini. Tentu itu tua, tetapi gratis. Celah ini akan dieksploitasi oleh setidaknya beberapa orang
Jika Anda sudah memiliki lisensi, maka sediakan hanya repositori sederhana tanpa perlindungan dengan perangkat lunak yang perlu memeriksa lisensi sebelum menjalankan
sumber
Saya tidak cukup tahu tentang perangkat lunak Anda dan / atau sifat pelanggan Anda, tetapi di banyak tempat pembaruan tidak diinstal tanpa diuji. Banyak perusahaan menggunakan kunci lisensi yang akan habis. Izinkan mereka mengunduh pembaruan dan memulai secara manual. Pembaruan otomatis nyaman, tetapi terkadang pengguna tidak suka kejutan.
sumber
Lihatlah kerangka kerja Sparkle untuk OS X, ia melakukan hal yang sangat mirip dengan mekanisme pembaruan Chrome tetapi memberikan umpan balik pengguna sehingga mereka dapat melewati pembaruan atau melakukannya nanti. Saya sudah mendapat pembaruan aplikasi pada saya dan mengubah fungsi yang saya butuhkan seperti itu, selalu yang terbaik untuk setidaknya bertanya kepada pengguna.
Saya suka ide yang tepat, masuk akal untuk melakukannya dengan cara itu, sederhana dan benar-benar sangat teruji pada saat ini.
sumber
Saya tahu perusahaan yang melakukan hampir persis seperti yang Anda gambarkan. (Lebih sedikit tingkatan daripada yang telah Anda jelaskan, dan saya tidak tahu bagaimana mereka mengautentikasi.)
Masalah terbesar yang mereka miliki adalah beberapa pelanggan memblokir akses internet dari alat mereka. Itu berarti pelanggan tersebut baru saja dikunci ke versi yang mereka instal. Mungkin itu baik-baik saja. Saya pikir mereka membahas membuka aturan firewall dengan beberapa pelanggan tersebut. Yang lainnya hanya ditingkatkan secara manual.
sumber
Jika saya melakukannya saya akan melakukannya berdasarkan alamat IP. Jadi ketika mereka datang untuk mengunduh alamat ip mereka harus ada dalam daftar yang diizinkan untuk terhubung ke server itu jika tidak mereka tidak dapat mengunduh. Ini menyebalkan jika mereka tidak memiliki ip khusus tetapi tidak mungkin dari apa yang Anda bicarakan jika itu berbasis server jika itu untuk stasiun kerja, maka Anda mungkin lebih baik mengaturnya dengan inhouse server apt sendiri dan kemudian unduhan tersebut salinan melalui pekerjaan cron atau sesuatu lebih dari ftp dan seterusnya seminggu sekali dan kemudian ada workstation unduh dari sana benar-benar terserah Anda.
sumber
Ini adalah pendekatan berpengalaman yang baik.
Beberapa perangkap untuk dipertimbangkan:
Anda mungkin tidak selalu ingin mencapai 1 persen, 9 persen, 90 persen. Pelanggan Anda mungkin tidak homogen, artinya Anda mungkin ingin memulai spesialisasi, katakanlah, berdasarkan wilayah, jenis perangkat, dll. Dalam hal ini distribusi sebesar 1, 9, 90 persen secara global tidak lagi masuk akal.
Memiliki satu repositori untuk 90 persen pengguna Anda memperkenalkan hotspot - server itu akan mengalami sebagian besar permintaan, yang berarti itu akan menjadi yang pertama mati jika terjadi lonjakan lalu lintas, menyebabkan pemadaman untuk 90 persen pengguna Anda. Redundansi membantu, tentu saja, tetapi itu menimbulkan lebih banyak pengeluaran secara keseluruhan.
Anda mungkin memiliki alur kerja di mana fitur tertentu siap untuk didistribusikan ke 90 persen dari semua pengguna, tetapi pembaruan global akan menyebabkan fitur tidak siap untuk adopsi 90 persen untuk mencapai produksi, memperkenalkan hambatan dalam alur kerja dev Anda. Distribusi tetap tidak akan dapat menangani masalah ini secara efektif, memaksa Anda untuk menangani ini di tingkat aplikasi.
Cara untuk memperbaikinya adalah dengan menyimpan banyak salinan dari repo produksi di server yang berbeda, letakkan penyeimbang muatan yang dapat dikonfigurasi di depannya , dan kemudian perbarui repo produksi Anda secara bertahap secara bergulir. Dengan kata lain, perlakukan semua repos pada akhirnya ingin sama, tetapi konfigurasikan lalu lintas sehingga persentase pengguna yang membaca dari server dapat diubah.
Keuntungannya adalah Anda dapat mengonfigurasi distribusi permintaan sesuka hati menggunakan load balancer Anda, Anda dapat meningkatkan skala secara horizontal (semua server Anda dapat mulai melayani repo yang sama secara proporsional jika semua fitur siap untuk adopsi 100 persen), dan, tergantung pada bagaimana Anda alur kerja tim adalah dan kebutuhan Anda untuk pembaruan spesifik wilayah, Anda akhirnya dapat memungkinkan fitur tertentu segera tersedia tanpa khawatir tentang fitur lainnya.
sumber