İlginç bir tartışma yaşıyoruz ve iki kampa düşüyoruz. Eksik olabileceğimiz fikir ya da gotchas ile ilgili herhangi bir özel sorunla ilgileniyorum. Gerçekten, bir karar vermemize veya hesap yapmadığımız şeyleri göstermemize yardımcı olabilecek herhangi bir şey. Bu eteklerin "görüş yok" kuralını biraz yakından biliyorum ama umarım hala kabul edilebilir bir soru. Uzunluk için de üzgünüm, oldukça fazla bir nüans var.
1) Bir taraf (benim - önyargısız değilim) değişmez sunucu modelini bulut sistemleri için çok ilginç buluyor. Bu amaçla altyapımızın tüm bileşenlerini Docker'a taşıdık. Özel uygulamalarımız Jenkins aracılığıyla doğrudan yerel bir Docker Kayıt Defterine dağıtılan Docker görüntülerine dönüştürülür. Sonra büyük bir Ansible rolleri seti ve boş bir sunucuya ulaşabilen bir oyun kitabı oluşturduk, Docker'ı yükleyin ve Docker'a tüm kapları gerektiği gibi yüklemesini söyleyin. Birkaç dakika sonra, tüm uygulama ve tüm destekleyici altyapısı bağlanır ve çalışır - kayıt, izleme, veritabanı oluşturma / nüfus, vb. Bitmiş makine, tam bir kopyası olan bağımsız bir KG veya geliştirme ortamıdır uygulama. Bunu genişletmek için planımız, güvenilir bir AMI'den (muhtemelen çok çıplak bir görüntü) yeni AWS sunucuları oluşturmak için yeni Playbook'lar yapmak, yapılandırma yönetimi ve sürümlerini işlemek için üretim uygulamasının sürekli dağıtımlarını yapmak ve genellikle sunucuları bir daha asla düzenlememek olacaktır - sadece onları yeniden yap. Uygulamada çalıştığım şeyi elde etmekten endişe etmiyorum - sadece makul bir modelse.
2) Diğer kamp, konfigürasyon yönetimini işlemek için Kukla, inşaat sürecimizden üretilen tarballs özel uygulamalarımızı dağıtmak için Ansible, sürecin bir bütün olarak tetiklenmesi ve yönetimini ele almak için Foreman ve bir miktar baz yapmak için Katello kullanmak istiyor görüntü yönetimi. Sürümler, gerektiğinde Kukla değiştirme yapılandırmasını ve Ansible'ın bir miktar Foreman koordinasyonu ile güncellenmiş bileşenleri dağıtmasını içerecektir. Sunucular, yenilerine ihtiyaç duyduğumuzda oldukça hızlı bir şekilde inşa edilecekti, ancak amaç, standart sürecin bir parçası olarak onları tek kullanımlık yapmak değildir. Bu, uzun ömürlü olsa da phoenix sunucu modeline daha yakın.
Yani sorum gerçekten buna geliyor: yukarıda açıkladığım araçlarla değişmeyen sunucu modeli aslında göründüğü kadar gerçekçi mi? Evreleme sürecimizin kelimenin tam anlamıyla canlı olarak uygulamaların tüm bir klonunu oluşturabileceği fikrini seviyorum, QA'nın onu çekiçlemesine izin verin, sonra sadece canlı hale getirmek için veritabanı depolama alanını ve bazı DNS ayarlarını çevirin.
Yoksa değişmez sunucu modeli pratikte başarısız mı? Hem AWS hem de bulut ortamlarında iyi bir deneyime sahibiz, bu yüzden bu gerçekten endişe verici değil - daha ileriye güvenilir bir şekilde dağıtılan makul derecede sofistike bir uygulamanın nasıl elde edileceğiyle ilgili bir mesele. Oldukça sık bıraktığımız için bu özellikle önemlidir.
Ansible'ın aslında bizim için EC2 sunucuları oluşturmak dışında gerekli olan çoğu şeyi yapıyoruz ve bu zor değil. Bu modelde neden aslında Kukla / Foreman / Katello'ya ihtiyacınız olduğunu anlamakta zorlanıyorum. Docker, söyleyebileceğim herhangi bir araçta özel dağıtım komut dosyalarından çok daha temiz ve basit. Ansible'ı, onları yerinde yapılandırmak ve yeni yapılandırmayla tekrar oluşturmak zorunda kalmayla ilgili endişelenmeyi bıraktığınızda, Kukla'dan çok daha basit görünüyor. Ben KISS müdürünün hayranıyım - özellikle Murphy Kanununun yaygınlaştığı otomasyonda. Makine ne kadar az olursa IMO o kadar iyidir.
Herhangi bir düşünce / yorum veya yaklaşım önerileri büyük takdir edilecektir!