Derleme işlemi için Azure teknolojileri

Tamamlandı

Bu ünitede, yenilikler süreciyle sektördeki uygulamalarda yeni işlevler oluşturmanıza yardımcı olabilecek bazı teknolojiler arasındaki ilişkiyi öğreneceksiniz.

DevOps

Yenilik hipotezinizi doğrulamak için derleme aşamasına başladıktan sonra gerekli geliştirme, tümleştirme ve dağıtım döngüleri mümkün olduğunca kolay hale getirilmelidir. DevOps bu aşamada devreye girer. DevOps'u "yazılım özelliklerini hızlı ve güvenilir bir şekilde sunan süreçler ve araçlar" olarak tanımlayabilirsiniz. Bu tanımla ilgili ayrıntılar şunlardır:

  • İşlemler ve araçlar: DevOps ve bir bütün olarak yenilik süreci, değişikliği teşvik eden kültür desenlerini temel alır. Azure ve GitHub, DevOps ile ilgili harika araçlar sunar, ancak lisans satın almak yeterli değildir. Süreçlerinizin ve kuruluş kültürünüzün değişimi ve yeniliği benimseyecek şekilde gelişmesi gerekiyor.

  • Yazılım özelliklerinin hızlı teslimi: DevOps işlemleri ve araçları, hızlı başarısız olma kavramını benimser. Üzerinde çalıştığınız özelliğin DevOps kavramının temeli olup olmadığını hızla doğrulamak için MVP'ler veya prototipler oluşturma.

  • Yazılım özelliklerinin güvenilir bir şekilde sunulması: Değişiklik tersine çalışan kuruluşlar genellikle hızlı değişiklikleri kapalı kalma süresiyle ilişkilendirir. Ancak DevOps bunun tam tersini vaat eder: hızlı bir değişiklik oranı ve yüksek güvenilirlik düzeyi. Bu güvenilirlik, geliştirme döngüsünün ilk aşamalarında testlerin "sola kaydırma" olarak adlandırılan bir süreçle tümleştirilmesiyle mümkün hale gelir.

    Bir özelliğin zaman içinde geliştirilmesi soldan sağa doğru bir çizgi olarak görülüyorsa. Daha sonra eski bir geliştirme süreci, geliştirme döngüsünün sonunda kullanıcı doğrulama ve kalite denetimi gerçekleştirebilir. O satırın "sağ ucunda". DevOps, bu zaman çizgisinin "solunda" mümkün olduğunca erken test edip doğrulamanızı önerir.

DevOps, sağlıklı bir yenilik kültürünün temel kavramlarını oluşturur. Metodolojisini benimsemek, çevik bir yenilik döngüsüne ulaşmak için önemlidir.

Mikro hizmet mimarileri

Modülerlik, karmaşık sistemlerin mimarisinin karmaşıklığını azaltmak için iyi bilinen bir tekniktir. Sistem, parçalanemeyen birçok parçanın karmaşık bir etkileşimiyse (genellikle "monolith" olarak adlandırılır), sıkı bileşen bağımlılıkları sistem geliştirmelerini zor hale getirir. Her değişikliğin sistemin geri kalanıyla doğrulanması gerekir, bu nedenle test işlemi karmaşıktır.

Sistem modülerse, iyi tanımlanmış arabirimler aracılığıyla birbiriyle etkileşim kuran daha küçük alt sistemlere ayırabilirsiniz. Bu alt sistemlerden birinde değişikliklere giriş daha kolaydır, çünkü diğer modüllerle arabirimi sabit kaldığı sürece genel sistem çalışmaya devam eder.

Mikro hizmet mimarileri, modülerlikten yararlanan uygulama desenleridir. Uygulamalar birbirinden bağımsız olarak geliştirilebilen, hatta farklı programlama dilleri kullanılarak bile geliştirilebilen ayrı, küçük bileşenlere ayrılır. Her bileşen veya mikro hizmet kendi başına çalışabilir. Gerektiği gibi ölçeklendirebilir, tek bir birim olarak sorun giderebilir, diğer mikro hizmetlerden bağımsız olarak değiştirebilirsiniz.

Kuruluşların sıklıkla sormuş olduğu bir soru, bir uygulamanın monolitik olması durumunda ne yapacağıdır. Kuruluş, yenilik sunmadan önce uygulamayı bir mikro hizmet mimarisinde yeniden tasarlamalı mı yoksa yenilik ve yeniden tasarlama işlemleri paralel olarak çalıştırılabilir mi? Bu sorunun tek bir yanıtı yok. Bu, göz önünde bulundurulan uygulamanın karmaşıklığı ve iş ilgisine bağlıdır.

Tailwind Traders, e-ticaret platformunda yenilikleri kullanıma sunarken bu soruyla karşı karşıya geldi. Şirket, e-ticaret uygulamasını mikro hizmetler mimarisine yeniden tasarlamak için bir proje başlatmaya karar verdi, çünkü uygulamanın iş açısından kritikliği bu çabayı haklı çıkarmıştı. Modüler bir uygulamaya sahip olmaması, Tailwind Traders'ın çevrimiçi pazardaki değişen eğilimlere tepki verme yeteneğini ciddi ölçüde bozar.

Ancak Tailwind Traders, platformundaki önemli boşluklardan bazılarını aynı anda giderme kararı verdi. Uygulamanın yeniden tasarlanması projesinin tamamlanması, şu anda e-ticaret pazarını kesintiye uğrayan yeni startup'lara önemli pazar payının kaybedilmesi anlamına gelir.

Projeler, yeniliklerin iş değeri tarafından yönlendirilen birbirleriyle etkileşime geçmektir. Yeniden tasarlama çalışmaları, müşteri deneyimini geliştirmek için değişiklik gereksiniminin en yüksek olduğu en kritik uygulama alanlarına odaklanmaktır.

Kapsayıcılar

Kapsayıcıya alma teknolojisi mikro hizmet mimarilerine özel değildir, ancak kavramlar birlikte çalışır. Kapsayıcılar, herhangi bir platformda zahmetsizce dağıtılabilmeleri için uygulama kodunu ve bağımlılıklarını kapsüllemenin bir yoludur.

Geleneksel uygulama dağıtımları, kuruluşun önce uygulama çalışma zamanı, programlama kitaplıkları veya dış bileşenler gibi yazılımları yüklemesini gerektirir. Bu yaklaşım genellikle "makinemde çalışıyor" sorunuyla sonuçlanıyor: Geliştirme, test, hazırlama ve üretim genelinde aynı ortamı çoğaltmak zor. Uygulama bağımlılıklarının yüklenme şeklindeki küçük farklar, test edilirken uygulamanın sorunsuz çalışmasına neden olabilir, ancak üretime dağıtıldığında başarısız olabilir.

Kapsayıcılar oyunun kurallarını değiştirir. Uygulama bağımlılıkları, kapsayıcı görüntüsü adı verilen otonom bir dağıtım biriminde uygulama koduyla birlikte paketlenir. Uygulama kapsayıcısının bir geliştiricinin dizüstü bilgisayarına veya yüzlerce düğüme sahip bir üretim kümesine dağıtıldığında bağımlılık işleme aynıdır. Kapsayıcı tam olarak aynı şekilde çalıştığından uygulama testi daha güvenilir ve güvenilirdir.

Docker 2013'te açık kaynak olarak kodunu yayımladığından bu yana kapsayıcılar çok yol kat etti. Kapsayıcılar artık hem Linux hem de Windows'un hem de farklı CPU mimarilerinin desteklenmektedir. Azure'da kapsayıcı tabanlı iş yüklerinin çalışmasına izin veren birçok teklif vardır. Bu ünitede bazıları hakkında bilgi ediniyorsunuz.

Kubernetes ve Red Hat OpenShift

Kapsayıcı çalışma zamanı, bir bilgisayarda kapsayıcıları başlatan teknolojidir, ancak üretim ortamında daha fazla mantık gerekir. Daha fazla performans gerekiyorsa kim daha fazla kapsayıcı dağıtır? Bir sorun varsa kapsayıcıları kim yeniden başlatır? Birden çok bilgisayar varsa, hangilerinin belirli bir kapsayıcının başlatılması gerektiğine kim karar verir? Bunlar ve diğer görevler kapsayıcı düzenleme platformunun sorumluluğundadır.

Kubernetes'in ilk sürümü 2015'te piyasaya sürüldü ve kısa süre içinde kapsayıcı düzenleme için fiili standart haline geldi. Kubernetes kümeleri birkaç çalışan düğümünden oluşur. Her çalışan düğümünün bir kapsayıcı çalışma zamanı vardır, bu nedenle Kubernetes denetim düzleminin kapsayıcılı uygulamaların dağıtımını zamanladığı kapsayıcıları çalıştırabilir. Bu denetim düzlemi genellikle bir dizi çekirdek düğümde çalışır. Uygulamanın düzgün çalışmasını sağlamak, uygulamayı ölçeğini artırmak veya küçültmek ve gerekli güncelleştirmeleri gerçekleştirmekten sorumludur.

Kubernetes'in popüler olmasının temel nedenlerinden biri, kapsayıcıların sağladığı donanım bağımsızlığıdır. Kapsayıcı tabanlı uygulamalar herhangi bir kapsayıcı çalışma zamanına güvenilir bir şekilde dağıtılabildiği için Kubernetes'i çeşitli hiper yöneticiler kullanan bulutlarda çalıştırabilirsiniz. Dağıtılan uygulamalar benzer şekilde davranmalıdır (temel alınan donanım kaynaklarının da benzer olduğu varsayılarak). Birçok kuruluş, kubernetes'i hem şirket içinde hem de genel bulutlarda tutarlı uygulama dağıtım süreçlerine olanak tanıyan bir soyutlama katmanı olarak benimsemiştir.

Azure'da Kubernetes çalıştırmak kolaydır. Azure Kubernetes Service'in dağıtımı kolaydır ve maliyet açısından verimlidir çünkü müşteri yalnızca çalışan düğümlerinin maliyeti için ücretlendirilir. Microsoft, temel bileşenleri içeren kontrol düzleminin maliyetini ve çalışmasını taşır. Microsoft, çalışan düğümlerinin işletim sistemine düzeltme eki uygular ve güncelleştirir ve Linux ve Windows kapsayıcılarını çalıştırmak için kubernetes kümesini yönetme işleminin operasyonel karmaşıklığını daha da azaltır.

OpenShift, Red Hat tarafından geliştirilen ve desteklenen Kubernetes tabanlı bir uygulama dağıtım platformudur. Diğer birçok işlevi içerir. Uygulamalarını OpenShift'te çalıştırmayı seçen bazı kuruluşlar, bu ek özellikler ve Red Hat'in sağladığı destek nedeniyle bunu yapar. OpenShift'i Azure'da çalıştırmak yine basit bir işlemdir. Azure Red Hat OpenShift , Microsoft'un kümenin yaşam döngüsünün tamamı dahil olmak üzere birçok yönünü yönettiği bir OpenShift kümesinden oluşur.

Azure App Service

Azure Uygulaması Hizmeti, kuruluşların herhangi bir düzenleyiciyi veya temel işletim sistemini yönetmek zorunda kalmadan web tabanlı iş yüklerini çalıştırabilecekleri bir platformdur. Tek gereksinim, uygulama kodunu birçok kullanılabilir dağıtım yönteminden biri aracılığıyla hizmete yüklemektir. Azure gerisini yapar: Kubernetes'in öğrenme eğrisine gerek kalmadan uygulamayı daraltma ve genişletme, temel alınan sanal makineleri düzeltme eki uygulama ve bakımını gerçekleştirme ve çok daha fazlasını yapar.

Azure Uygulaması Hizmeti kapsayıcı tabanlı iş yüklerini desteklediğinden, uygulama kodu yerine kapsayıcı görüntünüzü karşıya yükleyebilirsiniz. Ayrıca Linux ve Windows iş yüklerini ve birçok farklı uygulama çalışma zamanını destekler.

Azure Uygulaması Hizmeti, Azure İşlevleri adlı sunucusuz seçenek de dahil olmak üzere çeşitli fiyatlandırma modellerini destekler. Azure İşlevleri yalnızca uygulama kullanımı ücretlendirilir. Sabit maliyet yoktur.

Sunucusuz model yenilik yapmaya ilgi çekicidir, çünkü pazar bunları kabul etmezse yüksek aylık faturalar ödemeden yeni mikro hizmetler dağıtmanıza olanak tanır. Bu model, yeniliğin yüksek giderleri ifade etmemesi gereken hızlı hata stratejisinin bir başka örneğidir.

Azure Uygulaması Hizmeti, web uygulaması yuvaları gibi DevOps odaklı dağıtımları destekleyen özellikler de sunar. Yuvalar, üretim ortamını etkilemeden yeni özellikleri dağıtabileceğiniz hazırlama alanlarıdır. Yuvalar yenilik açısından harikadır, çünkü müşterilerinizin küçük bir seçimini uygulamanın bu yeni sürümüne yönlendirebilirsiniz. Ardından yenilik hipotezinizin doğru olup olmadığını doğrulayabilirsiniz. Sonunda, yeni kodu üretime yükseltmek istiyorsanız, hazırlama ortamının üretim sürümü olması için yuvaları "değiştirebilirsiniz".

Özet

Bu ünitede teknolojinin yenilikleri nasıl destekleyebileceğinizi öğrendiniz:

  • DevOps süreçleri ve araçları, geliştirme ve operasyon ekiplerinize yeni özellikleri hızlı ve güvenilir bir şekilde sunma konusunda süper güç sağlar.
  • Uygulamaları mikro hizmetlere dönüştürerek bileşenlerinde geri kalanı etkilemeden tek tek yeniliklere olanak tanıyabilirsiniz.
  • Kapsayıcılar, birden çok platform ve ortamda güvenilir uygulama dağıtımı sağlar.
  • Kubernetes, kapsayıcılı uygulamaları çalıştırmaya yönelik buluttan bağımsız bir düzenleme platformudur.
  • Azure Uygulaması Hizmeti, web tabanlı iş yüklerini en düşük yönetim yüküyle çalıştırabilir. Yenilik döngüsünü hızlandırmak için sunucusuz veya uygulama yuvaları gibi birçok özellik sunar.

Tailwind Traders, e-ticaret uygulamasını bir mikro hizmet mimarisine yeniden tasarlamaya karar verdi. "Monolith" ile ayırdığı ilk uygulama alt sistemi ödeme hizmetidir çünkü bunu rekabetin müşterilere daha iyi değer sunduğu kritik bir alan olarak tanımlamış olursunuz.

Ödeme alt sisteminden sonra daha fazla uygulama bileşeni bağımsız mikro hizmetlere dönüştürülür. Mikro hizmetler REST API'leri aracılığıyla iletişim kurabilir. Her mikro hizmetin uygulama kodu kapsayıcılı hale getirilecek ve geliştirme ve operasyon kuruluşları DevOps en iyi yöntemlerini benimsemelidir.

Tailwind Traders, belirli bir genel buluta bağımlı olmak istemediği için şirket içinde Kubernetes uzmanlığı oluşturmaya ve uygulamayı Azure Kubernetes Service kümelerine dağıtmaya karar vermiştir. Yeni mikro hizmetlerin geliştirilmesi gerekiyorsa, şirket geliştirme maliyetlerini azaltmak için Azure İşlevleri MVP dağıtımı için bir platform olarak kullanmayı tercih etti.

Sonraki nereye bakılır?

Bu ünitedeki kavramların çoğu, Bulut Benimseme Çerçevesi dijital buluş ve Kubernetes ile benimsemeyi güçlendirme başlıklı Bulut Benimseme Çerçevesi makalesinde daha ayrıntılı olarak açıklanmıştır.