Sistem manajemen konfigurasi (CM) yang lebih mapan seperti Puppet dan Chef menggunakan pendekatan berbasis tarikan: klien melakukan jajak pendapat master terpusat secara berkala untuk pembaruan. Beberapa dari mereka menawarkan pendekatan tanpa master juga (jadi, berbasis push), tetapi menyatakan bahwa itu 'tidak untuk produksi' (Saltstack) atau 'kurang scalable' (Wayang). Satu-satunya sistem yang saya tahu yang berbasis push dari awal adalah runner-up Ansible.
Apa keuntungan skalabilitas spesifik dari sistem berbasis tarikan? Mengapa lebih mudah menambahkan lebih banyak master tarik daripada agen push?
Misalnya, agiletesting.blogspot.nl menulis:
dalam sistem 'tarik', klien menghubungi server secara independen satu sama lain, sehingga sistem secara keseluruhan lebih terukur daripada sistem 'dorong'
Di sisi lain, Rackspace menunjukkan bahwa mereka dapat menangani sistem 15K dengan model berbasis push.
infastructures.org menulis:
Kami bersumpah dengan metodologi tarikan untuk memelihara infrastruktur, menggunakan alat seperti SUP, CVSup, server rsync, atau cfengine. Daripada mendorong perubahan ke klien, setiap mesin klien individu harus bertanggung jawab untuk polling server emas saat boot, dan secara berkala setelahnya, untuk mempertahankan level revnya sendiri. Sebelum mengadopsi sudut pandang ini, kami mengembangkan skrip berbasis push yang luas berdasarkan ssh, rsh, rcp, dan rdist. Masalah yang kami temukan dengan r-command (atau ssh) adalah ini: Ketika Anda menjalankan skrip berbasis r-command untuk mendorong perubahan ke mesin target Anda, kemungkinannya adalah jika Anda memiliki lebih dari 30 host target, salah satunya akan turun pada waktu tertentu. Mempertahankan daftar mesin yang ditugaskan menjadi mimpi buruk. Dalam proses penulisan kode untuk memperbaiki hal ini, Anda akan berakhir dengan kode pembungkus yang rumit untuk menangani: timeout dari host yang mati; logging dan mencoba lagi host yang mati; forking dan menjalankan pekerjaan paralel untuk mencoba memukul banyak host dalam jumlah waktu yang wajar; dan akhirnya mendeteksi dan mencegah kasus menggunakan semua soket TCP yang tersedia pada mesin sumber dengan semua sesi rsh keluar. Maka Anda masih memiliki masalah untuk mendapatkan apa pun yang baru saja Anda lakukan ke dalam gambar instalasi untuk semua host baru yang akan diinstal di masa depan, serta mengulanginya untuk host yang mati dan harus dibangun kembali besok. Setelah masalah yang kami alami untuk menerapkan replikasi berbasis r-command, kami menemukan itu tidak layak. Kami tidak berencana mengelola infrastruktur dengan r-command lagi, atau dengan mekanisme push lainnya. Mereka tidak skala serta metode berbasis tarik. forking dan menjalankan pekerjaan paralel untuk mencoba memukul banyak host dalam jumlah waktu yang wajar; dan akhirnya mendeteksi dan mencegah kasus menggunakan semua soket TCP yang tersedia pada mesin sumber dengan semua sesi rsh keluar. Maka Anda masih memiliki masalah untuk mendapatkan apa pun yang baru saja Anda lakukan ke dalam gambar instalasi untuk semua host baru yang akan diinstal di masa depan, serta mengulanginya untuk host yang mati dan harus dibangun kembali besok. Setelah masalah yang kami alami untuk menerapkan replikasi berbasis r-command, kami menemukan itu tidak layak. Kami tidak berencana mengelola infrastruktur dengan r-command lagi, atau dengan mekanisme push lainnya. Mereka tidak skala serta metode berbasis tarik. forking dan menjalankan pekerjaan paralel untuk mencoba memukul banyak host dalam jumlah waktu yang wajar; dan akhirnya mendeteksi dan mencegah kasus menggunakan semua soket TCP yang tersedia pada mesin sumber dengan semua sesi rsh keluar. Maka Anda masih memiliki masalah untuk mendapatkan apa pun yang baru saja Anda lakukan ke dalam gambar instalasi untuk semua host baru yang akan diinstal di masa depan, serta mengulanginya untuk host yang mati dan harus dibangun kembali besok. Setelah masalah yang kami alami untuk menerapkan replikasi berbasis r-command, kami menemukan itu tidak layak. Kami tidak berencana mengelola infrastruktur dengan r-command lagi, atau dengan mekanisme push lainnya. Mereka tidak skala serta metode berbasis tarik. dan akhirnya mendeteksi dan mencegah kasus menggunakan semua soket TCP yang tersedia pada mesin sumber dengan semua sesi rsh keluar. Maka Anda masih memiliki masalah untuk mendapatkan apa pun yang baru saja Anda lakukan ke dalam gambar instalasi untuk semua host baru yang akan diinstal di masa depan, serta mengulanginya untuk host yang mati dan harus dibangun kembali besok. Setelah masalah yang kami alami untuk menerapkan replikasi berbasis r-command, kami menemukan itu tidak layak. Kami tidak berencana mengelola infrastruktur dengan r-command lagi, atau dengan mekanisme push lainnya. Mereka tidak skala serta metode berbasis tarik. dan akhirnya mendeteksi dan mencegah kasus menggunakan semua soket TCP yang tersedia pada mesin sumber dengan semua sesi rsh keluar. Maka Anda masih memiliki masalah untuk mendapatkan apa pun yang baru saja Anda lakukan ke dalam gambar instalasi untuk semua host baru yang akan diinstal di masa depan, serta mengulanginya untuk host yang mati dan harus dibangun kembali besok. Setelah masalah yang kami alami untuk menerapkan replikasi berbasis r-command, kami menemukan itu tidak layak. Kami tidak berencana mengelola infrastruktur dengan r-command lagi, atau dengan mekanisme push lainnya. Mereka tidak skala serta metode berbasis tarik. Maka Anda masih memiliki masalah untuk mendapatkan apa pun yang baru saja Anda lakukan ke dalam gambar instalasi untuk semua host baru yang akan diinstal di masa depan, serta mengulanginya untuk host yang mati dan harus dibangun kembali besok. Setelah masalah yang kami alami untuk menerapkan replikasi berbasis r-command, kami menemukan itu tidak layak. Kami tidak berencana mengelola infrastruktur dengan r-command lagi, atau dengan mekanisme push lainnya. Mereka tidak skala serta metode berbasis tarik. Maka Anda masih memiliki masalah untuk mendapatkan apa pun yang baru saja Anda lakukan ke dalam gambar instalasi untuk semua host baru yang akan diinstal di masa depan, serta mengulanginya untuk host yang mati dan harus dibangun kembali besok. Setelah masalah yang kami alami untuk menerapkan replikasi berbasis r-command, kami menemukan itu tidak layak. Kami tidak berencana mengelola infrastruktur dengan r-command lagi, atau dengan mekanisme push lainnya. Mereka tidak skala serta metode berbasis tarik. atau dengan mekanisme dorong lainnya dalam hal ini. Mereka tidak skala serta metode berbasis tarik. atau dengan mekanisme dorong lainnya dalam hal ini. Mereka tidak skala serta metode berbasis tarik.
Bukankah itu masalah implementasi, bukan masalah arsitektur? Mengapa lebih sulit untuk menulis push client yang berulir daripada server tarik berulir?
ansible-pull
.