Kod olarak altyapı - Infrastructure as code

Kod olarak altyapı (IaC) bilgisayarı yönetme ve sağlama sürecidir veri merkezleri fiziksel donanım yapılandırması veya etkileşimli yapılandırma araçları yerine makine tarafından okunabilir tanım dosyaları aracılığıyla.[1] IT altyapısı bu süreç tarafından yönetilen, hem fiziksel ekipmanı hem de çıplak metal sunucular, Hem de Sanal makineler ve ilgili yapılandırma kaynakları. Tanımlar bir sürüm kontrol sistemi Manuel süreçler yerine komut dosyalarını veya bildirim temelli tanımları kullanabilir, ancak terim daha çok beyan edici yaklaşımlar.

Genel Bakış

IaC, neden olduğu zorluğa bir yanıt olarak büyüdü yardımcı bilgi işlem ve ikinci nesil web çerçeveleri. 2006 yılında Amazon Web HizmetleriElastic Compute Cloud ve 1.0 sürümü raylar üzerinde yakut sadece aylar önce[2] kuruluşta daha önce sadece büyük, çok uluslu şirketlerde yaşanan yaygın ölçeklendirme sorunları yarattı.[3] Sürekli büyüyen bu alanı ele almak için yeni araçların ortaya çıkmasıyla, IaC fikri doğdu. Altyapıyı kodla modelleme ve ardından bilinen en iyi yazılım uygulamalarıyla uygulama altyapısı tasarlama, uygulama ve devreye alma düşüncesi hem yazılım geliştiricileri hem de BT altyapısı yöneticilerinin ilgisini çekti. Altyapıyı kod gibi ele alma ve diğer herhangi bir yazılım projesiyle aynı araçları kullanma yeteneği, geliştiricilerin uygulamaları hızla dağıtmasına olanak tanır.[4]

Katma değer ve avantajlar

IaC'nin değeri üç ölçülebilir kategoriye ayrılabilir: maliyet, hız ve risk.[kaynak belirtilmeli ] Maliyet azaltma, yalnızca işletmeye finansal olarak değil, aynı zamanda insan ve çaba açısından da yardımcı olmayı amaçlamaktadır, yani manuel bileşeni kaldırarak, insanlar çabalarını diğer kurumsal görevlere yeniden odaklayabilirler.[kaynak belirtilmeli ] Altyapı otomasyonu, altyapınızı yapılandırırken daha hızlı yürütme yoluyla hız sağlar ve kuruluş genelindeki diğer ekiplerin daha hızlı ve daha verimli çalışmasına yardımcı olmak için görünürlük sağlamayı amaçlar. Otomasyon, manuel yanlış yapılandırma gibi insan hatasıyla ilişkili riski ortadan kaldırır; bunun kaldırılması arıza süresini azaltabilir ve güvenilirliği artırabilir. Bu sonuçlar ve öznitelikler, kuruluşun bir kültür edinmeye doğru ilerlemesine yardımcı olur. DevOps, birleşik çalışması gelişme ve operasyonlar.[5]

Yaklaşım türleri

IaC'ye genel olarak iki yaklaşım vardır: beyan edici (işlevsel) vs. zorunlu (usul). Bildirimsel ve zorunlu yaklaşım arasındaki fark esasen 'ne' e karşı 'Nasıl' . Bildirimsel yaklaşım, nihai hedef konfigürasyonunun ne olması gerektiğine odaklanır; zorunludur, altyapının bunu karşılamak için nasıl değiştirileceğine odaklanır.[6] Bildirimsel yaklaşım, istenen durumu tanımlar ve sistem, bu istenen duruma ulaşmak için olması gerekenleri yürütür. Zorunlu, istenen sonuçla sona erdirmek için uygun sırada yürütülmesi gereken belirli komutları tanımlar. [7]

Yöntemler

İki IaC yöntemi vardır: 'it ' ve 'Çek ' . Ana fark, sunuculara nasıl yapılandırılacağının söylenme şeklidir. Çekme yönteminde, yapılandırılacak sunucu, yapılandırmasını kontrol eden sunucudan çekecektir. İtme yönteminde, kontrol sunucusu yapılandırmayı hedef sisteme iter.[8]

Araçlar

Altyapı otomasyon yeteneklerini yerine getiren ve IaC kullanan birçok araç vardır. Genel anlamda, programatik bir yaklaşıma dayalı olarak altyapıyı bildirimli veya zorunlu olarak yapılandıran veya değişiklikleri gerçekleştiren herhangi bir çerçeve veya araç IaC olarak kabul edilebilir.[9] Geleneksel olarak, IaC'yi gerçekleştirmek için sunucu (yaşam döngüsü) otomasyonu ve konfigürasyon yönetimi araçları kullanılmıştır. Artık kuruluşlar, Microsoft PowerShell DSC gibi sürekli yapılandırma otomasyon araçları veya bağımsız IaC çerçevelerini de kullanıyor.[10] veya AWS CloudFormation.[11]

Sürekli konfigürasyon otomasyonu

Herşey sürekli konfigürasyon otomasyonu (CCA) araçları, geleneksel IaC çerçevelerinin bir uzantısı olarak düşünülebilir. Altyapıyı değiştirmek, yapılandırmak ve otomatikleştirmek için IaC'den yararlanırlar ve ayrıca altyapının nasıl yönetildiği konusunda görünürlük, verimlilik ve esneklik sağlarlar.[3] Bu ek özellikler, kurumsal düzeyde güvenlik ve uyumluluk sağlar.

Topluluk içeriği

CCA araçlarını değerlendirirken önemli bir husus, eğer açık kaynak iseler, topluluk içeriğidir. Gibi Gartner CCA araçlarının değerinin "otomasyon araçlarının ticari olgunluğuna ve performansına olduğu kadar kullanıcı-topluluğun katkıda bulunduğu içerik ve desteğe de bağlı" olduğunu belirtir.[3] Satıcılar gibi Kukla ve Şef, önemli bir süredir etrafta olanlar kendi topluluklarını yarattılar. Şef var Şef Topluluk Deposu ve Puppet'in PuppetForge.[12] Diğer satıcılar, bitişik topluluklara güvenir ve diğer IaC çerçevelerinden yararlanır. Güç kalkanı DSC.[10] İçerik odaklı olmayan, ancak içerik sunmak için üründeki zeka ile model odaklı yeni satıcılar ortaya çıkıyor. Bu görsel, nesne yönelimli sistemler geliştiriciler için iyi çalışır, ancak içerik için komut dosyası oluşturmaya kıyasla modellere değer veren üretim odaklı DevOps ve işlem bileşenleri için özellikle yararlıdır. Alan gelişmeye ve değişmeye devam ettikçe, topluluk tabanlı içerik, IaC araçlarının nasıl kullanıldığına dair, modele dayalı ve nesne yönelimli olmadıkları sürece, her zamankinden daha önemli hale gelecektir.

Önemli CCA araçları şunları içerir:

AraçTarafından yayınlandıYöntemYaklaşmakYazılmışYorumlar
ŞefŞef (2009)ÇekBeyan niteliğinde ve zorunluYakut-
Su samuruInedoitBeyan niteliğinde ve zorunlu-Windows odaklı
KuklaKukla (2005)ÇekBeyan niteliğinde ve zorunluC ++ & Clojure 4.0'dan beri Yakut-
SaltStackSaltStackİt ve çekBildirici ve zorunluPython-
CFEngineNorthern.techÇekBildirgeC-
TerraformHashiCorp (2014)itBildirgeGit-
Ansible / Ansible KulesiKırmızı şapka (2012)itBeyan niteliğinde ve zorunluPython-

Diğer araçlar arasında AWS CloudFormation, cdist, StackStorm, Juju, ve Pulumi.

DevOps ile İlişki

IaC, en iyi uygulamaları etkinleştirmenin temel bir özelliği olabilir. DevOps - Geliştiriciler, yapılandırmanın tanımlanmasına daha fazla dahil olur ve Ops ekipleri geliştirme sürecine daha erken dahil olur.[13] IaC'yi kullanan araçlar, sunucuların durumuna ve yapılandırmasına görünürlük sağlar ve nihayetinde, çabalarını en üst düzeye çıkarmak için ekipleri bir araya getirmeyi amaçlayarak, kuruluş içindeki kullanıcılara görünürlük sağlar.[14] Otomasyon genel olarak manuel süreçlerin kafa karışıklığını ve hataya açık yönünü ele alıp daha verimli ve üretken hale getirmeyi amaçlar. Daha iyi yazılım ve uygulamaların esneklik, daha az kesinti süresi ve şirket için genel olarak uygun maliyetli bir yolla oluşturulmasına olanak tanır. IaC, manuel yapılandırmanın dışında verimliliği azaltan karmaşıklığı azaltmayı amaçlamaktadır. Otomasyon ve işbirliği DevOps'ta merkezi noktalar olarak kabul edilir; Altyapı otomasyon araçları genellikle bir DevOps araç zinciri.[15]

Güvenlik İlişkisi

Unit 42 (siber güvenlik sağlayıcısının tehdit istihbarat birimi) tarafından yayınlanan 2020 Bulut Tehdit Raporu Palo Alto Ağları ) kod şablonları olarak altyapıdaki yaklaşık 200.000 potansiyel güvenlik açığını belirledi.[16]

Ayrıca bakınız

Referanslar

  1. ^ Wittig, Andreas; Wittig, Michael (2016). Amazon Web Hizmetleri İş Başında. Manning Basın. s. 93. ISBN  978-1-61729-288-0.
  2. ^ Bower, Joseph L .; Christensen, Clayton M. "Yıkıcı Teknolojiler: Dalgayı Yakalamak". Harvard Business Review.
  3. ^ a b c Fletcher, Colin; Cosgrove, Terrence (26 Ağustos 2015). Sürekli Yapılandırma Otomasyon Araçları için Yenilik İçgörü. Gartner (Bildiri).
  4. ^ Riley, Chris (12 Kasım 2015). "Altyapınızı Versiyonlayın". DevOps.com.
  5. ^ Phillips, Andrew (14 Mayıs 2015). "Altyapı Otomasyonundan Gerçek DevOps'a Geçiş". DevOps.com.
  6. ^ "Yapılandırma Yönetimi için Bildirime Dayalı v. Zorunlu Modeller: Hangisi Gerçekten Daha İyi?". Scriptrock.com. Alındı 14 Aralık 2015.
  7. ^ Loschwitz, Martin (14 Kasım 2014). "Önde gelen açık kaynak yapılandırma yöneticileri arasında seçim yapma". Yönetici Ağı ve Güvenliği. Lawrence, KS ABD: Linux New Media USA LLC.
  8. ^ Venezia, Paul (21 Kasım 2013). "Kukla Şefe Karşı Ansible, Tuz'a Karşı". networkworld.com. Ağ Dünyası. Alındı 14 Aralık 2015.
  9. ^ Garner Pazar Trendleri: DevOps - Bir Pazar Değil, Sürekli Teslimat Değer Zincirini (Rapor) destekleyen Araç Merkezli Felsefe. Gartner. 18 Şubat 2015.
  10. ^ a b Chaganti, Ravikanth (5 Ocak 2016). "DevOps, Kod Olarak Altyapı ve PowerShell DSC: Giriş". PowerShell Dergisi. PowerShell Dergisi. Alındı 11 Ocak 2016.
  11. ^ https://aws.amazon.com/about-aws/whats-new/2011/02/25/introducing-aws-cloudformation/
  12. ^ Sturgeon, Phil (28 Ekim 2012). "Kukla mı, Şef mi?".
  13. ^ Ramos, Martin (4 Kasım 2015). "Sürekli Entegrasyon: DevOps'ta Kod Olarak Altyapı". easydynamics.com. Arşivlenen orijinal 6 Şubat 2016. Alındı 29 Ocak 2016.
  14. ^ Kod Olarak Altyapı: Daha Hızlı Uygulama Teslimi İçin Yangını Doldurma (Rapor). Forrester. Mart 2015.
  15. ^ Wurster, Laurie F .; Colville, Ronni J .; Yükseklik, Cameron; Tripathi, Somendra; Rastogi, Aditi. Gelişen Teknoloji Analizi: Bir Teknoloji Değil, Bir Kültür Değişimi DevOps (Rapor). Gartner.
  16. ^ "Bulut Tehdit Raporu Tutarlı DevSecOps İhtiyacı Gösteriyor". Bilgi Haftası. Alındı 24 Şubat 2020.