DevOps deseni

Tek bir konumdan kodlayın ve yerel veri merkezinizde, özel bulutlarınızda veya genel bulutunuzda olabilecek geliştirme, test ve üretim ortamlarında birden çok hedefe dağıtın.

Bağlam ve sorun

Uygulama dağıtım sürekliliği, güvenlik ve güvenilirlik, kuruluşlar için önemlidir ve geliştirme ekipleri için kritik öneme sahiptir.

Uygulamaların her hedef ortamda çalıştırılması için genellikle yeniden düzenlenmiş kod gerekir. Bu, bir uygulamanın tamamen taşınabilir olmadığı anlamına gelir. Her ortamda ilerlerken güncelleştirilmeli, test edilmeli ve doğrulanmalıdır. Örneğin, geliştirme ortamında yazılan kodun bir test ortamında çalışması için yeniden yazılması ve son olarak üretim ortamına geldiğinde yeniden yazılması gerekir. Ayrıca, bu kod özellikle konağa bağlıdır. Bu, uygulamanızın bakımının maliyetini ve karmaşıklığını artırır. Uygulamanın her sürümü her ortama bağlıdır. Artan karmaşıklık ve yineleme, güvenlik ve kod kalitesi riskini artırır. Ayrıca, geri yükleme başarısız konaklarını kaldırdığınızda veya talep artışlarını işlemek için ek konaklar dağıttığınızda kod kolayca yeniden dağıtılamaz.

Çözüm

DevOps Deseni, birden çok bulutta çalışan bir uygulama derlemenize, test edip dağıtmanıza olanak tanır. Bu düzen, sürekli tümleştirme ve sürekli teslim uygulamalarını birleştiren bir modeldir. Sürekli tümleştirme sayesinde, bir ekip üyesi sürüm denetiminde her değişiklik işlediğinde kod derlenir ve test edilir. Sürekli teslim, bir derlemeden üretim ortamına her adımı otomatikleştirir. Bu işlemler birlikte farklı ortamlarda dağıtımı destekleyen bir yayın süreci oluşturur. Bu düzende, kodunuzu taslak olarak hazırlayabilir ve ardından aynı kodu bir şirket içi ortama, farklı özel bulutlara ve genel bulutlara dağıtabilirsiniz. Ortamdaki farklılıklar, kodda yapılan değişiklikler yerine yapılandırma dosyasında değişiklik yapılmasını gerektirir.

DevOps pattern

Şirket içi, özel bulut ve genel bulut ortamlarında tutarlı bir geliştirme araçları kümesiyle sürekli tümleştirme ve sürekli teslim uygulaması uygulayabilirsiniz. DevOps Deseni kullanılarak dağıtılan uygulamalar ve hizmetler değiştirilebilir ve şirket içi ve genel bulut özellikleri ile özelliklerinden yararlanarak bu konumlardan herhangi birinde çalıştırılabilir.

DevOps yayın işlem hattı kullanmak şunları kullanmanıza yardımcı olur:

  • Tek bir depoya kod işlemelerini temel alan yeni bir derleme başlatın.
  • Kullanıcı kabul testi için yeni derlenen kodunuzu otomatik olarak genel buluta dağıtın.
  • Kodunuz testi geçtikten sonra otomatik olarak özel buluta dağıtın.

Sorunlar ve dikkat edilmesi gerekenler

DevOps Düzeni, hedef ortamdan bağımsız olarak dağıtımlar arasında tutarlılık sağlamaya yöneliktir. Ancak özellikler bulut ve şirket içi ortamlar arasında farklılık gösterir. Aşağıdaki noktalara bir göz atın:

  • Dağıtımınızdaki işlevler, uç noktalar, hizmetler ve diğer kaynaklar hedef dağıtım konumlarında kullanılabilir mi?
  • Yapılandırma yapıtları bulutlar arasında erişilebilen konumlarda mı depolanıyor?
  • Dağıtım parametreleri tüm hedef ortamlarda çalışacak mı?
  • Kaynağa özgü özellikler tüm hedef bulutlarda kullanılabilir mi?

Daha fazla bilgi için bkz. Bulut tutarlılığı için Azure Resource Manager şablonları geliştirme.

Buna ek olarak, bu düzenin nasıl uygulanasına karar verirken aşağıdaki noktaları göz önünde bulundurun:

Ölçeklenebilirlik

Dağıtım otomasyon sistemleri, DevOps Desenleri'ndeki temel denetim noktasıdır. Uygulamalar farklılık gösterebilir. Doğru sunucu boyutunun seçilmesi beklenen iş yükünün boyutuna bağlıdır. VM'lerin ölçeklendirilmesi kapsayıcılara kıyasla daha maliyetlidir. Ancak, ölçeklendirme amacıyla kapsayıcıları kullanabilmek için derleme sürecinizin kapsayıcılar ile çalışması gerekir.

Kullanılabilirlik

DevPattern bağlamında kullanılabilirlik, test sonuçları, kod bağımlılıkları veya diğer yapıtlar gibi iş akışınızla ilişkili tüm durum bilgilerini kurtarabilmek anlamına gelir. Kullanılabilirlik gereksinimlerinizi değerlendirirken yaygın kullanılan iki ölçümü göz önünde bulundurun:

  • Kurtarma Süresi Hedefi (RTO), sistem olmadan ne kadar süreyle gidebileceğinizi belirtir.

  • Kurtarma Noktası Hedefi (RPO), hizmette bir kesintinin sistemi etkilemesi durumunda ne kadar veri kaybetmeyi göze alabileceğinizi gösterir.

Pratikte RTO ve RPO yedeklilik ve yedekleme anlamına gelir. Genel Azure bulutundaki kullanılabilirlik, Azure'ın bir parçası olan donanım kurtarmayla ilgili değildir, bunun yerine DevOps sistemlerinizin durumunu korumanızı sağlar. Azure Stack Hub'da donanım kurtarma dikkate alınabilir.

Dağıtım otomasyonu için kullanılan sistemi tasarlarken dikkat edilmesi gereken bir diğer önemli nokta da erişim denetimi ve hizmetleri bulut ortamlarına dağıtmak için gereken hakların düzgün yönetilmesidir. Dağıtımları oluşturmak, silmek veya değiştirmek için hangi haklar gerekir? Örneğin, azureda bir kaynak grubu oluşturmak için bir hak kümesi, kaynak grubundaki hizmetleri dağıtmak için de başka bir hak kümesi gerekir.

Yönetilebilirlik

DevOps desenini temel alan herhangi bir sistemin tasarımı, portföydeki her hizmet için otomasyon, günlüğe kaydetme ve uyarı almayı dikkate almalıdır. Paylaşılan hizmetleri, bir uygulama ekibini veya her ikisini birden kullanın ve güvenlik ilkelerini ve idareyi de izleyin.

Üretim ortamlarını ve geliştirme/test ortamlarını Azure veya Azure Stack Hub'da ayrı kaynak gruplarında dağıtın. Ardından her ortamın kaynaklarını izleyebilir ve faturalama maliyetlerini kaynak grubuna göre toplayabilirsiniz. Kaynakları bir küme olarak da silebilirsiniz. Bu, test dağıtımları için yararlıdır.

Bu düzenin kullanılacağı durumlar

Şu durumda bu düzeni kullanın:

  • Geliştiricilerinizin gereksinimlerini karşılayan bir ortamda kod geliştirebilir ve yeni kod geliştirmenin zor olabileceği çözümünüzle ilgili bir ortama dağıtabilirsiniz.
  • DevOps Deseninde sürekli tümleştirme ve sürekli teslim sürecini izleyebildikleri sürece geliştiricilerinizin istedikleri kodu ve araçları kullanabilirsiniz.

Bu düzenin şunlar için kullanılması önerilmez:

  • Altyapıyı, sağlama kaynaklarını, yapılandırmayı, kimliği ve güvenlik görevlerini otomatikleştiremiyorsanız.
  • Ekiplerin Sürekli Tümleştirme/Sürekli Geliştirme (CI/CD) yaklaşımını uygulamak için hibrit bulut kaynaklarına erişimi yoksa.

Sonraki adımlar

Bu makalede sunulan konular hakkında daha fazla bilgi edinmek için:

  • Azure DevOps ve Azure Repos ve Azure Pipelines gibi ilgili araçlar hakkında daha fazla bilgi edinmek için Azure DevOps belgelerine bakın.
  • Ürün ve çözüm portföyünün tamamı hakkında daha fazla bilgi edinmek için bkz. Azure Stack ürün ve çözüm ailesi.

Çözüm örneğini test etmeye hazır olduğunuzda karma CI/CD çözümü dağıtım kılavuzu DevOps devam edin. Dağıtım kılavuzu, bileşenlerini dağıtmaya ve test etmeye yönelik adım adım yönergeler sağlar. Hibrit sürekli tümleştirme/sürekli teslim (CI/CD) işlem hattı kullanarak Azure ve Azure Stack Hub'a uygulama dağıtmayı öğrenirsiniz.