8 Şubat 2013 Cuma

Foursquare alt yapısı hakkında.


Çılgınca büyüdüğümüz için, bütün yazılım yığınını mümkün olduğu kadar esnek ve ölçeklenebilir şekilde tasarladık. Bu da birkaç bin kullanıcıdan on beş milyonun üzerinde kullanıcıya çıkmamızı ve aynı zamanda kolayca daha fazla mükemmel mühendis ekleyerek hemen katkıda bulunmalarına imkan tanımayı sağladı.
Foursquare halen CentOS Linux 'un bir basit sürümünü çalıştıran sunuculardan yüzlercesini kullanarak,Amazon EC2 hizmeti içinde barındırılıyor. Biz istekleri yöneltmek ve statik içerik hizmeti için nginx ve birçok makine arasında internet ve API isteklerini dengeli yüklemek için HAProxy kullanıyoruz.
Şimdi eğlenceli kısma geliyoruz. Yığının üstüne çıktığımızda, canlı site verisiMongoDB'de(ama küçük ve kapsamlı bir hesap kümesini önbellekte saklamak içinMemcachekullanırız) saklanır. Çevrimdışı veri analizi için, düzenli olarak canlı verilerimizin anlık görüntüsünü alır ve bir Hadoopkümesine aktarırız. Bazı özel MapReduce işlerimiz var, ama sıradan hesaplar için çoğunluklaHive'ınbasit sorgulama sözdizimini ve özel olarak kurulmuş bir iş zamanlayıcıyı kullanırız. Mekan, tavsiye, kullanıcı ve etkinlik aramayı gerçekleştirmek içinSolrveElasticsearchkullanırız. Arama coğrafi indekslememiz, arama indeksimiz içinde hücre kimliklerini depolamak için Google'ın s2 kütüphanesinikullanır. Coğrafi kod adreslerini koordinatlara geri çevirmek için PostGISve harikageonames.org veri kümesini kullanırız,bu da mekanları haritaya yerleştirme ve konuma dayalı aramalara elverişli hale getirmemize imkan sağlar.Kestrelkullanıcı istekleri bandı dışında gerçekleştirmek istediğimiz zaman uyumsuz görevler için kullandığımız kuyruktur. Kullanıcıların oluşturduğu fotoğraflarAmazon S3'te depolanır ve içerikAkamaiüzerinden gönderilir. Daha derine inerseniz biraz daha karmaşık şeyler de var ama işin özü bu.
İnternet sitesi, API ve küme işlemleri için hemen hemen tüm kodlarScala'da yazılmıştır. Web ve API Lift web framework üzerine kurulmuştur. Aynı zamanda oluşturma, dağıtım ve operasyon görevlerini otomatikleştirmek için çokça Phyton ve Bash betiklerini kullanırız. Son olarak, internet sitesinin dinamik içeriği jQueryile karışık javascript'te,nesne modelleri Backbone.js ve şablonlar iseSoy ile yazılmıştır.
We use beautiful maps by MapBox created using data provided by the wonderful © OpenStreetMapand contributors, and licensed Open Data Commons Open Database License. The interactive maps are generated using the open-source library Leaflet.
Sürekli sınırları zorluyor ve yeni şeyler deniyoruz. Bize katılmak ister misin? Olağanüstü işler yapmak isteyen dünya standardında mühendisler arıyoruz.
Kullandığımız teknoloji hakkında daha fazla bilgiyimühendislik blogumuzdanve github'dan öğrenebilirsin.

Hiç yorum yok:

Yorum Gönder