Neden insanlar AWS mevcutken Heroku kullanıyor? Heroku'yu AWS'den ayıran nedir? [kapalı]


1101

Uygulamamı Heroku kullanarak dağıtmayı planlayan bir acemi RoR programcısıyım. Diğer danışman arkadaşlarımın sözleri, Heroku'nun gerçekten kolay, kullanımı iyi olduğunu söylüyor. Tek sorun, Heroku'nun ne yaptığını hala bilmiyorum ...

Web sitelerine baktım ve özetle, Heroku'nun ölçeklendirmeye yardımcı olduğu şey ... ama bu neden önemli? Heroku şunlara nasıl yardımcı olur:

  1. Hız - Araştırmam ABD / Asya merkezli bir kitleyi hedefliyorsam AWS'nin ABD Doğu Kıyısında konuşlandırmanın en hızlı olacağını ima etti.

  2. Güvenlik - Ne kadar güvenli?

  3. Ölçekleme - Aslında nasıl çalışır?

  4. Maliyet verimliliği - Ölçeklendirmeyi kolaylaştıran bir dinamo gibi bir şey var.

  5. Rakiplerine karşı nasıl ücret alıyorlar? Örneğin, Motor Yard ve bluebox ?

Lütfen açıklamak için layman İngilizce terimlerini kullanın ... Ben yeni başlayan bir programcıyım.


267
Aslında ücretsiz plan nedeniyle kullanıyorum;).
weddingcakes

56
Heroku ve AWS elastik fasulye sapı arasındaki farkın ne olduğunu sormuş olmalısınız. Aksi takdirde, muhtemelen aradığınız şey değil, her zamanki "PaaS vs IaaS" cevaplarını alırsınız.
Jus12

38
heroku üzerinde geliştirin, heroku üzerinde ölçeklendirin, heroku üzerinde yenilik yapın ... o zaman fikir bir kez iş çarptığında aws'a aktarın ... işe aldığınızda olduğu gibi.
Muhammad Umer

10
Birkaç hizmet kullandıktan sonra geçiş yapmak zor olabilir, her şeyi değiştirmeniz, yapılandırmanız, test etmeniz gerekir ... Kesinlikle bir maliyeti olacak
Paolo

37
Heroku ile ilgili en sevdiğim şeylerden biri, Github'dan otomatik olarak dağıtılması, bu yüzden repoda bir şubem olabilir production. Bu repoya yeni bir taahhüt eklendiğinde, Heroku otomatik olarak yakalar, kurar ve dağıtır. Hiçbir şey sunucu tarafı hakkında endişelenmenize gerek yok!
Razi Shaban

Yanıtlar:


245

AWS / Heroku , küçük hobi projeleri için ücretsizdir (başlangıç ​​olarak).

Bir uygulamayı hemen başlatmak, mimariyi çok fazla özelleştirmek istemiyorsanız , Heroku'yu seçin .

Mimariye odaklanmak ve farklı web sunucuları kullanabilmek istiyorsanız AWS'yi seçin . AWS, seçtiğiniz hizmeti / ürünü temel alarak daha fazla zaman alır, ancak buna değebilir. AWS ayrıca birçok eklenti hizmeti ve ürünü ile birlikte gelir.


Heroku

  • Hizmet Olarak Platform (PAAS)
  • İyi dokümantasyon
  • Yerleşik araçları ve mimarisi vardır.
  • Uygulamayı tasarlarken mimari üzerinde sınırlı kontrol.
  • Dağıtım halledilir (GitHub üzerinden otomatik veya git komutları veya CLI üzerinden manuel).
  • Zaman alıcı değil.

AWS

  • Hizmet Olarak Altyapı (IAAS)
  • Çok yönlü - EC2, LAMBDA, EMR, vb.Gibi birçok ürüne sahiptir.
  • İşletim sistemi, yazılım sürümü vb. Gibi mimari üzerinde daha fazla kontrol sağlamak için Özel bir örnek kullanabilir. Birden fazla arka uç katmanı vardır.
  • Elastik Fasulye Heroku's PAAS benzer bir özelliktir.
  • Otomatik dağıtımı kullanabilir veya kendi dağıtımınızı yapabilir.

7
ElastikBeanstalk, kullandığınız sunucuların ötesinde hizmet için herhangi bir işaretleme olmadığı için Heroku'dan çok daha uygun maliyetlidir. Ayrıca AWS serbest kademe ile ElasticBeanstalk kullanabilirsiniz aws.amazon.com/elasticbeanstalk/pricing
zags

25
@Zags "uygun maliyetli" bir görüş meselesidir. Bir Heroku uygulamasını bir dakikadan daha kısa bir sürede oluşturabilir ve dağıtabilirsem ve Beanstalk'ı kurmak potansiyel olarak saatler sürer - bu, geliştiricinin birkaç saatinin Beanstalk'tan sahip olabileceği "tasarrufları" yok ettiği göz önüne alındığında maliyet etkin değildir. Bu gerçekten önceliklere bağlıdır - nakliye özellikleri daha mı önemli ya da altyapının kurulması ve bakımı daha mı önemli?
Brian Sevgili

5
@BrianDear kurulum kolaylığı, çeşitli sistemlere aşina olmanıza bağlıdır. FlexibleBeanstalk eşit tanıdıklık kurmak için daha uzun sürse bile, AWS genellikle Heroku'nun maliyetinin% 60'ıdır (Heruku performans-m'yi bir AWS m4.xlarge ile karşılaştırın). Bir sunucu faturası 100 $ / ay kadar düşük olduğu için,% 40 tasarruf bir yıl içinde "birkaç saatlik mühendislik" maliyetini geri kazanacaktır. Sunucu faturası ne kadar yüksek olursa AWS için argüman o kadar güçlü olur.
zags

4
Beanstalk'a dağıtım yaklaşık 5 dakika sürer. Platform -> Zip yükle -> Sevinin'i seçin. Master'a zorlayarak dağıtmak ister misiniz? CodePipeline'ı kurmak için 5 dakika daha harcayın. CLI sizin için korkutuyorsa, bu iş akışlarının her ikisi de yalnızca GUI konsolu kullanılarak yapılabilir.
Anthony Manning-Franklin

1
Ne yazık ki, belgelendirme AWS altında listelenmiyor. AWS, herhangi bir teknolojinin / platformun en iyi belgelerinden birine sahiptir. Bu cevap 2013'te yayınlanmadan önce bile kullanmıştım.
lupchiazoem

2055

İlk önce AWS ve Heroku farklı şeyler. AWS Hizmet Olarak Altyapı ( IaaS ) sunarken Heroku Hizmet Olarak Bir Platform ( PaaS ) sunar.

Fark ne? Yaklaşık olarak, IaaS, üzerine bir şeyler inşa etmek için ihtiyacınız olan bileşenleri sunar; PaaS size sadece kodu ve bazı temel yapılandırmaları aktardığınız ve çalışan bir uygulama aldığınız bir ortam sağlar. IaaS size daha fazla güç ve esneklik sağlayabilir, bu da daha fazla kendinizi geliştirmek ve bakımını yapmak zorunda olursunuz.

Kodunuzun AWS'de çalışmasını ve biraz Heroku dağıtımına benzemesini sağlamak için bazı EC2 örnekleri isteyeceksiniz - üzerlerinde bir yük dengeleyici / önbellek katmanı (örn. Vernik ) yüklü olmasını isteyeceksiniz, örneğin Yolcu ve nginx kodunuzu sunmak için, PostgreSQL gibi bir şeyin kümelenmiş bir veritabanı örneğini dağıtmak ve yapılandırmak isteyeceksiniz . Capistrano gibi bir şeyle ve günlük toplama yapan bir şeyle bir dağıtım sistemi isteyeceksiniz .

Bu, kurulması ve sürdürülmesi için önemsiz bir iş değildir. Heroku ile, bu tür bir aşamaya ulaşmak için gereken çaba belki birkaç satır uygulama kodu ve a git push.

Yani siz bu kadar uzaksınız ve ölçeklendirmek istiyorsunuz. Harika. EC2 dağıtımınız için Kukla kullanıyorsunuz , değil mi? Şimdi Capistrano dosyalarınızı örnekleri gerektiği gibi yukarı / aşağı döndürecek şekilde yapılandırıyorsunuz; Kukla yapılandırmanızı Varjish'in web çalışanı örneklerinden haberdar olması ve aralarında otomatik olarak havuz oluşturması için yeniden jig uygularsınız. Veya sen heroku scale web:+5.

Umarım bu ikisi arasındaki karşılaştırma hakkında bir fikir verir. Şimdi belirli noktalarınızı ele almak için:

hız

Şu Heroku sadece AWS içinde örneklerinde çalışır us-eastve eu-west. Senin için, bu zaten istediğin gibi görünüyor. Diğerleri için, potansiyel olarak daha önemli bir husustur.

Güvenlik

Güvenlik güncelleştirmelerinin çok gerisinde olan veya genellikle kötü bir şekilde bir araya getirilmiş, dahili olarak bakımı yapılan birçok üretim sunucusu gördüm. Heroku ile, nasıl baktığınıza bağlı olarak bir nimet veya lanet olan bu tür şeyleri yöneten bir başkası var!

Konuşlandırdığınızda, kodunuzu doğrudan Heroku'ya dağıtıyorsunuz. Bu sizin için bir sorun olabilir. Dyno İzolasyonu ile ilgili makaleleri, izolasyon teknolojilerini detaylandırıyor (sanki ayrı EC2 bulut sunucularında birden çok dinamo çalışıyor gibi görünüyor). Bazı meslektaşlar bu teknolojilerle ilgili sorunları ve tecrit güçlerini ifade ettiler; Ne yazık ki gerçekten yorum yapmak için yeterli bilgi / deneyim pozisyonunda değilim, ama şu anki Heroku dağıtımlarım "yeterince iyi" olduğunu düşünüyor. Senin için bir sorun olabilir, bilmiyorum.

ölçekleme

Birinin yukarıdaki IaaS vs PaaS karşılaştırmasında bunu nasıl uygulayabileceğine değindim. Yaklaşık olarak, uygulamanızda Procfileform satırları olan bir a vardır , dyno_type: command_to_runörneğin ( http://devcenter.heroku.com/articles/process-model adresinden kopyalanmıştır ):

web:    bundle exec rails server
worker: bundle exec rake jobs:work

Bu, bir:

heroku scale web:2 worker:10

2 webdinamosun ve 10 workerdinamo'nun çalışmasına neden olur. Güzel, basit, kolay. Not webdış dünyaya erişimi olan özel bir Dyno tipidir ve onların güzel web trafiği çoklayıcı arkasında (Vernik / nginx kombinasyonunun muhtemelen bir çeşit) buna göre o güzergahın trafik olduğunu. Çalışanlarınız büyük olasılıkla, konumu ortamdaki bir URL yoluyla alacakları benzer yönlendirme için bir ileti kuyruğu ile etkileşime girer.

Maliyet Verimliliği

Birçok insanın bu konuda birçok farklı görüşü var. Şu anda, bir AWS mikro örneği için 0.025 $ / saat veya AWS küçük örneği için 0.09 $ / saat ile karşılaştırıldığında, bir dinamo saati için 0.05 $ / saat.

Heroku en Dyno belgeleri muhtemelen değil yani, 512MB RAM hakkında diyor çok bir EC2 mikro örneği gibi biraz gibi bir dyno düşünün mantıksız. Fiyatın iki katı mı? Zamanınıza ne kadar değer veriyorsunuz? Bu standarda ulaşmak için bir IaaS teklifinin üzerine inşa etmek için gereken zaman ve çaba miktarı kesinlikle ucuz değildir. Bu soruyu sizin için gerçekten cevaplayamıyorum, ancak kurulum ve bakımın 'gizli maliyetlerini' küçümsemeyin.

(Biraz bir kenara, ama buradan bir dinamoya bağlanırsam ( heroku run bash), lanetli bir görünüm 4 çekirdeği /proc/cpuinfove 36 GB RAM'i gösteriyor - bu beni "Yüksek Bellek Çift Ekstra Büyük Eşgörünümde olduğuma inandırıyor " . Heroku dyno belgeleri her dyno'nun 512MB RAM aldığını söylüyor, bu yüzden potansiyel olarak 71'e kadar başka dinamoyla paylaşıyorum. (Heroku'nun AWS örneklerinin homojenliği hakkında yeterli veri yok, bu yüzden göçünüz değişebilir))

Rakiplerine karşı nasıl ücret alıyorlar?

Bu, sana gerçekten yardım edememekten korkuyorum. Gerçekten baktığım tek rakip Google App Engine'di - Java uygulamalarını dağıtmaya çalışırken , kullanılabilir çerçeveler ve teknolojiler üzerindeki kısıtlamalar inanılmaz derecede rahatsız ediciydi. Bu "sadece bir Java şeyinden" daha fazlasıdır - genel kısıtlamaların ve gerekli düşüncelerin ( birkaçında SSS ipuçları) miktarı uygun olmaktan daha az görünüyordu. Buna karşılık, Heroku'ya konuşlanmak bir rüyaydı.

Sonuç

Umarım bu sorularınızı yanıtlar (ele alınmasını istediğiniz boşluklar / diğer alanlar varsa lütfen yorum yapın). Kişisel konumumu sunmam gerektiğini hissediyorum. Heroku'yu "hızlı dağıtımlar" için seviyorum. Bir uygulamaya başladığımda ve bazı ucuz barındırma istediğimde (Heroku ücretsiz katmanı harika - esasen sadece bir web dinamosuna ve 5 MB PostgreSQL'e ihtiyacınız varsa, bir uygulamayı barındırmak ücretsizdir), Heroku benim konumum . Birkaç ödeme müşterisi olan, hizmet seviyesi sözleşmesi olan, ops, c cetera için harcanacak zamana sahip "Ciddi Üretim Dağıtımı" için, kendimi bu kadar kontrolü Heroku'ya ve daha sonra AWS veya kendi sunucularımız barındırma platformudur.

Sonuçta, sizin için en iyi olan şeyle ilgilidir. "Yeni başlayan bir programcı" olduğunuzu söylüyorsunuz - bu sadece Heroku'yu Ruby yazmaya odaklanmanıza izin verecek ve kodunuzun etrafındaki diğer tüm altyapıları almak için zaman harcamanıza gerek olmayabilir. Kesinlikle denemek istiyorum.


AWS'nin aslında Ruby, Node.js, PHP, Python, .NET ve Java'yı destekleyen bir PaaS teklifi, Elastik Beanstalk var . Genelde çoğu insan, "AWS" gördüklerinde, kesinlikle IaaS teklifleri olan EC2 ve S3 ve EBS gibi şeylere atlıyorlar.


33
Şimdi elastik fasulye sapının yolcunun arkasındaki yakut uygulamaları tamamen desteklediğini unutmayın.
yeniden yazıldı

4
Heroku şimdi sadece ABD bölgesinde değil, AB'deki sunucuları da destekliyor.
Thomas Welton

7
AWS BeanStalk göz önüne alındığında, AWS'nin "sadece" bir IaaS teklif standı geçersiz kılınırken Heroku'nun bir PaaS çözümü olduğu hakkındaki tartışmaların tamamı değil mi?
Gmu

6
@KristianGlass İki PaaS teklifine (Beanstalk ve Heroku) gerçekten bakan güncellenmiş bir cevap alabilirsek harika olurdu
Alex Chumbley

3
Bu insanlar için yararlı oldu sevindim :) @Gmu Yanıtlama sırasında, EB "AWS" demek "EC2" demek oldukça makul görünüyordu, ama Alex önerdiği gibi, şimdi EB cevap yeniden bakacağım yeterince sınırlıydı önemli ölçüde iyileşti.
Kristian Glass

68

Kristian Glass'ın dediği gibi , IaaS ( AWS ) ve PaaS ( Heroku , EngineYard ) arasında bir karşılaştırma yoktur .

PaaS temel olarak geliştiricilerin uygulamanın geliştirilmesini hızlandırmasına yardımcı olur, böylece konfigürasyonlar kurmak ve sunucular ve veritabanları gibi şeyleri yönetmek yerine para ve en önemlisi uygulamalarını ve işlerini yeniler. PaaS kullanmak için satın alan diğer özellikler, çeviklik, Yüksek Kullanılabilirlik, İzleme, Ölçek / Descale, sınırlı uzmanlık ihtiyacı, kolay dağıtım ve azaltılmış maliyet ve geliştirme süresi gibi uygulama dağıtım işlemidir.

Ama yine de PaaS'ın PaaS'ın benimsenmesine engel olan karanlık bir tarafı var:

  • Sunucu ve veritabanları üzerinde daha az kontrol
  • Düzgün yönetilmezse maliyetler çok yüksek olacaktır
  • Mevcut gün ve yaşta erken ve şüpheli

Yukarıdakilerin dışında sizi idare etmek için yeterli beceriye sahip olmalısınız.

  • Donanım edinimi
  • İşletim sistemi
  • Sunucu Yazılımı
  • Sunucu Tarafı Komut Dosyası Ortamı
  • Web sunucusu
  • Veritabanı Yönetim Sistemi (Mysql, Redis vb.)
  • Üretim sunucusunu yapılandırın
  • Test ve dağıtım aracı
  • İzleme Uygulaması
  • Yüksek kullanılabilirlik
  • Yük Boşaltma / Http Yönlendirme
  • Hizmet Yedekleme İlkeleri
  • Takım İşbirliği
  • Üretimi Yeniden İnşa Et

Küçük ölçekli işletmeniz varsa, PaaS sizin için en iyi seçenek olacaktır:

  • Kullandığın kadar öde
  • Düşük başlangıç ​​maliyeti
  • Tesisatı uzmana bırakın
  • PaaS otomatik ölçeklendirme / kireç çözme, Yük dengeleme, olağanüstü durum kurtarma işlemlerini gerçekleştirir
  • PaaS tüm güvenlik gereksinimlerini yönetir
  • PaaS güvenilirliği ve Yüksek Kullanılabilirliği yönetir
  • Paas sizin için birçok üçüncü taraf eklentisini yönetiyor

İhtiyaca göre tamamen bireysel bir seçim olacaktır. PPT Hosting Rails Uygulamalarım hakkında ayrıntılara sahip olabilirsiniz .


3
EngineYard ve Heroku'yu görüyorum ve tabii ki RubberBeanstalk ... hepsi AWS'de koşuyor. Aslında, altındaki aws üzerinde ÇALIŞMAYAN büyük PaaS var mı? Herhangi bir fikir? Şerefe
Fattie

5
Joe, bunun geç olduğunu biliyorum, ama sorunuzu cevaplamak için IBM Bluemix SoftLayer'da çalışıyor.
Antonio Cangiano

PaaS tüm güvenlik gereksinimlerini yönetir Belki de sunucuyu güven altına almak, ancak oldukça yanıltıcıdır (özellikle geliştiricilerin sistemlerinin varsayılan olarak güvenli olduğunu varsaydığı bir dünyada). Sizi XSS, CSRF'den koruyamayacak ve muhtemelen sizin için önemli bir HTTP başlığı ayarlamayacak. Sadece bunu görüyoruz: Thank you for your concerns. We assure you that we take security very seriously and run or systems on secure servers. There is no need to worry about [insert security issue here] as all that is handled by.... -1 ama düzgün düzenlenmişse ters çevirirdim.
Nateowami

4
Kendi altyapınızda çalışan ve PaaS esnekliği / kontrolü ile ilgili bazı endişeleri gideren bir PaaS çözümleri kategorisi (DIY PaaS) giderek daha fazla var. Bazı örnekler: openhift , cloudfoundry , Hasura . Feragatname: Hasura'da çalışıyorum.
iamnat

35

Aslında her ikisini de kullanabilirsiniz - amazon sunucuları ec2 ile bir uygulama geliştirebilirsiniz. Daha sonra (git ile) bir süre ücretsiz olarak heroku'ya itin (halka sunmak için heroku ücretsiz katmanını kullanın) ve test edin. Bir sunucu kiralamakla karşılaştırıldığında çok maliyet etkindir, ancak düşünmeniz gereken bir şey olan daha kısıtlayıcı bir heroku api ile konuşmak zorunda kalacaksınız. Kaynak: Bu yöntem çevrimiçi derslerimden biri için kabul edildi "Balaji S. Srinivasan ve Vijay S. Pande tarafından Coursera / Stanford'dan başlangıç ​​mühendisliği

Açıklamamın daha kolay anlaşılabilmesi için bir plan eklendi


15
Mikro örneği yerel bilgisayarınızı kullanmak yerine bir geliştirme makinesi olarak kullanmanın yararı nedir? Bu özel duruma AWS eklemenin ek faydasını görmüyorum. Teşekkürler!
Mateo

5
Muhtemelen akademik bir ortamda bunu geliştirecek, böylece geliştirme ortamını daha tutarlı bir şekilde ayarlama talimatları ve pencerelerde çalışması konusunda endişelenmeleri gerekmiyor
Jeff Dickey

2
Bu mimari, Windows / Linux OS uyumsuzluklarının çoğundan kaçınmaya yardımcı olur. Ayrıca Linux işletim sistemini yerel makinenize kurmak zorunda kalmadan öğrenin. Mac'iniz varsa sorun daha azdır, ancak birçok kişi Windows'u kullanır.
sivi

13
Buna sanal makine deniyor, hala bunu yapmanın pek bir anlamı yok.
Abe Petrillo

2
Evreleme ve üretim için ayrı bir platforma sahip olmak süper korkunç bir fikirdir; büyük yazılım sürümleri uyumsuz şekillerde farklılık gösterecektir. Yerel işletim sistemi üretim işletim sisteminden farklı olsa bile kodunuzu geliştirme için yerel olarak çalıştırabilmelisiniz (en kötü durumda VMware veya vagrant gibi bir şeyle veya gömülü bir platform için bina oluşturuyorsa bir emülatörle; ancak yerel olarak çalışmak genellikle daha kolaydır ile). Kodu bulutta uzaktan dağıtabilmek, test ve hata ayıklamayı gereksiz yere zaman alıcı hale getiren hızlı uygulama geliştirme için korkunç bir engeldir.
Iain Collins

34

Bu karara geliştirme, BT ve iş hedeflerinden bakmak için birçok farklı yol var, bu yüzden bunaltıcı görünüyorsa kendinizi kötü hissetmeyin. Ama aynı zamanda - ölçeklenebilirliği fazla düşünmeyin.

Gereksinimlerinizi düşünün .

Günde 8 milyonun üzerinde benzersiz hizmet veren ve haftada 250 milyar dolardan başlayan büyük bir MM BT işgücü personeli tarafından altyapı donanımlarında 250 terabayt video sunan web siteleri tasarladım.

Ama aynı zamanda yılda 10 $ 20k $ oluşturmak için tasarlanmış, çok yüksek trafik, db veya işleme gereksinimleri yoktu daha küçük web siteleri vardı ve bu ödün vermeden $ 10 / mo genel hosting hesabından koştu.

Gelecekte, dağıtım sadece ilerleme nedeniyle AWS'den daha çok Heroku'ya benzeyecek. Giderek otomatikleştirilemeyen ölçeklendirme internet altyapılarının BT düğmesi döndürmesinde sıfır değer vardır ve bunların hiçbirinin sunduğunuz ürün veya hizmetin değeri ile ilgisi yoktur.

Ayrıca, ticari bir web sitesini aklınızda bulundurun - ölçeklenebilirlik, genellikle 'sahip olmak için iyi bir sorun' olarak adlandırdığımız şeydir - Facebook ve Twitter gibi sitelerle ölçeklenebilirlik sorunları çok yüksek olmasına rağmen, başarıları üzerinde sıfır olumsuz etkiye sahipti - haberler daha fazla kayda bile katkıda bulunmuş olabilir (tüm basın iyi bir baskıdır).

Günde 100k + benzersiz üreten ve ölçekleme sorunları olan bir hizmetiniz varsa, hangi dil, db, platform veya altyapı üzerinde çalışıyor olursanız olun sizin için elinizden almaktan memnuniyet duyarım!

Ölçeklenebilirlik düzeltilebilir bir uygulama sorunudur - müşterilere sahip olmamak varoluşsal bir konudur.


28

İnsanlar genellikle şu soruyu soruyor: Bir şey konuşlandırmaya başlarken Heroku veya AWS.

Hem Heroku hem de AWS'yi kullanma denemem, hızlı incelemem ve karşılaştırmam:

Heroku

  • Proje türünüz ne olursa olsun dağıtmak için bir komut: Ruby on Rails, Nodejs
  • Eklentileri ve üçüncü tarafları entegre etmek için çok sayıda 1 tıklama: Bir şeyle başlamak çok kolaydır.
  • Otomatik ölçeklendirme yok; yani elle büyütme / küçültme yapmanız gerekir
  • Özellikle sistem daha fazla kaynağa ihtiyaç duyduğunda maliyet pahalıdır
  • Ücretsiz örnek mevcut
  • Ücretsiz örnek etkin değilse uyku durumuna geçer.
  • Veri merkezi: Yalnızca ABD ve AB
  • Heroku run bash( Makine tavsiyesi için teşekkürler, MJafar Mash kullanarak) kullanarak / içine makine seviyesine dalış CAN ama tür sınırlı! Tam erişiminiz yok!
  • DevOps hakkında çok fazla şey bilmenize gerek yok

AWS - EC2

  • Bu, önceden yapılandırma işletim sistemine sahip bir makine gibi (ya da değil), bu nedenle web sitenizi / hizmetinizi çevrimiçi hale getirmek için yazılım, kütüphane yüklemeniz gerekir.
  • Eklenti ve Kütüphane'nin manuel olarak veya otomasyon komut dosyasının (genel komut dosyası ve sizin tarafınızdan yazılması) entegre edilmesi gerekir
  • Otomatik ölçeklendirme ve yük dengeleyici desteklenen hizmetlerdir, sadece sisteminizi nasıl yapılandıracağınızı ve entegre edeceğinizi öğrenin
  • Maliyet oldukça ucuz, hangi hizmetleri ve kullandığınız saat sayısına bağlıdır
  • T2.micro örnekleri için birkaç boş saat vardır, ancak genellikle her ay birkaç dolar ödersiniz (hala T2.micro kullanıyorsanız)
  • Ücretsiz örneğiniz, 7/24 kullanılabilir olan uyku moduna geçmez (çünkü bunun için ödeme yapabilirsiniz :))
  • Veri merkezi: tüm dünyada. Size en uygun bölgeyi seçin.
  • Makine seviyesine dalın. Böylece tadını çıkarabilirsiniz
  • DevOps hakkında biraz bilgi, ama sorun değil, Stackoverflow orada yardımcı olur!

AWS Elastik Beanstalk bir Heroku alternatifi, ancak daha ucuz

  • Elastik Beanstalk, 2010 yılından beri halka açık beta olarak duyuruldu; dağıtımla çalışmamızı kolaylaştırır. Ayrıntılar için lütfen buraya gidin

  • Beanstalk ücretsizdir, ödeyeceğiniz maliyet kullandığınız hizmetler ve kullanım saati için olacaktır.

  • Elastik Beanstalk'u uzun süre kullanıyorum ve Heroku'nun ve daha ucuzun yerini alabileceğini düşünüyorum!

özet

  • Heroku: Başlangıçta kolay, ÜCRETSİZ örnek, ancak daha sonra pahalı
  • AWS: Kolay değil, ücretsiz saatler mevcut, biraz daha ucuz , Beanstalk kullanmaktan endişe etmeli

Mevcut sistemimde, aşamalandırma için Heroku ve üretim için Beanstalk kullanıyorum!


3
Soruyu cevaplama şeklini seviyorum. Heroku ve AWS'yi denedim. Tavsiye etmeni kabul ediyorum:Use Heroku for staging, and Beanstalk for production!
Chetabahana

1
heroku run bashve
dyno'nuza

Fiyat tahmini yapabilir misiniz? Tomcat (Spring framework, angularJS vb.) üzerinde Java Web App yayınlamak zorunda kalacağım, her biri 5 dakika boyunca uygulamayı kullanan ayda 1000 kullanıcı düşünelim. Tahmini fiyat nedir? (çok düşük kullanım gibi, ancak tam ay kullanılabilirlik gibi)
ustura

1
@ razor t2 mikro örneği (üretim öncesi veya küçük proje için iyi) kullanırsanız, fiyat çok ucuzdur, önceki projedeki hafızam olarak ayda yaklaşık 5 $ ila 10 $ arasındadır. Ayrıntı burada aws.amazon.com/ec2/pricing
Hieu Pham

ve Heroku çok daha pahalı olacak mı? (2 kez?) fiyatlandırma sayfalarını biliyorum, ancak böyle basit bir uygulamanın ne kadar CPU gücü alacağını veya bir ay sonra DB kullanımının ne olacağını hesaplamak / hayal etmek zordur (DB oldukça küçük olacaktır)
jilet

27

Mevcut cevaplar geniş ölçüde doğrudur:

  • Heroku'nun kullanımı ve dağıtımı çok kolaydır, bir deponun otomatik dağıtımı için kolayca yapılandırılabilir (örneğin GitHub), çok sayıda üçüncü taraf eklentisi vardır ve örnek başına daha fazla ücret alınır.

  • AWS, DNS, yük dengeleme, ucuz dosya depolama da dahil olmak üzere, rekabetçi fiyatlara sahip daha geniş bir birinci taraf hizmet yelpazesine sahiptir ve güvenlik politikalarını tanımlayabilme gibi kurumsal özelliklere sahiptir.

Tl; dr için bu yazının sonuna atlayın.

AWS FlexibleBeanstalk, Heroku benzeri bir otomatik ölçeklendirme ve kolay dağıtım platformu sağlama girişimidir. EC2 bulut sunucularını (otomatik olarak oluşturduğu) kullandığı için, EB sunucuları diğer EC2 bulut sunucularının yapabileceği her şeyi yapabilir ve çalıştırması ucuzdur.

EB ile dağıtım çok yavaştır; bir güncelleme dağıtımı sunucu başına 10-15 dakika sürebilir ve daha büyük bir kümeye dağıtmak, Heroku'da bir güncelleme dağıtmak için yalnızca saniyelerle karşılaştırıldığında, bir saatin en iyi kısmını alabilir. EB'deki dağıtımlar, uygulama tasarımı üzerinde kısıtlamalar getirebilecek şekilde özellikle sorunsuz bir şekilde ele alınmaz.

Kendi ısmarlama sisteminizi oluşturmak için ElastikBeanstalk'un perde arkasında kullandığı tüm hizmetleri kullanabilirsiniz (CodeDeploy, Elastik Yük Dengeleyici, Otomatik Ölçekleme Grupları ile - ve eğer girmek istiyorsanız CodeCommit, CodeBuild ve CodePipeline ile) ama kesinlikle iyi bir harcama yapabilirsiniz EC2'deki şeyleri yapılandırmaktan oldukça kıvrımlı ve biraz daha aldatıcı olduğu için ilk kez birkaç hafta kurdu.

AWS Lightsail, rekabetçi fiyatlı bir barındırma seçeneği sunar, ancak dağıtım veya ölçeklendirmeye yardımcı olmaz - gerçekten sadece EC2 teklifleri için bir sarıcıdır (ancak çok daha fazlası). İlk kurulumda otomatik olarak bir bash betiği çalıştırmanıza izin verir, bu da hoş bir dokunuştur, ancak sadece bir EC2 örneği kurma maliyetine kıyasla pahalıdır (bu da programsal olarak da yapabilirsiniz).

Karşılaştırmayla ilgili bazı düşünceler (soruları dolambaçlı bir şekilde de olsa denemek ve cevaplamak için):

  1. Güvenlik yamaları (ve zaman zaman işletim sistemi güncellemeleri) ile yüklediğiniz her şeyi güncel tutmak da dahil olmak üzere, iş sistemi yönetiminin ne kadar olduğunu hafife almayın.

  2. Otomatik dağıtım, otomatik ölçeklendirme ve SSL sağlama ve yapılandırmanın ne kadar avantajlı olduğunu küçümsemeyin.

    Git deponuzu güncellediğinizde otomatik dağıtım Heroku ile zahmetsizdir. Anında, zariftir, bu nedenle son kullanıcılar için herhangi bir kesinti yoktur ve yalnızca testler / Sürekli Entegrasyon geçerse güncellenecek şekilde ayarlanabilir, böylece bozuk kodu dağıtırsanız sitenizi kırmazsınız.

    Otomatik dağıtım için aynı zamanda ElastikBeanstalk'u da kullanabilirsiniz, ancak ilk kez ayarlanan bir hafta ayarı yapmaya hazır olun. dağıtımları işlemek için uygulamanıza ekleyin.

    EB'de kesinti olmadan kesintisiz dağıtım için birden fazla örnek çalıştırmanız gerektiğini belirten maliyetleri tahmin edin - EB, hizmetlerinizin bozulmaması için her sunucuya ayrı ayrı güncellemeler sunar - burada Heroku sizin için yeni bir dyno döndürür ve kullanımdan kaldırılır eski hizmetin tüm istekleri işleninceye kadar (daha sonra siler).

    İlginç bir şekilde, EB ile birden fazla sunucu çalıştırmanın barındırma maliyeti, özellikle eklentilerin maliyetini ekledikten sonra, tek bir Heroku örneğinden daha ucuz olabilir.

Özel olarak sorulmayan, ancak diğer cevaplarla ortaya çıkan diğer bazı konular:

  1. Üretim ve geliştirme için farklı bir sağlayıcı kullanmak kötü bir fikirdir.

    İnsanların bunu önerdiğini söylüyorum. İdeal olarak kodun makul bir platformda iyi çalışması gerekir, bu nedenle mümkün olduğunca taşınabilir olsa da, her ana bilgisayardaki yazılım sürümleri büyük ölçüde değişecektir ve kodlama aşamalı olarak çalıştırıldığı için üretimde çalışacağı anlamına gelmez (örneğin, büyük Node.js / Ruby / Python / PHP / Perl sürümleri, kodu uyumsuz hale getirme yollarında farklılık gösterebilir, genellikle iyi bir test kapsamına sahip olsanız bile yakalanamayan sessiz yollarla).

    İyi bir fikir, prototipleme, daha küçük projeler ve mikro siteler için Heroku gibi bir şey kullanmaktır - böylece yapılandırma ve bakım için çok fazla zaman harcamadan işleri hızlı bir şekilde oluşturabilir ve dağıtabilirsiniz.

    Bu kararı verirken, tüm ortamı (veri depoları / eklentileri, SSL yükleme ve yapılandırma, vb. Gibi üçüncü taraf hizmetleri dahil) kopyalama maliyetini unutmadan, hem üretim hem de üretim öncesi örnekleri çalıştırma maliyetini hesaba kattığınızdan emin olun. .

  2. AWS kullanıyorsanız, Bitnami gibi satıcıların AWS önceden yapılandırılmış örneklerine karşı dikkatli olun - bunlar bir güvenlik kabusu. Açıklamasından bahsetmeden varsayılan olarak birçok kötü niyetli savunmasız uygulamayı ortaya çıkarabilirler.

    Bunun yerine yalnızca Ubuntu veya Debian (veya RPM desteğine ihtiyacınız varsa CentOS) gibi iyi desteklenen bir ana dağıtım kullanmayı düşünün.

    Not: Amazon teklifinin RPM kullanan Amazon Linux adlı kendi dağıtımı vardır, ancak EC2'ye özgüdür ve üçüncü taraf / açık kaynak yazılım tarafından daha az desteklenir.

  3. Ayrıca AWS (veya Lightsail) üzerinde bir EC2 örneği kurabilir ve üzerinde flynn veya dokku gibi bir şeyle yapılandırabilirsiniz - daha sonra birden fazla siteyi kolayca dağıtabilirsiniz, bu da çok fazla hizmet sürdürürseniz veya olmak istiyorsanız kolayca yeni şeyler dönebilir. Bununla birlikte, kurulumu sadece Heroku kullanmak kadar otomajik değildir ve bunu yapılandırmak ve korumak için çok zaman harcayabilirsiniz (Amazon kümeleme ve Docker Swarm'ı kullanarak kurmaktan daha kolay olması için bulduğum noktaya kadar; YMMV).

Üzerinde çalıştığım projenin ihtiyaçlarına bağlı olarak AWS EC örneklerini (tek başına ve kümelerde), Elastik Beanstalk ve Lightsail ve Heroku'yu aynı anda kullandım.

Hizmetleri yapılandırmak için zaman harcamaktan nefret ediyorum, ancak her şey için kullandıysam ve AWS maliyetin bir kısmını çalıştırırsa, Heroku faturam yılda binlerce olurdu.

tl; Dr.

Para asla bir sorun olmasaydı, hemen hemen her şey için Heroku'yu büyük bir zaman çizelgesi olarak kullanardım - ama yine de AWS'yi Heroku'nun sunmadığı esnekliğe ve daha gelişmiş hizmetlere ihtiyaç duyduğum daha karmaşık projeler için kullanmak istiyorum.

Benim için ideal senaryo, RubberBeanstalk'ın daha çok Heroku gibi çalıştığı, yani daha kolay yapılandırma ve daha hızlı ve daha iyi bir dağıtım mekanizmasıyla gerçekleşmesi olurdu.

Bir hizmet örneğidir neredeyse bu olduğunu now.sh aslında perde arkasında aws kullanan, ancak Heroku olduğu gibi otomatik SSL, DNS, zarif dağıtımlar, süper kolay küme kurulumu ile (kolay olarak dağıtımları ve kümeleme yapar yönetimi).

Hem Node.js uygulaması hem de Docker görüntü dağıtımları için oldukça çok kullandım, ana uyarı, örneklerin paylaşıldığı (düşük maliyetlerine yansıyan bir şey) ve şu anda özel örnekleri satın alma seçeneği yok. Bununla birlikte, açık kaynak dağıtım aracı 'şimdi' AWS'deki özel örneklere, Google Cloud ve Azure'a da dağıtım yapmak için kullanılabilir.


8

Heroku'dan AWS'ye insanları taşıyan işimizin önemli bir yüzdesi oldu. Her ikisinin de avantajları var, ancak bir süre sonra Heroku'da dağınık oluyor ... Heroku'nun sınırlamaları ile bakımı kolay olmayan belirli bir karmaşıklık seviyesine ihtiyacınız olduğunda.

Bununla birlikte, harika çerçeveler / araçlarla AWS'de kalarak Heroku'nun kolaylığına ve AWS'nin esnekliğine sahip olmak için giderek artan seçenekler var.


Fiyat tahmini yapabilir misiniz? Tomcat (Spring framework, angularJS vb.) üzerinde Java Web App yayınlamak zorunda kalacağım, her biri 5 dakika boyunca uygulamayı kullanan ayda 1000 kullanıcı düşünelim. Tahmini fiyat nedir? (çok düşük kullanım, ancak tam ay kullanılabilirlik gibi)
ustura

3

Komik olan Heroku aslında arka uçta AWS kullanıyor. Tüm masrafları ortadan kaldırır ve EC2'de sizin için mimari yönetimi yapar. (Görüşme sırasında Büyük Şirketteki kıdemli bir mühendisden bu bilgiyi aldınız)


1

İyi! Heroku'nun tomurcuklanma ve yeni doğan geliştiricilerle ünlü olduğunu gözlemlerken AWS'nin geliştirici kişiliği gelişmiş. DigitalOcean da bu alanda önemli bir oyuncu. Cloudways, DigitalOcean ve AWS'ye bir tıklamayla Lamba yığını oluşturmayı çok kolaylaştırdı. Bir tıklamayla tüm hizmetlerin ve paket güncellemelerinin olması, her şeyi manuel olarak yapmaktan çok daha iyidir.

Tamamen buradan kontrol edebilirsiniz: https://www.cloudways.com/blog/host-php-on-aws-cloud/


1

Heroku arka planda AWS kullanıyor, hepsi ihtiyacınız olan çözüm türüne bağlı. Bir çekirdek linux ve devops adam iseniz ami palcement seçenekleri vb seçmek gibi sıfırdan vm oluşturma konusunda endişelenmiyor, AWS ile gidebilirsiniz. Eğer bu nettigrities olmadan yüzey seviyesinde bir şeyler yapmak istiyorsanız heroku ile gidebilirsiniz.


0

Amazon Web Services (AWS),% 99.9999999 dayanıklılık ve veri ve altyapı kullanılabilirliği ile IaaS'den PaaS'a birçok hizmet sunmaktadır. AWS, geliştiricilerin uygulama dağıtım süreçlerini boru hattı haline getirmeleri için çeşitli araçlarla birlikte altyapı otomasyonu sunar.

Öte yandan Heroku, platformunuzu bulutlarında yönetmek için hizmet sunan sadece PaaS. İster altyapı ister güvenlik olsun AWS ile hiçbir yerde durmaz.


6
"Altyapı veya güvenlik olsun AWS'nin hiçbir yerinde durmaz."
pdoherty926

0

Bazen insanların neden AWS'yi Heroku ile karşılaştırdığını merak ediyorum. AWS, bir IAAS (hizmet olarak altyapı), sistemin ne kadar sağlam ve hesaplayıcı olduğunu açıkça anlatıyor. Heroku, diğer taraftan, sadece bir SAAS, temelde AWS hizmetlerinin sadece bir kısmı. Öyleyse neden Heroku'yu kullanarak ilk ürününüzü ana ürüne gönderebildiğinizde AWS kurulumu ile mücadele edin.

Heroku, ücretsiz, basit ve neredeyse tüm yığınları web'e dağıtmak kolaydır. Heroku, uygulamanızı canlı bir sunucuya en kısa sürede göndermenin tüm zorluklarını atlamak için özel olarak tasarlanmıştır.

Bununla birlikte, başvurunuzu her iki taraftaki öğreticilerden herhangi birini kullanarak dağıtmak ve karşılaştırmak isteyebilirsiniz.

AWS DOCS ve Heroku Belgeleri


0

Hem AWS hem de Heroku bulut platformları olmasına rağmen AWS IaaS ve Heroku PaaS olduğu için farklıdırlar


2
Bu doğru değil. AWS'nin hem IAAS hem de PAAS teklifleri vardır.
Glenn Bech

0

Heroku, AWS'nin alt kümesi gibidir. Bu sadece bir hizmet olarak platform, AWS her şey ve her düzeyde uygulanabilir.

Uygulama, iş gereksiniminin ne olduğuna bağlıdır. Her ikisine de uyuyorsa, uygun şekilde kullanın.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.