Riske Karşı Ödül: Yazılım Kapsayıcılarını Anlama Kılavuzu

Yayınlanan: 2022-03-11

Yeterince yaşlı olan bizler, yazılımın öncelikle fiziksel medya tarafından teslim edildiği bir günü hatırlayabilir. Geniş bant internetin ve akıllı telefonların yaygınlaşması, bizi, tarayıcılar ve uygulamalar gibi kullanıcı istemcileri tarafından erişilen bulutta barındırılan yazılımlar olan web hizmeti çağına götürdü.

Çok uzun zaman önce, web uygulamaları doğrudan özel veri merkezlerindeki fiziksel makinelerde çalıştırıldı. Yönetim kolaylığı için, bu uygulamalar genellikle tek parçaydı; tek bir büyük sunucu, tüm arka uç kodunu ve veritabanını içerecekti. Şimdi, Amazon gibi web barındırma hizmetleri ve hiper yönetici teknolojisinin yaygınlaşması bunların hepsini değiştirdi. Amazon Web Services (AWS) ve VirtualBox gibi araçlar sayesinde, tüm işletim sistemini tek bir dosyada paketlemek kolaylaştı.

EC2 gibi hizmetleri kullanarak, makine görüntülerini paketlemek ve sanal sunucu kümelerini bir araya getirmek kolaylaştı. Büyük monolitik uygulamaların bir şeyi iyi yapan daha küçük odaklı hizmetlere bölündüğü bir yazılım mimarisi yaklaşımı olan mikro hizmet paradigması geldi. Genel olarak, bu yaklaşım, darboğazların daha hızlı bulunması ve sistem değişikliklerinin yalıtılması daha kolay olduğu için daha kolay ölçeklendirmeye ve özellik geliştirmeye olanak tanır.

Hayvanlardan Çiftlik Hayvanlarına

Tam bu trendin zirvesindeyken altyapı mühendisi oldum. Amazon'daki ilk üretim ortamımı bir dizi bash betiği kullanarak oluşturduğumu hatırlıyorum. Sunucular benim için evcil hayvanlar gibiydi. Her birine sevimli isimler verdim. Onları dikkatle izledim. Uyarılara hızla yanıt verdim ve onları sağlıklı tuttum. Bu durumlara sevgi ve şefkatle yaklaştım çünkü onların yerine koymaya çalışmak acı vericiydi - tıpkı sevilen bir evcil hayvan gibi.

Bir konfigürasyon yönetim aracı olan Chef geldi ve neredeyse hemen hayatım kolaylaştı. Chef ve Puppet gibi araçlarla, bir bulut sistemini yönetmekle ilgili manuel sıkıntıların çoğunu ortadan kaldırabilirsiniz. Geliştirme, hazırlama ve üretim sunucularını ayırmak için "ortamlar" yapısını kullanabilirsiniz. Yapılandırma parametrelerini tanımlamak ve değişiklik setlerini göndermek için "veri çantalarını" ve "rollerini" kullanabilirsiniz. Artık tüm "evcil hayvan" sunucularım itaat okulundan mezun olmuştu.

Nakliye konteynırlarını yöneten bir vincin grafik gösterimi

Daha sonra 2013'te Docker geldi ve yeni bir dönem başladı: hayvancılık olarak yazılım çağı (izleyicilerdeki herhangi bir vegandan özür dilerim). Kapsayıcı paradigması, yapılandırma yönetimi değil, bir düzenlemedir. Kubernetes, Docker Compose ve Marathon gibi araçlar, çalışan örneklerde yapılandırma değerlerini ayarlamak yerine önceden tanımlanmış görüntülerin etrafında hareket etmeye odaklanır. Altyapı değişmez; Bir konteyner bozulduğunda, onu düzeltmeye çalışmıyoruz - kafasından vurup değiştiriyoruz. Sürünün sağlığını bireysel hayvanlardan daha fazla önemsiyoruz. Artık sunucularımıza şirin isimler vermiyoruz.

Ödüller

Konteynerler birçok şeyi kolaylaştırır. İşletmelerin kendi özel soslarına daha fazla odaklanmasına izin veriyorlar. Teknik ekipler, altyapı ve yapılandırma yönetimi hakkında daha az endişe duyabilir ve bunun yerine daha çok uygulama kodu hakkında endişelenebilir. Şirketler bir adım daha ileri gidebilir ve veri katmanıyla hiç uğraşmak zorunda kalmamak için MySQL, Cassandra, Kafka veya Redis gibi şeyler için yönetilen hizmetleri kullanabilir. “Tak ve çalıştır” makine öğrenimi hizmetleri sunan birkaç girişim de şirketlerin altyapı konusunda endişelenmeden karmaşık analitikler yapmasına olanak tanıyor. Bu eğilimler, ekiplerin tek bir sanal makineyi veya kapsayıcıyı yönetmeden yazılım yayınlamasına olanak tanıyan bir yazılım mimarisi yaklaşımı olan sunucusuz modelde doruğa ulaştı. S3, Lambda, Kinesis ve Dynamo gibi AWS hizmetleri bunu mümkün kılar. Analojiyi genişletmek için evcil hayvanlardan çiftlik hayvanlarına ve bir çeşit isteğe bağlı hayvan hizmetine geçtik.

Bütün bunlar çok güzel. On iki yaşındaki bir çocuğun karmaşık bir yazılım sistemini birkaç tıklamayla çalıştırabildiği bir zamanda yaşıyor olmamız çılgınca. Çok uzun olmayan bir zaman önce bunun imkansız olduğunu hatırlamalıyız. Sadece birkaç ABD başkanı önce, fiziksel medya standarttı ve yalnızca büyük şirketler yazılım üretme ve dağıtma araçlarına sahipti. Hata düzeltmeleri bir lükstü. Şimdi, o on iki yaşındaki çocuk bir AWS hesabı oluşturabilir ve yazılımını tüm dünyanın kullanımına sunabilir. Bir hata varsa, birisi onu Slack'te rahatsız eder ve birkaç dakika içinde tüm kullanıcılar için bir düzeltme yayınlanır.

Riskler

Çok, çok havalı ama fiyatı da cabası – Amazon gibi bulut sağlayıcılarına güvenmek, büyük şirketlere ve tescilli teknolojilere güvenmek demektir. Richard Stallman ve Edward Snowden sizi bu tür şeyler hakkında endişelendirmediyse, Facebook'taki son fiyasko kesinlikle olmalı.

Donanımdan daha fazla soyutlama, daha az şeffaflık ve kontrol riskini de beraberinde getirir. Yüzlerce konteyner çalıştıran bir sistemde bir şey bozulduğunda, arızanın tespit edebileceğimiz bir yerde patlamasını ummalıyız. Sorun ana bilgisayar işletim sisteminde veya temel alınan donanımdaysa, belirlemek zor olabilir. Doğru araçlara sahip değilseniz, sanal makineler kullanılarak 20 dakikada çözülebilecek bir kesintinin kapsayıcılarla çözülmesi saatler veya günler alabilir.

Docker gibi şeyler söz konusu olduğunda endişelenmemiz gereken yalnızca başarısızlıklar değildir. Bir de güvenlik sorunu var. Hangi konteyner platformunu kullanırsak kullanalım, arka kapıların veya açıklanmayan güvenlik açıklarının olmadığına güvenmeliyiz. Açık kaynaklı platformların kullanılması da güvenlik garantisi değildir. Sistemimizin parçaları için üçüncü taraf kapsayıcı görüntülerine güvenirsek, savunmasız kalabiliriz.

Sarmak

Hayvancılık paradigması birkaç nedenden dolayı çekicidir, ancak dezavantajları da vardır. Tüm yığını kapsayıcı hale getirmek için acele etmeden önce, teknoloji ekiplerinin bunun doğru seçim olup olmadığını düşünmesi ve olumsuz etkileri azaltabileceklerinden emin olmaları gerekir.

Şahsen ben konteynerlerle çalışmayı seviyorum. Yeni platformlar ve paradigmalar ortaya çıktıkça, önümüzdeki on yıl içinde işlerin nereye gideceğini görmek beni heyecanlandırıyor. Ancak eski bir güvenlik danışmanı olarak her şeyin bir bedeli olduğunu bilecek kadar temkinliyim. Kullanıcılar ve geliştiriciler olarak özerkliğimizden vazgeçmediğimizden emin olmak için uyanık kalmak mühendislerin görevidir. Dünyadaki en kolay CD/CI iş akışı bile bu maliyete değmez.

İlgili: Matematiği Yapın: Orkestratörlerle Mikro Hizmet Uygulamalarını Otomatik Ölçeklendirme