Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Yalıtım ve kapsülleme sağlamak için uygulama bileşenlerini ana uygulamadan ayrı bir işleme veya kapsayıcıya dağıtın. Bu düzen, farklı bileşenlerden ve teknolojilerden uygulama oluşturmanıza olanak tanır.
Tıpkı bir motosiklet sepeti gibi, bu bileşenler bir ana uygulamaya bağlanır ve bu nedenle yaşam döngüsünü birlikte paylaşırlar, böylece bunları birlikte oluşturur ve devreden çıkarırsınız. Bu desen Sidekick deseni olarak da bilinir ve uygulama ayrıştırma işlemini destekler.
Bağlam ve sorun
Uygulamalar ve hizmetler genellikle izleme, günlüğe kaydetme, yapılandırma ve ağ hizmetleri gibi ilgili işlevleri gerektirir. Bu çevre birimi görevlerini ayrı bileşenler veya hizmetler olarak uygulayabilirsiniz.
Sıkı bir şekilde tümleştirilmiş bileşenler aynı işlemde çalışır ve paylaşılan kaynakları verimli bir şekilde kullanır, ancak yalıtımları eksiktir. Bir bileşendeki kesinti uygulamanın tamamını etkileyebilir. Ayrıca üst uygulamanın dilinde uygulanması gerekir ve bu da bağımlılık oluşturur.
Uygulamayı hizmetlere ayırırsanız, farklı diller ve teknolojiler kullanarak her hizmeti oluşturabilirsiniz. Bu yaklaşım daha fazla esneklik sağlar. Ancak her bileşenin kendi bağımlılıkları vardır ve platforma ve paylaşılan kaynaklara erişmek için dile özgü kitaplıklar gerekir. Bu özellikleri ayrı hizmetler olarak dağıttığınızda gecikme süresi eklersiniz. Dile özgü kod ve bağımlılıklar, barındırma ve dağıtım için karmaşıklığı da artırır.
Çözüm
Birincil uygulamanın yanı sıra ayrı bir işlem veya kapsayıcıda uyumlu bir görev kümesi dağıtın. Bu yaklaşım, farklı dillerde platform hizmetleri için tutarlı bir arabirim sağlar.
Yan araç hizmeti, uygulamaya parçası olmadan bağlanır ve onunla birlikte dağıtılır. Her bir uygulama örneği, yaşam döngüsünü paylaşan kendi sidecar örneğini alır.
Sidecar deseni aşağıdaki avantajları sağlar:
Dil bağımsızlığı: Sidecar, birincil uygulamanın çalışma zamanı ortamından ve programlama dilinden bağımsız olarak çalışır. Farklı dillerde yazılmış uygulamalarda tek bir sidecar uygulaması kullanabilirsiniz.
Paylaşılan kaynak erişimi: Sidecar, birincil uygulamayla aynı kaynaklara erişebilir. Örneğin sidecar, her iki bileşenin kullandığı sistem kaynaklarını izleyebilir.
Düşük gecikme: Sidecar'ın birincil uygulamaya yakınlığı iletişimdeki gecikmeyi en aza indirir.
Gelişmiş genişletilebilirlik: Aynı konakta veya altcontainer üzerinde ayrı bir işlem olarak sepet ekleyerek yerel genişletilebilirlik mekanizmaları olmayan uygulamaları genişletebilirsiniz.
Bu desenin en yaygın uygulaması, yan araba kapsayıcıları veya yan destek kapsayıcıları olarak da adlandırılan kapsayıcıları kullanır.
Sorunlar ve dikkat edilmesi gerekenler
Bu deseni uygularken aşağıdaki noktaları göz önünde bulundurun:
Hizmetleri, işlemleri veya kapsayıcıları dağıtmak için dağıtım ve paketleme biçimini göz önünde bulundurun. Kapsayıcılar, Sidecar deseninde iyi çalışır.
Sidecar hizmet tasarlarken, işlemler arası iletişim mekanizmasını dikkatlice seçin. Performans gereksinimleri bu yaklaşımı kullanışsız hale getirmediği sürece dilden bağımsız veya çerçeveden bağımsız teknolojiler kullanın.
Bir sidecar'a işlevsellik eklemeden önce, ayrı bir hizmet ya da geleneksel bir daemon olarak daha iyi çalışıp çalışmadığını değerlendirin.
İşlevselliği bir kitaplık olarak mı yoksa geleneksel bir uzantı mekanizması aracılığıyla mı uygulayıp uygulamaymayı göz önünde bulundurun. Dile özgü kitaplıklar daha derin tümleştirme ve daha az ağ yükü sağlar.
Bu desen ne zaman kullanılır?
Bu düzeni aşağıdaki durumlarda kullanın:
Birincil uygulamanız farklı diller ve çerçeveler kullanıyor. Sepetler, farklı uygulamaların dillerinden veya çerçevelerinden bağımsız olarak kullanabileceği tutarlı bir arabirim sağlar.
Ayrı bir ekip veya dış iş ortağı bir bileşenin sahibidir.
Uygulamayla aynı konakta bir bileşen veya özellik dağıtmanız gerekir.
Ana uygulamanızın genel yaşam döngüsünü paylaşan ancak bağımsız olarak güncelleştirebileceğiniz bir hizmete ihtiyacınız vardır.
Belirli bir kaynak veya bileşen için kaynak sınırları üzerinde ayrıntılı denetime ihtiyacınız vardır. Örneğin, ana uygulamadan bağımsız olarak bellek kullanımını kısıtlamak ve yönetmek için bir bileşeni sepet olarak dağıtabilirsiniz.
Bu düzen aşağıdaki durumlarda uygun olmayabilir:
İşlemler arası iletişimi iyileştirmeniz gerekir. Sidecar birimleri, özellikle gecikme gibi ek yükler ekler, bu da bileşenler arasında sık iletişime sahip uygulamalar için onları uygunsuz hale getirir.
Uygulamanız küçük. Her bir örnek için bir sidecar konfigüre etmenin kaynak maliyeti yalıtım avantajlarından daha fazla olabilir.
Bileşeni bağımsız olarak ölçeklendirmeniz gerekir. Bileşeni ana uygulamadan farklı ölçeklendirmeniz gerekiyorsa, bunun yerine ayrı bir hizmet olarak dağıtın.
Platformunuz eşdeğer işlevler sağlar. Uygulama platformunuz gerekli yetenekleri zaten doğal olarak sağlıyorsa, yan arabalar gereksiz karmaşıklık ekler.
İş yükü tasarımı
Azure Well-Architected Framework sütunlarında ele alınan hedef ve ilkeleri karşılamak için bir iş yükünün tasarımında Sidecar deseninin nasıl kullanılacağını değerlendirin. Aşağıdaki tabloda, bu desenin her bir sütunun hedeflerini nasıl desteklediği hakkında rehberlik sağlanmaktadır.
| Ana Direk | Bu desen sütun hedeflerini nasıl destekler? |
|---|---|
| Güvenlik tasarımı kararları, iş yükünüzün verilerinin ve sistemlerinin gizliliğini, bütünlüğünü ve kullanılabilirliğini sağlamaya yardımcı olur. | Bu görevleri kapsülleyip ayrı işlemlere dağıttığınızda, saldırı yüzeyini yalnızca gerekli koda indirgersiniz. Bu özellikler için yerel destek olmayan uygulama bileşenlerine çapraz kesme güvenlik denetimleri eklemek için sepetleri de kullanabilirsiniz. - SE:04 Segmentlere Ayırma - SE:07 Şifrelemesi |
| Operasyonel Mükemmellik, standartlaştırılmış süreçler ve ekip uyumu aracılığıyla iş yükü kalitesinin sunulmasına yardımcı olur. | Bu düzen, uygulama kodunuz için bağımlılık eklemeden gözlemlenebilirlik araçlarını esnek bir şekilde tümleştirmenize olanak tanır. Yan aracı uygulamadan bağımsız olarak güncelleyebilir ve bakımını yapabilirsiniz. - OE:04 Araçlar ve işlemler - OE:07 İzleme sistemi |
| Performans Verimliliği , ölçeklendirme, veri ve kod iyileştirmeleri aracılığıyla iş yükünüzün talepleri verimli bir şekilde karşılamasını sağlar. | Bu düzen, birden çok uygulama örneğinde ölçeklendirilen sepetlerde çapraz kesme görevlerini merkezileştirmenize olanak tanır. Her uygulama örneği için yinelenen işlevler dağıtmanız gerekmez. - PE:07 Kod ve altyapı |
Bu model bir sütun içinde dengeleri ortaya çıkartıyorsa, bunları diğer sütunların hedeflerine karşı değerlendirin.
Example
Sidecar desenini birçok senaryoya uygulayabilirsiniz. Aşağıdaki örnekleri göz önünde bulundurun:
Bağımlılık soyutlaması: Tutarlı bir API aracılığıyla paylaşılan bağımlılık özelliklerine erişim sağlamak için her uygulamanın yanı sıra özel bir hizmet dağıtın. Bu yaklaşım, dile özgü istemci kitaplıklarını, günlüğe kaydetme, yapılandırma, hizmet bulma, durum yönetimi ve sağlık kontrolleri gibi konuları yöneten bir yan araç ile değiştirir.
Dağıtılmış Uygulama Çalışma Zamanı (Dapr) sidecar bu kullanım örneğini örnek olarak gösterir.
Hizmet ağı veri düzlemi: Trafik yönlendirme, yeniden denemeler, karşılıklı Aktarım Katmanı Güvenliği (mTLS), ilke uygulama ve telemetri gibi ağ ile ilgili çapraz kesen sorunları ele almak için her hizmet örneğinin yanında bir yan araba vekil sunucu dağıtın.
Istio gibi servis mesh’leri, uygulama kodunda değişiklik gerektirmeden bu özellikleri uygulamak için sidecar proxy’lerini kullanır.
Büyükelçi yan uygulama:Büyükelçi hizmetini bir yan uygulama olarak konumlandırın. Uygulama, istekleri günlüğe kaydetme, yönlendirme, devre kesme ve diğer bağlantı özelliklerini işleyen çağrıları büyükelçi aracılığıyla yönlendirir.
Protokol bağdaştırıcıları: Uyumsuz protokoller veya veri biçimleri arasında çeviri yapmak veya mesajlaşma sistemleri arasında köprü oluşturmak için bir yan araba dağıtın. Bu yaklaşım, uygulamanın daha basit veya eski arabirimler kullanmasına olanak tanır.
Telemetri zenginleştirmesi: Telemetri verilerini dış izleme sistemlerine iletmeden önce, ölçümler, günlükler ve izler gibi verileri önceden işlemek veya zenginleştirmek için bir sidecar dağıtın. OpenTelemetry Collector gibi bileşenler, telemetri verilerini uygulamadan ayrı olarak normalleştirmek, zenginleştirmek veya yönlendirmek için sepet olarak çalıştırılabilir.
Sonraki Adımlar
Dapr kullanan mikro hizmet API'leri: Azure Container Apps'in basit, taşınabilir, dayanıklı ve güvenli mikro hizmetler oluşturmanıza yardımcı olması için Dapr sepetlerini nasıl kullandığını öğrenin.
Azure Kubernetes Service'te (AKS) Istio tabanlı hizmet ağı özelliği için yerel sepet modu: AKS için Istio hizmet ağı özelliğinin dağıtılmış mimari zorluklarına çözüm getirmek için Sepet desenini nasıl kullandığını öğrenin.