linkle mimari
TRANSCRIPT
![Page 1: Linkle mimari](https://reader035.vdocuments.pub/reader035/viewer/2022062522/58a504ec1a28abce778b6d7b/html5/thumbnails/1.jpg)
LinkleYazılım ve Mimari
![Page 2: Linkle mimari](https://reader035.vdocuments.pub/reader035/viewer/2022062522/58a504ec1a28abce778b6d7b/html5/thumbnails/2.jpg)
Özet• Gereksinimler• Teknolojiler• Yazılım• Mimari• Ölçekleme• Session ve Ortak Datalar
• Önbellekleme (Redis)• Search Engine
(Elasticsearch)• Veri Tabanı (Mysql)• File Storage• Yapılacaklar (Teknik)• Yapılacaklar (Proje)• Uyarı• Katkı ve Destek
![Page 3: Linkle mimari](https://reader035.vdocuments.pub/reader035/viewer/2022062522/58a504ec1a28abce778b6d7b/html5/thumbnails/3.jpg)
Gereksinimler:• # Linkme Requirements
• This project use the:
• ## Redis: • Cache operations• Distributed architecture in
central storage• Session and other application
data
• ### Config• Session handler,• Cache servers
• ## Elasticsearch:• Record index and search
operations•• ### Config• Server configuration and app
config
• ## File Storage:• For Record saved file.
• ## DB Server(Mysql)• Database
• ## Other Requirements:• Composer packages install
![Page 4: Linkle mimari](https://reader035.vdocuments.pub/reader035/viewer/2022062522/58a504ec1a28abce778b6d7b/html5/thumbnails/4.jpg)
Teknolojiler• PHP• Symfony Framework• Doctrine ORM, Twig, Service, Bundles <3 Love • Mysql• Elasticsearch• Redis• Nginx• Git• Apache Benchmark• Cloud Computing
![Page 5: Linkle mimari](https://reader035.vdocuments.pub/reader035/viewer/2022062522/58a504ec1a28abce778b6d7b/html5/thumbnails/5.jpg)
Yazılım• Php Symfony sunduğu nimetlerden yararlanıldı.
• Katmanlı mimari ve Service yaklaşımı ile uygulama içerisinde iş akışları kontrollü ve sistemli şekilde sağlanmaktadır.
• Değişim ve geliştirmelere hızlı yanıt verebilecek esnek yapılar oluşturulmaya çalışıldı.
• Tasarım desenlerinden (Design pattern) faydalanmayı seviyoruz.
![Page 6: Linkle mimari](https://reader035.vdocuments.pub/reader035/viewer/2022062522/58a504ec1a28abce778b6d7b/html5/thumbnails/6.jpg)
Yazılım• Log & profiler analizi ile performans ve
iyileştirmeler.
• Açık Kaynak dünyasından faydalanıldı. Teşekkürü borç biliriz.
• Cache katmanı geliştirildi. Böylece ilgili sınıfları bozmadan ara katman olarak cache işlemleri sağlandı.
• Redis aktif olarak kullanıldı.
![Page 7: Linkle mimari](https://reader035.vdocuments.pub/reader035/viewer/2022062522/58a504ec1a28abce778b6d7b/html5/thumbnails/7.jpg)
Yazılım• Web API servisler henüz yok.
• Ancak yazılım mimarisinde BLL(Business Logic Layer) ve diğer katmanlar alt yapı olarak hemen hemen uygun geliştirildi.
• Sürüm kontrol ve kaynak kod yönetim aracı olarak GIT kullanıldı.
• Apache Benchmark ile testler yapılıyor.
![Page 8: Linkle mimari](https://reader035.vdocuments.pub/reader035/viewer/2022062522/58a504ec1a28abce778b6d7b/html5/thumbnails/8.jpg)
Mimari• Sistem yatay ölçeklenebilirlik göz önünde
bulundurularak tasarlanmaya çalışıldı.
![Page 9: Linkle mimari](https://reader035.vdocuments.pub/reader035/viewer/2022062522/58a504ec1a28abce778b6d7b/html5/thumbnails/9.jpg)
Mimari•Gereksinimler:
•Web uygulaması•Veri tabanı•Gelişmiş aramalar için search engines•Cache işlemleri (Yoğun istek ve sosyal
taraf)•File Storage (Store dosyaları tutmak için)
![Page 10: Linkle mimari](https://reader035.vdocuments.pub/reader035/viewer/2022062522/58a504ec1a28abce778b6d7b/html5/thumbnails/10.jpg)
İlk Bakış• Klasik sistem.• Tek sunucu ile tüm gereksinimleri
karşılamak ? :S• Dikey ölçekleme(vertically scale, scale up)
![Page 11: Linkle mimari](https://reader035.vdocuments.pub/reader035/viewer/2022062522/58a504ec1a28abce778b6d7b/html5/thumbnails/11.jpg)
Tek Sunucu Dikey Ölçekleme• Gereken bileşenler göz önüne alındığında tek sistemin
sorunsuz çalışabilmesi zor. Hepsi aynı bellek,cpu,hdd vs kullanacak. Arama, Cache, App, DB … ?
• Makinenin donanımsal kaynaklarını arttırarak ve/veya optimize ederek işlem kapasitesini arttırmak.
• Maliyet.• Makinenin down olması durumunda tüm sistem gider.• Riskli• Uygulama bazında bakım, onarım, optimizasyon vb
çalışma güçlüğü.
![Page 12: Linkle mimari](https://reader035.vdocuments.pub/reader035/viewer/2022062522/58a504ec1a28abce778b6d7b/html5/thumbnails/12.jpg)
Dikey ve Yatay Ölçekleme
![Page 13: Linkle mimari](https://reader035.vdocuments.pub/reader035/viewer/2022062522/58a504ec1a28abce778b6d7b/html5/thumbnails/13.jpg)
Yatay Ölçekleme• Bir çok ucuz makinelerin bir araya gelerek
güçlerini birleştirmesi şeklinde açıklanabilir.• İşlemler bu makineler arasında paylaştırılır.
• Bu sayede hem hızlı sonuçlar alınır hem de yedeklilik sağlanır
• Yüksek erişebilirlik sağlar.• Dağıtık yapı. Dağıt. Ölçekle.• Ucuza ve hızlı şekilde kaynak arttırmaya
gidilebilir.• Kompleks yapı, yönetim ve uygulama zorlukları.
![Page 14: Linkle mimari](https://reader035.vdocuments.pub/reader035/viewer/2022062522/58a504ec1a28abce778b6d7b/html5/thumbnails/14.jpg)
Ölçekleme• Hem kullanılan bileşenlerden hem de artan
kullanıcı yükünü karşılayabilme adına yatay ölçekleme.
![Page 15: Linkle mimari](https://reader035.vdocuments.pub/reader035/viewer/2022062522/58a504ec1a28abce778b6d7b/html5/thumbnails/15.jpg)
Dağıtma 1• İlk iş web apps leri clone halinde ayrı sunucuda
hizmet verecek şekilde ayarlama. Şuan 2 Web Applications.
• Web apps ler üzerine gelen trafiği dağıtmak adına önlerine load balancer kurduk.
![Page 16: Linkle mimari](https://reader035.vdocuments.pub/reader035/viewer/2022062522/58a504ec1a28abce778b6d7b/html5/thumbnails/16.jpg)
Dağıtma 1• Bu sayede artık web apps ler sayısı artabilecektir.
• Kullanıcılardan gelen istekler yük dağıtıcı tarafından, hizmet veren makinelerimiz arasında paylaştırılır.
![Page 17: Linkle mimari](https://reader035.vdocuments.pub/reader035/viewer/2022062522/58a504ec1a28abce778b6d7b/html5/thumbnails/17.jpg)
Dağıtma Session Problem• Web uygulamalarını çoğalttık ve arttıra da biliyoruz gelen
yükü karşılayabilmek için genişletebiliyoruz.
• Ama burada unutulmaması gereken session yönetimi.
• Default olarak sessionlar oturum açılan makinede dosya şeklinde saklanırdı.
• Bu sebeple sunuculara yük dağıtma işleminde diğer makineler sessionlardan haberdar olamayacaklar.
• Ve bunun gibi ortak kullanılması gereken veriler için bir çözüm gerekir.
![Page 18: Linkle mimari](https://reader035.vdocuments.pub/reader035/viewer/2022062522/58a504ec1a28abce778b6d7b/html5/thumbnails/18.jpg)
Hangi Veriler Ortak ?• Session verileri• File Store• Statik dosyalar• Veri tabanı• Loglar
• Gibi tüm sunuculardan ortak şekilde ulaşılabilir, kullanılabilir olması gerekenler.
![Page 19: Linkle mimari](https://reader035.vdocuments.pub/reader035/viewer/2022062522/58a504ec1a28abce778b6d7b/html5/thumbnails/19.jpg)
Session Çözüm• Bunun için 2 çözüm var.
• 1) persistent load balance • Kalıcı Yönlendirme
• 2) share store Paylaşılan depolama
![Page 20: Linkle mimari](https://reader035.vdocuments.pub/reader035/viewer/2022062522/58a504ec1a28abce778b6d7b/html5/thumbnails/20.jpg)
Session Ayarlama• Php de session store değiştirmek için php.ini de
bulunan session ayarları düzenlenmeli.
• Session handler ile session verilerinin nerede saklanacağı session name gibi bilgilerle özelleştirebileceğimiz ayarlar.
http://php.net/manual/en/session.customhandler.php
![Page 21: Linkle mimari](https://reader035.vdocuments.pub/reader035/viewer/2022062522/58a504ec1a28abce778b6d7b/html5/thumbnails/21.jpg)
Share Store Türleri• Paylaşımlı depolama türleri:
• File System• Database• Memcached• Redis
• Diğer çözümler.
![Page 22: Linkle mimari](https://reader035.vdocuments.pub/reader035/viewer/2022062522/58a504ec1a28abce778b6d7b/html5/thumbnails/22.jpg)
Önbellekleme (Redis)• Redis açık kaynak, memory tabanlı key-value
depodur.• Verileri bellekte tutar. Bu sebeple çok hızlıdır.• Ayrıca kalıcı olarak da belli aralıklarla veriyi
diske yazabilir.• Çeşitli veri tipleri destekler.
(string, hash, liste, küme ve sıralı liste)• Bu veriler üzerinde bir çok işlem yapabilme
olanağı.• Master – Slave desteği
![Page 23: Linkle mimari](https://reader035.vdocuments.pub/reader035/viewer/2022062522/58a504ec1a28abce778b6d7b/html5/thumbnails/23.jpg)
Önbellekleme (Redis)• Session verileri ve diğer cache işlemleri için
işimize yaracak olan Redis’ i ortak session havuzu tutmak için de kullandık.
• Böylece makineler arası ortaklık sağlandı session bazında.
• Veri tabanı sorgularını azaltmada çok iş üstlendi.
• Timeline, duvar, kullanıcı linkleri, kuyruk, doctrine meta bilgileri …
![Page 24: Linkle mimari](https://reader035.vdocuments.pub/reader035/viewer/2022062522/58a504ec1a28abce778b6d7b/html5/thumbnails/24.jpg)
Search Engines (Elasticsearch)• Java ile geliştirilmiş açık kaynak, lucene tabanlı,
ölçeklenebilir bir tam metin(full text) arama motoru ve veri analiz aracıdır.
• Gerçek zamanlı(real-time) ve dağıtık(distributed)• BigData(Büyük veriler ile çalışan sistemler)
yapılarda içerik aramaları, veri analizi ve sorgulamalar için kullanılmakta.
• RESTfull Api• Kolay kurulum, konfigure, kullanım
![Page 25: Linkle mimari](https://reader035.vdocuments.pub/reader035/viewer/2022062522/58a504ec1a28abce778b6d7b/html5/thumbnails/25.jpg)
Search Engines (Elasticsearch)• Kullanıcı paylaşımlarının analizi ve inexlemesinde• Full text ve detaylı aramalarda• Öneriler• Akıllı arama ve tamamlamalar
• Kullanıyoruz ve kullanacağız.
![Page 26: Linkle mimari](https://reader035.vdocuments.pub/reader035/viewer/2022062522/58a504ec1a28abce778b6d7b/html5/thumbnails/26.jpg)
Veri Tabanı (Mysql)• Verilerin depolanması• Yönetilmesi
• Tek sunucu,• Daima sorgular kontrol edilecek• Optimize edilecek • Yedekleme
![Page 27: Linkle mimari](https://reader035.vdocuments.pub/reader035/viewer/2022062522/58a504ec1a28abce778b6d7b/html5/thumbnails/27.jpg)
File Storage (KnpGaufretteBundle)• Kullanıcıların fiziki olarak depolamak istedikleri
link sayfalarının merkezi olarak depolanması.
• Tüm web apps lerden ortak olarak erişebilme.• İhtiyaç arttıkça kolay ölçekleyebilme, arttırma• Cloud desteği
• Farklı methodlar barındırması:• Amazon S3, Dropbox , Azure Blob Storage, • GridFS , GoogleCloudStorage, Ftp, FileSystem
![Page 28: Linkle mimari](https://reader035.vdocuments.pub/reader035/viewer/2022062522/58a504ec1a28abce778b6d7b/html5/thumbnails/28.jpg)
Ne Yani ?
![Page 29: Linkle mimari](https://reader035.vdocuments.pub/reader035/viewer/2022062522/58a504ec1a28abce778b6d7b/html5/thumbnails/29.jpg)
Yapılacaklar (Teknik)• Link Kaydetmede geçen süreyi minimuma indirme
iyileştirme. MQ(Message Queue) ile planlanıyor.• Storage Limitler: Depolama için limit getirilebilir.• Arama alt yapısı: Şuan geçici.• Akıllı öneri ve arama sistemleri• Beğeni ve Yorumlar• Link Bilgileri: Linke ait gerçek değerlendirme
sonuçları• Güvenlik (A-Z)• Cache: Daima geliştirilerek • Log
![Page 30: Linkle mimari](https://reader035.vdocuments.pub/reader035/viewer/2022062522/58a504ec1a28abce778b6d7b/html5/thumbnails/30.jpg)
Yapılacaklar (Proje)• Blog tarzı kendi içerik sayfanızı oluşturup
kaydedebilme.
• Link kısaltma servisi
• Tarayıcı eklentileri
• Mobil Uygulama
• Kategori ve Sıralamalar
• UI Tasarımlar
![Page 31: Linkle mimari](https://reader035.vdocuments.pub/reader035/viewer/2022062522/58a504ec1a28abce778b6d7b/html5/thumbnails/31.jpg)
Uyarı•Henüz geliştirilmeye devam etmekte olan
projemizde olası karşılaşabileceğiniz hata, eksik ve anti kolay kullanılabilirlik için özür dileriz.
•Bunlara önem verdiğimizi belirtir, en kısa zamanda sizlerle olacağını bildirmek isteriz.
![Page 32: Linkle mimari](https://reader035.vdocuments.pub/reader035/viewer/2022062522/58a504ec1a28abce778b6d7b/html5/thumbnails/32.jpg)
Katkı ve Destek• Tüm görüş ve önerilerinizi bizimle paylaşmanızdan
memnuniyet duyarız.
• Yazılım henüz geliştirilme aşamasında olduğundan bazı özelliklerin devre dışı olduğunu belirtmek isteriz.
• Katkıda bulunmak isteyen tasarım ve geliştirici arkadaşlarda bağlantıya geçebilirler.
• [email protected]• [email protected]• http://linkle.net/
![Page 33: Linkle mimari](https://reader035.vdocuments.pub/reader035/viewer/2022062522/58a504ec1a28abce778b6d7b/html5/thumbnails/33.jpg)
Hakkımda•Tahsin Yüksel•Software
Developer
[email protected]://tr.linkedin.com/in/tahsin-y%C3%BCksel-4bb1379a
•Linkle Yazılım veMimari
2015