Menggunakan Repositori Apt untuk Pembaruan Perangkat Lunak Berbayar

9

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 :

  1. Beta - Digunakan secara internal pada data uji untuk memeriksa paket untuk cacat utama.
  2. Internal - Digunakan secara internal pada data langsung untuk memeriksa paket untuk cacat (tahap makanan anjing).
  3. Eksternal 1 - Digunakan untuk 1% dari basis pengguna kami (dipilih secara acak) untuk memeriksa cacat.
  4. Eksternal 9 - Digunakan untuk 9% dari basis pengguna kami (dipilih secara acak) untuk memeriksa cacat.
  5. Eksternal 90 - Digunakan untuk sisa 90% pengguna.
  6. 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:

  1. Adakah yang pernah mencoba sesuatu seperti ini sebelumnya?
  2. Adakah yang bisa melihat kelemahan prosedur jenis ini?
  3. Apakah ada cara yang lebih baik?
Scott Keck-Warren
sumber
3
Hanya ingin tahu, tetapi bagaimana menghentikan seseorang mengunduh pembaruan dari repositori Anda, dan kemudian menerbitkannya kembali melalui jaringan P2P? Saya juga akan mencatat bahwa jika Anda ingin pelanggan Anda menambahkan repositori Anda ke file sources.list mereka, Anda mungkin ingin menyebutkan Apt-Pinning untuk keamanan mereka sendiri. Jika tidak, seseorang dapat menyisipkan libc berbahaya ke repo Anda dan pelanggan Anda akan secara otomatis memperbaruinya.
Jeff Welling

Jawaban:

1

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?

thiton
sumber
Rencana saya adalah menjadikannya pilihan acak setiap bulan atau lebih dan jika Anda berada di grup 1 eksternal satu periode Anda kecuali dari grup selama beberapa periode.
Scott Keck-Warren
Anda mungkin mengalami masalah dengan itu, karena tidak dapat diprediksi pengguna mana yang memiliki peningkatan dan siapa yang perlu perbaikan terbaru. Katakanlah Anda memiliki bug di eksternal 1 dan pengguna baru saja keluar dari eksternal 1, Anda perlu mendorong perbaikan terbaru sampai ke eksternal 90. Mungkin Anda bisa bertanya kepada pelanggan yang ingin menjadi pengadopsi awal?
thiton
0

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

TheLQ
sumber
2
Terima kasih untuk umpan baliknya. Untuk mengurangi rasa sakit agar orang menggunakan ini, rencana saya adalah membuat perangkat lunak berjalan dalam mode fitur penuh selama 30 hari, kemudian meminta pelanggan untuk membeli setidaknya satu tahun pembaruan dan dukungan untuk mengeluarkannya dari "lumpuh" "mode. Jika mereka memilih untuk berhenti membayar produk setelah waktu yang mereka bisa dan mereka tidak akan mendapatkan pembaruan atau dukungan teknis kami yang luar biasa. :-)
Scott Keck-Warren
@TheLQ: Saya tidak melihat itu sebagai masalah: Memiliki akses ke repositori adalah apa yang Anda bayar. Jika Anda berhenti membayar, Anda tidak mendapatkan pembaruan yang memperbaiki masalah keamanan dan bug atau menambahkan fitur. Bagi saya itu tampak seperti model bisnis yang sangat waras.
greyfade
0

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.

JeffO
sumber
0

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.

Nicholas Smith
sumber
0

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.

Sean McMillan
sumber
0

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.

WojonsTech
sumber
0

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.

Akshat Mahajan
sumber