Geliştirici açısından, büyük bir sosyal web uygulaması için hangi platformu düşünürdünüz? Hangi alternatifin güçlü yanları olduğunu düşündüğünüz hakkında bazı ayrıntılar verebilirseniz, bu harika olurdu.
Aynı uygulamayı GAE (Python ve şimdi Java) ve Azure'da yazdım. Muhtemelen her ikisini de farklı şeyler için kullanmaya devam edeceğim. Güncellemeye devam edeceğim birkaç düşünce:
GAE'yi kullanma nedenleri:
Azure'u kullanma nedenleri:
Açıkça önyargılıyım - Geliştirici ilişkileri yapan App Engine ekibinde çalışıyorum - ama bu benim görüşüm:
Doğrudan karşılaştırılamazlar. Bunlardan herhangi biri için yazabileceğiniz bir dizi uygulama var, ancak her durumda farklı bir şey yazacaksınız. App Engine kısıtlı bir çalışma ortamı sağlar - dosyalara yazma, soket vb. Yok ve ilişkisel olmayan bir DBMS. Ancak bunun karşılığında, süresiz olarak ölçeklenen bir çalışma zamanı ortamı ve uygulamanızın istediğiniz kadar büyük ölçekleneceğine dair makul bir güvence elde edersiniz.
Öte yandan Azure, daha geniş bir uygulama dizisi yazmanıza izin veren, ancak daha fazla yığının kendiniz uyguladığından ve daha fazla ölçeklenebilirlik güvencesi sağladığınızdan daha fazla yazmanızı gerektiren biraz daha az kısıtlanmış bir ortam sağlar. .
Son olarak, AWS nihai kendin yap çözümünü sunar. Donanımı ve depolamayı sağlarlar, başka bir şey değil. Yığınızı sıfırdan inşa edersiniz, bakımını yaparsınız, yükseltirsiniz, vb. Uygulamanız ölçeklendirirseniz ve yalnızca küçük bir sorun oluşturmayacak şekilde ölçeklenir. Ancak, donanımınız üzerinde tam kontrol elde edersiniz.
Benim tavsiyem şuydu: Uygulamanız App Engine modeline uyuyorsa - ve bir sosyal ağ uygulaması muhtemelen buna oldukça iyi bir örnek olabilir - uygulamanızı App Engine'e yazın (Java veya Python, seçiminiz). Daha ucuz ve ölçeklenen 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 istediğinize bağlı olarak Azure veya AWS'yi seçin. Uygulamanızın çoğu GAE'ye uyuyor, ancak küçük parçalar uygun değilse, bir melez düşünebilirsiniz - örneğin, GAE'de canlı yayın, ancak S3'te depolama veya EC2'de toplu işleme.
Benim için kilitlenme belirleyici faktördür.
Google'ı seçerseniz, başvurunuz yalnızca Google'da çalışır. Bir süre sonra kendinizi daha az tatmin bulursanız, sıkışıp kalırsınız.
MS'yi seçerseniz, uygulamanız yalnızca Azure'da çalışır. Aynı şey.
Amazon'da, alıştığınız makineler gibi çalışan (a) sanal sunucu (lar) edinirsiniz. Tatmin edici değil? Uygulamanızı alın, gerçek donanıma yükleyin, bitti.
Şu anda kişisel seçimim Java (çoğu zaman .NET olsa bile)) ile Google olurdu. 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, Google çalışanı olarak önyargılı olabilirim. Ancak, aynı zamanda bir Amazon hissedarıyım, bu yüzden önyargı kısmen ilk ;-) dengeleyebilir. Hiçbir Azure deneyimi (MSFT hissesi de olsa da, umarım onlar da iyi yaparlar - yine başka bir önyargı ;-).
Benim çok basit almak, App Engine kolayca (sınırlamaları dahilinde) sadece kodlama ile çalışma yeteneği sunuyor - hiçbir sistem yönetim görevleri gerekli. AWS çok daha esnektir, ancak siz bu esneklikten yararlanmak için önemli sistem yönetimi çalışmalarına (ve hiç de önemsiz değil) ihtiyacınız olacaktır. Sonunda Arachnid'in önerisini ikinci olarak söylerdim: App Engine ihtiyaçlarınızı karşılayabilirse, kesinlikle buna devam edin; daha fazla esnekliğe ihtiyacınız varsa, AWS gitmenin yolu gibi görünüyor (Azure'un bana bilinmeyen yetenekleri daha iyi bir eşleşme olmadıkça - ancak bence Azure'un ne yapabileceğine bakılmaksızın AWS daha esnek olacak, örneğin AWS ile ihtiyacınız olursa hangi işletim sistemini kullanacağınızı bile seçebilirsiniz).
Azure ile çalışmaya yeni başladım ve zaten F #: http://code.msdn.Microsoft.com/fsharpazure ! Şimdiye kadar, işlevsel programlamayı yönetilen bir şekilde kullanmanıza izin veren tek bulut platformudur (elbette EC2'de Haskell ... veya ALGOL 68'i bu konuda yapabilirsiniz). Visual Studio entegrasyonunun kalitesinden çok etkilendim - gerçek bir SQL Server olan bir depolama alanı olan DevFabric'i test etmek için yerel bir "bulut" elde edersiniz, böylece yüklemeden önce oynayabilirsiniz. GAE bunu yapabilir mi? Azure'a bakarak, VS'yi F # ile (Linux ve OCaml'den geliyor) öğrenerek, keşke uzun süre önce MS yığınına geçseydim. SQL depolama alanı oluşturmak ve VS'de incelemek çok kolay - çok kullanışlı geliyor. Açık Kaynak'ın eşleşen bir araç seti yoktur ve milletvekillerine adil davranma zamanı - burada harika bir iş çıkardılar. Kesinlikle Mac OSX tabanımla (Vista'ya çift önyükleme) bağlı kalıyorum ve önsezim, Azure'un yerel olarak geliştirilebilme özelliğiyle, Azure gelişimi için ayrı bir Vista kutusu alacağım. Unix boru dünyasından geldiğinizde .NET gerçekten çok ezici - PowerShell, SQL ve LINQ, C # ve F # (bu benim temel nedenim) - ancak bunun yerine ekliyor ve öğrenmeye değer. Linux; ve her durumda, Azure ufkunuzu genişletecek.
GAE'yi sevdiğim kadarıyla, mevcut projem için GA2 üzerinden EC2 ile gitmemin en önemli nedenlerinden biri, başvurumun ön ucunun dünyanın farklı bölgelerindeki veri merkezlerinden hizmet alması gerektiğidir. GAE her seferinde 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 kullanıcıların Asya'daki sunucuları vurmasına ihtiyacım var. Dns, yük dengeleyiciler, tercih edilen veritabanı, verinin hadoop işlenmesi için S3'e itme, vb ... yönetme yeteneğini ekleyin ve EC2 gerçekten zorlayıcı bir çözüm haline gelir.
Dikkate alınması gereken bazı noktalar:
Hızlanmak: ne tür belgelerin mevcut olduğu ve seçilen ortamda ne kadar çabuk üretken olabileceğiniz ve bunlar net ve iyi desteklenen örnekler görünür ve yararlı mı?
Maliyet: maliyet bir faktördür, ancak aslında müşterileri olacak ticari bir Uygulama yapıyorsanız, bunların hepsi uygulanabilir seçimlerdir. Azure'un, "küçük" bir örnek üzerinde bir proc ile 24x7 kullanım için ayda yaklaşık 90 $ çalıştığını varsayarsanız ... o zaman kaç kullanıcıya hizmet verebilirsiniz? Artıklık için ikinci bir örnek ekleyin ... trafiğiniz gerektiriyorsa yine de pahalı değil. Değilse, neden ucuz bir barındırılan sağlayıcı yerine buluttasınız? Bunu uygulamak için zaman içinde daha büyük maliyet faktörleri gelir. AWS kendi çözümünüzdür. Bu, istikrarlı ve iyi yönetilecek bir çözüm elde etmek için çok şey. Azure ve GAE bunu kutudan çıkarır. Bana göre AWS, içine koymak zorunda olduğunuz iş nedeniyle en pahalı. Bu ince ayrıntı düzeyinde üzerinde gerçekten kontrole ihtiyacınız var mı? Eğer öyleyse, wad'ı üfleyin ve kendi kutularınızı satın alın ... belki AWS hala donanım maliyetlerinden daha ucuz olacaktır.
İstediğinizi yapabilme: AWS sonuna kadar. Azure ikinci, GAE üçüncü. İstediğiniz biggie yok Java ve Python. Biggie ilişkisel DB veya C++ 'da kapsamlı çok iş parçacıklı veri işleme yapmak istiyorsanız (bunlardan herhangi birinin şimdi bunu yapıp yapmadığından emin değil misiniz?).
Taşınabilirlik ne olacak? Daha sonra kendi çiftliğine geri alabilir veya başka bir bulut çiftliğine taşıyabilir misin? Hepsi bir dereceye kadar taşınabilir.
Düşünecek çok şey var ... hala bunu kendim öğreniyorum.
Talebi karşılamak için örnekleri elle başlatmanız gerekiyorsa, bu bir bulut değildir.
Azure ve EC2, yalnızca bazı hizmetleri yanında bulunan sanal sunuculardır.
Güncelleme:
EC2 ve Azure size yeni örnekleri yük altında otomatik olarak başlatmayı yönetme seçenekleri sunar, ancak yine de bunu yönetmeniz gerekir. Ve boş ve boş durumları ödersiniz.
GAE bunu otomatik olarak kullanıma hazır hale getirir ve yalnızca kodunuzun istekler sırasında çalıştığı süre boyunca ücret alır.
İşte bazı diğer noktalar.
GAE - Tüm trafik ghs.google.com DNS üzerinden yönlendirilen AWS ve Azure'dan sonra bir hizmet yığını olarak platformda daha yüksek oturur ve sayfanızı makinelerinden biri üzerinden sunarak dinamik olarak yükleyerek fiyatları düşük tutmalarını sağlar. ölçekleme bu yaklaşım ile ince taneli, Eksilerini statik ip, filtre veya bloke eğilimli değildir. Statik ip sınırlamasından, siteye özgü herhangi bir https sertifikası kuramazsınız.
AWS ve Azure, hemen hemen statik bir IP ve özel bir VM sunarak, https sertifikası gibi temel gereksinimlere izin verir. ilişkisel depolama desteği de alırsınız. Maliyet de bu özel VM olguyu yansıtacak şekilde daha yüksektir ve VM yani 40 dolar/ay yığınında ölçeklendirirsiniz) avantajı, a VM kendiniz için, GAE'deki 30 saniyelik işlemci işleme sınırlamasıyla sınırlı değilsiniz ve daha büyük görevleri çalıştırabilirsiniz.
Bu nedenle, müşteriniz filtrelenmiş ülkelerde temel alı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 bulutun sunduğu çözümlere bakın ve hibrit modele geçin. Bazı problemler çekiç, bazıları tornavida gerektirir. Araçlarınızı tanıyın ve doğru soruna uygulayın.
Yukarıdaki cevaplardan birine 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.
Bir nosql veritabanı gerektiren bir sosyal ağ projesi var. AppEngine, çeşitli çerçeveler için daha iyi desteği olsaydı iyi bir çözüm olurdu. Django nonrel adaptörü ile _ Python GAE üzerinde çalışıyor, ancak birçok nedenden ötürü Rails tercih ediyorum. Rails3 birkaç aydır piyasada ve topluluktaki veya GAE ekibindeki hiç kimse henüz bunu desteklemek için bir reçete yazmamış. Yetenek setiniz yoksa - Ruby ve Rails internals, jruby ve GAE internals'i bilmek - kendi tarifinizi yazmak için, diğer kişilerin merhametindesiniz platformda olsun.
AWS çok daha fazla iştir, ancak en azından hangi araçlarla olursa olsun platforma girebilir ve bir iç geliştirici veya daha yüksek güçlere destek olmak yerine idari olarak birçok sorunla başa çıkabilirsiniz.
Ruby geliştiricileri için Heroku ve EngineYard ile ilgili şikayetim, veritabanlarının nasıl ölçeklendiği konusundaki gizem. Nasıl ölçeklenirler?
Benim durumumda, bir NoSQL çözümü tercih ediyorum ve Mongo iyi bir seçim gibi görünüyor. MongoMachine, Heroku veya EY için önerilen çözüm gibi görünüyor, ancak pahalı. 2,50 ABD doları/GB depolama alanı? Depolama, GAE veya EBS'de yalnızca 0,10 GB/ay'dır.
Google App Engine ile son zamanlarda 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 kullanılabilir. Dosyalara erişim vermez, ancak uygulamanız için GQL (SQL- veri tabanı arayüzü gibi) muhtemelen fazlasıyla yeterli olacaktır (ve oldukça sağlam).
Göz önünde bulundurmak isteyebileceğiniz bir şey, GAE'deki bir uygulamanın, Google Hesapları olan kullanıcıların veya Google Apps girişini (bir kısayol) kullanarak bir alandaki hesapların kullanılmasını sağlayacak bir arayüz kullanabilmesidir. Bunlardan birini seçersiniz. Dolayısıyla, zaten bir Google Apps Web sitesi kullanıyorsanız, kullanıcılarınız yeni hesaplar kaydetmek zorunda kalmayacağından Google App Engine sizin için mükemmel bir seçim olacaktır.
EDIT: Arachnid'in de işaret ettiği gibi, kendi giriş sisteminizi kodlayamazsınız. Üzgünüm, seni orada endişelendirirsem.
Diğer iki alternatife gelince, sadece onları okudum ve test etmedim. Ancak GAE'nin araştırmamdan ve daha önce de belirttiğin gibi daha kolay bir çerçeve sunduğuna inanıyorum.
Her durumda, alan ve bant genişliği üzerindeki ücretsiz kotayı kullanarak GAE'yi deneyebilir ve ihtiyaçlarınızı karşılayıp karşılamadığını görebilirsiniz.
İyi şanslar.
Azure, "Hizmet Olarak Platform" sunucusu olarak Windows/SQL'e sahiptir ve kesinlikle takılı kalmazsınız, sadece kendi veri merkezinizde Windows/SQL'e geri dönün (Linux yok, ancak evet Java, Python, PHP, Ruby, Tomcat'i destekliyorlar) , Apache vb.). Amazon gibi, tamamen erişilebilir Sanal Makine seçeneğini de sunacaklar, böylece istediğinizi yükleyebilir/çalıştırabilirsiniz.
Amazon sadece Sanal Makine var, bu yüzden hala intall, yama, lisans, güvenli, vb ... Bence tür bulut bulmanın faydaları yener. Veri merkezinizden başka bir şeye yeni bir şey taşıdınız.
Google'ın ilişkisel veritabanı yoktur ve siz STUCK olursunuz. Onlar gerçekten sadece Python geliştiriciler ve Java için bazı sınırlı destek hitap.Gerçekten bulut alanında bir oyuncu değiller.
Burada bahsedilmeyen bir şey, kimse korkunç adın yanı sıra "Windows Azure AppFabric Service Bus & ACS" olarak düşündüğü şeydir ...?
Azure'u, şirket içi altyapıya yatırım yaparak herhangi bir işletmenin bakış açısından cazip hale getirecek gerçekten güçlü bir entegrasyon özellikleri yığını gibi görünüyor.
Amazon EC2'yi bir süre denedikten ve bazı gecikmelere bastıktan sonra maliyet nedeniyle deneme yaparken Google Apps'ı araştırmaya başladım. Erlang'ı geliştirme dili olarak tercih ederim ama Python ile başa çıkabilirim, bu yüzden belirleyici bir faktör değildi. Statik IP görmediğimde, öyleydi. Ayrıca, yığının üzerinde daha yüksek olması, performans konusunda beni biraz gerginleştiriyor.
Keşke AWS daha ucuz olsaydı, ancak Google Scala, JRuby ve Erlang gibi statik IP'ler ve tercihen ek diller sağlayana kadar, seçim benim için açık: AWS . İlk iki dil de basit olmalı, ikisi de JVM tabanlıdır. Hatta bu konuda bir şeyler okuduğumu hatırladığım gibi, zaten etrafta yapılmış olabilir.
Sadece karşılaştırmayı hangi platformun desteklediğini düşünmekten ayrı olarak, Ölçeklenebilirlik, Erişim Kolaylığı, Çok Yönlü (uygulama açısından), iş durumu için eşit derecede ekonomik olan farklı barındırma platformlarını barındırabilir, işletme için birden fazla çözümü vardır. uygulamalar (yani depolama, dağıtım, bant genişliği, lisanslama politikası vb.), hizmet kalitesinin kayıt güvenilirliği, denetlenmiş güvenlik, faturalandırmada şeffaflık ve maliyetler vb. Yukarıdaki tüm metriklere bakarsanız AWS puanlarının çok yukarıda olduğunu hissediyorum . 2 yıldan beri AWS'de 10 üretim hesabı yönetiyorum ve aynı zamanda şirket/iş birimi müşterinin büyük ölçeklenebilirlik taleplerini karşılayabildi .... AWS'de hiç şüphesiz bir altyapı, Güncellemeler (eğer/eğer gerekli), güvenlik vb. Ama piyasada mevcut tüm araçları var/net serbestçe. Mevcut BT kaynakları AWS'deki tüm altyapıyı da koruyabilir.
Azure emin bir entegre IDE, ancak herhangi bir bulutun gerçek maliyetlendirmesi, uygulamayı başarıyla dağıttıktan sonra başlayacaktır (dağıtım platformu). Gerçek zamanlı dağıtım/ölçeklenebilir üretim senaryoları ....... Herkesin bildiği gibi MS maliyetlerde birçok gizli gündem oynar .. tahakkuk eden veya ortaya çıkacak maliyetleri (tahminler gönderirken) yapmak çok zor.
GAE Python/Java uygulamalar için çok özeldir.) Uygulamanın yeniden yazılmasını (mevcut), test edilmesini sağlamak için büyük çaba (kaynak + maliyet açısından), konuşlandırılmış vb.