SSH mi Ansible mı: 38 sunucuda neden kendi sarmalayıcımızda kaldık
Ansible'ı denedik, sonra ince bir TypeScript sarmalayıcının arkasındaki düz SSH komutlarına geri döndük.
Anladığınız araç, her şeyi yapabilen araçtan her zaman üstündür.
Ansible'ı 2 yıl kullandık. Şık, bildirimsel, "en iyi uygulama". Ama bir playbook "gather facts" adımında 38 saniye boşta beklediğinde ve basit bir docker restart 4 dakika sürdüğünde yeniden düşündük. SSH komutları anında çalışır. Sarmalayıcımız bağlantı havuzunu, yeniden denemeyi ve çıktı ayrıştırmayı yöneten 300 satırlık TypeScript kodudur. Her servisin bu SSH sarmalayıcısının üzerinde çalışan bir "commandService"i vardır.
Ne kazandık
- Hız: sanal makine yeniden başlatma 4 dakika değil, 6 saniye
- Hata ayıklanabilirlik: komutlar TypeScript'te, kesme noktası koyabiliyoruz
- Entegrasyon: komut çıktısı doğrudan TypeScript nesnelerine ayrıştırılır
- Denetim: her komut kimin ve ne zaman çalıştırdığıyla birlikte kaydedilir
- Öğrenme eğrisi yok: herkes bash biliyor, öğrenilecek Ansible DSL'i yok
Ansible, asıl hedef yapılandırma olduğunda harikadır (ör. 200+ sunucunun ilk kurulumu). Bizim sunucularımız zaten kurulu — bizim için önemli olan yönetim ve gerçek zamanlı operasyon. Sarmalayıcı 300 satır ve tam olarak ihtiyacımız olanı yapıyor.