Azure'da SaaS iş yükleri için DevOps uygulamaları
DevOps uygulamaları, özellikle SaaS uygulamaları için Azure'da iş yüklerini yönetmenin ayrılmaz bir parçasıdır. Temel özellikler arasında müşteri örneklerini ekleme, çıkarma ve değiştirme yer alır. Bu uygulamalar yalnızca işlemleri kolaylaştırmakla kalmaz, aynı zamanda ölçeklenebilirlik ve güvenilirliği artırarak kesinti olasılığını en aza indirir.
Bu makalede, verimli müşteri yaşam döngüsü yönetimi ve güvenli dağıtım uygulamaları için tasarım konuları açıklanmaktadır.
Müşteri yaşam döngülerini yönetme
Müşteri yaşam döngüsü olaylarını yönetmek, tüm SaaS uygulamaları için çok önemlidir. Bu olaylar genellikle şunları içerir:
- Ekleme: Müşteri kaydolduğunda.
- Değiştirme: Müşterinin örneğini değiştirme, örneğin fiyatlandırma katmanını değiştirme.
- Çıkarma: Müşteri hesabını iptal ettiğinde.
Ek yaşam döngüsü olaylarıyla karşılaşabilirsiniz. Örneğin, müşterilerinizin belirli bir süre boyunca verilerini korurken aboneliklerini duraklatmalarına ve aboneliklerini daha sonra sürdürmelerine izin vekleyebilirsiniz. Her olayın uygulamanız için benzersiz etkileri olabilir.
Bazı çözümlerde, müşteri yaşam döngüsü yönetimi yalnızca veritabanı tablosunda veri oluşturmayı veya yönetmeyi gerektirebilir. Diğer çözümler için, Azure altyapısının, uygulama kodunun ve daha karmaşık yapılandırmanın dağıtımını düzenlemeyi içerebilir.
Yaşam döngüsü yönetimi, SaaS çözümünün kontrol düzleminin önemli bir sorumluluğudur. Başlangıçta, ekibiniz bu etkinlikleri el ile işleyebilir, ancak zaman içinde daha fazla işlevi resmileştirilmiş bir denetim düzlemi çözümüne veya uygulamasına geçirmeye çalışır.
Tasarımla ilgili dikkat edilecek noktalar
Tutarlılık. Yaşam döngüsü yönetimi stratejinizi planlarken, her müşteri yaşam döngüsü olayı için gereken eylemlerin karmaşıklığını göz önünde bulundurun. Bu, çözümünüzün boyutunu, müşteri tabanını ve kuruluş ek yükünü içerir. Her olay için gerekli adımları net bir şekilde anladığınızdan emin olun ve tutarlılığı korumak için denetimlere yatırım yapın. Çözümünüz geliştikçe geçerli kalmalarına yardımcı olmak için süreçlerinizi düzenli olarak gözden geçirin ve güncelleştirin.
Kiracı modeli. Müşteri yaşam döngüsü olaylarını işleme yaklaşımınız kiracı modelinize bağlıdır.
- Altyapı kaynaklarıyla tamamen çok kiracılı çözümler. Müşteri ekleme veya çıkarma genellikle bir müşteri listesini ve uygulamanızın veri deposundaki ilişkili verileri güncelleştirmeyi içerir.
- Müşteri başına ayrılmış kaynaklar. Görevler genellikle Azure'a dağıtım başlatmayı, ilerleme durumunu izlemeyi ve büyük olasılıkla insan müdahalesiyle dağıtım hatalarını işlemeyi içerir.
- Müşteri tarafından dağıtılan kaynaklar. Ekleme veya çıkarma için doğrudan müşterinin mühendislik ekibiyle arabirim oluşturmanız gerekebilir.
Katmanlar. Özellikle müşterilerin SKU'larını istedikleri zaman serbestçe değiştirmelerine izin verirseniz, fiyatlandırma modelinizi ve her katmanın farklı altyapı gereksinimlerini göz önünde bulundurun.
- Örneğin, SaaS çözümünüz bir çekirdek uygulama ve birden çok ücretli eklenti modülü içeriyorsa, ekleme sırasında çekirdek uygulamanın kaynaklarının dağıtıldığından emin olun. Ayrıca, eklenti modüllerinin dinamik olarak eklenmesine ve kaldırılmasına izin verin. Bir modül kaldırıldığında, ilişkili verileri silmeye veya yeniden etkinleştirme olasılığı için depolamaya karar verin.
Tasarım önerileri
Öneri | Avantaj |
---|---|
Her tür müşteri yaşam döngüsü olayını belgele. Her olay için işlemin adım adım ayrıntılarını yakaladığınıza emin olun. |
Olayları anlayarak, çözüm tasarımınızdaki her olaya nasıl yanıt verebileceğinizi planlayabilirsiniz. Açık yönergeler, insan operatörlerin tutarlılığı korumasına yardımcı olur ve gelecekteki otomasyon için temel görevi görür. |
Her yaşam döngüsü olayı için sizinle müşteriniz arasında paylaşılan sorumluluğu iletin. Müşterilerin bir yaşam döngüsü aşamasını tamamlamak için gerçekleştirmesini beklediğiniz eylemleri net ve erken bir şekilde iletin. | Yanlış iletişimden kaynaklanan olası hataları ve müşteri sıkıntısını azaltabilirsiniz. |
Her yaşam döngüsü olayı için kapasite planlaması yapın. Örneğin, yeni bir müşteri eklerken, mevcut örneklerin ek yükü işlemek için yeterli kapasiteye sahip olmaması durumunda uygulamanızın yeni bir örneğini dağıtmayı planlayın. Daha fazla bilgi için bkz . Azure'da SaaS iş yükleri için faturalama ve maliyet yönetimi. |
Daha kolay ölçeklendirebilmenizi destekleyebilir ve dağıtım hatalarını önleyebilirsiniz. |
Pratik olduğunda yaşam döngüsü olaylarınızı otomatikleştirin. Düşük hacimli veya erken aşama çözümler için el ile dağıtım ve yapılandırma yeterli olabilir, ancak bir mühendis her yaşam döngüsü olayı gerçekleştiğinde bunları çalıştırsa bile betikleri kullanmaya devam etmelidir. Çözümünüz büyüdükçe, insan hatasını azaltmak ve daha yüksek ölçeği desteklemek için bu sorumlulukları tam bir kontrol düzlemi ile tümleştirin. |
İnsan hatası riskini önemli ölçüde azaltabilir ve daha yüksek ölçeği destekleyebilirsiniz. |
Altyapı yönetimi stratejinizi planlama
Azure altyapısını önceden dağıtmak, korumak ve yönetmek için bir strateji geliştirin. SaaS'nizi ölçeklendirdikçe kaynakların sayısı artar. Bir yönetim stratejisini başlangıçtan itibaren izlemek, daha sonra el ile işlenemeyecek kadar karmaşık hale geldiğinde altyapıyı uzlaştırmaktan daha kolaydır.
Tasarımla ilgili dikkat edilecek noktalar
Müşteri kaynak yönetimi. Kiracı modeliniz SaaS çözümlerinde kaynak dağıtımını etkiler. Her müşteri için ayrılmış Azure kaynakları dağıtabilir veya kaynakları belirli sayıda müşteri arasında paylaşabilirsiniz. Alternatif olarak, yeni müşteriler eklerken bunları yeniden yapılandırarak tek bir paylaşılan kaynak kümesi kullanabilirsiniz. Kaynakların yaşam döngüsünü yönetmek için yaygın yaklaşımlar:
- Müşteri listenizi dağıtılacak kaynakların yapılandırması olarak değerlendirin. Bu kaynakları dağıtmak ve yapılandırmak için merkezi dağıtım işlem hatlarını kullanın.
- Müşteri listenizi veri olarak değerlendirin. Altyapıyı sağlamak ve yapılandırmak için bir denetim düzlemi uygulaması kullanın.
Altyapı otomasyonu. Çoğu kuruluş, başlangıçta kolay olan ancak iyi ölçeklendirilmeyen Azure portalı aracılığıyla bulut altyapısını el ile dağıtarak işe başlar. Bicep veya Terraform gibi Kod Olarak Altyapı (IaC) araçlarını kullanarak altyapı kurulumunuzu otomatikleştirmeyi planlayın. Daha karmaşık gereksinimler için doğrudan Azure Resource Manager API'lerini kullanan bir denetim düzlemi oluşturun.
Altyapı atfı. Hangi müşterilerin hangi altyapıya dağıtıldığından haberdar olun. İzleme, doğru kapasite planlaması ve maliyet atfı için önemlidir. Müşteri altyapısını müşteri veritabanında merkezi olarak izleyebilir veya ayrılmış altyapı için müşteriye özgü kaynak grupları ve kaynak etiketleriyle Azure kaynak meta verilerini kullanabilirsiniz. Daha fazla bilgi için bkz . SaaS iş yükleri için kaynak düzenleme.
Tasarım önerileri
Öneri | Avantaj |
---|---|
Ekibinizin zaten aşina olduğu araçlarla dağıtım işlem hatlarını, betikleri veya şablonları kullanarak altyapı otomasyonu oluşturun. | Bilinen araçların kullanılması hata riskini azaltır, çünkü araçlar anlaşılmazsa altyapı otomasyonu kesintiye neden olabilir. |
Mümkün olduğunda IaC kullanarak altyapınızı dağıtın. | Altyapının el ile bakımı, altyapı miktarı arttıkça daha riskli ve daha zahmetli hale gelir. |
Çekirdek altyapıyı müşteri düzeyindeki altyapıdan ayırın. | Farklı altyapı türlerinin farklı yaşam döngüleri ve yönetim etkinlikleri vardır. Bunları ayırarak, her kümeyi kendi zamanlamasına göre bağımsız olarak yönetebilirsiniz. |
Müşteri tarafından dağıtılan kaynakları dağıtmak ve yönetmek için Azure Yönetilen Uygulamaları kullanın. | Azure Yönetilen Uygulamalar, bir müşterinin Azure aboneliği içindeki kaynakları dağıtmanıza ve yönetmenize olanak tanıyan çeşitli özellikler sağlar. |
Uygulama dağıtımlarını planlama
İşlevselliği geliştirmek için uygulama kodunu ve yapılandırmasını düzenli olarak güncelleştirin. Müşteriler, kesinti riskini en aza indirmek için güncelleştirmeler ve güvenli dağıtımlar sırasında tutarlı çalışma süresi bekler.
Tasarımla ilgili dikkat edilecek noktalar
Araçları ve işlemleri standartlaştırma. Endüstride kanıtlanmış DevOps araçları, uygulama dağıtımlarınızı yönetmeye yönelik süreçlerde işlevler ve olgunluk arasında tutarlılık sağlar. Kendi araçlarınızı geliştirmek çoğu durumda kötü amaçlı olarak kabul edilir.
Denge: Karmaşıklık ve maliyet. Tanıdık DevOps araçlarının kullanılması, para ve beceriler açısından uygun maliyetli olabilir. Ancak, her bir aracı ayrı ayrı yönetmenin operasyonel yükünü ekler. İş yükünüzden yararlanabilecek yeni teknolojik yeniliklere açık kalmak önemlidir.
Güncelleştirmeleri aşamalı olarak dağıtın. Güncelleştirmeleri bir kerede müşterilerin bir alt kümesine dağıtarak kullanıcıları mantıksal gruplandırmalara böler. Kod davranışını değiştirebileceğinden ve kesintilere neden olabileceğinden yapılandırma değişikliklerine de aynı titizliği uygulayın. Bu değişiklikler için bir dağıtım işlemini izleyin.
Sürüm oluşturma stratejisini benimseyin. Müşterilerin uygulama sürümlerini seçmesine izin vermek esneklik sağlar ancak işlemlerinizi karmaşıklaştırır. Eski sürümleri kullanımdan kaldırmaya yönelik net beklentileri ayarlayın ve artık desteklenmediklerinde ne olacağını özetler.
Otomasyon. El ile dağıtımlar, insan hataları ve tutarlılık eksikliği nedeniyle risklere açıktır. Dağıtımlarınız el ile tetiklense bile, dağıtım işleminiz mümkün olduğunca otomatik olmalı ve en az insan müdahalesi gerektirmelidir. Dağıtım sürecinizin adımlarını ve bunları en iyi şekilde otomatikleştirmeyi göz önünde bulundurun.
Test. Şunları çalıştırarak test işlemini dağıtım sürecinizle tümleştirin:
- Kod derlemesi sırasında birim testleri
- Dağıtım sonrası tümleştirme testleri
- Normal performans testleri
- Düzenli güvenlik ve sızma testleri
Herhangi bir aşamada test başarısız olursa gerçekleştirecek eylemlere karar verin.
Başarısız dağıtımlar. Gerekli eylemleri göz önünde bulundurarak ve bir geri alma stratejisi hazırlayarak dağıtım hatalarını planlayın.
Müşteri ortamlarına erişim. Kaynakları müşteri ortamlarına dağıtırsanız, bu ortamlarda güncelleştirmeleri nasıl uygulayabileceğinizi anlayın. Azure Yönetilen Uygulamalar tarafından sağlanan güncelleştirmelerin uygulamalara dağıtılması gibi özellikleri göz önünde bulundurun.
Tasarım önerileri
Öneri | Avantaj |
---|---|
Uygulama dağıtımlarınızı yönetmek için yerleşik, sektörde kanıtlanmış DevOps araçlarını ve işlemlerini kullanın. Kendi araçlarınızı geliştirmek çoğu durumda kötü amaçlı olarak kabul edilir. Daha fazla bilgi için bkz . OE:03 Yazılım geliştirme uygulamaları |
Özel olarak oluşturulmuş araçları öğrenmek zorunda kalmadan mühendislik ekibinizin etkili bir şekilde dağıtılmasını sağlayabilirsiniz. |
Yaklaşan veya tamamlanan dağıtımları müşterilere proaktif olarak bildirin. | Müşterilerinizden uygulamanıza gelen değişikliklerle ilgili doğru beklentilerin belirlendiğinden emin olabilirsiniz. |
Aşamalı maruz kalma, sistem durumu modelleri ve diğerleri gibi stratejileri kullanarak müşteri gruplarına güncelleştirme dağıtan güvenli dağıtım uygulamalarını benimseyin. Daha önemli müşterilere geçmeden önce daha az hassas veya erken benimseyen müşterilerle başlayın. Daha fazla bilgi için bkz . Güvenli dağıtım uygulamaları için öneriler. |
Bu yaklaşım, tüm müşterileri etkilemeden önce sorunları tanımlamaya yardımcı olur. |
Yapılandırmayı kod olarak işleyin. | Kapalı kalma süresini azaltabilir ve üretim değişiklikleri için tutarlı bir süreç benimseyebilirsiniz. Bu, değişiklikleri test etme ve yapılandırma ve kod güncelleştirmelerini aşamalı olarak kullanıma sunma gibi merkezi operasyonel sorumluluklara olanak tanır. |
Bir değişiklik yönetimi işlemi tanımlayın ve müşterilerin güncelleştirmeleri kimin tetiklediğini, sıklıklarını ve koşullarını bilmelerini sağlamak için sürüm güncelleştirme ilkesini iletin. Müşterilerin uygulama sürümlerini seçmesine izin veriliyorsa, eski sürümleri kullanımdan kaldırmaya yönelik açık yönergeler ayarlayın. Üretimde çalışan uygulama sürümlerinin sayısını en aza indirin. |
Eski sürümlerin korunması işletimsel verimsizliğine neden olur. Net beklentiler ve ilkeler belirleyerek ekibinize aşırı yük uygulamaktan kaçınırken müşterileriniz için gerekli denetimi sağlayın. |
Tek bir müşteri için uygulamaları özelleştirmekten kaçının. Farklı müşteri gereksinimlerini desteklemek için çözümünüzün çeşitli katmanlarını oluşturabilir veya belirli kullanıcılar için belirli işlevleri etkinleştirmek üzere özellik bayraklarını kullanabilirsiniz. |
Hangi özelliklerin hangi sürüme dağıtıldığı konusunda belirsizlikten kaçının ve bakım yükünüzü azaltın. |
Başarısız dağıtımlar için tetikleyici ölçütleri ve gerekli onaylar dahil olmak üzere bir geri alma planına sahip olun. | Geri alma planları, öngörülemeyen durumlarda bile dağıtım hatalarından kurtarabileceğinizden emin olmanıza yardımcı olur. |
Uygulamanızı düzenli olarak ve yazılım geliştirme sürecinin birden çok aşamasında test edin. "Shift-left" zihniyetini benimseyin ve yaşam döngüsünün başlarında hataları ve sapmaları yakalayın. | Kritik hataların müşterilerinizi etkilemesini önlemeye yardımcı olun. |
Ek kaynaklar
Çok kiracılılık, SaaS iş yüklerini tasarlamaya yönelik temel bir iş metodolojisidir. Bu makaleler DevOps uygulamalarını benimseme hakkında daha fazla bilgi sağlar:
- Çok kiracılı çözümlerin dağıtımı ve yapılandırması için mimari yaklaşımlar
- Çok kiracılı çözümü güncelleştirmeyle ilgili dikkat edilmesi gerekenler
- Çok kiracılı kontrol düzlemleri için dikkat edilmesi gerekenler
- Çok kiracılı çözümlerde kontrol düzlemleri için mimari yaklaşımlar
Sonraki adım
Azure'da SaaS çözümünü destekleyen işlemleri ve araçları uygulamak için olay yönetimiyle ilgili dikkat edilmesi gerekenler hakkında bilgi edinin.