Genel Teknoloji ve İnovasyon

Ölçeklenebilir Mesajlaşmaya Giriş: Pub/Sub

14-PubSubMesajlasma

Yayıncı-Abone Modeli (Pub/Sub Pattern)

Yayıncı/Abone (Pub/Sub Pattern) Modeli Nedir? 

Monolitik uygulamaların yerini mikroservis mimarisiyle geliştirilmiş uygulamalara bırakması, internet üzerinde yeni iletişim modellerini de beraberinde getirdi. Bir mimari tasarım deseni olan yayıncı/abone modeli de (pub/sub pattern) ölçeklenebilir mesajlaşmayı ve bilgi transferini olanaklı kılıyor. Bu yazımızda pub/sub pattern kavramının ayrıntılarına, avantajlarına ve kullanım senaryolarına odaklanacağız. 

Evrensel internetin öncüsü sayılan ARPANET, paket dağıtma yöntemiyle tek bir iletişim hattı üzerinden birden çok makineyle haberleşilebilmesinin önünü açtı. O günden bu yana internet, uzak konumlarda bulunan cihazların ve kişilerin haberleşmesi ve bilgi transferi yapabilmesine aracı oldu. Bugün internet hâlâ aynı amaçla kullanılıyor, fakat ölçekler değişti, değişiyor.

Milyarlarca insanın internete erişmesi yazılım geliştirme süreçlerini değiştirirken, yeni iletişim yöntemlerini de beraberinde getiriyor. Monolitik uygulamalar yerini mikroservis mimarisiyle geliştirilmiş uygulamalara bırakıyor, veri tabanları bu değişimle bulut platformlara taşınıyor ve internetin her iki ucunda konumlanan kişi ve cihazları birbirine bağlayan iletişim desenleri de bu değişime paralel olarak yenileniyor. Yayıncı/abone modeli (pub/sub pattern), ölçeklenebilir mesajlaşmanın ve internet iletişiminin merkezindeki modellerden biri olarak öne çıkıyor. 

Google Cloud’un Türkiye’deki en eski ve tek Premier iş ortağı Global IT olarak bu yazımızda yayıncı/abone modelini anlatmaya çalışacağız. Pub/sub pattern’ın tanımına, bu desenin kullanım alanlarına, nasıl çalıştığına odaklanacağız.

Pub/sub pattern nedir? 

Yayıncı/abone veya pub/sub mesajlaşma kalıbı, mesaj gönderen (yayıncılar) ve alıcılar (aboneler) arasında, abone oldukları konularda bağlantıya ve ölçeklemeye izin veren mesaj alışverişi için çerçeve sağlayan bir tasarım kalıbıdır. Mesajlar, kullanılabilir olduklarında bir yayıncıdan abonelere gönderilir. Yayıncılar, kanallara (konulara) mesajlar (olaylar) yayınlar. Aboneler de ilgilendikleri konular için mesaj almak istediklerinde, kayıt olabilirler. 

Bu, internet iletişiminin temelindeki standart istek/yanıt modelinden farklıdır. Pub/sub, gerçek zamanlı veri akışı için en uygun çerçeveyi sunar ve dinamik ağların internet ölçeğinde oluşturulmasını mümkün kılar. Bilgi sistemlerinin ölçeğini genişletme ihtiyacından ortaya çıkan pub/sub deseni, mobil ve nesnelerin interneti cihazlarının büyük ölçüde benimsenmesi ve web tabanlı uygulamaların genişlemesiyle, sistemlerin dinamik olarak ölçeklenme ihtiyacına yanıt veren bir mimari yaklaşım sunar. 

Bir telefon santralini düşünelim. 100 telefon abonesi varsa, telefon santralinde 100 giriş hattına ihtiyaç duyulur ve abone sayısı arttıkça, santralin her yeni abone için yeni bir giriş hattı oluşturması gerekir. Statik ölçekleme olarak adlandırılabilecek bu durum, bugünün koşullarıyla pek olanaklı görünmüyor.

Buna karşılık bulutta çalışan bir telefon sistemi, sunucuları ve giriş hatlarını trafiğe göre tahsis edebilme yeteneğine sahip oluyor. Trafikteki değişikliğin üstesinden gelmek için sunucu kaynaklarını artırabilen veya azaltabilen bu sistem, dinamik ölçekleme yoluyla kaynakları statik ölçeklemeye kıyasla daha verimli kullanabiliyor.

Pub/sub pattern nasıl çalışır? 

Pub/sub mesajlaşma modelinde, yayıncılar tüm abonelere doğrudan mesaj göndermez; bunun yerine mesajlar, aracılar üzerinden iletilir. Yayıncılar, abonelerin kim olduğunu veya hangi konulara abone olduklarını bilmez. Bu, yayıncı ve abone işlemlerinin birbirinden bağımsız olarak çalışabildiği anlamına gelir. Gevşek bağlantı (loose coupling) olarak bilinen bu model, geleneksel mesajlaşma modellerindeki hizmet bağımlılıklarını ortadan kaldırmaya yarar. 

Yayıncı/abone modeli, aşırı yüklenmeye ve gereksiz maliyetlere neden olmadan, son derece dinamik ağların büyük ölçekte oluşturulmasına olanak tanır. Olay mesajlaşması, anlık mesajlaşma veya canlı veri akışı gibi kullanım alanlarından tercih edilen pub/sub modeli, iş yükü dengeleme ve zaman uyumsuz iş akışları için de kullanılır. 

Basit bir bilgi sistemi, genel olarak şu modeli takip eder: Girdi – işleme – çıktı. Bu akışta, sistem eşzamanlı istekleri işlemek için birden fazla giriş ve çıkış modülüne ihtiyaç duyar. Öte yandan mesajların giriş bölümünden ilgili çıkış modülüne yönlendirilmesi de bir sorun teşkil eder.

Bu yönlendirme problemlerini ortadan kaldırmak için bir adresleme mekanizmasına ihtiyaç duyulur. İnternet ölçeğinde, sistemlerin binlerce, hatta on binlerce eşzamanlı iletişim isteğini işlemek durumunda kaldığı düşünüldüğünde, sistemler aşağıdaki problemleri çözmek zorunda kalır: 

● Yüksek hacim ve coğrafi yayılım nedeniyle yükün birden fazla işlem modülü arasında dağıtılması

● Modüller arasında önceden tanımlanmış adreslemenin yerine getirilmesi

Pub/sub modeli, bu problemleri, insanların ve internete bağlı nesnelerin mesajlarını gönderebileceği ve alabileceği bir veri hattı kullanarak çözer. Sosyal ağları düşünelim. Facebook’ta ya da Twitter’da takipçilerinize bir paylaşım ulaştırmak istediğinizde, her birine ayrı ayrı gönderim yapmanız gerekmez.

Bir yayıncı olarak mesajınızı tek bir kanaldan iletirsiniz ve size abone olanlar, mesajınızı görür. Kaç takipçiniz olduğunu, bu takipçilerle iletişim kurulması için nasıl bir yol izlendiğini bilmeniz gerekmez. Zira pub/sub modeli bunu sizin yerinize yapar. 

Yayıncı/abone modelinin avantajları nelerdir? 

Bu sorunun yanıtının bir bölümünü yukarıda, ölçeklenebilirlikten söz ettiğimiz alanlarda verdiğimizi düşünüyoruz. Elbette pub/sub pattern, bunun ötesinde avantajlar da sunuyor. Bu avantajları aşağıda maddeliyoruz. 

Yayıncılar için daha az sorumluluk: Mesajlarını kitlelere ulaştırmak isteyen yayıncılar, yayınlama modülleri oluştururken abonelikleri düşünmek durumunda değildir. Yayıncı, abonelerin sayısı, kimliği veya mesaj türleri hakkında hiçbir bilgisi olmadan da, yalnızca API aracılığıyla doğru veri çıktılarını sunmaktan sorumludur. Bir değişiklik yaşandığında, model bu değişikliği ve yeni değeri ilgili abonelere ulaştırır. 

Aboneler için daha az yük: Pub/sub pattern, yayını/abone ilişkisinde iki tarafında sorumluluklarını API’a devreder. Yayıncılar teknik ayrıntıları düşünmek durumunda kalmadıkları gibi, abonelerin de yayıncıların iç işleyişlerine dair düşünmelerine gerek kalmaz. Aboneler, yalnızca yayıncının herkese açık API’ını kullanarak iletişim kurabilir. 

Gerçek zamanlı iletişim: Pub/sub, “push” tabanlı dağıtım aracılığıyla mesajları aboneleri anında ileterek, büyük ölçüde gerçek zamanlı iletişim gereksinimleri için ideal seçeneği sunar. 

Artan ölçeklenebilirlik ve güvenilirlik: Pub/sub mesajlaşma modeli, modern internetin temelini oluşturur ve esnek bir çözümdür. Önceden belirli sayıda yayıncı veya abone tanımlamak gerekmez. Kullanıma bağlı olarak yayıncılar ve aboneler gerekli bir konuya eklenebilir. Örneğin bir konuyu kaç kişinin takip ettiği pub/sub deseninde önemsizdir, zira bu model, tüm alıcılara eşzamanlı gönderimi vaat eder.

Geliştirme kolaylığı: Pub/sub, programlama diline, protokole veya belirli bir teknolojiye bağlı olmadan kolayca entegre edilebilir. Ayrıca bu model, farklı diller kullanılarak oluşturulan bileşenler arasında iletişimi sağlamak için bir köprü görevi de üstlenir. 

Ayrılmış/gevşek bağlanmış bileşenler: Pub/sub, iletişim ve uygulama mantığını kolayca ayırmaya, böylece izole bileşenler oluşturmaya olanak tanır. Bu sayede geliştiriciler, daha modüler, sağlam ve güvenli yazılım bileşenleri oluşturabilir. Ayrıca kod kalitesini ve sürdürülebilirliğini iyileştirebilir.

Pub/sub pattern kullanım senaryoları

Perakendeden ve teslimat lojistiğinden söz edelim. Pub/sub, teslimat lojistiğinde yaygın olarak kullanılan bir modeldir. Paket teslimatlarının yaygınlaştığı bir dönemde lojistik şirketlerinin teslimat kaynaklarını daha verimli kullanması gerekir. Teslimatı optimize etmek için sevk sistemleri, sürücülerinin nerede olduğuna dair güncel bilgilere ihtiyaç duyar.

Olay tabanlı pub/sub mesajlaşma, lojistik şirketlerine bu yeteneği kazandırır. Sürücülerin konum bilgilerine gerçek zamanlı erişebilen merkez ofisler, varış zamanlarını daha iyi tahmin edebilir ve yönlendirme çözümleri geliştirebilir.

Ayrıca pub/sub, iptallerin, yeni siparişlerin bildirilmesinde de kullanılır. Böyle bir sistemde herkes, kendisini ilgilendiren konuya abone olur. Sürücüler trafik ve rota bilgilerine abone olabilirken, sevkiyat ve ERP sistemleri tamamlanmış teslimat güncellemelerinden abone olabilir. Takip ve sevk sistemleri ise canlı konum güncellemelerini takip edebilir. 

Pub/sub pattern, bu gibi operasyonların yanı sıra anlık mesajlaşma, veri akışı, iş yükü dengeleme ve eşzamansız iş akışları gibi kullanım senaryolarında da tercih edilir.

Yayıncı/abone modelinin ayrıntılarını ve Google Pub/Sub’ı Global IT ile keşfedin

Global IT olarak yayıncı/abone deseninin farklı sektörlerdeki farklı işletmeler için nasıl kullanılacağına dair yıllara dayanan deneyimimizle işletmelerin yanında oluyoruz. 16 yıldır Google Cloud çözümlerine odaklanıyor, Google’ın işletmelerin bulutta büyümesini olanaklı kılan çözümlerini kusursuz bir biçimde müşterilerimize ulaştırıyoruz. Yatırım geri dönüşlerini kısa sürede alan müşterilerimizle her projede başka bir başarı hikayesine imza atıyor, Google Cloud çözüm ailesinin sunduğu avantajları işletme ihtiyaçlarına göre uyarlıyoruz. 

Veri analitiği başlığı altında sunduğumuz Google Cloud Pub/Sub ile ilgili daha fazla bilgi almak ve Global IT’nin bulut dönüşümünüz için yapabileceklerini keşfetmek isterseniz, bizimle bu sayfanın altında yer alan formu kullanarak iletişime geçebilirsiniz.

Bir yorum bırakın

Bu site, istenmeyenleri azaltmak için Akismet kullanıyor. Yorum verilerinizin nasıl işlendiği hakkında daha fazla bilgi edinin.