Samet AKIN

Samet AKIN

ALAYLI YAZILIMCI

Fixerkit ve kullandığım teknolojiler

Uzun zamandır üzerinde uğraştığım projem fixerkit.com alt yapısında birden fazla teknolojiyi barındırmakta. Farklı teknolojileri kullanmamın sebebi ise site işlevlerinin oldukça geniş olması. Sitenin amacı farklı platformlar üzerinde el yordamı yapılan işlemleri tek panel üzerinden otomatik olarak yapılmasını sağlamak olduğu için bu ihtiyaçları karşılamak içinde farklı teknolojiler kullanmak zorunda kaldım. Aslında zorunda kalmaktan ziyade bu teknolojilerin kullanması şart.

En önemli ve çok sevdiğim teknolojilerden birisi RabbitMQ. RabbitMQ sayesinde günlük yapılması gereken işlemleri, kullanıcının yapması gereken uzun sürebilecek olan işlemleri hepsini kuyruğa atarak arka planda yapılmasını sağlıyorum. Bu sayede hem kullanıcı sitenin geç açılmasından veya işlemlerin uzun sürmesinden şikayetçi olmuyor hemde günlük işlemleri yaparken daha hızlı yapıyorum. İşlemlerin hepsini kuyruğa atıyorum sunucuyu yormadan arkaplanda asenkron olarak yaptırıyorum. Yani aynı anda birden fazla iş yaptırıyorum.

Fixerkit.com’da sıra bulucu ve sosyal medya yönetimi hizmeti veriyoruz.  Günlük sırasının takip edilmesi gereken kelimeleri rabbitmq ile yaptırıyorum. Binlerce kelimeyi anında sıraya atıp, sunucuyu yormadan yapılmasını sağlıyorum bu şekilde hem sunucuyu yormamış oluyorum hemde sunucunun yavaşlama sorununu ortadan kaldırıyorum.

RabbitMQ sayesinde işlemlerin hepsini sıraya koyuyorum ve ayrıca yorucu işlemleri dert etmiyorum. Kullanıcının site içinde gezinirken kendi verilerini her seferinde veritabanından çekmek verine memcache ile ram saklı tutuyorum. Ram diskten her zaman daha hızlıdır hemde katbe kat daha hızlı. Kullanıcıların genel bilgilerini ( önemli bilgiler hariç ) memcache’den çekiyorum bu şekilde hem veritabanını gereksiz yere yormuyorum hemde kullanıcılara daha hızlı çalışan bir site sunmuş oluyorum. Yeni veri girişi, düzenleme vs. olduğunda kullanıcının ram üzerindeki bilgisini yeni veri ile değiştiriyorum. Bu sayede ram üzerindeki verilerinin güncel kalmasını sağlıyorum.

Sıra bulucu ve sosyal medya yönetiminde  veriler bir hayli fazla buda ilerleyen zamanlarda daha randımanlı şekilde çalışacak bir veritabanını gerektireceği için işin başında mongodb kullanmaya başladım. Önümüzdeki zaman içerisinde bu veritabanı değiştirebilirim. Duruma göre couchbase veya cassandra veritabanına geçiş yapabilirim. Bizim için önemli olan hususlardan bir tanesi verinin güvenli, dağıtık bir şekilde tutulması ve veriye hızlı erişilebilmesi.

İşlemleri arkaplanda yaptırdık, verileri ramde sakladık ve veritabanı olarak mongodb’yi kullandık ancak transaction ( ardışık ve bağlantılı işlemler yaparken ) gerektiren işlemler için en iyisi ilişkisel bir veritabanı kullanmak bunun içinde tabiki MySQL kullandım. Kullanıcılar alışveriş esnasında herhangi bir sorun çıktığında işlemleri geri alabilmek ve kullanıcının güvenliğini sağlayabilmek için ilişkisel bir veritabanı şart. Aynı işlemleri tabiki mongodb ile yapabilirdim ancak önemli olan ve veri kaybının tehlikeli olduğu durumlarda ilişkisel veritabanları daha iyidir.

Video işlemleri için ffmpeg gibi her işimizi gören bir yazılım sayesinde video üzerine logo ekleme, boyut büyültme küçültme gibi birçok işlemi yaptırıyoruz bu eklenti sayesinde video üzerinde bütün işlerimizi yaptırıyorum. Sonuçta her sosyal medya sitesinin istediği şeyler farklı ve kullanıcıya bu video şu şekilde yükle veya video kısalt diyemeyeceğimiz için bunların hepsini ffmpeg ile yapıyoruz.

Hiç birşey kusursuz değildir. Çalışan sistem beklenmedik bir hata yüzünden tıkanabilir, durabilir veya hata verebilir. Bunların hangisi olursa olsun kullanıcıların işlemleri zamanında ve aksamadan olması için kullandığımız tüm eklentileri, günlük işlemlerin yapılıp yapılmadığı kontrol eden bir eklenti mevcut. İnit scripting ile tamamen kendi yaptığımız bir eklenti olup bizim sitemizde herhangi bir şeyin ters gidip gitmediğini kontrol ediyor ve herhangi bir hata, aksaklık bulduğunda o işlemi tekrar başlatıyor ve kaldığı yerden devam etmesini sağlıyor.

Zamanla bu yapıyı dahada geliştirerek tam anlamı ile ölçeklenebilir bir sistem geliştirmeyi hedefliyorum. Sitemizin sıra bulucu sistemini bir deneyin derim. Sadece sırayı bulmakla kalmayı aynı zamanda günlük olarakta sıranızı takip ediyoruz.

DROP A COMMENT

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir