Programcılar, sistemdeki bu şeyleri tamamen sona erdirmek için kodu nasıl kullanır?

[CSDN editörünün notu] İnternetin gelişmesinden bu yana, hızla değişen pazar, ürünlerimizin daha hızlı yanıt hızına sahip olmasını gerektiriyor. Teknolojinin hızla gelişmesi ve yazılımın hızlı yinelemeli yükseltilmesi ile çeşitli yazılım altyapılarının buna göre sık sık değiştirilmesi gerekiyor. Her türlü ihtiyaca daha iyi uyum sağlayabilmek için altyapının altyapısı, araçları, hizmetleri ve yönetimi bir yazılım sistemi olarak kabul edilmekte ve yazılım mühendisliği uygulamasındaki yöntemler çeşitli altyapı değişiklikleri ile başa çıkmak için kullanılmaktadır. Bu makalenin yazarı, yazılım tesis kodunun arkasındaki düşünceyi ayrıntılı olarak açıkladı ve arkasındaki prensibi ayrıntılı olarak anlamamıza yol açtı.

Yazar | Çeviri için yazar tarafından yetkilendirilen Tylor Borgeson

Çevirmen | Luo Zhaocheng, sorumlu editör | Tang Xiaoyin

Baş resmi | Oriental IC'den indirilen CSDN

Üretildi | CSDN (ID: CSDNnews)

Aşağıdaki çeviridir:

Bu makale "Popüler Yazılım Geliştirme Uygulamaları" serisinin altıncı bölümüdür. Bu makale dizisine, yazılım mühendislerinin geliştirme süreçlerini ve uygulamalarını iyileştirerek yazılım geliştirmeyi iyileştirmeleri için bir dizi yöntem eklemeyi planlıyorum. Eskiden ThoughtWorks'te yazılım danışmanı olarak çalışıyordum ve şimdi Almanya'da büyük bir perakende şirketinde çalışıyorum, bu yöntemler profesyonel hayatımda incelenmiş ve doğrulanmıştır.

Çocukluğumuzdan beri üçgenlerin sağlam olduğunu biliyoruz.Günümüz toplumunda pek çok bina (köprü gibi) bu temel yapıyı binaların sağlamlığını sağlamak için kullanır.

ThoughtWorks'teki görev sürem boyunca, altyapı sorunlarının üstesinden gelmelerine ve altyapılarının istikrarını artırmalarına yardımcı olmak için çok zaman harcadım. "Dairesel" altyapılarını "üçgen" bir altyapıya nasıl değiştireceklerini içerir.

Altyapıyı iyileştirmek için pek çok adım var.Bu, ayarlamalar yapmak için şirketin mevcut altyapısı ile birleştirilecek, ancak sonunda ne yapılması gerekse yapılsın, yapılması gereken bir tane var, o da altyapının kodlanması.

Altyapı kodlaması nedir?

Altyapı kodlama, altyapı ekiplerinin karşılaştığı birçok zorluğa hitap eden bir uygulamadır. Yapılandırılabilir sistemleri yönetmek için yapılandırmayı kullanmaya odaklanır.

Yazılımımız ihtiyaçlara göre her an değiştirilebilir ve değiştirilebilir. Altyapımız bu şekilde esnek bir şekilde genişletilebilir ve yükseltilebilir mi? Kodlama altyapısı fikri buradan gelir. Şimdi, uygulamanın en yaygın yolu, sunucuları, bulut örneklerini, ardışık düzenleri ve "genişletilmiş altyapı" arayüzlerini kontrol etmek için kod kullanmaktır.Gerektiğinde değişiklikler, kullanıcı arabirimi aracılığıyla yapılandırma yerine kod aracılığıyla uygulanır. Elbette, otomatik değişiklikler uygulanmadan önce gerekli tüm kontroller ve doğrulamalar yapılmalıdır.

Altyapı kaynakları kodla tanımlandığından, yazılım geliştirmede kullanılan araçlar (CI / CD, TDD) sisteme fayda sağlamak için bu konuda da kullanılabilir.

Altyapı kodlaması aşağıdaki hedeflere ulaşmayı taahhüt eder:

  • Şirket büyüdükçe ve işleri büyüdükçe, altyapı bir eksiklik olmayacak;

  • Yazılım yükseltmeleri gibi, altyapı değişiklikleri veya yükseltmeleri de çok kolay olabilir;

  • Yedek otomasyon görevleri ve temel görevler, şirketin / bölümün altyapı ekibinin sorumluluğundadır;

  • Altyapının kullanıcıları bunları değiştirebilir ve altyapılarına uygulayabilir;

  • Takımın altyapıdaki arıza kurtarma süresi büyük ölçüde azalır.

Altyapı kodlamanın zorluğu

  • Sunucu ve yapılandırma tutarsız

Giderek daha fazla ekip uygulamalarını buluta taşıyor ve bunları sanal makinelerde çalıştırıyor. Ekibin sık sık sunucu ekleme olasılığı artıyor. Bu, tüm makinelerin programın en son sürümünü çalıştırdığından ve birbiriyle tutarlı olduğundan emin olmamız gerektiği anlamına gelir. Tutarsız sorunlar bize daha sık sorunlara neden olacaktır. Farklı makineler arasında farklılıklar varsa, aynı komut dosyası farklı sonuçlarla farklı makinelerde çalışabilir.

Yazılım güncellememizin yalnızca belirli bir makinede normal şekilde çalıştığını hayal edin. Yük dengeleme durumunda, yalnızca "çok şanslı" kullanıcılar normal sunucuya istek gönderebilir.

  • Kar makinesi

Kar taneleri kopyalanamadığı için, iki kar tanesi aynı değildir. Bu nedenle, her kar tanesinin benzersiz olduğuna inanıyoruz. Bu sorun altyapıda da var.

Birçok sistem yöneticisi tutarsız yapılandırmalara sahip doğru sunucuları manuel olarak kontrol etmeye çalışır. Bunun sonucu, belirli sorunlar için bazı özel güncellemelerin bir geçmiş kaydı bırakamamasıdır (tabii ki bazen bulut sunucuda bir geçmiş kaydı vardır. Ancak sorun çözülmeden önce 100 kayıt vardır. Önceki işlem, daha sonra bu tarihsel kayıt çok kullanışlı değildir), yalnızca sunucuyu güncelleyen kişi sunucunun neyi güncellediğini bilir. Bu nedenle, yazılım bazen doğru çalışabilir, bazen doğru çalışamaz, sihir gibi nedenini açıklamak zordur.

Bu sorunlara kasıtlı olarak neden olmadı. Ama hepimiz insanız ve insanlar hata yapar. Örneğin bazen 1, 2, 3, 4 numaralı sunucuları güncelliyoruz, ancak bazı nedenlerden dolayı 5 numaralı makineyi güncellemeyi unutuyoruz.

  • Dokunma ona

Değiştirilmiş sunucu sonunda yazılımı beklendiği gibi çalıştıracaktır, ancak bir kağıt ev gibi çok kırılgandır. Bu yüzden lütfen "gelişigüzel hareket ettirmeyin".

Sistemi yükseltmek ve dönüştürmek konusunda çok isteksiziz ve otomasyon sistem yöneticilerini daha fazla endişelendirecek. Çünkü bu değişikliklerin sunucunun sunmayı durdurmasına neden olup olmayacağını bilmiyorlar.

Kodlama altyapısının ilkeleri

  • Yeniden üretilebilirlik

Altyapıyı önceden kodladıysanız, altyapıyı Amazon'un Web konsolu veya Jenkins aracılığıyla değil, kod yapılandırması yoluyla oluşturabilirsiniz. O zaman yeni adımlarınız çok daha basit. Tüm oluşturma adımları komut dosyasına kaydedilir ve hiçbir adım unutulmayacaktır.

Başka bir ekipten bir iş arkadaşı size AWS'de bir Kubernetes kümesinin otomatik genişletmesini nasıl yapılandıracağınızı sorduğunda, 3 ay önce düzenlenen ayarları bulmak için konsola gitmenize gerek yoktur. Bunun yerine, ayarları oluşturmak için kodu doğrudan görüntüleyebilirler, hatta doğrudan Çalıştırmak için kodunuzu onların örneğine kopyalayın.

Veri merkezinizi buluta veya bir bulut hizmet sağlayıcısından başka bir bulut hizmet sağlayıcısına taşıdığınızda, kaynak oluşturma süreci birçok kez tekrarlanacak ve kodlama çok faydalı olacaktır.

  • Bir kere

Altyapının konfigürasyon aşamaları kodda çoğaltılabildiğinden, makine hasarı ve değişiminden kaynaklanan bakım maliyetleri konusunda endişelenmenize gerek yoktur.

Bulut hizmetlerinin temel avantajlarından biri, hızla taşınabilen, güncellenebilen, oluşturulabilen, değiştirilebilen, yeniden boyutlandırılabilen ve hatta silinebilen "dinamik altyapı" dır. Endişelenmenize gerek yok, bir makineyi sildiğinizde dinamik özelliklerden tam olarak yararlanabilir ve bilmediğiniz bazı ayarları kaçırmanıza neden olabiliriz.

  • Tutarlılık ve uyarlanabilirlik

Kodu güncellerken, altyapıyı UI konsolu yerine kod üzerinden yapılandırırsak, kodun oluşturduğu tüm altyapı da senkronize olarak güncellenecektir.

Bu, tüm altyapımızın (sunucular gibi) tıpkı tam bir kopya gibi tutarlı olabileceği anlamına gelir. Yazılım büyüdükçe ve değiştikçe altyapının nasıl değişeceğini tahmin edemiyoruz. Yapabileceğimiz şey, sistemimizi olabildiğince agresif ve hızlı bir şekilde yükseltmek ve değiştirmektir.

Altyapı kodlandığında, her küçük değişiklik sürekli entegrasyon kullanılarak uygulanabilir. Her küçük değişiklikle sistemin esnekliğini artırın.

Nasıl başlanır?

  • Tanım dosyası

Altyapı kodlaması elde etmek için, tüm altyapı konfigürasyonlarınızı konfigürasyon dosyalarına dönüştürmeniz ve kodla tanımlamanız gerekir. Bu tanım dosyaları, altyapınızın gerçek kaynağı olarak hizmet edecektir.

Yararlı bir araç önerin: Terraform.

Terraform, altyapınızı tanımlamak ve yapılandırmak için HCL'yi (Hashicorp Yapılandırma Dili) kullanabilir. UI konsolunda kullanılan anahtar sözcükler ve değişkenler gibi çeşitli kaynaklar sağlayabilirsiniz. Kod çalıştırıldığında, kodda tanımlanan kaynaklar programlı olarak sağlanacaktır.

Terraform tasarımının en iyi yanı, mevcut kaynakları da kodlayıp yönetebilmesidir. Aşağıda, Linux'u yapılandırma ve Microsoft Azure'da sanal ağları atama örneği verilmiştir:

resource "azurerm_resource_group" "ana" { isim = "$ {var.prefix} -kaynaklar" location = var.location } resource "azurerm_virtual_network" "main" { name = "$ {var.prefix} -network" address_space = location = azurerm_resource_group.main.location resource_group_name = azurerm_resource_group.main.name } resource "azurerm_subnet" "dahili" { name = "dahili" resource_group_name = azurerm_resource_group.main.name virtual_network_name = azurerm_virtual_network.main.name address_prefix = "10.0.2.0/24" } resource "azurerm_network_interface" "main" { isim = "$ {var.prefix} -nik" resource_group_name = azurerm_resource_group.main.name location = azurerm_resource_group.main.location ip_configuration { name = "dahili" subnet_id = azurerm_subnet.internal.id private_ip_address_allocation = "Dinamik" } } resource "azurerm_linux_virtual_machine" "main" { isim = "$ {var.prefix} -vm" resource_group_name = azurerm_resource_group.main.name location = azurerm_resource_group.main.location size = "Standart_F2" admin_username = "adminuser" admin_password = "P @ ssw0rd1234!" disable_password_authentication = false network_interface_ids = source_image_reference { yayıncı = "Kanonik" offer = "UbuntuServer" sku = "16.04-LTS" version = "en son" } os_disk { storage_account_type = "Standart_LRS" caching = "ReadWrite" } }
  • sürüm kontrolü

Kaynaklarınız kodda tanımlandıktan sonra, altyapınız da sürüm yönetiminden yararlanacaktır.

Tarihsel kayıt korunacak, kim onu ne zaman ve ne zaman güncelledi, bunlar iyi belgelenecek. Bir sorun olduğunda, hata ayıklama veya hatta geri alma ihtiyacı olduğunda, bu bilgiler çok yardımcı olabilir.

Sürüm kaydından değişiklik günlüğünü de görebilir ve nelerin değiştiğini kolayca görebiliriz. Gönderim kod tabanına güncellendiğinde, bazı derleme görevlerini veya bazı özel olayları tetikleyebiliriz, bu da altyapının CI / CD'de test edilmesini mümkün kılar.

Unutulmaması gereken şey, diğer kodlar gibi, değişiklikleri olabildiğince küçük yapmaktır. Küçük değişikliklerin büyük değişikliklerden daha fazla faydası vardır. Daha küçük değişikliklerin test edilmesi ve hata ayıklanması daha kolaydır ve sorunları düzeltmek daha kolaydır. Altyapıda yapılan değişiklikler aynıdır.

Araç önerisi

  • Terraform

Yukarıda açıklandığı gibi, Terraform, çeşitli altyapıların tanımlanması, yönetimi ve dağıtımı için kullanılabilecek yararlı bir araçtır. Resmi web sitesinde şu şekilde açıklanmaktadır:

Terraform, altyapıyı güvenli ve verimli bir şekilde oluşturmak, değiştirmek ve sürümlendirmek için bir araçtır. Terraform, mevcut popüler hizmet sağlayıcılarının yanı sıra özelleştirilmiş dahili çözümleri de yönetebilir. Yapılandırma dosyası, Terraform'a tek bir uygulamayı veya tüm veri merkezini çalıştırmak için gereken bileşenleri açıklar. Terraform, açıklamada beklenen duruma ulaşabilecek bir yürütme planı oluşturacak ve ardından açıklamadaki altyapıyı inşa etme planını yürütecektir. Yapılandırma dosyası değiştikçe, Terraform neyin değiştiğini belirleyebilir ve yürütülebilecek artımlı yürütme planları oluşturabilir.

  • Packer

Packer ayrıca, makine görüntülerinin hızlı ve otomatik olarak oluşturulmasına izin veren Hashicorp'a dayalı bir araçtır. Geçmişte, bir görüntü oluşturma genellikle bir sanal makine oluşturarak, manuel olarak yapılandırarak (gerekli paketleri ve bağımlılıkları yükleyerek) ve ardından sanal makineyi kopyalayarak yapılırdı. Artık görüntüyü tek bir dosyada tanımlamak ve Packer programı aracılığıyla oluşturmak mümkün. Görüntüye uygulama yüklemek için Chef ve Puppet gibi araçları bile kullanabilir.

  • İzdiham

Kullanıcı arabirimine sahip bir derleme ardışık düzeni, ancak kullanıcılar yalnızca durumu ve günlükleri görüntüleyebilir. Tüm boru hattı bir yapılandırma dosyası aracılığıyla yapılandırılmalıdır. Bence piyasadaki en havalı boru hattı araçlarından biri ve açık kaynak

  • diğer

Altyapı kodlaması hakkında daha fazla ayrıntı öğrenmek istiyorsanız, aşağıdakileri okumanızı şiddetle tavsiye ederim:

https://www.hashicorp.com/resources/what-is-infrastructure-as-code - Hashicorp

https://docs.microsoft.com/en-us/azure/devops/learn/what-is-infrastructure-as-code - Microsoft

https://www.thoughtworks.com/de/insights/blog/infrastructure-code-reason-smile - Thoughtworks

Sonuna yaz

Bu makale yalnızca altyapının kodlanmasının arkasındaki fikirleri ele almaktadır. Başka sorularınız ve yorumlarınız varsa, lütfen benimle iletişime geçmekten çekinmeyin! Okuduğunuz için teşekkürler!

Dizi okuma:

  • Neden birçok programcı çift programlamadan nefret ediyor?

  • Programcılar neden çok çalışmasın?

  • Programcılar neden omurga geliştirme modelinden bu kadar "hoşlanmıyor"?

  • Sürekli entegrasyon ve dağıtım geliştirmede neden önemlidir?

  • Abartılan test odaklı geliştirme?

Orijinal: https://levelup.gitconnected.com/how-resilient-is-your-software-infrastructure-2cf9925211dd

Yazar: Tylor Borgeson, tüm yığın yazılım geliştiricileri, makine öğrenimi, yapay zeka, altyapı, DevOps ve çevik ve dolayısıyla güçlü bir ilgi görüyor.

Çevirmen: Luo Zhaocheng

Bu makale bir CSDN çevirisidir, lütfen yeniden basımın kaynağını belirtin.

Birleşmiş Milletler neden Tencent'i seçiyor?

JD.com: Moutai'yi bir hata yoluyla ele geçirmenin yanlış bir mesaj olduğu yalan bir haber; Luo Yonghao, malların fiyatının "tüm ağdaki en düşük fiyat" olmadığını söyledi; Rust dokümantasyon ekibi dağıldı | Geek Headlines

Kızılötesi anti-salgın, yeni altyapının başarılı tahmini, 280 şirkete yatırım yapan Optik Doktor kimdir?

Ön uçtan makine öğrenimi: insan yüzlerini tanıyın ve yanaklara çilek çizin

Luckin Coffee, 2,2 milyar yuan'lık sahte işlemleri açığa çıkardı ve Uygulama İLK 1'i geri aldı

Kubernetes'te PaaS benzeri basit bir platform kurmak çok kolay!

Megvii ikili şube ağı BBN'den bahsediyor: Uzun kuyruklu gerçek dünya görevinin üstesinden gelmek | CVPR 2020 Oral

2020'de herkesin bildiği bu 20 kripto borsası nasıl gidiyor?

Programcılar neden "en iyi uygulamalara" karşı öne çıkmalı?
önceki
Ar-Ge verimliliğini artırmak o kadar da zor değil, Youku'nun en iyi uygulamalarına bakın
Sonraki
JD.com: Moutai'nin bir hatadan dolayı soyulduğu yalan bir haber; Luo Yonghao, malların fiyatının "tüm ağdaki en düşük fiyat" olmadığını söyledi; Rust dokümantasyon ekibi dağıtıldı | Geek Headlines
5G cep telefonlarının "üst düzey" savaşı
SQL bilmeyen programcılar için ne kadar zor? İş bulamayabilir
Birleşmiş Milletler neden Tencent'i seçiyor?
Kızılötesi ışık salgınla mücadele ediyor, yeni altyapıyı başarıyla tahmin ediyor, 280 şirkete yatırım yapan optik doktoru kim?
Pazarlık avı mı? ! Salgın altında anket: Ankete katılanların% 60'ından fazlası ev satın almak istiyor ve yarıdan fazlası ev fiyatlarının düşebileceğini düşünüyor
Biz vardığımızda gökyüzü griydi ve ayrıldığımızda çiçekler muhteşem bir şekilde açmıştı. 95 sonrası hemşire Guangdong'a döndü ve şöyle dedi: Wuhan'a dayanamıyorum
Bahar tam şimdi, Shunde anti-salgın kahramanlarının sağ salim dönüşüne hoş geldiniz
Dongguan, bu yıl 49 konut arsası tedarik etmeyi planlıyor! Şehrin inşaat arazi rezerv kaynakları yetersiz
Liang Sicheng'in bir öğrencisi olan akademisyen Li Daozeng vefat etti. Tiyatro tasarımında iyiydi ve kayıtlı bir mimar sisteminin kurulmasını teşvik etti.
ABD'de Kanton: Yabancılar tuvalet kağıdı çalıyor, salyangoz ve erişte stokluyorum ve metroda maske takıyorum, hâlâ ayrımcılıktan korkuyorlar
Video Guiyang: Su Eğitimi Taşkınlar Hazırlama
To Top