Mesajlaşma-chat backendinde kullanılabilecek teknolojiler

764 views
Skip to first unread message

Ege

unread,
Nov 20, 2015, 3:05:45 PM11/20/15
to istanbul-coders
Merhabalar,

Dün oturup uzun uzadıya bu konu hakkında yazmıştım ama sabah baktığımda sanki hiç yazmamışım gibi hiçbir yerde bulamadım açtığım konuyu. Neyse daha uzatmadan meseleye gireyim.

Mobil platformlar için geliştirilecek gerçek zamanlı, pili tüketmeyecek, sıralı olmasındansa güvenilir data iletimi (o mesaj öyle ya da böyle gidecek yani) ön planda olan bir uygulama geliştirme için son birkaç gündür araştırma yapıyorum. Kapsamı WhatsApp kadar geniş olmasa da saniyede 10k - 100k (daha ileride 1m) mesaj iletimini destekleyecek bir sunucuya ihtiyacımız var. Fakat şu aşamada böyle bir mimari nasıl kurulur bilmiyorum.

Araştırırken şu teknolojilerle karşılaştım: ejabberd, RabbitMQ, ZeroMQ, Crossbar.IO, Apache Kafka (evet Emre Akış'ın sunumunu da izledim ^^), Mosquitto. Bu bahsettiklerim farklı farklı protokollerin (XMPP, AMQP, WAMP, MQTT) implementasyonları (bunun Türkçesi varsa yazarsanız sevinirim). Mobil uygulamada yoğunluklu kullanılacağı için XMPP'nin overhead'inin bataryayı sömürdüğünü okudum. Herhalde daha bataryasever bir uygulama için ejabberd üzerinde çokça oynama yapmak gerekir diye düşünüyorum.

Ayrıca böyle bir mesajlaşma backendinin ne kadar maliyeti olur? Önce saniyede 100-10k arasını destekleyecek bir kurulum mu yapmak önerilir? Sonradan bunu geliştirmesi, büyütmesi ne kadar masraflı olur?

Bu bahsettiğim teknolojilerde de şimdilik ufak tefek sorularım var: Bu teknolojiler (ejabberd, RabbitMQ vs) birbirinin yerini tutan teknolojiler mi yoksa birlikte kullanıldıklarında (RabbitMQ, ZeroMQ gibi. Mesela RabbitMQ'nun clusterları arası mesaj iletimini ZeroMQ ile sağlamamız oldukça kullanışlı bir yöntem diye okudum) daha işlevsel hale gelebilecek teknolojiler mi? Her birinin kullanıldıkları alanlar nelerdir, başka nelere bakmam önerilir? Biliyorum çok soru sordum ama daha önceden siz de bu işlere kafa yorduysanız ve rehberlik edebileceğinizi düşünüyorsanız çok minnettar kalırım. Önerilerinizde aradığım minimum şart bahsedeceğiniz teknolojilerin özgür yazılım, en olmadı açık kaynak olması. Sevgilerle, saygılarla.

Ege

Ayhan Sipahi

unread,
Nov 20, 2015, 3:15:29 PM11/20/15
to istanbu...@googlegroups.com
Selam Ege,

open fire a bakmışmıydın?
http://www.igniterealtime.org/projects/openfire/
incelemeni öneririm zira mobil tinder vari bir uygulamada chat kısmını bununla handle etmişti bir yazılımcı arkadaşımız.

projende başarılar,

--
Ayhan Sipahi

20 Kasım 2015 22:05 tarihinde Ege <egeogr...@gmail.com> yazdı:

--
* Mesaj alim frekansinizi grup uyelik ayarlarinizdan degistirebilirsiniz.
* Is arama veya ilan verme ile ilgili mailler icin konu kismina [IS_ILANI] tag'i eklemeniz gerekmektedir.
* Mesajlasmalarda her turlu hakaret ve satasma *uyari olmaksizin* uyeligin bitirilmesiyle son bulur.
* slack grubumuz: https://istanbulcoders.slack.com/ davetiye icin: http://goo.gl/forms/qc6Z78wpsL
* Is ilanlarinda grubu Ek Alici (cc) kismina koyun ki cevap donenler tum gruba donmesinler.
* Kisilere cevap yazacaginiz zaman, lutfen ilgili kisiyi alici (to) kismina koyun.
---
You received this message because you are subscribed to the Google Groups "istanbul-coders" group.
To unsubscribe from this group and stop receiving emails from it, send an email to istanbul-code...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Ege

unread,
Nov 20, 2015, 7:24:25 PM11/20/15
to istanbul-coders
Teşekkürler Ayhan geri dönüşün için. Evet openfire ı da duydum. ejabberd kadar kolay ölçeklenebilir değil fakat ayaklandırması daha kolay diye okudum. O arkadaşla üstüne konuşmayı isterim aslında. Verebileceğin/paylaşmak isteyebileceği bir iletişim bilgisi mevcut mudur?

20 Kasım 2015 Cuma 22:15:29 UTC+2 tarihinde Ayhan Sipahi yazdı:

Berker Gücur

unread,
Nov 21, 2015, 7:16:47 AM11/21/15
to istanbul-coders
Selamlar Node.js ve Socket.io ikilisine baktiniz mi? 
Benzer gereksinimlerin oldugu bir proje gelistiriyorum socketio kullanarak inceleyebilirsiniz.

20 Kasım 2015 Cuma 22:05:45 UTC+2 tarihinde Ege yazdı:

Ayhan Sipahi

unread,
Nov 21, 2015, 8:14:22 AM11/21/15
to istanbu...@googlegroups.com
Selam Ege, maalesef iletişimim koptu. ama bildiğim kadarıyla sohbetimizden bir parça anlatayım.
jabber kollanan bir proje geliştirmiştik şirket içerisinde. arkadaşlarkla konuştugumuzda neden jabber gibi birşey kullanmadınız diye sordugumda openfireın daha üstün oldugundan bahsetti fikrim bu yönde aktif kullanmadım.. db olarak postgresql kullanıyorlardı backend php (laravel) ile yazdıklarından bahsetti. vs vs. 

diğer bir konudan bahsedeyim https://www.meteor.com/ görmüşsündür. application geliştirirken backend olarak kullanabilirsin yada cordova ile app de çıkartabilirsin. realtime olarak çalışır arkasında mongo db kullanabiliyorsun. meteoru scale edebiliyorsun. database kısmında da scale edebilirsen gayet soruzsuz olacaktır.
alternatif olarak firebase e de bakabilirsin .
websoket desteğine platform desteğini araştırabilirsin. hedeflediğin platformlar destekliyorsa hızlı bir başlangıç yapabilirsin. 
Başarılar :)

--
Ayhan Sipahi

21 Kasım 2015 14:16 tarihinde Berker Gücur <brkr...@gmail.com> yazdı:

--

Yusuf Altun

unread,
Nov 21, 2015, 8:16:30 AM11/21/15
to istanbu...@googlegroups.com

Merhabalar oncelikle mobil uzerinde openfire performansli calismamakta.  Android uzerinde device id ile chat yazabilirsin.  Direk olarak o idli telefona gondermen daha mantikli olur. Google arka tarafta kuyruklama bekletme ve network status'lerine gore mesaji aliyo.  Senin yapman gereken gelen notification'lari dinlemen yetecektir.

Saygilarimla.

21 Kas 2015 14:16 tarihinde "Berker Gücur" <brkr...@gmail.com> yazdı:
--

Deniz Gokdunek

unread,
Nov 21, 2015, 11:21:35 AM11/21/15
to istanbu...@googlegroups.com
Selamlar ;
Kafka güzel bir sistemmiş gibi dursa da  zookeper gibi bir dezavantajı var. ZooKeeper CAP teorisiyle(consistency availability partition tolerance) geliştirilmiş   CP sistemi.Yani clusterindaki aktif node sayın  (n + 1) / 2 den küçük olamaz.Diyelim ki 5 node'un var  bunların 3 her zaman ayakta olmalı yoksa sistem çalışmaz.Web tabanlı bir uygulama gerçekleştirecek olsaydın jabber gerçekten çok kullanışlı olabilirdi.Ancak mobilde senin bahsettiğin  gibi kullandığı protokolden dolayı tam bir battery canavarına dönüşüyor.Hatta amcalarda bunu kabul etmişler "A mobile client might want to receive messages but not presence notifications, since the latter are quite "chatty" and can run down the battery"(http://xmpp.org/extensions/xep-0273.html#intro) . Facebook daha öncelerde  jabberdan MQTTya geçtiğini duyurmuşlardı.https://www.facebook.com/notes/facebook-engineering/building-facebook-messenger/10150259350998920 .Yazıda da belirtmişler sanırım en büyük etken mobil telefonlardaki battery sıkıntısıydı.RabbitMQ'un MQTT desteği var.AMQP ile birlikte kullanmıştım MQTT ile hiç kullanmadım performansında bir değerlendirme yapamıyorum. Server tarafıyla şimdilik uğraşmayayım sonra projeyi kullandıkça  gerekirse geçerim dersen şunlara bir göz at derim :

Sevgiler, 
Deniz




21 Kasım 2015 15:16 tarihinde Yusuf Altun <yal...@qualist.com> yazdı:

Ege

unread,
Nov 21, 2015, 2:58:01 PM11/21/15
to istanbul-coders
Merhaba Berker. Evet socket.io ya da bakmıştım. Birkaç yerde dokümentasyonun kötülüğünden ve github'daki issue'ların çok geç kapanmasından söz ediliyordu. Sockjs'in ise bu konuda daha az sıkıntısı var gibi gözüküyor. Socket.io anladığım kadarıyla pub/sub özelliğini doğrudan bize sunmuyor, bizim o yapıyı kurmamız gerekiyor. Proje büyüdükçe socket.io'da yazacağımız bu yapı ne kadar ölçeklenebilir olacak onu bilmiyorum. Senin de tecrübelerini bu konuda dinlemek isterim tabii.

Ege

unread,
Nov 21, 2015, 3:11:49 PM11/21/15
to istanbul-coders
Merhaba Ayhan, tamamdır Firebase'e bakacağım. Meteor'u da incelemiştim ve mobil uygulamalara desteğinin kolaylığı (pratikte de öyleyse eğer) hoşuma gitti. Mobil tarafında Ionic kullanabiliriz. Meteor ile uyumlu çalışacağını umuyorum. Benim daha çok merak ettiğim frameworkten ziyade message broker'a ihtiyacımızın olup olmaması. Acaba bunu sadece NoSql veritabanı kullanarak halledebilir miyiz yoksa gerçek zamanlı mesajlaşma için dediğim gibi message broker'lara ihtiyacımız olacak mı? İleride bu verinin neredeyse gerçek zamanlı işlenmesi de konu dahilinde olacağı için olası bottleneck'leri önceden düşünmek istiyorum. Ama sanırım çözümlerin bazılarını da süreç içinde deneye yanıla göreceğiz. Teşekkürler yardımın için :)

Ege

unread,
Nov 21, 2015, 3:16:00 PM11/21/15
to istanbul-coders
Merhaba Yusuf, Google bunları yapıyor derken tam olarak neyden bahsediyorsun? Hybrid mobil uygulama yapmak şu an daha çekici geliyor Ionic desteğiyle. Dediğini sence yine yapabilir miyiz? IOs için ne yapmamızı önerirsin?

Ege

unread,
Nov 21, 2015, 4:04:19 PM11/21/15
to istanbul-coders
Selam Deniz, Zookeeper'ın bu şartını bilmiyordum söylediğin iyi oldu. RabbitMQ üzerine daha fazla düşüneceğim. Client tarafını Ionic ve socket.io ile yapabiliriz gibime geliyor. Başlangıç için önerdiğin bulut çözümlerine bakacağım. Teşekkürler çok.

Bahtiyar AKBAŞ

unread,
Nov 22, 2015, 11:09:45 AM11/22/15
to istanbu...@googlegroups.com
Ionic için platform ve platform versiyon desteklerini kontrol edin. Android 4.1 ve windows mobile ortamında sıkıntılar çıkarabiliyor.

2015-11-21 23:04 GMT+02:00 Ege <egeogr...@gmail.com>:
Selam Deniz, Zookeeper'ın bu şartını bilmiyordum söylediğin iyi oldu. RabbitMQ üzerine daha fazla düşüneceğim. Client tarafını Ionic ve socket.io ile yapabiliriz gibime geliyor. Başlangıç için önerdiğin bulut çözümlerine bakacağım. Teşekkürler çok.

Yusuf Altun

unread,
Nov 23, 2015, 2:19:32 AM11/23/15
to istanbu...@googlegroups.com
Selam Ege 

Hayır Hibrit falan değil google'ın api ile karşıdakinin device id'sine istediğin datayı gönderebilirsin. Aynı mantıkla whatsap. key value tarzında keyi cep telefonu numarası value'da device id olacak sekilde mapleniyor. Birsey gönderdiğinde oda google otomatik olarak telefonun bildirimine düşürüyor mesajını. 




22 Kasım 2015 18:09 tarihinde Bahtiyar AKBAŞ <bahtiya...@gmail.com> yazdı:



--

Yusuf Altun

Software Developer

 

  

 

Pratikkod Yazılım Geliştirme ve Ticaret A.Ş.
Büyükdere Caddesi No: 38
Mecidiyeköy İstanbul 34387
t: +90 (212) 315-5990

f: +90 (212) 288-7215
yaltun@qualist.com

9105081600_305393 teknik seminer

Yusuf Altun

unread,
Nov 23, 2015, 2:21:39 AM11/23/15
to istanbu...@googlegroups.com
Selam ege

Kendi isteğine göre Hİbrit olarak da yapabilirsin tabiki bunu. Senin tercihine kalmış

23 Kasım 2015 09:19 tarihinde Yusuf Altun <yal...@qualist.com> yazdı:

Yusuf Altun

unread,
Nov 23, 2015, 2:22:39 AM11/23/15
to istanbu...@googlegroups.com
IOS içinde benim bilgim bukadardi :) IOS platform konusunda pek bi deneyim sahibi değilim .:)

23 Kasım 2015 09:21 tarihinde Yusuf Altun <yal...@qualist.com> yazdı:

Ege

unread,
Nov 23, 2015, 11:52:50 AM11/23/15
to istanbul-coders
Selam Yusuf,

Google Cloud iOS için de desteğini açıklamış 2013'te.
Ne kadar tutarlı, kullanışlı bilmiyorum ama merak eden varsa yazayım diye dedim.

23 Kasım 2015 Pazartesi 09:22:39 UTC+2 tarihinde Yusuf Altun yazdı:

Yusuf Altun

unread,
Nov 23, 2015, 1:01:34 PM11/23/15
to istanbu...@googlegroups.com
Selam Ege 

Yani diğer server'lara göre cok performanslı. Sonucta google cloud kullanıyorsun. Senin 3. parti yazılımlar la ugrasmana gerek birakmiycagini dusunuyorum. Birak google halletsin. Ama diger platformlarla(Facebook Chat. Hangout Skype Lync) da mesajlasma olanagi olsun istiyorsan xmpp standardi varmi bilmiyorum. Ona bakman gerekcek. Ama bosver diger platformlari diyorsan google cloud ideal diye dusunuyorum. Ki android zaten bu notification' lari zaten dinlemekte. Hatirladigim kadariyla batarya probleminden bahsetmissin. Senin yazacagin harici bi serviste batarya kullanim oranini artiracak. 

23 Kasım 2015 18:52 tarihinde Ege <egeogr...@gmail.com> yazdı:

Oğuzhan EREN

unread,
Nov 25, 2015, 10:38:18 AM11/25/15
to istanbul-coders
platformu bilmiyorum ama: signalr + redis ?


20 Kasım 2015 Cuma 22:05:45 UTC+2 tarihinde Ege yazdı:
Merhabalar,

Ege Öğretmen

unread,
Nov 25, 2015, 10:44:38 AM11/25/15
to istanbu...@googlegroups.com, istanbul-coders
.NET platformu düşünmüyoruz ama teşekkürler tavsiye için :)
--
* Mesaj alim frekansinizi grup uyelik ayarlarinizdan degistirebilirsiniz.
* Is arama veya ilan verme ile ilgili mailler icin konu kismina [IS_ILANI] tag'i eklemeniz gerekmektedir.
* Mesajlasmalarda her turlu hakaret ve satasma *uyari olmaksizin* uyeligin bitirilmesiyle son bulur.
* slack grubumuz: https://istanbulcoders.slack.com/ davetiye icin: http://goo.gl/forms/qc6Z78wpsL
* Is ilanlarinda grubu Ek Alici (cc) kismina koyun ki cevap donenler tum gruba donmesinler.
* Kisilere cevap yazacaginiz zaman, lutfen ilgili kisiyi alici (to) kismina koyun.
---
You received this message because you are subscribed to a topic in the Google Groups "istanbul-coders" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/istanbul-coders/hQkU_83gKSs/unsubscribe.
To unsubscribe from this group and all its topics, send an email to istanbul-code...@googlegroups.com.

Ayhan Sipahi

unread,
Dec 11, 2015, 4:04:33 AM12/11/15
to istanbu...@googlegroups.com

--
Ayhan Sipahi

25 Kasım 2015 17:44 tarihinde Ege Öğretmen <egeogr...@gmail.com> yazdı:
You received this message because you are subscribed to the Google Groups "istanbul-coders" group.
To unsubscribe from this group and stop receiving emails from it, send an email to istanbul-code...@googlegroups.com.

kamil çakır

unread,
Dec 11, 2015, 7:20:03 AM12/11/15
to istanbul-coders
Merhaba Ege,

Ben playframework - websocket mimarisiyle mobil bir chat uygulaması yazdım. Android markette https://play.google.com/store/apps/details?id=com.anten.chatin  
yeni yayınladım. Websocket normalde html5 ile gelen bir teknoloji fakat mobil uygulamalar için android ve ios websocket sdklar var. Bu altyapıyla uygulamayı büyütmeye çalışacağım. BU linkten play-websocket mimarisini inceleyebilirsin. Actor modeli kullandım. Bu mimariyi öneririm.

Kamil ÇAKIR

M. Deniz Oktar

unread,
Dec 13, 2015, 11:46:02 AM12/13/15
to istanbul-coders
Selam,

Kafka aslında maintain etmesi kolay bir ürün, ancak yine de uğraşmak istemezseniz amazon un kinesis i işleri epey kolaylaştırıyor.

Ege

unread,
Dec 14, 2015, 3:15:57 PM12/14/15
to istanbul-coders
Teşekkürler Ayhan, Kamil ve Deniz. Önerdiklerinizi listeme ekledim :)

13 Aralık 2015 Pazar 18:46:02 UTC+2 tarihinde M. Deniz Oktar yazdı:
Reply all
Reply to author
Forward
0 new messages