Discord benzeri uygulama yapmak için hangi yazılım dilini bilmem gerekı?


Yani hocam dediklerinizden çok anlamadım ama sanırım Python tek yetmeyecek. Öyle bir uygulama yapmak için neleri bilmem gerek ve Revolt'dan nasıl yapılıyor? Basitçe anlatır mısınız? Ve uygulamayı sadece aramızds kullancaz o yüzden tek sunucu yetmez mi?
 
Tek sunuculu bir sey yapmak istiyorsan WebRTC ustune bir sey yapabilirsin. Tek Python yeter ama front end icin de biraz HTML/CSS/JS bilmen lazim.
 
Hocam mesajlasma servisi neden RDBMS ile islemez? NoSQL cok daha verimli mi oluyor. Sadece NoSQL kullanan DB'ler mesajlasma gecmisi gibi veriler midir. Yani bir DWH mı kurulur?

Tesekkür ederim.

Yani isin özü bu tarz projeler monolit yapıda veri saklamaz diyebilir miyiz?
 
Madem python başladın, python ile devam et. Klasik tcp/udp üzerinden socket programlama yap. iki farklı client sunucunla (socket-server) eşleşsin ve sunucu üzerinden mesajlaşabilsinler.
UI şimdilik gerek yok, server tarafını hallettikten sonra girersin UI kısmına. Bu sebeple yine python console üzerinden mesajlaşmasını sağlayabilirsin.

Mesajlaşma kısmını hallettikten sonra, mesajları bir yere kaydet. Nereye kaydettiğin, senin için önemli değil.

Sonra UI tarafını halledeceksin. Socket destekleyen bir programlama dili ile client tarafınıda halledersin. Sadece masaüstü bir proje istiyorsan, python tkinter veya qt ile yapılabilir. Yada WebSocket kullanacaksın, web üzerinden devam edeceksin.

İnternette zibilyon tane örnek var artık bu konu ile ilgili. Hatta birçok kütüphane bile var.

Ve uygulamayı sadece aramızds kullancaz o yüzden tek sunucu yetmez mi?
Discord alternatif uygulamalar var bunları neden kullanmıyorsun o halde? Team, Slack, Skype vs?
Bu tarz bir proje yapmak için hem zaman hemde maddi kaynak lazım.
 

Tamamdıe hocam. Zaten arkadaşlarımla şu an Microsoft Teams kullanıyoruz vize yetiyor sadece öyle bahane olsun diye yapmak istiyorum.


Peki hocam o dediğiniz UI, TCP HDP falan ne demek ben hiç anlamıyorumda.
 
Peki hocam o dediğiniz UI, TCP HDP falan ne demek ben hiç anlamıyorumda.
UI; user interface kelimelerin baş harfinden geliyor. Arayüz açıkçası.

Tcp/udp; bir internet protokolü. Mesajlaşmayı sağlar.
Tcp, güvenli bağlantı sağlar. Gönderilen paket (gönderilen data genelde packet olarak geçer) karşı tarafa ulaştığını garanti eder. Ayrıca paketleri sırayla gönderir. Dosya indirme, mesajlaşma gibi yapılar için uygun.
Udp de güvenlik önemli değil. Karşıya ulaştı mı ulaşmadı mı sırayla gitsin falan gibi dertleri yok. Sender gönderdi mi? Evet. Bitti. Receiver almadıysa yapacak bir şey yok der. Bu yüzden hızlıdır. Oyunlarda, canlı yayın gibi ıvır zıvırda tercih edilir. Mesajlaşmada kesinlikle tercih edilmemeli.

Hobi olsun diye yapabilirsin. Yukarıda bahsettiğim şekilde yap. Hem python bilgin gelişir hemde socket programlama nedir öğrenmiş olursun.
 

Teşekkürler hocam. Sağ olun.
 
Hocam mesajlasma servisi neden RDBMS ile islemez? NoSQL cok daha verimli mi oluyor. Sadece NoSQL kullanan DB'ler mesajlasma gecmisi gibi veriler midir. Yani bir DWH mı kurulur?
NoSQL databaseleri genelde daha yuksek I/O kapasitesine sahip ve daha dusuk gecikmeye sahipler (Constraintler yok, esnek yapi, dolayisiyla sadece indexing). Bunun arkasindaki sebep icin ACID ve BASE farklarini aratabilirsin. NoSQL veritabanlari genelde BASE modeli kullanirlar (ACID destekleyebilirler ancak tercih edilmelerinin sebebi BASE'in getirdigi esneklik).

Bir diger artilari yuksek olceklenebilirlik. RDBMS'leri olceklemek zor. Constraintlerinden birinin varligini tum databaselerde aratmasi gerekirse (farkli farkli sunucularda) latency git gide artacak. No constraint/no relation olarak kullanmayi deneyebilirsin ancak hala yatay olceklemeye uygun degiller genelde. En azindan geleneksel olanlari. NewSQL cozumleri yatay olceklemeyi destekleselerde NoSQL cozumlerini olceklemek daha kolay.

DWH kurmuyoruz ayrica. Yani tam olarak degil. Discord benzeri platformlar, dagitik sistemlerdir. Verilerinin nerede depolanacagi sistem yukune, veri egemenligi yasalarina, cografi dagilim, replikasyon gibi konulara bagli olarak degisir.

Senin siteye girisinden itibaren surec asagi yukari soyle isliyor;
Giris bilgilerini gonderdigin sunucu geneldi kisitli sayidadir ve sayisi COK nadiren degisir. HAProxy veya Nginx benzeri bir loadbalancer ile kisitli sayidaki sunuculardan birine yonlendirilir ve giris istegin o sunucu tarafindan yonetilir. Buraya kadar olan sunucularin kullandiklari veriler icin DWH'lar kurulmus olabilir. Fakat buradan sonrasi full decentralized. Sen giris yaptiktan sonra, sana en dusuk gecikmeli sunucu tespit edilir ve senin baglantin oraya aktarilir.

Bunu yapabilmesini saglayan sey buradan sonra baglantilarin standard HTTP baglantilar yerine websocket baglantilarina donusmesi. Senin isteklerin artik post/get requestler yerine websocket mesajlari haline gelir. (Bunu saglayan sey ise client side icin yazdiklari sistem. Butonlara URL linkleri koymak yerine websocket mesajlari gonderecek fonksiyonlar koyuyorlar. Websocket'te HTTP protokolu kullanir ama daha sonrasinda karsi sunucuyla handshake bittiginde upgrade isteyip duplex bi baglanti acik tutar.) Simdi bu websocket baglantilari ile kendine en yakin sunucuya gonderdigin her istek, sunucu tarafindan belirlenen en uygun bolgeye aktarilir. Dolayisiyla veriler daginik bir sekilde rastgele bolgelerde tutuluyor olurlar. (Tamamen rastgele degil tabii ki, yukarida bahsettigim sartlardan birine gore aktarilir.)
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için çerezleri kabul etmelisiniz. Daha Fazlasını Öğren.…