MQTT broker'ı kendi sunucunuzda mı barındıracağınız yoksa yönetilen bir broker mı kullanacağınız kararı, haftanızın ne kadarının ürün geliştirme yerine altyapıya gideceğini belirler. Bu makale iki seçeneği operasyonel efor, gizli maliyetler ve güvenlik sorumluluğu açısından karşılaştırıyor ve ardından projeniz için doğru modeli güvenle seçebilmeniz için bir karar matrisi sunuyor.
Barındırma modellerini karşılaştırmadan önce bir MQTT broker'ın ne yaptığını hatırlamak isterseniz oradan başlayın.
"Kendi Sunucunda" ve "Yönetilen" Aslında Ne Anlama Gelir
Kendi sunucunuzda barındırılan (self-hosted) bir broker, kurup işlettiğiniz bir yazılımdır: bir VM, Raspberry Pi, Kubernetes kümesi ya da tesisinizdeki bir sunucu üzerinde çalışan Mosquitto, EMQX, VerneMQ, NanoMQ ya da başka bir açık kaynak veya ticari broker. İşletim sistemi, broker yapılandırması, TLS sertifikaları, kullanıcı veritabanı, yedekler ve nöbet çağrıları size aittir.
Yönetilen (managed) bir broker ise bir hizmettir. Sağlayıcı broker'ı çalıştırır, yamalarını yapar, sertifikaları yeniler ve uç noktaları sunar; siz bir hostname, portlar ve kimlik bilgileri alırsınız. Topic tasarımınız, istemci kodunuz ve verileriniz hâlâ size aittir, ancak altındaki sunucular değil. ConnectMQ gibi tamamen yönetilen bir MQTT hizmeti size birkaç dakika içinde hazır bir broker teslim eder.
İkisinin arasında hibrit bir model vardır: broker'ın sizin bulut hesabınızda çalıştığı ancak tedarikçinin işlettiği kendi bulutunu getir (BYOC). Bu model BYOC MQTT broker rehberinde ele alınıyor.
Kendi Broker'ınızı Çalıştırmanın Gerçek İş Yükü
Mosquitto'yu kurmak bir dakika sürer. Onu iyi işletmek ise sürekli efor ister. Üretime hazır, kendi sunucunuzda barındırılan bir kurulum tipik olarak şunları gerektirir:
# Minimal production mosquitto.conf - every line is something you now maintain
per_listener_settings true
listener 8883
certfile /etc/mosquitto/certs/fullchain.pem
keyfile /etc/mosquitto/certs/privkey.pem
allow_anonymous false
password_file /etc/mosquitto/passwd
acl_file /etc/mosquitto/acl
listener 8084
protocol websockets
certfile /etc/mosquitto/certs/fullchain.pem
keyfile /etc/mosquitto/certs/privkey.pem
allow_anonymous false
password_file /etc/mosquitto/passwd
persistence true
persistence_location /var/lib/mosquitto/
max_queued_messages 1000
message_size_limit 1048576
Bu dosya yalnızca başlangıçtır. Etrafında şunlara ihtiyacınız olur:
- Sertifika yaşam döngüsü - sertifikaları edinmek, süreleri dolmadan yenilemek ve broker'ı istemcileri düşürmeden yeniden yüklemek.
- İşletim sistemi ve broker yamaları - çekirdek, OpenSSL ve broker'ın kendisi için güvenlik bültenlerini takip etmek.
- Kullanıcı ve kimlik bilgisi yönetimi - cihaz kimlik bilgilerini oluşturmak, döndürmek ve iptal etmek; tercihen dosyaları elle düzenlemeden.
- İzleme - bağlantı sayılarını, mesaj hızlarını, belleği ve diski izlemek ve bir şeyler saptığında bir insanı uyarmak.
- Kötüye kullanım koruması - hız sınırları, bağlantı sınırları ve kaba kuvvet giriş denemelerinin engellenmesi.
- Yedekleme ve kurtarma - kalıcılık dosyaları, yapılandırma ve parola veritabanı.
- Kapasite planlaması - tek bir düğümün ne zaman yetmeyeceğini ve o zaman ne yapılacağını bilmek.
- Nöbet - broker gece saat 3'te durduğunda telefona cevap veren biri.
Bu görevlerin hiçbiri tek başına zor değildir. Bir araya geldiklerinde ise ilk tahminde nadiren yer alan yarı zamanlı bir işe dönüşürler.
Kendi Sunucunda vs Yönetilen MQTT Broker: Yan Yana
| Faktör | Kendi sunucunda | Yönetilen |
|---|---|---|
| İlk bağlantıya kadar geçen süre | Saatlerden günlere (sunucu, TLS, kimlik doğrulama) | Dakikalar (kaydol, broker oluştur) |
| Altyapı maliyeti | Sunucu veya VM, depolama, bant genişliği | Plan ücreti ya da ücretsiz katman |
| İnsan maliyeti | Sürekli operasyon, yamalar, nöbet | Büyük ölçüde sağlayıcı tarafından üstlenilir |
| TLS sertifikaları | Siz düzenler ve yenilersiniz | Sağlanır ve yenilenir |
| Güvenlik sıkılaştırması | Baştan sona sizin sorumluluğunuz | Paylaşımlı: sağlayıcı sıkılaştırır, siz kimlik bilgilerini korursunuz |
| Özelleştirme | Broker ve eklentiler üzerinde tam kontrol | Hizmetin sunduklarıyla sınırlı |
| Ağ konumu | Hava boşluklu (air-gapped) sahalar dahil her yer | İnternet uç noktası (ya da BYOC ile kendi bulutunuz) |
| Ölçekleme | Siz tasarlar ve işletirsiniz | Plan ya da katman değiştirin |
| Veri kontrolü | Tamamen kendi donanımınızda | Sağlayıcıya ve dağıtım modeline bağlı |
Hiçbir sütun her yerde kazanmaz. Asıl soru, hangi sütunun zayıflıklarının projenize daha az zarar verdiğidir.
Çoğu Ekibin Gözden Kaçırdığı Gizli Maliyetler
Kendi sunucunuzda barındırmanın görünen maliyeti bir VM faturasıdır. Gizli maliyetler genellikle daha büyüktür:
- Mühendis zamanı. Sertifika yenilemeye, dolu bir diski incelemeye ya da broker yükseltmeye harcanan her saat, cihaz firmware'inize ya da uygulamanıza harcanmayan bir saattir.
- Olay maliyeti. Bir broker kesintisi tüm cihazları aynı anda durdurur. Maliyet; kesinti süresi artı baskı altında tanıdık olmayan bir sistemi teşhis etme telaşıdır.
- Güvenlik borcu. 1883 portunda
allow_anonymous trueile unutulmuş bir test listener'ı, broker'ların internete açık hale gelmesinin yaygın bir yoludur. - Bilginin tek kişide toplanması. Broker'ın nasıl yapılandırıldığını çoğu zaman tek bir kişi bilir. O kişi ayrıldığında bilgi de onunla gider.
Bunları sayılara dökmenin yapılandırılmış bir yolu için MQTT broker toplam sahip olma maliyeti makalesine bakın. Kendi maaş ve olay rakamlarınızı kullanın; genel sayılar nadiren gerçeklikle örtüşür.
Güvenlik Sorumlulukları: Kim Neyden Sorumlu
Güvenlik her iki modelde de paylaşımlıdır, ancak paylaşım farklıdır.
Kendi sunucunuzdaki bir broker ile her şey size aittir: güvenlik duvarı kuralları, TLS yapılandırması, şifreleme takımı seçimleri, parola hash'leme, ACL dosyaları, işletim sistemi sıkılaştırması, log saklama ve saldırı müdahalesi.
Yönetilen bir broker ile platform katmanı sağlayıcıya aittir. Örneğin ConnectMQ'da platform; Let's Encrypt sertifikasıyla 8883 portunda TLS ve 8084 portunda Secure WebSocket, çok kiracılı izolasyon, plan bazlı kotalar, flood koruması, tekrarlanan başarısız girişlerden sonra IP engelleme ve verdiği kimlik bilgilerine bağlı client ID'ler sağlar. Sizin sorumluluğunuzda kalanlar:
- Kullanıcı adlarını ve parolaları public depoların ve firmware dökümlerinin dışında tutmak.
- Üretimde cihazlardan düz 1883 yerine TLS (8883 veya 8084) kullanmak.
- Hassas verilerin yayınlanmaması gereken yerlerde yayınlanmaması için topic'leri tasarlamak.
İstemci tarafı MQTT güvenliği en iyi uygulamaları rehberinde ayrıntılı olarak ele alınıyor.
Kendi Sunucunuzda Barındırmak Ne Zaman Doğru Tercihtir
Kendi sunucunuzda barındırmak şu durumlarda uygundur:
- Ağ izole olduğunda. Hava boşluklu bir tesis ya da güvenilir bağlantısı olmayan bir gemi yerel bir broker'a ihtiyaç duyar.
- Bir hizmetin sunmadığı broker özelliklerine ihtiyaç duyduğunuzda; örneğin özel bir kimlik doğrulama eklentisi ya da belirli bir bridge yapılandırması.
- İzleme, yama ve nöbet süreçleri hazır olan olgun bir platform ekibini zaten işletiyorsanız; bu durumda bir hizmet daha eklemek marjinal olarak az efor getirir.
- Mevzuat şirket içi işleme gerektiriyorsa ve kendi ortamınızda tedarikçinin işlettiği bir dağıtım seçenek değilse.
Bu durumlarda bile birçok ekip, uzaktan erişim için yerel bir edge broker'ı bir MQTT bridge ya da gateway uygulamasıyla bir bulut broker ile birleştirir.
Yönetilen Broker Ne Zaman Daha İyi Seçimdir
Yönetilen bir broker genellikle şu durumlarda kazanır:
- Küçük bir ekipseniz ve kimse altyapı için nöbet tutmak istemiyorsa.
- Prototip geliştiriyor ya da ürün çıkarıyorsanız ve ilk çalışan cihaza ulaşma hızı derin özelleştirmeden daha önemliyse.
- Cihazlar internete dağılmışsa - evler, araçlar, uzak sahalar - ve TLS'li, kararlı bir public uç noktaya ihtiyaç duyuyorsa.
- Yükünüz adım adım büyüyorsa. Ücretsiz bir katmandan ücretli bir katmana ya da dedicated bir kümeye geçmek, bir sunucuyu yeniden mimarilemekten daha basittir.
ConnectMQ bu adımları ücretsiz Serverless planı (25 bağlantıya kadar, QoS 1'e kadar, 256 KB mesajlar), ücretli Serverless planı (1.000 bağlantıya kadar, QoS 2, 1 MB mesajlar, shared subscription'lar), izole Dedicated kümeler, BYOC ve bir Self Managed Enterprise seçeneğiyle karşılar.
Bugün Kullanabileceğiniz Bir Karar Matrisi
Projeniz için her satıra 0 ile 2 arasında puan verin, ardından her sütunu toplayın.
| Soru | Kendi sunucunda lehine puan | Yönetilen lehine puan |
|---|---|---|
| Broker internet erişimi olmadan çalışmak zorunda mı? | Evet ise 2 | 0 |
| Halihazırda nöbet tutan bir operasyon ekibiniz var mı? | Evet ise 2 | Hayır ise 2 |
| Özel broker eklentilerine ihtiyacınız var mı? | Evet ise 2 | 0 |
| Pazara çıkış süresi kritik mi? | 0 | Evet ise 2 |
| Cihazlar public internete dağılmış mı? | 0 | Evet ise 2 |
| Sistemi ikiden az kişi mi yönetecek? | 0 | Evet ise 2 |
| Öngörülebilir aylık harcama, en düşük ham sunucu maliyetinden daha mı önemli? | 0 | Evet ise 2 |
Yönetilen sütunu daha yüksekse yönetilen bir broker ile başlayın ve ihtiyaçlar değişirse daha sonra taşınabilmek için istemcilerinizi standart tutun. MQTT tedarikçi bağımlılığı makalesi taşınabilir kalmanın yolunu açıklıyor.
Yönetilen Modeli Beş Dakikada Test Edin
Farkı hemen hissedebilirsiniz. Mosquitto'nun komut satırı istemcileri kuruluyken public test broker'a abone olun ve yayın yapın:
# Terminal 1: abone ol (kendi benzersiz önekinizi kullanın)
mosquitto_sub -h broker.connectmq.com -p 1883 -i sub-7f3a9 -t "connectmq/demo/7f3a9/#" -v
# Terminal 2: yayınla
mosquitto_pub -h broker.connectmq.com -p 1883 -i pub-7f3a9 -t "connectmq/demo/7f3a9/temp" -m "21.4"
Ardından aynısını, portalda üretilen kimlik bilgileriyle TLS üzerinden kendi özel broker'ınıza karşı yapın:
mosquitto_pub -h broker.connectmq.com -p 8883 --capath /etc/ssl/certs \
-u YOUR_USERNAME -P YOUR_PASSWORD -i YOUR_CLIENT_ID \
-V mqttv5 -t "plant1/line1/temp" -m "21.4"
Düzenlenecek sertifika yok, değiştirilecek yapılandırma dosyası yok. Bunu yukarıdaki kontrol listesiyle karşılaştırdığınızda kararın özüne ulaşmış olursunuz.
Yönetilen Bir MQTT Broker ile Başlayın
Matris yönetilen modeli işaret ediyorsa taahhüt vermeden önce ConnectMQ'yu gerçek cihazlarla deneyin. Kredi kartı gerektirmeden ücretsiz bir Serverless broker oluşturun, bir cihazı TLS üzerinden bağlayın ve mesajlarınızın gelişini izlemek için tarayıcı içi MQTT istemcisini ve canlı topic gezginini kullanın. Barındırma seçeneklerinin genel görünümü için bulut MQTT broker rehberini okuyun.
Sık Sorulan Sorular
Kendi sunucunuzdaki bir MQTT broker yönetilen bir broker'dan daha mı ucuzdur?
Sunucunun kendisi çoğu zaman daha ucuzdur, ancak toplam maliyet yamaları, sertifikaları, izlemeyi ve nöbet süresini de içerir. Küçük ekipler için insan maliyeti genellikle sunucu tasarrufundan ağır basar.
Yönetilen bir broker ile başlayıp daha sonra kendi sunucuma geçebilir miyim?
Evet; istemcileriniz standart MQTT 3.1.1 veya 5.0 kullanıyorsa ve sağlayıcıya özgü özelliklerden kaçınıyorsanız. Bu durumda broker değiştirmek host, port ve kimlik bilgilerini güncellemek anlamına gelir.
Yönetilen bir broker ile verilerimin kontrolünü kaybeder miyim?
Ne yayınladığınızın ve kimin kimlik bilgisine sahip olduğunun kontrolü sizde kalır. Broker'ın kendi bulut hesabınızda olmasını istiyorsanız BYOC dağıtımı altyapıyı orada tutarken işletmeyi tedarikçiye bırakır.
Hava boşluklu ağlardaki broker'lar ne olacak?
İzole bir ağ yerel bir broker'a ihtiyaç duyar. Yaygın bir model, tesis için yerel bir edge broker ile uzak dashboard'lar için yönetilen bir bulut broker'ı bir bridge ya da gateway ile bağlamaktır.



