Arakatmanlar -4. DDS Arakatmanı ile Sistem Geliştirme

Huseyin Kutluca
Yazılım Mimarileri
5 min readNov 17, 2019

DDS arakatmanı Nedir:

Data Distribution Service (DDS) Ara katmanı dağıtık ortamda çalışan gerçek zamanlı sistemlerde veri iletimi için kullanılır.

DDS ara katmanı başta savunma, havacılık endüstriyel nesnelerin interneti, sağlık ve otomotiv olmak üzere yaygın şekilde kullanılmaktadır. Gerçek zamanlı dağıtık sistemler hızlı, etkin ve tahmin edilebilir bir veri iletişimine ihtiyaç duyarlar. DDS ara katmanı UDP tabanlı bir protokol kullandığından gecikmesi en fazla birkaç yüz mikrosaniye seviyesindedir. Diğer ara katmanlardaki minimum 10 milisaniye seviyesi gecikmelere göre çok düşük bir gecikme sağlamaktadır. Son dönemde DDS ara katmanı yeni gelişen Time Sensitive Networking gibi standartlarla birlikte kullanılarak otonom araçlarda ve robotik uygulamalarda kararlı iletişim için kullanma konusunda öne çıkmaktadır.

Son gittiğim DDS seminerinde dünyanın en büyük teleskobu projesinde ELT (Extremly Large Telescop) projesinde 784 aynayı senkron biçimde koordine etmek için kullandıklarından bahsettiler. İsviçre saat üretici firma olimpiyat ve diğer birçok spor yarışında sporcu zamanlarını tespit edip tüm ilgililere anında dağıtmak için DDS kullanıldığını anlattılar.

DDS ara katmanı mimari olarak yayımla-abone ol tasarım kalıbını temel almaktadır. Yayımla abone-ol mimarisi veriyi sağlayan uygulama ile veriye erişen uygulamanın birbirinden bağımsız hale gelmesini sağlamaktadır. Veriyi oluşturan bileşen veriyi ara katman üzerinden yayımlar. Veriyi yayımlayan bileşenin veriyi kime iletmesi gerektiğini bilmesi gerekmemektedir. Ara katman veriyi bu veriye abone olan diğer bileşenlere iletmekten sorumludur.

DDS ara katmanında özel bir aracı(broker) ya da kayıt servisi (registry) bulunmamaktadır. Veri UDP multicast tabanlı bir protokol ile doğrudan bütün abone olan uygulamalara iletilir.

Sisteme veri yayımlamak üzere yeni bileşen eklenebileceği gibi mevcut verilere abone olup veriyi işleyebilecek yeni bileşenler kolayca eklenebilir. Örneğin bir akıllı bina sisteminde sıcaklık ve nem verisini yayımlamak üzere yeni bir bileşen eklenebilir. Bu bileşen daha önce belirlenmiş veri modeli üzerinden veri yayımlayabilir.

DDS ara katmanının önce çıkan diğer bir özelliği ise veri merkezli olmasıdır. Veri merkezli olması demek ara katman seviyesinde verinin biçiminden haberdar olmak demektir. Bu kavramda rüzgar santrali enerji verisini paylaşıyor iseniz her bir farklı rüzgar santralini ara katman seviyesinde ayrı anahtarla ayır ediyorsunuz demektir. 44 numaralı santral veri basmaya başladığında diğer uygulamalar bu santralin sisteme ilk defa veri sağladığını ara katman durum bilgileri ile anlayabilir. Ayrıca 44 numaralı santralin enerji seviyesi %50'nin altına indiğinde bilgi veri gibi genelde uygulama seviyesinde yapılan filtreler ara katman seviyesinde yapılabilir. Bu haliyle DDS sadece veriyi noktadan noktaya ileten bir ara katman değil bir çeşit dağıtık veritabanı gibi çalışır.

Servis Kalitesi Özellikleri

DDS ara katmanını AMQP ve MQTT gibi ara katmanlardan farklı kılan bir özelliği de gerçek zamanlı sistemlerin gerçek zaman ve hataya dayanıklılık ihtiyaçlarını karşılamak üzere geniş bir servis kalitesi desteği sunmasıdır. Yani MQTT yerine DDS kullandığınızda sadece performans açısından avantajlı olmazsınız. Ayrıca DDS kullanarak görev kritik bir uygulamada isteyeceğiniz özellikleri daha rahat geliştireceksiniz. Sistem çalışır iken uygulamanın birisi istenmeden kapanıp açıldığında durum bilgisini ara katman üzerinden alarak sorunsuz çalışmaya devam edebilecektir. Bu amaçla kullanılan kalıcılık (durability) servis kalitesi; verinin uçucu (volatile), bellekte kalıcı (transient) ya da diskte kalıcı (persistent) olacağını belirler. Bir verinin uçucu olması sadece o anda dinleyen modüllere ulaştırılacağını, bellekte kalıcı ise sonradan sisteme dahil olan modüllere de iletileceğini ve diskte kalıcı ise sistem kapanıp açıldığında bile erişilebileceğini belirler.

Verinin güvenli olarak gönderileceğini belirleyen Güvenilirlik (reliability) servis kalitesi buna bir örnektir. Komutlar gibi teslimatı mutlaka gerçekleşmesi gereken veriler güvenli servis kalitesinde gönderilirken (reliable), periyodik olarak güncellenen verilerin bu servis kalitesinde gönderilmesine ihtiyaç yoktur (best effort).

Hayatta olma durumu(Liveliness) servis kalitesi ile veriyi üreten uygulamanın kapandığından o veriye ihtiyaç duyan uygulamalar hemen haberdar olabilir. Hatta aynı veriyi yayımlayabilecek ikincil kaynağın verisini almaya başlayabilirsiniz (Sahiplik kalite öz niteliği ile birlikte).

Etkin İletişim Protokolü ve Birlikte Çalışabilirlik:

Farklı firmaların geliştirdiği DDS ara katmanlarının protokol seviyesinde uyumlu olması ve olgun bir iletişim protokolüne sahip olması için RTPS (Real-Time Publish Subscribe) protokolü bulunmaktadır. RTPS UDP/IP üzerinde(multicast ve unicast) çalışan bir protokoldür. Veriyi ikili (binary) kodlamakta ve bu amaçla OMG Common Data Representation (CDR) dediğimiz standardı kullanmaktadır. CDR kodlamadan dolayı Json ya da XML gibi text formatlarına göre çok daha az ağ kapasitesi gerektirmekte ve kodlama için daha az zaman harcamaktadır.

DDS Arakatmanı ve Açık Mimari Standartları

DDS ara katmanı savunma sektöründeki başlıca açık mimari sistem mimarileri için öne çıkan bir ara katman olmuştur. Bu standartlardan askeri araçlar için Nato Generic Vehicle Architecture(GVA), aviyonik sistemler için Future Avionics Capability Environment (FACE) ve gemi komuta kontrol için Open Architecture Computing Environment (OACE) öne çıkmaktadır.

Robot yazılımları için mimari altyapı sağlayan Robot Operating System( ROS) 2 de DDS ara katmanını tercih etmiştir. Otomotiv dünyasında ise AUTOSAR Adaptive dediğimiz yeni standart ile DDS in yeni nesil araçlardaki yüksek veri iletim ihtiyacını gerçek zamanlı olarak karşılamak hedeflenmektedir.

Son olarak enerji sistemleri için geliştirilen OPEN FMB standardı da DDS, MQTT ve AMQP ile birlikte kullanılabilir ara katmanlar arasında göstermektedir.

DDS Arakatmanı ürünleri

DDS Ara katmanı ülkemizde MilSOFT tarafından geliştirilmiş ve özellikle savunma sanayi projelerinde farklı şirketler tarafından yaygın olarak kullanılmıştır. Kişisel olarak MilSOFT firmasında DDS geliştirme faaliyetlerinin geliştirici ve mimar olarak görev almaktayım. MilSOFT’un geliştirdiği MIL-DDS dışında RTI firmasının Connext , ADLINK( eski Prisim Tech) Vortex ve TwinOAX un Code DX öne çıkan DDS ürünleridir. Firmalar DDS ara katmanı yanı sıra geliştirme ve testi kolaylaştıracak araçlar ile birlikte DDS kütüphaneleri sağlamaktadır. ADLink firması kendi C dili tabanlı DDS ürünlerini Eclipse Cyclone DDS olarak açık kaynak yapmıştır.

DDS ara katmanı ile programlama nasıl yapılır onu bir sonraki yazıda anlatacağım.

Referanslar ve Detaylı Bilgiler :

--

--

Huseyin Kutluca
Yazılım Mimarileri

Highly motivated Software Architect with hands-on experience in design and development of mission critical distributed systems.