Yönetilen MQTT broker, sizin yerinize başkasının işlettiği bir MQTT sunucusudur: siz bir hostname, portlar ve kimlik bilgileri alırsınız; sunucular, sertifikalar, güncellemeler ve kapasite ise sağlayıcının sorumluluğundadır. Bu rehberde yönetilen bir MQTT broker'ın sizin için gerçekte neler yaptığını, kendi broker'ınızı çalıştırmaya kıyasla nasıl konumlandığını, projenize hangi dağıtım modelinin uyduğunu ve ilk client'ınızı yaklaşık beş dakikada nasıl bağlayacağınızı öğreneceksiniz.
MQTT'ye yeniyseniz önce MQTT Broker Nedir? yazısıyla başlayın, barındırma konusunu düşünmeye hazır olduğunuzda buraya dönün.
Yönetilen MQTT Broker Nedir?
MQTT hafif bir publish/subscribe protokolüdür. Cihazlar ve uygulamalar birbiriyle doğrudan konuşmaz; bir broker'a bağlanır, topic'lere mesaj yayınlar ve ilgilendikleri topic'lere abone olurlar. Broker, her mesajın içinden geçtiği tek altyapı bileşenidir; bu da onu hem basit hem de kritik kılar.
Self-hosted bir broker, broker yazılımını bir sanal makineye veya Kubernetes kümesine kurmanız ve etrafındaki her şeyin sahibi olmanız demektir. Yönetilen bir MQTT broker (bazen "hizmet olarak MQTT broker" ya da bulut MQTT broker olarak da anılır) bu sorumluluğu bir sağlayıcıya devreder. Pratikte elinize şunlar geçer:
mqtts://your-broker:8883gibi herkese açık bir uç nokta ve tarayıcılar için WebSocket uç noktaları.- Her broker için üretilen kimlik bilgileri (kullanıcı adı, parola, client ID).
- Geçerli ve otomatik yenilenen sertifikayla TLS.
- Broker oluşturmak, topic'leri incelemek, bağlantıları izlemek ve alarmları yapılandırmak için bir web konsolu.
- Bağlantı sayısı, mesaj boyutu ve QoS için plana bağlı limitler; bunları altyapıyı yeniden kurmak yerine plan değiştirerek yükseltebilirsiniz.
Cihazlarınız yine sade, standart MQTT konuşur. Bu önemlidir: tescilli bir SDK'ya kilitlenmezsiniz ve herhangi bir MQTT 3.1.1 veya MQTT 5.0 client kütüphanesi çalışır.
Yönetilen ve Self-Hosted MQTT Broker Karşılaştırması
Tek bir VM üzerinde açık kaynaklı bir broker çalıştırmak ilk gün kolaydır. Asıl iş sonra ortaya çıkar: sertifika yenilemeleri, işletim sistemi yamaları, bir cihaz filosunun aynı anda yeniden bağlandığı ilk an ve gece 3'te "broker ayakta mı?" sorusu. Sorumlulukların nasıl paylaşıldığı aşağıda.
Operasyon ve yama yönetimi
Self-hosted bir broker'da broker, TLS kütüphanesi ve işletim sistemi için güvenlik bültenlerini takip eder, bakım pencereleri planlar ve güncellemeleri test edersiniz. Yönetilen bir MQTT broker'da güncellemeleri broker filosuna sağlayıcı uygular; siz aynı hostname ve kimlik bilgileriyle çalışmaya devam edersiniz.
Ölçekleme
Self-hosted tek bir node'un tavanı CPU, bellek ve dosya tanımlayıcı limitleriyle belirlenir. Bu tavanı yükseltmek; yeniden boyutlandırma, çekirdek ayarı ve bazen yeniden tasarım gerektirir. Yönetilen bir hizmette daha yüksek limitli bir plana veya dedicated bir kümeye geçerek ölçeklersiniz. ConnectMQ ayrıca paylaşımlı altyapıyı plan bazlı kotalar, bağlantı seli (connection flood) koruması ve uyarlanabilir aşırı yük korumasıyla korur; böylece hatalı davranan bir client diğer herkesi çökertemez.
TLS sertifikaları
8883 portunda şifreli MQTT, client'ların güvendiği bir sertifika gerektirir. Self-hosting'de bu sertifikayı edinmek, yenileme otomasyonunu kurmak ve listener'ları yeniden başlatmak size kalır. ConnectMQ, 8883'te TLS'i ve 8084'te güvenli WebSocket'i Let's Encrypt sertifikasıyla sunar; böylece standart client'lar sertifikaya kutudan çıktığı gibi güvenir. Taşıma katmanı güvenliğine daha ayrıntılı bakmak için MQTT Güvenliği: En İyi Uygulamalar yazısına göz atın.
İzleme
Çıplak bir broker size loglar ve en iyi ihtimalle $SYS topic'lerini verir. Yine de dashboard'lara, alarmlara ve hangi cihazın bağlı olduğunu görmenin bir yoluna ihtiyacınız vardır. ConnectMQ portalı bir dashboard, canlı topic gezgini, tarayıcı içi MQTT client, ISA-95 seviyelerine göre düzenlenmiş cihaz görünümü, eşik tabanlı alarm kuralları ve alarm günlüğü içerir.
Toplam sahip olma maliyeti
Sunucu faturası nadiren pahalı kalemdir. Aşağıdaki tablo eforun nereye gittiğini karşılaştırır.
| Alan | Self-hosted broker | Yönetilen MQTT broker |
|---|---|---|
| Sunucular ve işletim sistemi | Siz kurar, boyutlandırır ve yamalarsınız | Sağlayıcı işletir |
| Broker güncellemeleri | Siz test eder ve yayarsınız | Sağlayıcı yayar |
| TLS sertifikaları | Siz üretir, yeniler ve dağıtırsınız | Dahil ve otomatik yenilenir |
| Kimlik doğrulama | Kullanıcıları ve depolamayı siz yapılandırırsınız | Kimlik bilgileri portalda üretilir |
| Kötüye kullanım ve aşırı yük koruması | Hız limitlerini ve engellemeleri siz kurarsınız | Kotalar, flood koruması ve IP engelleme yerleşik |
| İzleme ve alarmlar | Dashboard ve alarm sistemini siz kurarsınız | Dashboard, topic gezgini ve alarm kuralları dahil |
| Ölçekleme | Yeniden boyutlandırma, ayar, yeniden tasarım | Plan değiştirme veya dedicated'a geçiş |
| Nöbet (on-call) | Sizin ekibiniz | Broker için sağlayıcı, uygulamalarınız için siz |
| İlk mesaja kadar geçen süre | Saatler ile günler | Dakikalar |
Verinin ağınızdan asla çıkmaması gerektiğinde, katı air-gap gereksinimleriniz olduğunda veya boşta kapasitesi olan bir platform ekibiniz zaten varsa self-hosting hâlâ mantıklıdır. Ürün geliştiren ekiplerin çoğu için ise yönetilen bir MQTT broker, tekrar eden operasyon yükünü öngörülebilir bir aboneliğe dönüştürür.
Yönetilen MQTT Broker Dağıtım Modelleri
"Yönetilen" tek bir şey değildir. Doğru model, ne kadar izolasyona ihtiyaç duyduğunuza ve verinizin nerede durması gerektiğine bağlıdır. ConnectMQ, planlarıyla eşleşen dört model sunar.
| Dağıtım modeli | ConnectMQ planı | Altyapıyı kim işletir | Tipik kullanım |
|---|---|---|---|
| Serverless (paylaşımlı) | Serverless Free / Serverless Paid | ConnectMQ, paylaşımlı çok kiracılı bir kümede | Prototipler, pilotlar, küçük ve orta ölçekli üretim filoları |
| Dedicated | Dedicated | ConnectMQ, yalnızca size ait izole bir kümede | Kendi kaynaklarına ihtiyaç duyan üretim iş yükleri |
| Bring Your Own Cloud | BYOC | ConnectMQ, broker'ları sizin bulut hesabınızda yönetir | Veri yerelliği, mevcut bulut taahhütleri |
| Self-managed | Self Managed Enterprise | Siz, lisanslı bir ConnectMQ broker ile | Şirket içi (on-premises), regüle veya air-gapped sahalar |
Serverless (paylaşımlı küme)
Makine boyutu seçmeden saniyeler içinde bir broker'a sahip olursunuz. Her kiracının topic'leri diğer kiracılardan ve public alandan izoledir. Ücretsiz Serverless planı deneme ve prototipler içindir: en fazla 25 eşzamanlı bağlantı, en fazla QoS 1, 256 KB mesajlar, retained message'lar ve wildcard abonelikler. Ücretli Serverless planı aynı paylaşımlı kümede bunu üretim limitlerine çıkarır: en fazla 1.000 bağlantı, QoS 2, 1 MB mesajlar ve shared subscription'lar.
Dedicated
Dedicated plan size ait izole bir broker kümesi verir. Gürültülü komşular denklemden çıkar ve kapasite iş yükünüz için ayrılır; operasyonu yine ConnectMQ yürütür.
BYOC (Bring Your Own Cloud)
BYOC ile broker'lar kendi bulut hesabınızda çalışır ve ConnectMQ tarafından yönetilir. Güvenlik ekibiniz verinin hesap sınırlarınız içinde kalmasını şart koştuğunda veya mevcut bulut harcamanızı kullanmak istediğinizde kullanışlıdır.
Self Managed Enterprise
Broker'ın sizin donanımınızda yaşaması gereken fabrikalar, enerji/su şirketleri ve benzeri sahalar için Self Managed Enterprise planı, kendi altyapınızda çalıştırdığınız lisanslı bir broker sağlar. Endüstriyel kurulumlara uygundur; ConnectMQ'nun ISA-95 ve Sparkplug B topic yapılarını nasıl ele aldığını görmek için MQTT Sparkplug B ve Unified Namespace yazısını okuyun.
Hangisini seçeceğinizden emin değil misiniz? IoT MQTT broker nasıl seçilir rehberimiz karar kriterlerini adım adım ele alıyor.
Hızlı Başlangıç: 5 Dakikada İlk Yönetilen MQTT Broker'ınız
Hesap oluşturmadan önce MQTT'yi deneyebilir, ardından kimlik bilgileriyle özel bir broker'a geçebilirsiniz.
Adım 0: Public broker üzerinde anonim test
broker.connectmq.com bir public alana sahiptir. Kullanıcı adı ve parola olmadan, benzersiz ve boş olmayan bir client ID ile bağlanın. Public alandaki her şeyi herkes okuyabilir; bu yüzden rastgele bir önek kullanın ve asla kişisel veya hassas veri göndermeyin.
Bir terminal açın ve abone olun:
mosquitto_sub -h broker.connectmq.com -p 1883 -i demo-sub-7f3k \
-t "connectmq/demo/7f3k/#" -v
İkinci bir terminalde yayın yapın:
mosquitto_pub -h broker.connectmq.com -p 1883 -i demo-pub-7f3k \
-t "connectmq/demo/7f3k/room1/temp" -m '{"temp":22.5}' -q 1
Abone connectmq/demo/7f3k/room1/temp {"temp":22.5} çıktısını basar. Public alan limitleri şunlardır: mesaj başına 64 KB, client başına saniyede 10 mesaj, client başına 10 abonelik ve en fazla 8 topic seviyesi. Test için yeterlidir; üretim için kendi broker'ınızı istersiniz.
Adım 1: Kaydolun ve bir broker oluşturun
- app.connectmq.com adresine gidin ve kaydolun. Ücretsiz Serverless planı kredi kartı gerektirmez.
- Bir plan seçin ve broker oluşturun.
- Üretilen kullanıcı adını, parolayı ve client ID'yi kopyalayın. Client ID'niz verilen değerle ve onun
_suffixvaryantlarıyla (örneğinYOUR_CLIENT_ID_sensor1) sınırlıdır; bu sayede tek bir broker altında birden fazla client çalıştırabilirsiniz.
Adım 2: mosquitto ile TLS üzerinden bağlanın
Şifreli MQTT için 8883 portunu kullanın. Sertifika Let's Encrypt tarafından verildiği için client'ı sisteminizin CA deposuna yönlendirmeniz yeterlidir. Linux ve macOS'ta:
mosquitto_sub -h broker.connectmq.com -p 8883 --capath /etc/ssl/certs \
-u YOUR_USERNAME -P YOUR_PASSWORD -i YOUR_CLIENT_ID_sub \
-t "factory1/line1/#" -v -V mqttv5
mosquitto_pub -h broker.connectmq.com -p 8883 --capath /etc/ssl/certs \
-u YOUR_USERNAME -P YOUR_PASSWORD -i YOUR_CLIENT_ID_pub \
-t "factory1/line1/cnc1/telemetry" -m '{"spindle_rpm":12000}' -q 1 -V mqttv5
Windows'ta --capath yerine --cafile ile bir CA paket dosyası verin.
Adım 3: Python ile bağlanın
Client'ı pip install paho-mqtt (2.x sürümü) ile kurun, ardından şunu çalıştırın:
import json
import ssl
import paho.mqtt.client as mqtt
BROKER = "broker.connectmq.com"
PORT = 8883
USERNAME = "YOUR_USERNAME"
PASSWORD = "YOUR_PASSWORD"
CLIENT_ID = "YOUR_CLIENT_ID"
TOPIC = "factory1/line1/cnc1/telemetry"
def on_connect(client, userdata, flags, reason_code, properties):
print("Connected:", reason_code)
client.subscribe(TOPIC, qos=1)
client.publish(TOPIC, json.dumps({"spindle_rpm": 12000}), qos=1)
def on_message(client, userdata, msg):
print(f"{msg.topic} -> {msg.payload.decode()}")
client = mqtt.Client(
mqtt.CallbackAPIVersion.VERSION2,
client_id=CLIENT_ID,
protocol=mqtt.MQTTv5,
)
client.username_pw_set(USERNAME, PASSWORD)
client.tls_set(cert_reqs=ssl.CERT_REQUIRED)
client.on_connect = on_connect
client.on_message = on_message
client.connect(BROKER, PORT, keepalive=60)
client.loop_forever()
Önce Connected: Success, ardından kendi mesajınızı görmelisiniz. Portaldaki canlı topic gezginini açın; aynı mesaj orada da görünür.
Adım 4: İzleyin ve alarm kurun
Portaldan topic'leri geldikleri anda inceleyebilir, hangi client'ların bağlı olduğunu kontrol edebilir ve bir eşik alarm kuralı ekleyebilirsiniz (örneğin spindle_rpm bir limiti aştığında bildirim). VS Code kullanıyorsanız ConnectMQ eklentisi CONNACK, SUBACK ve PUBACK reason code'larını gösterir ve sayısal JSON alanlarını canlı olarak grafiğe döker.
Yönetilen MQTT Broker Seçmeden Önce Neleri Kontrol Etmelisiniz?
Hangi sağlayıcıyı değerlendirirseniz değerlendirin, şu soruları sorun:
- Protokol desteği: Hem MQTT 3.1.1'i hem MQTT 5.0'ı destekliyor mu? Session expiry, message expiry, topic alias ve reason code gibi MQTT 5 özellikleri filoların işletilmesini kolaylaştırır.
- Taşıma seçenekleri: TCP, TLS ve WebSocket (tarayıcı dashboard'ları için güvenli WebSocket dahil).
- Kiracı izolasyonu: Paylaşımlı bir kümede topic'leriniz diğer müşterilere görünmez mi?
- Kötüye kullanım koruması: Kotalar, flood koruması ve tekrarlanan hatalı kimlik bilgisi denemelerinin engellenmesi.
- Tahmin edilen değil, bildirilen limitler: Bir MQTT 5 broker, limitlerini CONNACK içinde client'lara bildirebilir (Maximum QoS, Retain Available, Wildcard ve Shared Subscription Available, Receive Maximum). ConnectMQ bunu yapar; böylece client'lar sessizce başarısız olmak yerine kendilerini uyarlayabilir.
- Yükseltme yolu: Cihazları yeniden yazmadan ücretsiz paylaşımlı broker'dan dedicated'a, kendi bulutunuza veya şirket içine geçebiliyor musunuz?
ConnectMQ ile Başlayın
İlk yönetilen MQTT broker'ınızı app.connectmq.com adresinde oluşturun. Serverless planı ücretsizdir, kredi kartı gerektirmez ve dakikalar içinde size kimlik bilgileri, TLS ve topic gezginli bir portal sunar. İhtiyaçlarınız büyüdüğünde MQTT kodunuzu değiştirmeden Serverless Paid, Dedicated, BYOC veya Self Managed Enterprise'a geçin.
Sık Sorulan Sorular
Yönetilen MQTT broker nedir?
Yönetilen MQTT broker, bir sağlayıcı tarafından işletilen MQTT sunucusudur. Standart MQTT client'larıyla bir hostname ve kimlik bilgileri kullanarak bağlanırsınız; sunucular, güncellemeler, TLS sertifikaları, kapasite ve koruma ise sağlayıcının işidir.
Yönetilen MQTT broker, self-hosting'den daha pahalı mı?
Abonelik ücreti tek bir VM'den yüksek görünebilir; ancak self-hosting de yama, sertifika, izleme ve nöbet için mühendislik zamanına mal olur. Çoğu ekip için toplam sahip olma maliyeti yönetilen bir hizmetle daha düşüktür ve ConnectMQ başlangıç için ücretsiz bir Serverless planı sunar.
Mevcut MQTT client kütüphanelerimi kullanabilir miyim?
Evet. ConnectMQ, TCP, TLS ve WebSocket üzerinden standart MQTT 3.1.1 ve MQTT 5.0 konuşur; bu nedenle Eclipse Paho, MQTT.js ve PubSubClient gibi kütüphaneler değişiklik yapmadan çalışır.
ConnectMQ ile hangi portları kullanmalıyım?
Üretimde TLS üzerinden MQTT için 8883'ü, güvenli WebSocket için 8084'ü kullanın. 1883 (TCP) ve 8083 (WebSocket) portları public broker üzerinde hızlı testler için kullanılabilir.
Verilerimi kendi bulutumda veya şirket içinde tutabilir miyim?
Evet. BYOC planı, ConnectMQ tarafından yönetilen broker'ları kendi bulut hesabınızda çalıştırır; Self Managed Enterprise planı ise kendi altyapınızda çalıştırdığınız lisanslı bir broker sağlar.



