Bulut Tasarımı DesenleriCloud Design Patterns

Bu tasarım desenleri, bulutta güvenilir, ölçeklenebilir, güvenli uygulamalar oluşturmak için kullanışlıdır.These design patterns are useful for building reliable, scalable, secure applications in the cloud.

Her desende, desenin çözüm getirdiği sorun, deseni uygularken dikkat edilecek noktalar açıklanır ve Microsoft Azure'u temel alan bir örnek yer alır.Each pattern describes the problem that the pattern addresses, considerations for applying the pattern, and an example based on Microsoft Azure. Desenlerin çoğu, desenin Azure'da nasıl uygulanacağını gösteren kod örnekleri veya kod parçacıkları içerir.Most of the patterns include code samples or snippets that show how to implement the pattern on Azure. Bununla birlikte, desenlerin çoğu ister Azure'da isterse diğer bulut platformlarında barındırılsın, her türlü dağıtılmış sisteme uygundur.However, most of the patterns are relevant to any distributed system, whether hosted on Azure or on other cloud platforms.

Bulut dağıtımındaki zorluklarChallenges in cloud development

Availability

KullanılabilirlikAvailability

Kullanılabilirlik, sistemin işlevsel ve çalışır durumda olduğu süreyle orantılıdır ve çoğunlukla çalışma zamanının yüzdesi olarak hesaplanır.Availability is the proportion of time that the system is functional and working, usually measured as a percentage of uptime. Sistem hataları, altyapı sorunları, kötü amaçlı saldırılar ve sistem yükü bunu etkileyebilir.It can be affected by system errors, infrastructure problems, malicious attacks, and system load. Bulut uygulamaları normalde kullanıcılara bir hizmet düzeyi anlaşması (SLA) sağlar, dolayısıyla uygulamaların en yüksek kullanılabilirlik için tasarlanması gerekir.Cloud applications typically provide users with a service level agreement (SLA), so applications must be designed to maximize availability.

Data Management

Veri YönetimiData Management

Veri yönetimi bulut uygulamaların kilit öğesidir ve kalite özniteliklerinin çoğunu etkiler.Data management is the key element of cloud applications, and influences most of the quality attributes. Veriler tipik olarak, performans, ölçeklenebilirlik veya kullanılabilirlik gibi nedenlerle farklı konumlarda ve birden çok sunucu üzerinde barındırılır ve bu durum bir dizi güçlüğe neden olur.Data is typically hosted in different locations and across multiple servers for reasons such as performance, scalability or availability, and this can present a range of challenges. Örneğin, veri tutarlılığının korunması gerekir ve verileri normalde farklı konumlar arasında eşitlenmelidir.For example, data consistency must be maintained, and data will typically need to be synchronized across different locations.

Design and Implementation

Tasarım ve UygulamaDesign and Implementation

İyi bir tasarım; bileşen tasarımı ve dağıtımında tutarlılık ve uyum, yönetim ve dağıtımı basitleştirecek bir sürdürülebilirlik ve bileşenlerle alt sistemlerin başka uygulamalarda ve başka senaryolarda kullanılabilmesini sağlayacak bir yeniden kullanılabilirlik gibi faktörleri kapsamalıdır.Good design encompasses factors such as consistency and coherence in component design and deployment, maintainability to simplify administration and development, and reusability to allow components and subsystems to be used in other applications and in other scenarios. Tasarım ve uygulama aşamasında verilen kararların, bulutta barındırılan uygulamalar ve hizmetlerin kalitesi ve toplam sahip olma maliyeti üzerinde muazzam bir etkisi vardır.Decisions made during the design and implementation phase have a huge impact on the quality and the total cost of ownership of cloud hosted applications and services.

Messaging

MesajlaşmaMessaging

Bulut uygulamalarının dağıtılmış doğası, bileşenlerle hizmetleri bağlayan bir ileti altyapısını gerektirir ve ideal olan, ölçeklenebilirliği en üst düzeye çıkarmak için bunun gevşek bir bağlantıya sahip olmasıdır.The distributed nature of cloud applications requires a messaging infrastructure that connects the components and services, ideally in a loosely coupled manner in order to maximize scalability. Zaman uyumsuz iletiler yaygın olarak kullanılır ve birçok avantaj sağlar, ama iletilerin sıralanması, zehirli ileti yönetimi ve benzersizlik denetimi gibi daha birçok güçlüğü de beraberinde getirir.Asynchronous messaging is widely used, and provides many benefits, but also brings challenges such as the ordering of messages, poison message management, idempotency, and more.

Management and Monitoring

Yönetim ve İzlemeManagement and Monitoring

Bulut uygulamaları, altyapının veya bazı durumlarda işletim sisteminin üzerinde tam denetim sahibi olmadığınız uzak bir veri merkezinde çalıştırılır.Cloud applications run in a remote datacenter where you do not have full control of the infrastructure or, in some cases, the operating system. Bu da yönetimin ve izlemenin şirket içi dağıtımdan daha zor olmasına neden olur.This can make management and monitoring more difficult than an on-premises deployment. Uygulamalar, yöneticilerin ve operatörlerin sistemi yönetmek ve izlemek için, ayrıca değişen iş gereksinimlerini ve özelleştirmeleri uygulamanın durdurulması veya yeniden dağıtılması gerekmeden desteklemek için kullanabilecekleri bazı çalışma zamanı bilgilerini ortaya koymalıdır.Applications must expose runtime information that administrators and operators can use to manage and monitor the system, as well as supporting changing business requirements and customization without requiring the application to be stopped or redeployed.

Performance and Scalability

Performans ve ÖlçeklenebilirlikPerformance and Scalability

Performans, sistemin belirli bir zaman aralığında herhangi bir eylemi yürütürken ortaya koyduğu yanıt hızının göstergesiyken, ölçeklenebilirlik sistemin yük artışlarını performansı etkilemeden işleyebilme becerisi veya kullanılabilir kaynakların artırılmaya hazır olma durumudur.Performance is an indication of the responsiveness of a system to execute any action within a given time interval, while scalability is ability of a system either to handle increases in load without impact on performance or for the available resources to be readily increased. Bulut uygulamaları normal olarak çeşitli iş yükleriyle ve etkinliklerde zirve değerleriyle karşılaşır.Cloud applications typically encounter variable workloads and peaks in activity. Bunları tahmin etmek, özellikle de çok kiracılı bir senaryoda neredeyse imkansızdır.Predicting these, especially in a multitenant scenario, is almost impossible. Bunun yerine uygulamaların ölçeği, zirve yapan talepleri karşılamak için belirli sınırlar içinde artırılabilmeli ve talep düştüğünde azaltılabilmelidir.Instead, applications should be able to scale out within limits to meet peaks in demand, and scale in when demand decreases. Ölçeklenebilirlik, yalnızca bilgi işlem örneklerini değil veri depolama ve ileti altyapısı gibi daha birçok öğeyi de ilgilendirir.Scalability concerns not just compute instances, but other elements such as data storage, messaging infrastructure, and more.

Resiliency

DayanıklılıkResiliency

Dayanıklılık, bir sistemin hataları incelikle işleyebilme ve bunlardan kurtulabilme becerisidir.Resiliency is the ability of a system to gracefully handle and recover from failures. Uygulamaların çoğunlukla çok kiracılı olduğu, paylaşılan platform hizmetleri kullandığı, kaynaklar ve bant genişliği için rekabet ettiği, İnternet üzerinden iletişim kurduğu ve ticari donanım üzerinde çalıştırıldığı bulut barındırmanın doğası gereği, hem geçici hem de daha kalıcı hatalarla karşılaşma olasılığı yüksektir.The nature of cloud hosting, where applications are often multitenant, use shared platform services, compete for resources and bandwidth, communicate over the Internet, and run on commodity hardware means there is an increased likelihood that both transient and more permanent faults will arise. Dayanıklılığı korumak için, hataların algılanması, hızla ve verimli bir şekilde kurtarılması gerekir.Detecting failures, and recovering quickly and efficiently, is necessary to maintain resiliency.

Security

GüvenlikSecurity

Güvenlik, bir sistemin hedeflenen kullanımın dışında kötü amaçlı veya yanlışlıkla yapılan eylemleri engelleme, bilgilerin açık çıkmasını veya kaybını önleme becerisidir.Security is the capability of a system to prevent malicious or accidental actions outside of the designed usage, and to prevent disclosure or loss of information. Bulut uygulamaları güvenilen şirket içi sınırların dışında İnternet'te ortaya konur, çoğunlukla genel kullanıla açık olur ve güvenilir olmayan kullanıcılara hizmet verebilir.Cloud applications are exposed on the Internet outside trusted on-premises boundaries, are often open to the public, and may serve untrusted users. Uygulamalar, kendilerini kötü amaçlı saldırılara karşı koruyan, erişimi yalnızca onaylı kullanıcılarla sınırlandıran ve hassas verileri koruyan bir yöntemle tasarlanmalı ve dağıtılmalıdır.Applications must be designed and deployed in a way that protects them from malicious attacks, restricts access to only approved users, and protects sensitive data.

Desen kataloğuCatalog of patterns

DesenPattern ÖzetSummary
BüyükelçiAmbassador Bir tüketici hizmeti veya uygulaması adına ağ istekleri gönderen yardımcı hizmetler oluşturur.Create helper services that send network requests on behalf of a consumer service or application.
Bozulma Önleyici KatmanAnti-Corruption Layer Modern uygulamayla eski sistem arasında bir cephe veya bağdaştırıcı katmanı oluşturun.Implement a façade or adapter layer between a modern application and a legacy system.
Ön Uçlar için Arka UçlarBackends for Frontends Belirli ön uç uygulamaları veya arabirimleri tarafından kullanılacak ayrı arka uç hizmetleri oluşturun.Create separate backend services to be consumed by specific frontend applications or interfaces.
Bölme PerdesiBulkhead Uygulamanın öğelerini havuzlarda yalıtın; biri başarısız olursa, diğerleri çalışmaya devam edecektir.Isolate elements of an application into pools so that if one fails, the others will continue to function.
Edilgen ÖnbellekCache-Aside Bir veri deposundaki verileri isteğe bağlı olarak bir önbelleğe yükleyinLoad data on demand into a cache from a data store
KoreografiChoreography Merkezi bir düzenleyiciye bağlı olmak yerine bir iş işleminin ne zaman ve nasıl işleneceğini her hizmetin belirlemesine izin verin.Let each service decide when and how a business operation is processed, instead of depending on a central orchestrator.
Devre KesiciCircuit Breaker Uzak hizmete veya kaynağa bağlanırken, düzeltmek için gereken sürenin değişiklik gösterebileceği hataları işleyin.Handle faults that might take a variable amount of time to fix when connecting to a remote service or resource.
Talep DenetimiClaim Check İleti veri yolunu aşırı yüklemekten kaçınmak için büyük iletileri talep denetimi ve yük olarak ikiye ayırın.Split a large message into a claim check and a payload to avoid overwhelming a message bus.
Telafi İşlemiCompensating Transaction Hep birlikte sonunda tutarlı bir işlemi tanımlayan bir dizi adımda gerçekleştirilen çalışmayı geri alın.Undo the work performed by a series of steps, which together define an eventually consistent operation.
Rakip TüketicilerCompeting Consumers Tüketicilerin aynı ileti kanalı üzerinden alınan iletileri eşzamanlı olarak işlemesine olanak tanıyın.Enable multiple concurrent consumers to process messages received on the same messaging channel.
İşlem Kaynağı BirleştirmeCompute Resource Consolidation Birden çok görevi veya işlemi tek bir hesaplama biriminde birleştirinConsolidate multiple tasks or operations into a single computational unit
CQRSCQRS Ayrı arabirimler kullanarak verileri okuyan işlemleri verileri güncelleştiren işlemlerden ayırın.Segregate operations that read data from operations that update data by using separate interfaces.
Olay Kaynağını BelirlemeEvent Sourcing Etki alanındaki veriler üzerinde gerçekleştirilen eylemleri açıklayan olayların tam serisini kaydetmek için bir yalnızca ekleme deposu kullanın.Use an append-only store to record the full series of events that describe actions taken on data in a domain.
Dış Yapılandırma DeposuExternal Configuration Store Yapılandırma bilgilerini uygulama dağıtım paketinden merkezi bir konuma taşıyın.Move configuration information out of the application deployment package to a centralized location.
Federal KimlikFederated Identity Kimlik doğrulama temsilcisi olarak bir dış kimlik sağlayıcısı kullanın.Delegate authentication to an external identity provider.
Ağ Geçidi DenetleyicisiGatekeeper İstemcilerle uygulama veya hizmet arasında aracı işlevi gören, istekleri doğrulayan ve temizleyen, aralarında isteklerle verilerin geçişini yapan ayrılmış bir konak örneği kullanarak uygulamaları ve hizmetleri koruyun.Protect applications and services by using a dedicated host instance that acts as a broker between clients and the application or service, validates and sanitizes requests, and passes requests and data between them.
Ağ Geçidi ToplamaGateway Aggregation Tek tek birden çok isteği tek bir istekte toplamak için ağ geçidi kullanın.Use a gateway to aggregate multiple individual requests into a single request.
Ağ Geçidi BoşaltmaGateway Offloading Paylaşılan veya özelleştirilmiş hizmet işlevlerini bir ağ geçidi ara sunucusuna boşaltın.Offload shared or specialized service functionality to a gateway proxy.
Ağ Geçidi YönlendirmeGateway Routing Tek bir uç nokta kullanarak istekleri birden çok hizmete yönlendirin.Route requests to multiple services using a single endpoint.
Sistem Durumu Uç Nokta İzlemeHealth Endpoint Monitoring Dış araçların düzenli aralıklarla ortaya çıkarılan uç noktalar üzerinden erişebildiği bir uygulamada işlev denetimleri yapın.Implement functional checks in an application that external tools can access through exposed endpoints at regular intervals.
Dizin TablosuIndex Table Sorguların sıklıkla başvurduğu veri kaynaklarındaki alanlar üzerinden dizin oluşturun.Create indexes over the fields in data stores that are frequently referenced by queries.
Öncü SeçimiLeader Election Bir örneği, diğer örneklerin yönetiminde sorumluluk üstlenen bir öncü olarak seçerek, dağıtılmış bir uygulamadaki işbirliği görev örnekleri koleksiyonunda gerçekleştirilen eylemleri koordine edin.Coordinate the actions performed by a collection of collaborating task instances in a distributed application by electing one instance as the leader that assumes responsibility for managing the other instances.
Gerçekleştirilmiş GörünümMaterialized View Verilerin gerekli sorgu işlemleri için ideal biçimlendirmeye sahip olmadığı durumlarda, bir veya birden çok veri deposundaki veriler üzerinden önceden doldurulmuş görünümler oluşturun.Generate prepopulated views over the data in one or more data stores when the data isn't ideally formatted for required query operations.
Kanallar ve FiltrelerPipes and Filters Karmaşık bir işlem gerçekleştiren bir görevi yeniden kullanılabilecek bir dizi ayrı öğeye bölün.Break down a task that performs complex processing into a series of separate elements that can be reused.
Öncelikli KuyrukPriority Queue Yüksek öncelikli isteklerin düşük öncelikli olanlardan daha önce alınması ve işlenmesini sağlamak için hizmete gönderilen isteklerin önceliklerini belirleyin.Prioritize requests sent to services so that requests with a higher priority are received and processed more quickly than those with a lower priority.
Yayımcı/AbonePublisher/Subscriber Bir uygulamanın, gönderenlerle alıcıları eşlemeden etkinlikleri ilgi duyan birden çok tüketiciye zaman uyumsuz bir şekilde duyurmasını sağlayın.Enable an application to announce events to multiple interested consumers asynchronously, without coupling the senders to the receivers.
Kuyruk Tabanlı Yük DengelemeQueue-Based Load Leveling Görevle hizmet arasında tampon görevi görecek ve aralıklı olarak ağırlaşan yükleri hafifletmek için çağrılacak bir kuyruk kullanın.Use a queue that acts as a buffer between a task and a service that it invokes in order to smooth intermittent heavy loads.
Yeniden DenemeRetry Hizmete veya ağa bağlanmayı denediğinde daha önce başarısız olan bir işlemi saydam bir şekilde yeniden denemesini sağlayarak, uygulamanın beklenen, geçici hataları işlemesine olanak tanıyın.Enable an application to handle anticipated, temporary failures when it tries to connect to a service or network resource by transparently retrying an operation that's previously failed.
Zamanlayıcı Aracısı GözetmeniScheduler Agent Supervisor Bir dizi dağıtılmış hizmet ve diğer uzak kaynaklar arasında bir dizi eylemi koordine edin.Coordinate a set of actions across a distributed set of services and other remote resources.
ParçalamaSharding Veri deposunu bir dizi yatay bölüme veya parçaya ayırın.Divide a data store into a set of horizontal partitions or shards.
SepetSidecar Yalıtım ve kapsülleme sağlamak için uygulamanın bileşenlerini ayrı işleme veya kapsayıcıya dağıtın.Deploy components of an application into a separate process or container to provide isolation and encapsulation.
Statik İçerik BarındırmaStatic Content Hosting Statik içeriği, bunları doğrudan istemciye teslim edebilecek bulut tabanlı bir depolama hizmetine dağıtın.Deploy static content to a cloud-based storage service that can deliver them directly to the client.
StranglerStrangler Belirli işlev parçalarını aşamalı olarak yeni uygulamalar ve hizmetlerle değiştirerek, eski sistemi artım bir şekilde geçirin.Incrementally migrate a legacy system by gradually replacing specific pieces of functionality with new applications and services.
AzaltmaThrottling Bir uygulama örneği, tek bir kiracı veya hizmetin tamamı tarafından kullanılan kaynakların tüketimini denetleyin.Control the consumption of resources used by an instance of an application, an individual tenant, or an entire service.
Vale AnahtarıValet Key İstemcilerin belirli bir kaynağa veya hizmete kısıtlı olarak doğrudan erişimini sağlayan bir belirteç veya anahtar kullanın.Use a token or key that provides clients with restricted direct access to a specific resource or service.