MQTT'yi kim icat etti? IBM'den Andy Stanford-Clark ve Arcom Control Systems'ten Arlen Nipper, onu 1999'da petrol boru hatlarını pahalı uydu bağlantıları üzerinden izlemek için tasarladı. Bu yazı MQTT'yi o endüstriyel nişten açık bir OASIS ve ISO standardına ve IoT'nin varsayılan protokolüne kadar izliyor ve orijinal tasarım hedeflerinin bugün onu kullanma biçiminizi hâlâ nasıl şekillendirdiğini açıklıyor.
1999'daki Sorun: Boru Hatları, Uydular ve Bant Genişliği
1990'ların sonunda petrol ve gaz operatörlerinin uzak boru hattı ekipmanlarından telemetri toplaması gerekiyordu: basınçlar, debiler, vana konumları, pompa durumları. Birçok sahada karasal ağ yoktu; bu yüzden veriler yavaş, kesintili ve bayt başına faturalandırılan uydu bağlantıları üzerinden taşınıyordu. Mevcut yaklaşımlar her cihazı bir takvime göre sorguluyor, değişmeyen değerler için bant genişliğini boşa harcıyor ve bağlantı her koptuğunda zorlanıyordu.
İki mühendis soruna farklı taraflardan yaklaştı:
- Mesajlaşma ara katman yazılımı üzerinde çalışan ve yaygın bilişime (pervasive computing) güçlü bir ilgi duyan IBM'den Andy Stanford-Clark.
- Sahadan derin SCADA ve gömülü donanım deneyimi getiren Arcom Control Systems'ten (daha sonra Eurotech'in parçası) Arlen Nipper.
Birlikte, veriyi yalnızca değiştiğinde iten, güvenilmez bağlantılarda ayakta kalan ve mütevazı donanımda çalışan bir protokol tasarladılar.
Orijinal Tasarım Hedefleri
Belirledikleri hedefler modern bir IoT kontrol listesi gibi okunur:
- Sınırlı belleğe ve CPU'ya sahip küçük cihazlarda uygulaması basit olmak.
- Uydu üzerinden giden her baytın faydalı veri taşıması için minimum ek yük.
- Uzak cihazların verilerini kimin tükettiğini bilmesine gerek kalmaması için yayınla/abone ol.
- Göndericinin her mesaj için güvenilirliği bant genişliğine karşı tartabilmesi için hizmet kalitesi (QoS) seviyeleri.
- Bir cihaz beklenmedik şekilde düştüğünde herkese haber vermenin bir yolu dahil, kesintili bağlantıya tolerans.
- Protokol umursamadan herhangi bir payload formatını taşıyan veri bağımsızlığı.
Her hedef, bugün hâlâ kullandığınız özelliklere doğrudan karşılık gelir: iki baytlık minimum sabit başlık, broker merkezli yayınla/abone ol modeli, QoS 0/1/2, keep-alive ve Last Will ve opak payload'lar.
MQTT Ne Anlama Gelir?
"MQ" kısmı IBM'in MQSeries mesajlaşma ürün ailesinden geliyordu ve protokolün orijinal adı MQ Telemetry Transport idi. Bu ad yıllarca kafa karışıklığına yol açtı, çünkü MQTT, MQSeries anlamında bir mesaj kuyruğu değildir. MQTT standartlaştırıldığında adı yalnızca "MQTT" oldu ve artık resmi olarak bir kısaltma olarak ele alınmıyor.
MQTT Tarihçesi: MQTT'yi Kim İcat Etti ve Sonra Ne Oldu
| Yıl | Kilometre taşı |
|---|---|
| 1999 | Andy Stanford-Clark ve Arlen Nipper boru hattı telemetrisi için ilk sürümü oluşturur |
| 2000'ler | IBM MQTT'yi kurum içinde ve mesajlaşma ürünlerinde kullanır; endüstriyel ve enerji ortamlarında benimsenme artar |
| 2000'lerin sonu | TCP dışı sensör ağları için MQTT-S (daha sonra MQTT-SN) tanımlanır |
| 2010 | IBM, MQTT 3.1'i telif ücretsiz yayımlayarak herkesin uygulamasına olanak tanır |
| 2010'ların başı | Eclipse Paho ve Mosquitto dahil açık kaynak client'lar ve broker'lar ortaya çıkar |
| 2013 | OASIS, protokolü standartlaştırmak için bir MQTT Teknik Komitesi kurar |
| 2014 | MQTT 3.1.1 bir OASIS Standardı olur |
| 2016 | MQTT 3.1.1, uluslararası standart ISO/IEC 20922 olarak yayımlanır |
| 2016 ve sonrası | Cirrus Link (Arlen Nipper'ın kurucu ortağı olduğu şirket) tarafından başlatılan Sparkplug, MQTT üzerine endüstriyel kurallar ekler ve daha sonra Eclipse Foundation'a taşınır |
| 2019 | MQTT 5.0 bir OASIS Standardı olur; reason code'lar, oturum süresi, paylaşımlı abonelikler ve daha fazlasını ekler |
Spesifikasyon belgelerinin kendisine OASIS komitesinden ulaşılabilir ve mqtt.org üzerinde özetlenmiştir.
Tescilliden Açığa: 2010 Neden Dönüm Noktasıydı
İlk on yılında MQTT esas olarak bir IBM teknolojisiydi. 3.1 spesifikasyonunun 2010'da telif ücretsiz hale getirilmesi bunu değiştirdi. Geliştiriciler artık lisans endişesi olmadan client ve broker yazabiliyordu ve yazdılar da:
- Eclipse Paho birçok dilde client kütüphaneleri sağlayarak geliştiricilere ortak bir başlangıç noktası verdi.
- Hafif bir açık kaynak broker olan Mosquitto, MQTT'yi bir dizüstü bilgisayarda veya Raspberry Pi'da çalıştırmayı çocuk oyuncağı haline getirdi.
- Hobiciler ve girişimler onu ev otomasyonu ve bağlantılı ürünler için benimsedi; çoğu zaman Arduino ve Linux projeleri aracılığıyla keşfettiler.
Bu zamanlama, ucuz Wi-Fi mikrodenetleyicilerinin ve akıllı telefonların yükselişiyle örtüştü. Uydu bağlantıları için tasarlanmış bir protokolün, pille çalışan sensörler ve kararsız hücresel ağlardaki mobil uygulamalar için ideal olduğu ortaya çıktı.
Standardizasyon: OASIS ve ISO
Açık uygulamalar ivme yarattı, ancak kurumlar satıcıdan bağımsız bir standart istiyordu. IBM ve diğerleri MQTT'yi OASIS'e getirdi; burada bir teknik komite 3.1 sürümünü MQTT 3.1.1'e dönüştürerek belirsiz alanları netleştirdi ve pratikte uyumluluğu korudu. 2014'te bir OASIS Standardı oldu ve 2016'da ISO/IEC tarafından 20922 olarak kabul edildi.
Komite ardından büyük kurulumlardan çıkarılan derslere yöneldi. 2019'da onaylanan MQTT 5.0 temel modeli korudu ancak operatörlerin eksikliğini hissettiklerini ekledi: Hataları teşhis etmek için reason code'lar, oturum ve mesaj süresi, yük dengeleme için paylaşımlı abonelikler, topic alias'lar, user properties ve istek/yanıt meta verileri. MQTT 5 özellikleri genel bakışımız her eklemeyi açıklar.
MQTT'nin Kökenleri Hakkında Yaygın Yanlış Kanılar
Forumlarda ve mülakatlarda birkaç efsane sürekli karşımıza çıkar:
- "MQTT nesnelerin interneti için yapıldı." IoT terimi 1999'da neredeyse yoktu. MQTT endüstriyel telemetri için yapıldı ve ancak daha sonra varsayılan IoT protokolü haline geldi.
- "MQTT bir mesaj kuyruğudur." Orijinal addaki MQ, kuyruk semantiğine değil bir ürün ailesine atıfta bulunur. Eşleşen her abone bir mesajın kendi kopyasını alır.
- "MQTT her zaman açıktı." 2010'daki telif ücretsiz yayından önce yaklaşık on yıl boyunca tescilliydi.
- "MQTT 5, 3.1.1'in yerini aldı." Her ikisi de yaygın olarak kullanılmaya devam ediyor ve çoğu broker ikisini yan yana destekliyor.
Orijinal Tasarım Neden Hâlâ Önemli
Bugünün en iyi uygulamalarının çoğu, yeni kıyafetler giymiş 1999 gereksinimleridir:
- Bağlantıları uzun ömürlü tutun. MQTT kalıcı bir bağlantı varsayar ve kurulum maliyetlerini çok sayıda mesaja yayar.
- Bant genişliği veya pil değerli olduğunda bir zamanlayıcıya göre değil, değişiklik olduğunda yayınlayın.
- Varlık (presence) için Last Will kullanın; tam olarak "bir cihaz düştüğünde herkese haber ver" gereksinimi.
- Tasarımcıların amaçladığı gibi güvenilirliği maliyete karşı tartarak her mesaj türü için QoS seçin.
- JSON, Protobuf veya Sparkplug B olsun, payload formatını kendi seçiminiz olarak tutun.
Bu tarihi anlamak MQTT'nin sınırlarını da açıklar. Kalıcı bir log veya akış işleme platformu olarak tasarlanmadı; bu yüzden üretim sistemleri bir broker'ı, client olarak bağlanan veritabanları, historian'lar veya akış işlemcilerle eşleştirir.
Kendi Barındırılan Broker'lardan Yönetilen MQTT'ye
İlk benimseyenler kendi broker'larını kendi sunucularında çalıştırıyordu. Bu hâlâ mümkündür, ancak yama, sertifika yenileme, izleme ve ölçeklemenin sizin işiniz olduğu anlamına gelir. Artık giderek artan sayıda ekip tam yönetilen bir MQTT hizmeti seçiyor ve zamanını cihazlara ve uygulamalara harcıyor.
ConnectMQ bu türden bir bulutta MQTT broker hizmetidir. Hem MQTT 3.1.1'i hem de 5.0'ı destekler, 8883 üzerinde TLS ve 8084 üzerinde güvenli WebSocket sunar ve protokolün boru hattı izleme kökenlerini memnun edecek endüstriyel özellikler içerir: ISA-95 ve Unified Namespace topic algılama ile Sparkplug B kod çözme. Mucitlerin tasarladığı protokolü sıfır kurulumla deneyimlemek istiyorsanız genel test broker'ına bağlanın:
mosquitto_sub -h broker.connectmq.com -p 1883 -i history-sub-e41f \
-t "connectmq/demo/e41f/pipeline/#" -v
mosquitto_pub -h broker.connectmq.com -p 1883 -i history-pub-e41f \
-t "connectmq/demo/e41f/pipeline/station7/pressure" -m "42.7" -q 1
Uzak bir istasyon bir değer yayınlar, broker onu ilgilenen her aboneye iter ve kimse sorgulama yapmaz. İşte iki komutta 1999'un fikri. Daha derine inmek için MQTT eğitimi ile devam edin ya da protokolün bugün nerelerde kullanıldığını sektörlere göre MQTT kullanım alanları yazısında görün.
ConnectMQ ile Başlayın
MQTT'yi mucitlerinin amaçladığı şekilde, bir sunucu çalıştırmadan deneyimleyin. app.connectmq.com adresinden kaydolun, kredi kartı gerektirmeden ücretsiz bir Serverless broker oluşturun ve ilk mesajınızı dakikalar içinde yayınlamak için ConnectMQ'nun tarayıcı içi client'ını kullanın.
Sık Sorulan Sorular
MQTT'yi kim icat etti?
MQTT'yi 1999'da IBM'den Andy Stanford-Clark ve Arcom Control Systems'ten (daha sonra Eurotech) Arlen Nipper icat etti.
MQTT neden oluşturuldu?
Petrol boru hattı ekipmanlarını güvenilmez ve pahalı uydu bağlantıları üzerinden izlemek için; bu da yalnızca değişiklikleri iten ve kopan bağlantılara dayanıklı hafif bir protokol gerektiriyordu.
MQTT ne anlama gelir?
Başlangıçta IBM'in MQSeries ürünlerinden esinlenerek MQ Telemetry Transport anlamına geliyordu. Bugün standart onu yalnızca MQTT olarak adlandırır.
MQTT açık bir standart mı?
Evet. MQTT 3.1.1 ve 5.0 OASIS Standartlarıdır ve MQTT 3.1.1 aynı zamanda ISO/IEC 20922'dir.



