Geliştirici bakış açısına göre, büyük bir sosyal web uygulaması için hangi platformu tercih edersiniz? Hangi alternatifin güçlü olacağı konusunda ne düşündüğünüze dair bazı detaylar verebilirseniz, harika olurdu.
Geliştirici bakış açısına göre, büyük bir sosyal web uygulaması için hangi platformu tercih edersiniz? Hangi alternatifin güçlü olacağı konusunda ne düşündüğünüze dair bazı detaylar verebilirseniz, harika olurdu.
Yanıtlar:
Aynı uygulamayı GAE (Python ve şimdi Java) ve Azure'de de yazdım. Muhtemelen farklı şeyler için ikisini de kullanmaya devam edeceğim. Güncellemeye devam edeceğim birkaç fikir:
GAE kullanma nedenleri:
Azure kullanma nedenleri:
Açıkça önyargılıyım - geliştirici ilişkileri yapan App Engine ekibinde çalışıyorum - ama bu benim tercihim:
Doğrudan karşılaştırılamazlar. Herhangi biri için yazabileceğiniz bir dizi uygulama var, ancak her durumda farklı bir şey yazacaksınız. App Engine, sınırlı bir çalışma zamanı ortamı sağlar - dosyalara yazma, soket ve benzeri şeyler yazma - ve ilişkisel olmayan bir DBMS. Ancak, karşılığında süresiz olarak ölçeklenen bir çalışma ortamı ve uygulamanızın istediğiniz kadar ölçeklendirilmesi için makul bir güvence elde edersiniz.
Öte yandan Azure, daha geniş bir uygulama dizisi yazmanıza izin veren, ancak daha fazlasını yazmanızı gerektiren - yığının çoğunu kendiniz uyguladığınız için - ve daha fazla ölçeklenebilirlik güvencesi sağlayan, kısıtlı bir ortam sağlar. .
Son olarak, AWS nihai kendin yap çözümünü sunar. Donanımı ve depolamayı sağlıyorlar, başka bir şey değil. Yığınızı sıfırdan oluşturur, korur, yükseltir vb. Uygulamanız ölçeklendirirseniz ve yalnızca küçük bir zorluk oluşturmazsanız ölçeklenir. Ancak, donanımınız üzerinde tam kontrol sahibi olursunuz.
Tavsiyem şöyle olacaktır: Uygulamanız Uygulama Motoru modeline uygunsa - ve bir sosyal ağ uygulaması bu uygulamaların oldukça iyi bir örneği olabilir - uygulamanızı Uygulama Motoru'na yazın (Java veya Python, seçiminiz). Daha ucuz ve ölçeklendiren bir uygulama yazmak çok daha kolay.
Uygulamanız GAE modeline uymuyorsa, MS yığını için yazıp yazmadığınıza ve yürütme ortamı üzerinde ne kadar kontrol etmek istediğinize bağlı olarak Azure veya AWS'yi seçin. Uygulamanızın çoğu GAE'ye uyuyorsa, ancak küçük parçalar uymuyorsa, bir melez olarak düşünebilirsiniz - örneğin, GAE'de canlı yayın, S3'te depolama veya EC2'de toplu işleme.
Benim için kilitleme karar verici faktördür.
Google’ı seçerseniz, uygulamanız yalnızca Google’da çalışır. Kendinizi bir süre sonra tatmin olmayacak şekilde bulursanız, sıkışırsınız.
MS için seçim yaparsanız, uygulamanız yalnızca Azure'da çalışır. Aynı şey.
Amazon'da, (a) alıştığınız makineler gibi tam olarak çalışan sanal sunucular elde edersiniz. Tatmin edici değil? Uygulamanızı kaldırın, gerçek donanıma yükleyin, tamamlandı.
Şu anki kişisel seçimim Java ile Google olacaktır (çoğunlukla .NET olsa bile). Maliyetleri düşünün - şemalarını karşılaştırmak zordur.
Bu makaleye göz atın - http://www.infoq.com/news/2008/11/Comparing-EC2-App-Engine-Azure
Arachnid gibi ben de yanıltıcı olabilirim. Bununla birlikte, aynı zamanda bir Amazon hissedarıyım, bu nedenle önyargı kısmen ilkleri telafi edebilir ;-). Azure deneyimi yok (yine de MSFT hisse senedine sahip olmama rağmen, umarım onlar da iyi işler yaparlar - yine başka bir önyargı ;-).
Çok basit bir şekilde benimsem, App Engine'in size (sınırlamaları dahilinde) sadece kodlama yoluyla kolayca çalışma imkanı sunmasıdır - sistem yönetimi görevlerine gerek yoktur. AWS çok daha esnektir, ancak bu esneklikten yararlanmak için önemli bir sistem yönetimi çalışmasına (ve gerçekten önemsiz değil) ihtiyacınız olacak . Sonunda Arachnid'in önerisini ikinci olarak kabul ediyorum: eğer App Engine ihtiyaçlarınızı karşılayabilirse, kesinlikle buna devam edin; Daha fazla esnekliğe ihtiyacınız varsa, AWS devam etmenin yolu gibi görünüyor (Azure'un bilinmeyen yeteneklerinin daha iyi bir eşleşme olması gerekmiyorsa - ama sanırım AWS, Azure'un yapabilecekleri ne olursa olsun, örneğin AWS ile daha esnek olacak. Eğer gerekirse, hangi işletim sisteminin kullanılacağını bile seçebilirsiniz).
Azure ile çalışmaya yeni başladım ve F #: http://code.msdn.microsoft.com/fsharpazure adresinde yapabileceğinizden çok etkilendim! Şimdiye kadar, işlevsel programlamayı yönetilen bir şekilde kullanma imkanı sunan tek bulut platform (elbette EC2… veya bu konuda Algol 68'i yapabilirsiniz). Visual Studio entegrasyonunun kalitesinden çok etkilendim - test etmek için yerel bir "bulut" alıyorsunuz, gerçek bir SQL Server olan bir depolama alanı olan DevFabric'i test ediyor, böylece yüklemeden önce oynayabilirsiniz. GAE bunu yapabilir mi? Azure'a bakıp F # (Linux ve OCaml'dan gelen) ile VS öğrenmek, keşke bunun için uzun zaman önce MS yığına geçmek isterdim. SQL depolama oluşturmak ve VS içinde incelemek süper kolay - çok kullanışlı geliyor. Açık Kaynak'ın uygun bir araç seti yok ve zaman milletvekilleri MS’e adil bir fikir veriyor - burada harika bir iş çıkardılar. Kesinlikle Mac OSX tabanımla (Vista’ya çift açılıma) bağlı kalıyorum ve önsezim, Azure'un yerel olarak geliştirilebilmesi için, Azure gelişimi için ayrı bir Vista kutusu alacağım. .NET, Unix boru dünyasından geldiğiniz zaman gerçekten çok zor - PowerShell, SQL ve LINQ, C # ve F # (benim ana nedenim) - ama her şey ortaya çıkıyor ve bunun yerine öğrenmeye değer Linux; ve her durumda, Azure ufkunuzu genişletir.
GAE'yi sevdiğim kadarıyla, şu anki projem için GAE üzerinden EC2 ile birlikte gitmemin en önemli sebeplerinden biri, başvurumun ön yüzünü dünyanın farklı yerlerinde bulunan veri merkezlerinden servis alabilmem gerekiyor. GAE bir seferde bir veri merkezinde çalışır. Örneğin, uygulamam için mümkün olan en hızlı yanıt süreleri için Asya'daki sunuculara Asya'daki sunucuları vurmaları gerekiyor. Dns, yük dengeleyici, seçim veri tabanı, verilerin hadoop işlenmesi için S3'e basma boşluğu ve EC2'yi yönetme yeteneğini ve EC2 gerçekten zorlayıcı bir çözüm haline gelir.
Dikkate alınması gereken bazı şeyler:
Hızlanma: Seçili ortamla ne tür dokümanlar bulunduğunu ve ne kadar çabuk üretken olabildiğince verimli olursunuz ve açık ve iyi desteklenmiş örnekler görünür ve kullanışlı mıdır?
Maliyet: Maliyet bir faktördür, ancak gerçekten müşterileri olacak ticari bir Uygulama yapıyorsanız, bunların hepsi geçerli seçeneklerdir. Azure’un, "küçük" bir örnek için bir proc ile 24x7 kullanım için ayda yaklaşık 90 dolar harcadığını varsayarsan ... o zaman kaç kullanıcıya hizmet verebilirsin? Artıklık için ikinci bir örnek ekleyin ... trafiğiniz garanti ederse hala pahalı değil. Olmazsa, neden ucuz bir barındırılan sağlayıcı yerine neden buluttasınız? Bunu gerçekleştirmek için daha büyük maliyet faktörleri gelir. AWS, kendi çözümünüz olan bir rulo. Kararlı ve iyi yönetilen bir çözüm bulmak için idare edilecek çok şey var. Azure ve GAE kutudan çıkardı. Aklımda AWS, içine koymak zorunda olduğunuz iş nedeniyle en pahalı. Bu para cezası düzeyinde bir ayrıntı düzeyi denetimine gerçekten ihtiyacınız var mı? Öyleyse,
İstediğinizi yapabilme yeteneği: AWS tamamen. Azure ikinci, GAE üçüncü. İstediğiniz şey Java ve Python ise biggie yok. Biggie, ilişkisel veri tabanı veya kapsamlı çoklu iş parçacıklı veri işleme C ++ 'da yapmak istiyorsanız (bunlardan herhangi birinin şimdi yapıp yapmadığından emin değil misiniz?).
Taşınabilirlik ne olacak? Daha sonra kendi çiftliğine geri alabilir misin yoksa başka bir bulut çiftliğine mi götürebilirsin? Hepsi bir dereceye kadar taşınabilir.
Düşünecek çok şey var ... hala bu konuyu öğreniyorum.
Talebi karşılamak için örnekleri elle başlatmanız gerekirse, bu bir bulut değildir.
Azure ve EC2, yalnızca bazı servisleri yanında olan sanal sunuculardır.
Güncelleme:
EC2 ve Azure, yük altında yeni örnekleri otomatik olarak yönetme seçenekleri sunar, ancak yine de bunu yönetmeniz gerekir. Ve boş ve boşta kalan örnekler için para ödersiniz.
GAE bu otomatik olarak kullanıma hazır durumdadır ve yalnızca kodunuz istekler sırasında çalıştığında sizi ücretlendirir.
İşte başka bazı düşünceler.
GAE - Platformda bir hizmet yığını olarak daha yüksek oturur ve AWS ve Azure, tüm trafik ghs.google.com DNS'leri üzerinden yönlendirilir, sayfanıza hizmet vermeyi dinamik bir şekilde yükler ve bu da fiyatları düşük tutmasını sağlar. Ölçekleme bu yaklaşımla iyi bir şekilde inceltilir, Cons statik bir ip değildir, filtrelenmeye veya engellenmeye eğilimlidir. Statik IP sınırlamasından, siteye özgü https sertifikası ayarlayamazsınız.
AWS ve Azure, hemen hemen statik bir IP ve özel bir VM sağlar ve https sertifikası gibi temel gereksinimlere izin verir. ayrıca ilişkisel depolama desteği alırsınız. Maliyet, bu özel VM gerçeğini yansıtmak için de daha yüksektir ve VM başına ölçeklendirirsiniz, böylece 40 dolar / ay'lık parçalar halinde. Bunun avantajı, kendinize bir VM aldığınızdan, GAE'deki 30 saniyelik işlemci işlem sınırlamasıyla sınırlandırılmadığınızdan ve daha büyük işleri gerçekleştirebilmenizdir.
Bu nedenle, göz önünde bulunduğunuz müşteri filtre uygulanmış ülkelerde dayanıyorsa veya kendi DNS kurulumunuzu yapmak için statik bir IP istiyorsanız veya ilişkisel db veya 30 saniyeden fazla görev gerektiren gereksinimlere sahipseniz. AWS, Azure ile çalışmak çok daha kolay olurdu.
Her bir bulutun sunduğu çözümlere bakın ve hibrid modeli kullanın. Bazı problemler çekiç, diğerleri tornavida gerektirir. Araçlarınızı tanıyın ve doğru soruna uygulayın.
Yukarıdaki cevaplardan biri için yorum yapmak için yeterli itibarım yok. Bu bulut çözümlerinden herhangi birinin uygunluğu, ihtiyaçlarınız ve beceri setiniz de dahil olmak üzere birçok faktöre bağlıdır.
Nosql veri tabanı gerektiren bir sosyal ağ projem var. AppEngine, çeşitli çerçeveler için daha iyi desteği olsaydı iyi bir çözüm olurdu. Bağdaştırıcısız Django Python GAE üzerinde çalışıyor, ama ben Rails'i birçok sebepten dolayı tercih ediyorum. Rails3 birkaç aydır piyasada ve toplumdaki veya GAE ekibindeki hiç kimse henüz onu destekleyecek bir tarif yazmadı. Yetenek setine sahip olmadığınız sürece - yakut ve raylar iç, jruby ve GAE içleri bilmek - kendi tarifinizi yazmak için, sadece platforma girmek için diğer insanların insafına kalırsınız.
AWS çok daha fazla iş ama en azından ne olursa olsun herhangi bir araçla platforma girebilir ve bir iç geliştirici ya da daha yüksek güçlere destek olmak yerine bir çok konuyu idari olarak ele alabilirsiniz.
Heroku ve EngineYard’a olan Ruby geliştiricileri hakkındaki şikayetim, veritabanlarının nasıl ölçeklendiğine dair gizemdir. Nasıl ölçeklenirler?
Benim durumumda, bir NoSQL çözümü seçiyorum ve Mongo iyi bir seçim gibi görünüyor. MongoMachine, Heroku veya EY'nin beğenisine önerilen bir çözüm gibi gözüküyor, ancak çok pahalı. 2,50 dolar / GB depolama? Depolama, GAE veya EBS’de yalnızca 0,10 GB / aydır.
Son zamanlarda Google App Engine ile denemeye başladım ve bir web sosyal ağı için tüm ihtiyaçlarınızı karşılayacağına inanıyorum. Asmak kolaydır ve Python veya Java ile birlikte kullanılabilir. Size dosyalar üzerinden erişim sağlamadığı doğrudur, ancak uygulamanız için GQL (sağladıkları veritabanına SQL benzeri arayüz) muhtemelen fazlasıyla yeterli olacaktır (ve oldukça sağlamdır).
Göz önünde bulundurmak isteyebileceğiniz bir şey, GAE'deki bir uygulamanın, Google Hesaplarına sahip kullanıcıların veya Google Apps giriş yapan bir etki alanındaki hesapların (kısayol) kullanmasına izin verecek bir arayüz kullanabilmesidir. Bunlardan birini seç. Dolayısıyla, zaten bir Google Apps Web Sitesi kullanıyorsanız, Google App Engine sizin için mükemmel bir seçim olacaktır, çünkü kullanıcılarınız yeni hesaplar kaydetmek zorunda kalmayacaktır.
EDIT: Arachnid'in işaret ettiği gibi, kendi giriş sisteminizi kodlayamazsınız. Üzgünüm, eğer seni orada endişelendiriyorsam.
Diğer iki alternatife gelince, sadece onlar hakkında okudum ve test etmedim. Ancak GAE'nin araştırmamdan ve sizin de belirttiğiniz gibi, daha uygun fiyatlardan daha kolay bir çerçeve sağladığını düşünüyorum.
Her durumda, alan ve bant genişliğindeki ücretsiz kotayı kullanarak GAE'yi deneyebilir ve ihtiyaçlarınıza uygun olup olmadığını görebilirsiniz.
İyi şanslar.
Azure'da bir sunucu olarak Windows / SQL "Hizmet Olarak Platform" vardır ve kesinlikle sıkışmış değilsiniz, sadece kendi veri merkezinizde Windows / SQL'e dönün (Linux yok, ama evet, Java, Python, PHP, Ruby, Tomcat'i destekliyorlar) , Apache, vb.) Amazon gibi, tamamen erişilebilir Sanal Makine seçeneğini de sunacaklar, böylece ne istersen kurabilir / çalıştırabilirsin.
Amazon sadece Sanal Makine'ye sahip, bu yüzden hala dikkatini çekmek, yama yapmak, lisans vermek, güvenli hale getirmek vb. Veri merkezinizden diğerine bir şey taşıdınız.
Google'ın ilişkisel veritabanı yok ve STUCK olur. Gerçekten de sadece Python geliştiricilerine ve Java için sınırlı bir desteğe hitap ediyorlar. Onlar gerçekten benim görüşüme göre bulut alanda bir oyuncu değil.
Burada bahsedilmeyen bir şey, herkesin "Windows Azure AppFabric Servis Otobüsü & ACS" hakkında korkunç ismin yanı sıra ne düşündüğüdür?
Azure'un kurum içi altyapıya yatırım yapan herhangi bir işletme açısından çekici görünmesini sağlayacak çok güçlü bir entegrasyon özellikleri yığını gibi görünmektedir.
Amazon EC2'yi bir süre deneyimledikten ve bazı gecikmelere maruz kaldıktan sonra, maliyet nedeniyle deneme yaparken Google Apps'ı araştırmaya başladım. Erlang'ı geliştirme dili olarak tercih ederdim ama Python ile başa çıkabiliyorum, bu karar verici bir faktör değildi. Statik IP göremediğimde, öyleydi. Ayrıca, yığında daha yüksek olmasıyla ilgili bütün bölüm beni performans konusunda biraz gerginleştirir.
AWS'nin daha ucuz olmasını diliyorum, ancak Google statik IP'ler ve tercihen Scala, JRuby ve Erlang gibi ek diller sunana kadar, seçim benim için açık: AWS . İlk iki dil de basit olmalıdır, ikisi de JVM tabanlıdır. Bunun hakkında bir şeyler okuduğumu hatırlıyor gibiyim, çalışma ortamlarında bile yapılmış olabilir.
Bence karşılaştırmanın hangi platformu desteklediğini düşünmenin yanı sıra Ölçeklenebilirlik, Erişim Kolaylığı, Çok Yönlü (uygulama açısından) olması gerektiğini düşünüyorum, işletme durumu için eşit derecede ekonomik açıdan uygun olan farklı hosting platformlarına sahip olabilir. uygulamalar (viz. depolama, teslimat, bant genişliği, lisans politikası vb.), hizmet kalitesinin rekor güvenilirliğini izler, Güvenlik denetlenir, Faturalandırmada şeffaflık ve maliyetler vb. . 2 yıldan bu yana AWS'de 10 üretim hesabı yönetiyorum ve aynı zamanda şirket / iş birimi müşterinin dev ölçeklenebilirlik taleplerini karşılayabiliyordu. AWS'nin altyapısını korumasına gerek yok, Güncellemeler (eğer varsa) gerekli), güvenlik vb. Ancak serbest piyasada / net olarak mevcut tüm araçları var. Mevcut BT kaynakları, AWS'deki tüm altyapıyı da koruyabilir.
Azure'un VS 2010 ile entegre bir IDE'si vardır, ancak uygulamanın başarıyla dağıtılmasından sonra (herhangi bir dağıtım platformu) herhangi bir bulutun fiili maliyeti başlayacaktır. Gerçek zamanlı dağıtım / ölçeklenebilir üretim senaryolarını ele almak için hala olgunlaşmak için uzun bir yol ....... Herkesin bildiği gibi, MS bir çok gizli gündemin maliyetlerle oynadığını biliyor. tahminler).
GAE, Python / Java uygulamaları için çok özeldir. Uygulamanın yeniden yazıldığı (mevcut), test edilmiş, konuşlandırılmış vb.