Ana içeriğe atla

Pinterest

“Pin what ever you interest” her ne ile ilgileniyorsan onu panona raptiyele şeklinde Türkçeye çevrilebilecek bir sloganla çıkmışlar yola 1 mühendis ve 2 kurucu ile. Azımsanmayacak kadar uzunca bir süre de bu çekirdek kadro ile devam etmişler yollarına. Pinterest her geçen gün hızla büyümeye devam eden oldukça güçlü bir sosyal medya aracı olarak önümüze çıkıyor ve birazcık dünden bu güne hangi teknolojileri kullanmış diye araştırdığımızda özgür yazılımın gücünün farkında ve özgür yazılım aşığı bir firma ile karşılaşıyoruz. Peki Django ile geliştirilmiş olan Pinterest’in dünden bugüne mimarisi nasıl gelişmiş:
Her şey Mart 2010 da başlamış:
  • 1 Rackspace
  • 1 küçük Web Sunucusu
  • 1 küçük MySQL Veritabanı
  • 2 mühendis
Rackspace kendi içerisinde Cassandra veritabanını kullanmayı tercih etmiş bir bulut sunucusudur. Bu noktada MySQL’i tercih etme sebeplerini en çok bilinen veritabanlarından birinin MySQL olması ve bir sorunla karşılaşıldığında çok kolay bir şekilde topluluktan yararlanarak çözüm buluyor olmaları olarak açıklıyorlar.
Ancak elbette bu yapı kullanıcı sayısının hızlı artışı ile yeterli olmamaya başlamış.
Ocak 2011’e gelindiğinde ise kullandıkları ürünleri kullanıcı geri bildirimleri doğrultusunda değiştirmeye başlamışlar:
  • Amazon EC2 + S3 + Cloudfront
  • 1 NGinX, 4 Web Sunucusu
  • 1 MySQL Veritabanı + 1 read slave - eğer mastera ulaşılamazsa diye
  • 1 Görev Kuyruğu + 2 Görev İşlemcileri
  • 1 MongoDB
  • 2 Mühendis
Tek tek ilerleyecek olursak Amazon EC2 kullanıcılara kendi uygulamalarını koşturabilecekleri sanal biligisayarlar sağlayan bir bulut bilişim platformu. Amazon S3, EC2 ile entegre çalışabilen bir dosya depolama web servisi ve Amazon Cloudfront, S3 ve EC2 ile çalıştığında oldukça yüksek verim sağlayan bir içerik teslim ağı (Content Delivery Network). Seçtikleri her servis gibi bu servisi de ilk seçme sebepleri iyi raporlama ve iyi destek alabiliyor olmalarıdır. NGinx’e (http://wiki.nginx.org/NginxTr) gelecek olursak özgür, açık kaynaklı, yüksek performanslı bir HTTP sunucusu, reverse proxy ve IMAP/POP3 proxy sunucusudur. MongoDB ise döküman bazlı bir veritabanı sistemidir ve NoSQL veritabanı sınıfına girer.
Bu noktadan sonra Pinterest çok hızlı bir şekilde büyümeye başlamıştır. Bu büyümeye bağlı olarak da elbette kullanılan tüm teknolojiler limitlerine ulaşmış ve her an bir şeyler patlayıp çatlamaya başlamıştır. Günler ve gecelerce uğraşılan her anları A4 ler okuyarak geçen zamanlar olarak anlatıyorlar o günleri.
Eylül 2011’e geldiğimizde elimizde oluşan sistem oldukça karmaşık.
  • Amazon EC2 + S3 + Cloudfront
  • 2 NginX, 16 Web Sunucu, 2 API Sunucu
  • 5 Fonksiyonal olarak shard edilmiş MySQL veritabanı ve + 9 read slave
  • 4 Cassandra Düğümü
  • 15 Membase Düğümü
  • 8 Memcache Düğümü
  • 10 Redis Düğümü
  • 3 Görev Yönlendiricisi + 4 Görev İşlemcisi
  • 4 Elastic Search Düğümü
  • 3 Mongo Cluster’ı
  • 3 Mühendis
Eylül 2011 Pinterest için oldukça önemli bir tarih olmuş çünkü bu sürecin ardından ancak stabilize olabiliyorlar. Bu tarihin önemlerinden biri de shardingde karar kılıyor olmaları. Sharding’in ana fikri veriyi bölüp paralelleştirerek ölçeklendirmek. Cassandra kullanılan veritabanı teknolojileri arasında benim en sevdiklerimden biri hem açık kaynak kodlu, hem NoSQL. Diğer NoSQL veritabanlarından Cassandra’yı ayıran en önemli özellik de join işlemlerine destek verebiliyor olması. Membase dağıtık anahtar kelime veritabanı yönetim sistemi olup depolanmış veriyi etkileşimli bir Web uygulaması üzerinden optimize etmektedir. Memcache yine açık kaynak kodlu yüksek performasn ile ve dağıtık mimarilerde çalışabilen bir sunucu sistemidir. Redis aynı şekilde bir anahtar kelime depolama sistemidir. Redis’i diğerlerinden ayıran ise set, get, increment veri tiplerinin ötesinde has, list, sorted gibi veri tiplerini de desteklemesidir. Elastic Search her türlü dökümanda ölçeklendirilebilir, eş-zamanlıya oldukça yakın bir arama imkanı sunar.
Tüm bu kullanılan teknolojiler yine de yeterli olmamış, limitleri zorlanan sistemler diğerlerini etkilemeye başlamış ve sistem yine çatlayıp, patlamaya başlamıştır. Bu noktadan sonra mimari yeniden oluşturulmaya karar verilmiş.
Ocak 2012’yi Pinterest için yeniden doğuş olarak düşünebiliriz:
  • Amazon EC2 + S3 + Akamai, ELB
  • 90 Web Sunucusu + 50 API Sunucu
  • 59 Redis Oluşumu
  • 51 Memcache Oluşumu
  • 1 Redis Görev Yöneticisi + 25 Görev İşlemcisi
  • Shard edilmiş Solr
  • 6 Mühendis
Akamai ve ELB ikisi de içerik teslim ağlarıdır. Solr Apache Lucene projesinden geliştirilmiş açık kaynak kodlu ticari bir arama platformu. ElasticSearch ile karşılaştırıldığında hem kullanımı daha kolay hem de hatasız çalıştığı görüldüğü için tercih edilmiş.
Bu noktadan sonra şirket mimaride herhangi bir değişikliğe gitmemiş; onun yerine ihtiyaç arttıkça ürünlerin sayısını ihtiyaca göre arttırmıştır. Mimariye dair elde edilen en son bilgi Kasım 2012’ye dayanmaktadır:
  • Amazon EC2 + S3 + Edge Cast, Akamai, Level 3
  • 180 Web Sunucusu + 240 API Sunucu
  • 88 MySQL Veritabanı her biri için 1 slave
  • 110 Redis Oluşumu
  • 200 Memcache Oluşumu
  • 4 Redis Görev Yöneticisi + 80 Görev İşlemcisi
  • Shard edilmiş Solr
  • 40 Mühendis
EdgeCast de tıpkı Akami gibi bir içerik teslim ağıdır. İkisini aynı anda aynı mimaride neden kullandıklarına gelindiğinde ise Pinterest’in mühendislerinden Yash Nelapati’nin açıklamasına göre birbirlerinin yedekleri olarak ikisi de kullanılmaktadır. Bunları kontrol edecek basit bir yönetim sistemi bulunmakta ve herhangi birisi işlemez duruma gelirse ağırlığın tamamını diğerine vermektedir. Şuanda ise %80 EdgeCast, %20 Akamai olarak çalışmaktadır. Bunun sebebi de ELB’nin Akamai’den çok daha ucuz olmasıdır. :)


Yorumlar

Bu blogdaki popüler yayınlar

Adım Adım Weka Kullanımı

WEKA bir veri madenciliği uygulamasıdır ve Yeni Zellanda'daki Waikato Üniversitesi tarafından geliştirilmektedir. Bu yazının amacı WEKA Explorer'ı kullanmayı öğretmektir.

Weka ile Sınıflandırma

"Preprocessing" aşamasında veri setimizi yükledik ve eğer gerekliyse ön aşamadan geçirdikten sonra sınıflandırma aşamasına geçebiliriz. Weka nedir, Ön İşlem bölümünde neler yapılır sorusunun cevapları için önce bu yazımı okumalısınız. SINIFLANDIRMA Verimizi ön işlemden geçirdikten sonra artık sınıflandırabiliriz. WEKA'yı kullanarak bir çok sınıflandırıcıyı kullanabilirsiniz; Karar Ağaçları, SVM, Multi-layer Perceptrons vs. Veri setinizi yükledikten sonra  Classify  bölümüne tıklayarak sınıflandırma sayfasına erişebilirsiniz. Ön tanımlı ayarlara göre  ZeroR   algoritması gelmektedir. Bu algoritmanın başarımı çok düşük olduğu için ben " Iris " veri seti için iyi sonuç verdiği bilinen J48 algoritması ile devam edeceğim:

Chosen - Ciphertext Attack

Chosen-Ciphertext Attack'ı Türkçeye Seçilmiş Şifreli Metin Saldırısı olarak çevirebiliriz. Bu yöntem ile bir saldırgan seçtiği şifreli metinlerin bilinmeyen bir anahtar altında çözümlerine bakarak anahtarı bulmaya yönelik olarak çalışır. Bu yöntemde saldırganın düşman sisteme bir veya daha fazla ciphertext'i(şifreli metin) vererek plaintextleri(düz metin) elde etme şansı vardır. Bu bilgiler sayesinde saldırganın bilinmeyen şifreyi elde edebilme olasılığı yüksektir. Örnek olarak El Gamal kripto sistemi semantik olarak güvenli bir sistemdir. Seçilmiş düz metin saldırısı (Chosen plaintext attack) ile elde edilemez ancak seçilmiş şifreli metin saldırısı ile kolaylıkla alt edilebilir. Başka bir örnekte SSL protokolünde kullanılan eski RSA kripto sistemi Uyarlanır Seçilmiş Şifreli Metin Saldırısı (Adaptive Chosen Ciphertext Attack) ile SSL Session key'i ortaya çıkarıyordu.  Seçilmiş Şifreli Metin Saldırı Yöntemini nasıl kullanabileceğimize gelince Alice ve Bob'un mesajlaşt