Aracılığıyla paylaş


Basitlik ve verimlilik için tasarlama önerileri

Bu Azure Well-Architected Framework Güvenilirliği denetim listesi önerisi için geçerlidir:

RE:01 İş yükünüzü iş hedefleriyle uyumlu olacak şekilde tasarlayın ve gereksiz karmaşıklık veya ek yükten kaçının. İstenen sonuçları veren tasarım kararları almak için pratik ve dengeli bir yaklaşım kullanın. Verimsizlikleri ve olası sorunları azaltmak için gerekliliklere tasarımınızı sağlayın.

Bu kılavuzda, iş yüklerinizi basit ve verimli tutmak için gereksiz karmaşıklığı ve ek yükü en aza indirmeye yönelik öneriler açıklanmaktadır. İş yükünüzün güvenilirliğini iyileştirmek için gerekli iş yükü görevlerini gerçekleştirmek için en iyi bileşenleri seçin. Geliştirme ve yönetim yüklerinizi hafifletmek için, platform tarafından sağlanan hizmetlerin sunduğu verimliliklerden yararlanın. Bu tasarım dayanıklı, yinelenebilir, ölçeklenebilir ve yönetilebilir bir iş yükü mimarisi oluşturmanıza yardımcı olur.

Tanımlar

Süre Tanım
İş Yükü Diğer görevlerden mantıksal olarak ayırabileceğiniz ayrı bir özellik veya bilgi işlem görevi.

Temel tasarım stratejileri

Güvenilirlik için tasarlamanın önemli bir tenet'i, işleri basit ve verimli tutmaktır. Gereksiz karmaşıklık veya fazla yük riskini azaltmak için iş yükü tasarımınızı iş gereksinimlerini karşılamaya odaklayın. Yalın, verimli ve güvenilir bir iş yükü oluşturmak için tasarımınız hakkında karar almanıza yardımcı olması için bu makaledeki önerileri göz önünde bulundurun. Farklı iş yüklerinin kullanılabilirlik, ölçeklenebilirlik, veri tutarlılığı ve olağanüstü durum kurtarma için farklı gereksinimleri olabilir.

Her tasarım kararını bir iş gereksinimiyle gerekçelendirmeniz gerekir. Bu tasarım ilkesi belirgin görünebilir, ancak iş yükü tasarımı için çok önemlidir. Uygulamanız milyonlarca kullanıcıyı mı yoksa birkaç bin kullanıcıyı mı destekliyor? Büyük trafik artışları mı yoksa sabit bir iş yükü mü var? Hangi uygulama kesintisi düzeyi kabul edilebilir? İş gereksinimleri bu tasarım konularını yönlendirmektedir.

Denge: Karmaşık bir çözüm daha fazla özellik ve esneklik sunabilir, ancak daha fazla koordinasyon, iletişim ve bileşen yönetimi gerektirdiğinden iş yükünün güvenilirliğini etkileyebilir. Alternatif olarak, daha basit bir çözüm kullanıcı beklentilerini tam olarak karşılamayabilir veya iş yükü geliştikçe ölçeklenebilirlik ve genişletilebilirlik üzerinde olumsuz bir etkiye sahip olabilir.

İşbirliğine dayalı tasarım alıştırmaları

Proje katılımcılarıyla şu işlemleri yapmak için çalışın:

  • İş yükünüzün kullanıcı akışlarına ve sistem akışlarına bir kritiklik düzeyi tanımlayın ve atayın. Gerekli bileşenleri ve gerekli dayanıklılık düzeyine ulaşmak için en iyi yaklaşımı belirlemenize yardımcı olması için tasarımınızı kritik akışlara odaklar.

  • İşlevsel ve işlevsel olmayan gereksinimleri tanımlayın. Bir uygulamanın görev gerçekleştirip gerçekleştirmediğini belirlemek için işlevsel gereksinimleri göz önünde bulundurun. Uygulamanın bir görevi ne kadar iyi gerçekleştirdiğini belirlemek için işlev dışı gereksinimleri göz önünde bulundurun. Ölçeklenebilirlik, kullanılabilirlik ve gecikme süresi gibi işlevsel olmayan gereksinimleri anladığınızdan emin olun. Bu gereksinimler tasarım kararlarını ve teknoloji seçimlerini etkiler.

  • İş yüklerini bileşenler halinde ayrıştırma. Tasarımınızda basitlik, verimlilik ve güvenilirlik önceliklerini belirleyin. Akışlarınızı desteklemek için ihtiyacınız olan bileşenleri belirleyin. Bazı bileşenler birden çok akışı destekler. Bir bileşenin kavramsal olarak hangi sınamayı ele alacağınızı belirleyin ve tam işlevsellik sağlamaya devam ederken genel tasarımı basitleştirmek için bileşeni tek tek akışlardan kaldırmayı göz önünde bulundurun. Daha fazla bilgi için bkz. Hata modu analizi gerçekleştirme önerileri.

  • Tek hata noktalarını ve olası riskleri belirlemek için hata modu analizini kullanın. Bölgedeki tüm kullanılabilirlik alanlarını etkileyen büyük bir doğal afetle karşılaşan bir coğrafi bölge gibi olası olmayan durumları dikkate almanız gerekip gerekmediğini göz önünde bulundurun. Pahalıdır ve bu yaygın olmayan riskleri azaltmak için önemli dengeler içerir. İşletmenizin risk toleranslarını net bir şekilde anlayın. Daha fazla bilgi için bkz. Hata modu analizi gerçekleştirme önerileri.

  • İş yükünüzün mimarisini bilgilendirmek için akışlarınız için kullanılabilirlik ve kurtarma hedefleri tanımlayın. İş ölçümleri hizmet düzeyi hedeflerini (SLO'lar), hizmet düzeyi sözleşmelerini (SLA'lar), ortalama kurtarma süresini (MTTR), hata arasındaki ortalama süreyi (MTBF), kurtarma süresi hedeflerini (GPO'lar) ve kurtarma noktası hedeflerini (GPO'lar) içerir. Bu ölçümler için hedef değerleri tanımlayın. Bu alıştırma, her ekibin hedeflerinin iş hedeflerine uygun ve gerçekçi olmasını sağlamak için teknoloji ve iş ekipleri arasında uzlaşma ve karşılıklı anlayış gerektirebilir. Daha fazla bilgi için bkz . Güvenilirlik hedeflerini tanımlama önerileri.

Ek tasarım önerileri

Paydaş katılımı olmadan aşağıdaki önerileri gerçekleştirebilirsiniz:

  • Tasarımınızda kolaylık ve netlik için çabalayın. Bileşenleriniz ve hizmetleriniz için uygun soyutlama ve ayrıntı düzeyini kullanın. Çözümünüzün fazla lisanslanmasından veya yetersiz mühendislikten kaçının. Örneğin, kodunuzu birden çok küçük işleve bölerseniz anlamak, test etmek ve bakımını yapmak zordur.

  • Hataları düzeltmek, yeni özellikler veya teknolojiler uygulamak veya mevcut sistemleri daha ölçeklenebilir ve dayanıklı hale getirmek için tüm başarılı uygulamaların zaman içinde değişmesini sağlayın.

  • Mümkün olduğunda hizmet olarak altyapı (IaaS) yerine hizmet olarak platform (PaaS) seçeneklerini kullanın. IaaS, parçalar içeren bir kutu gibidir. Herhangi bir şey oluşturabilirsiniz, ancak kendiniz birleştirmeniz gerekir. PaaS seçeneklerini yapılandırmak ve yönetmek daha kolaydır. Sanal makineleri (VM) veya sanal ağları ayarlamanız gerekmez. Ayrıca düzeltme ekleri ve güncelleştirmeleri yükleme gibi bakım görevlerini de gerçekleştirmeniz gerekmez.

  • İleti üreticisini tüketiciden ayrıştırmak için zaman uyumsuz mesajlaşma kullanın.

  • Altyapıyı etki alanı mantığından uzakta soyutlayın. Etki alanı mantığının mesajlaşma veya kalıcılık gibi altyapıyla ilgili işlevleri engellemediğinden emin olun.

  • Geniş kapsamlı kritik konuları ayrı bir hizmete boşaltın. Farklı işlevlerde kodu yineleme gereksinimini en aza indirin, hizmetleri farklı bileşenler tarafından kolayca kullanabilecek iyi tanımlanmış arabirimlerle yeniden kullanmak tercih edin. Örneğin, birkaç hizmetin isteklerin kimliğini doğrulaması gerekiyorsa, bu işlevi kendi hizmetine taşıyabilirsiniz. Ardından kimlik doğrulama hizmetini geliştirebilirsiniz. Örneğin, bunu kullanan hizmetlerden herhangi birine dokunmadan yeni bir kimlik doğrulama akışı ekleyebilirsiniz.

  • Yaygın desenlerin ve uygulamaların ihtiyaçlarınıza uygunluğunu değerlendirin . Bağlamınız veya gereksinimleriniz için en uygun olmayabilecek eğilimleri veya önerileri takip etmekten kaçının. Örneğin, mikro hizmetler karmaşıklık, ek yük ve bağımlılık sorunlarına neden olabileceğinden her uygulama için en iyi seçenek değildir.

Yeterli kod geliştirme

Basitlik, verimlilik ve güvenilirlik ilkeleri geliştirme uygulamalarınız için de geçerlidir. Gevşek bir şekilde bağlanmış, bileşenleştirilmiş bir iş yükünde, bir bileşenin sağladığı işlevselliği belirleyin. Bu işlevden yararlanmak için akışlarınızı geliştirin. Geliştirme uygulamalarınız için şu önerileri göz önünde bulundurun:

  • İş gereksinimlerinizi karşılarken platform özelliklerini kullanın. Örneğin, geliştirme ve yönetimi boşaltmak için bulut sağlayıcınız tarafından sunulan düşük kodlu, kodsuz veya sunucusuz çözümleri kullanın.

  • Kitaplıkları ve çerçeveleri kullanın.

  • Geliştirme uygulaması olarak çift programlama veya ayrılmış kod gözden geçirme oturumlarını tanıtın.

  • Ölü kodu tanımlamak için bir yaklaşım uygulayın. Otomatikleştirilmiş testlerinizin kapsamaz olduğu koda şüpheyle bakın.

Verileriniz için en iyi veri depoyu kullanma

Geçmişte birçok kuruluş tüm verilerini büyük ilişkisel SQL veritabanlarında depolamıştı. İlişkisel veritabanları ilişkisel veri işlemleri için atomik, tutarlı, yalıtılmış ve dayanıklı (ACID) garantiler sağlar. Ancak bu veritabanlarının dezavantajları vardır:

  • Sorgular pahalı birleştirmeler gerektirebilir.

  • Verileri normalleştirmeniz ve yazmada şema için yeniden yapılandırmanız gerekir.

  • Kilit çekişmesi performansı etkileyebilir.

İlişkisel veritabanlarının alternatifleri

Büyük bir çözümde, tek bir veri deposu teknolojisi büyük olasılıkla tüm ihtiyaçlarınızı karşılamaz. İlişkisel veritabanlarının alternatifleri şunlardır:

  • Anahtar-değer depoları

  • Belge veritabanları

  • Arama motoru veritabanları

  • Zaman serisi veritabanları

  • Sütun ailesi veritabanları

  • Graf veritabanları

Her seçeneğin artıları ve eksileri vardır. Farklı veri türleri, farklı veri deposu türleri için daha uygundur. Verilerinize ve bunları nasıl kullandığınıza en uygun depolama teknolojisini seçin.

Örneğin, ürün kataloğunu esnek bir şemayı destekleyen Azure Cosmos DB gibi bir belge veritabanında depolayabilirsiniz. Her ürün açıklaması, bağımsız bir belgedir. Kataloğun tamamı üzerindeki sorgular için kataloğu dizine alabilir ve dizini Azure Bilişsel Arama depolayabilirsiniz. Veriler ACID garantisi gerektirdiği için ürün envanteri bir SQL veritabanına gidebilir.

Öneriler

  • Diğer veri depolarını göz önünde bulundurun. İlişkisel veritabanları her zaman uygun değildir. Daha fazla bilgi için bkz. Veri deposu modellerini anlama.

  • Verilerin yalnızca kalıcı uygulama verilerinden fazlasını içerdiğini unutmayın. Bunlara ek olarak uygulama günlükleri, olaylar, iletiler ve önbellekler de içerir.

  • Çok teknolojili kalıcılığı veya veri deposu teknolojilerinin birleşimini kullanan çözümleri benimseyin.

  • Sahip olduğunuz veri türünü göz önünde bulundurun. Örneğin, mağaza:

    • SQL veritabanındaki işlem verileri.

    • Belge veritabanındaki JSON belgeleri.

    • Zaman serisi veritabanında telemetri.

    • uygulama günlükleri Azure Bilişsel Arama.

    • Azure Blob Depolama bloblar.

  • Tutarlılık yerine kullanılabilirliği önceliklendirme. CAP teoremi, dağıtılmış bir sistemde kullanılabilirlik ve tutarlılık arasında denge oluşturmanız gerekdiğini gösterir. CAP teoreminin diğer bileşeni olan ağ bölümlerinden tamamen kaçınamazsınız. Ancak daha yüksek kullanılabilirlik elde etmek için nihai tutarlılık modelini benimseyebilirsiniz.

  • Geliştirme ekibinizin beceri kümesini göz önünde bulundurun. Çok yönlü kalıcılık kullanmanın avantajları vardır, ancak aşırıya kaçmak mümkündür. Yeni bir veri depolama teknolojisini benimsemek için yeni beceri kümeleri gerektirir. Teknolojiden en iyi şekilde yararlanmak için geliştirme ekibinizin şunları yapması gerekir:

    • Sorguları iyileştirme.

    • Performansı ayarlayın.

    • Uygun kullanım desenleriyle çalışma.

Bir depolama teknolojisi seçerken şu faktörleri göz önünde bulundurun:

  • Telafi işlemleri kullanın. Çok teknolojili kalıcılık sayesinde tek bir işlem birden çok depoya veri yazabilir. Bir hata varsa, tamamlanan adımları geri almak için telafi işlemlerini kullanın.

  • Etki alanı odaklı bir tasarım kavramı olan sınırlanmış bağlamları göz önünde bulundurun. Sınırlanmış bağlam, etki alanı modelinin etrafındaki açık bir sınırdır. Sınırlanmış bağlam, modelin etki alanının hangi bölümlerine uygulandığını tanımlar. Bir sınırlanmış bağlam, ideal olarak iş etki alanının alt etki alanlarından biriyle eşlenir. Sisteminizdeki sınırlanmış bağlamlar için çok yönlü kalıcılığı göz önünde bulundurun. Örneğin, ürünler ürün kataloğu alt etki alanında ve ürün envanteri alt etki alanında görünebilir. Ancak büyük olasılıkla, bu iki alt etki alanı ürünleri depolamak, güncelleştirmek ve sorgulamak için farklı gereksinimlere sahiptir.

Azure kolaylaştırma

Azure aşağıdaki hizmetleri sunar:

  • Azure İşlevleri, en az kodla düzenleme oluşturmak için kullanabileceğiniz sunucusuz bir işlem hizmetidir.

  • Azure Logic Apps , GUI ile düzenleme oluşturmak veya yapılandırma dosyasını düzenlemek için kullanabileceğiniz sunucusuz bir iş akışı tümleştirme platformudur.

  • Azure Event Grid, MQTT ve HTTP protokollerini kullanan esnek ileti tüketim desenleri sunan yüksek oranda ölçeklenebilir, tam olarak yönetilen bir yayımla-abone ol ileti dağıtım hizmetidir. Event Grid ile cihaz verileriyle veri işlem hatları oluşturabilir, olay odaklı sunucusuz mimariler oluşturabilir ve uygulamaları tümleştirebilirsiniz.

Daha fazla bilgi için bkz.

Örnek

Bileşenleri ve bunların özelliklerini gereksinimlere göre belirleyen örnek bir iş yükü için bkz . Reliable Web App deseni.

Güvenilirlik denetim listesi

Önerilerin tamamına bakın.