Mengapa orang menggunakan Heroku ketika AWS hadir? Apa yang membedakan Heroku dari AWS? [Tutup]

1102

Saya seorang programmer RoR pemula yang berencana untuk menyebarkan aplikasi saya menggunakan Heroku. Kata dari teman penasihat saya yang lain mengatakan bahwa Heroku sangat mudah, bagus untuk digunakan. Satu-satunya masalah adalah bahwa saya masih tidak tahu apa yang dilakukan Heroku ...

Saya telah melihat situs web mereka dan singkatnya, apa yang dilakukan Heroku adalah membantu penskalaan tetapi ... mengapa itu penting? Bagaimana cara Heroku membantu:

  1. Kecepatan - Penelitian saya menyiratkan bahwa menggunakan AWS di Pantai Timur AS akan menjadi yang tercepat jika saya menargetkan audiens yang berbasis di AS / Asia.

  2. Keamanan - Seberapa amankah mereka?

  3. Penskalaan - Bagaimana cara kerjanya?

  4. Efisiensi biaya - Ada sesuatu seperti dyno yang membuatnya mudah untuk diukur.

  5. Bagaimana cara mereka melawan pesaing? Misalnya, Mesin Yard dan kotak biru ?

Silakan gunakan istilah bahasa Inggris orang awam untuk menjelaskan ... Saya seorang programmer pemula.

Bryan
sumber
267
Saya sebenarnya menggunakannya karena paket gratis;).
kue pernikahan
56
Anda seharusnya bertanya apa perbedaan antara Heroku dan AWS elastis beanstalk .. Kalau tidak, Anda akan mendapatkan jawaban "PaaS vs IaaS" yang biasa, bukan apa yang mungkin Anda cari.
Jus12
38
berkembang di heroku, skala di heroku, berinovasi di heroku ... maka sekali ide adalah bisnis hit kemudian transfer ke aws ... seperti ketika Anda mempekerjakan.
Muhammad Umer
10
Mungkin sulit untuk bermigrasi begitu Anda menggunakan beberapa layanan dan perlu melakukan trasfer, mengkonfigurasi, menguji segalanya ... Pasti akan ada biaya
Paolo
37
Salah satu hal favorit saya tentang Heroku adalah auto-deploys dari Github, jadi saya dapat memiliki productioncabang di repo saya. Setiap kali komit baru didorong ke repo itu, Heroku secara otomatis mengambilnya, membangunnya, dan menyebarkannya. Saya tidak perlu khawatir tentang apa pun sisi server sama sekali!
Razi Shaban

Jawaban:

245

AWS / Heroku keduanya gratis untuk proyek hobi kecil (untuk memulai).

Jika Anda ingin segera memulai aplikasi, tanpa banyak penyesuaian arsitektur, maka pilih Heroku .

Jika Anda ingin fokus pada arsitektur dan dapat menggunakan server web yang berbeda, maka pilih AWS . AWS lebih memakan waktu berdasarkan layanan / produk apa yang Anda pilih, tetapi dapat sia-sia. AWS juga dilengkapi dengan banyak layanan dan produk plugin.


Heroku

  • Platform sebagai Layanan (PAAS)
  • Dokumentasi yang bagus
  • Memiliki alat dan arsitektur bawaan.
  • Kontrol terbatas atas arsitektur saat merancang aplikasi.
  • Penempatan diurus (otomatis melalui GitHub atau manual melalui perintah git atau CLI).
  • Tidak memakan waktu.

AWS

  • Infrastruktur sebagai Layanan (IAAS)
  • Serbaguna - memiliki banyak produk seperti EC2, LAMBDA, EMR, dll.
  • Dapat menggunakan contoh khusus untuk kontrol lebih besar atas arsitektur, seperti memilih OS, versi perangkat lunak, dll. Ada lebih dari satu lapisan backend.
  • Elastic Beanstalk adalah fitur yang mirip dengan PAAS Heroku.
  • Dapat menggunakan penyebaran otomatis, atau memutar sendiri.
SuperNova
sumber
7
ElasticBeanstalk jauh lebih hemat biaya daripada Heroku karena tidak ada markup untuk layanan di luar server yang Anda gunakan. Anda juga dapat menggunakan ElasticBeanstalk dengan tier AWS gratis aws.amazon.com/elasticbeanstalk/pricing
Zags
25
@Zags "hemat biaya" adalah masalah pendapat. Jika saya dapat membuat dan menggunakan aplikasi Heroku dalam waktu kurang dari satu menit dan berpotensi membutuhkan waktu berjam-jam untuk menyiapkan Beanstalk - itu tidak hemat biaya mengingat beberapa jam waktu pengembang menghancurkan "penghematan" apa pun yang mungkin dimiliki dari Beanstalk. Ini benar-benar tergantung pada prioritas - apakah fitur pengiriman lebih penting atau apakah pengaturan dan pemeliharaan infrastruktur lebih penting?
Brian Dear
5
Kemudahan setup @BrianDear tergantung pada keakraban Anda dengan berbagai sistem. Bahkan jika ElasticBeanstalk membutuhkan waktu lebih lama untuk mengatur dengan keakraban yang sama, AWS biasanya 60% dari biaya Heroku (bandingkan kinerja Heruku-m dengan AWS m4.xlarge). Dengan tagihan server serendah $ 100 / bulan, penghematan 40% akan memulihkan biaya "beberapa jam engineerng" dalam setahun. Semakin tinggi tagihan server, semakin kuat argumen untuk AWS.
Zags
4
Diperlukan ~ 5 menit untuk menggunakan Beanstalk. Pilih platform -> Unggah zip -> Bersukacitalah. Ingin menggunakan dengan mendorong untuk menguasai? Habiskan 5 menit lagi untuk menyiapkan CodePipeline. Kedua alur kerja ini dapat dilakukan hanya dengan menggunakan konsol GUI jika CLI mengintimidasi Anda.
Anthony Manning-Franklin
1
Sayangnya, dokumentasi tidak terdaftar dalam AWS. AWS memiliki salah satu dokumentasi terbaik untuk semua teknologi / platform. Saya telah menggunakannya bahkan sebelum jawaban ini diposting, sekitar tahun 2013.
lupchiazoem
2055

Hal pertama yang pertama, AWS dan Heroku adalah hal yang berbeda. AWS menawarkan Infrastruktur sebagai Layanan ( IaaS ) sedangkan Heroku menawarkan Platform sebagai Layanan ( PaaS ).

Apa bedanya? Sangat kira-kira, IaaS memberi Anda komponen yang Anda butuhkan untuk membangun hal-hal di atasnya; PaaS memberi Anda lingkungan di mana Anda hanya menekan kode dan beberapa konfigurasi dasar dan mendapatkan aplikasi yang sedang berjalan. IaaS dapat memberi Anda lebih banyak kekuatan dan fleksibilitas, dengan biaya harus membangun dan mempertahankan lebih banyak diri Anda.

Untuk membuat kode Anda berjalan pada AWS dan terlihat agak seperti penyebaran Heroku, Anda akan menginginkan beberapa instance EC2 - Anda ingin menginstal load balancer / caching layer pada mereka (misalnya Varnish ), Anda akan ingin instance menjalankan sesuatu seperti Penumpang dan nginx untuk melayani kode Anda, Anda ingin menyebarkan dan mengkonfigurasi contoh basis data berkerumun seperti PostgreSQL . Anda akan menginginkan sistem penyebaran dengan sesuatu seperti Capistrano , dan sesuatu yang melakukan agregasi log.

Itu bukan jumlah pekerjaan yang tidak signifikan untuk didirikan dan dipertahankan. Dengan Heroku, upaya yang diperlukan untuk sampai ke tahap semacam itu mungkin adalah beberapa baris kode aplikasi dan a git push.

Jadi Anda sejauh ini, dan Anda ingin meningkatkan. Bagus. Anda menggunakan Wayang untuk penyebaran EC2 Anda, bukan? Jadi sekarang Anda mengkonfigurasi file Capistrano Anda untuk memutar / menurunkan instance sesuai kebutuhan; Anda menyatukan kembali konfigurasi Wayang Anda sehingga Varnish mengetahui contoh web-pekerja dan akan secara otomatis menyatukan di antara mereka. Atau Anda heroku scale web:+5.

Semoga itu memberi Anda gambaran tentang perbandingan keduanya. Sekarang untuk membahas poin spesifik Anda:

Kecepatan

Saat ini Heroku hanya berjalan pada instance AWS di us-eastdan eu-west. Bagi Anda, ini kedengarannya seperti apa yang Anda inginkan. Bagi yang lain, ini berpotensi lebih sebagai pertimbangan.

Keamanan

Saya telah melihat banyak server produksi yang dikelola secara internal yang berada jauh di belakang pada pembaruan keamanan, atau secara umum buruk. Dengan Heroku, Anda memiliki orang lain yang mengelola hal semacam itu, yang merupakan berkah atau kutukan tergantung pada bagaimana Anda melihatnya!

Ketika Anda menggunakan, Anda secara efektif menyerahkan kode Anda langsung ke Heroku. Ini mungkin masalah bagi Anda. Artikel mereka tentang Dyno Isolation merinci teknologi isolasi mereka (sepertinya beberapa dino dijalankan pada instance EC2 individu). Beberapa rekan telah mengungkapkan masalah dengan teknologi ini dan kekuatan isolasi mereka; Saya sayangnya tidak dalam posisi cukup pengetahuan / pengalaman untuk benar-benar berkomentar, tetapi penyebaran Heroku saya saat ini menganggap bahwa "cukup baik". Mungkin itu masalah bagimu, aku tidak tahu.

Scaling

Saya menyentuh tentang bagaimana seseorang dapat menerapkan ini dalam perbandingan IaaS vs PaaS saya di atas. Kira-kira, aplikasi Anda memiliki Procfile, yang memiliki garis-garis bentuk dyno_type: command_to_run, jadi misalnya (dikutip dari http://devcenter.heroku.com/articles/process-model ):

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

Ini, dengan:

heroku scale web:2 worker:10

akan menghasilkan Anda menjalankan 2 webdino dan 10 workerdino. Bagus, sederhana, mudah. Perhatikan bahwa webini adalah jenis dyno khusus, yang memiliki akses ke dunia luar, dan berada di belakang multiplekser lalu lintas web mereka yang bagus (mungkin semacam kombinasi Varnish / nginx) yang akan merutekan lalu lintas yang sesuai. Pekerja Anda mungkin berinteraksi dengan antrian pesan untuk perutean serupa, yang darinya mereka akan mendapatkan lokasi melalui URL di lingkungan.

Penghematan biaya

Banyak orang memiliki banyak pendapat berbeda tentang ini. Saat ini $ 0,05 / jam untuk satu jam dyno, dibandingkan dengan $ 0,025 / jam untuk instance mikro AWS atau $ 0,09 / jam untuk instance kecil AWS.

Dokumentasi dyno Heroku mengatakan Anda memiliki RAM sekitar 512MB, jadi mungkin tidak terlalu tidak masuk akal untuk menganggap sebuah dyno seperti contoh mikro EC2. Apakah nilainya dua kali lipat dari harga? Berapa nilai waktu Anda? Jumlah waktu dan upaya yang diperlukan untuk membangun di atas penawaran IaaS untuk mencapai standar ini jelas tidak murah. Saya tidak bisa menjawab pertanyaan ini untuk Anda, tetapi jangan meremehkan 'biaya tersembunyi' pengaturan dan pemeliharaan.

(Sedikit kesamping, tetapi jika saya terhubung ke sebuah dyno dari sini ( heroku run bash), tampilan sepintas menunjukkan 4 core /proc/cpuinfodan 36GB RAM - ini membuat saya percaya bahwa saya menggunakan "High-Memory Double Extra Large Instance " . Dokumentasi dyno Heroku mengatakan bahwa setiap dyno menerima RAM 512MB, jadi saya berpotensi berbagi dengan hingga 71 dyno lainnya. (Saya tidak punya cukup data tentang homogen dari AWS Heroku, jadi jarak Anda mungkin bervariasi))

Bagaimana cara mereka melawan pesaing?

Ini, aku khawatir aku tidak bisa membantumu. Satu-satunya pesaing yang pernah saya lihat adalah Google App Engine - pada saat itu saya ingin menyebarkan aplikasi Java, dan jumlah pembatasan pada kerangka kerja dan teknologi yang dapat digunakan sangat tidak menguntungkan. Ini lebih dari "hanya hal Jawa" - jumlah pembatasan umum dan pertimbangan yang diperlukan ( petunjuk FAQ di beberapa) tampaknya kurang nyaman. Sebaliknya, penggelaran ke Heroku telah menjadi mimpi.

Kesimpulan

Saya harap ini menjawab pertanyaan Anda (beri komentar jika ada celah / bidang lain yang ingin Anda selesaikan). Saya merasa saya harus menawarkan posisi pribadi saya. Saya suka Heroku untuk "penyebaran cepat". Ketika saya memulai aplikasi, dan saya ingin hosting murah (tingkat gratis Heroku luar biasa - pada dasarnya jika Anda hanya perlu satu web dyno dan 5MB PostgreSQL, gratis untuk meng-host aplikasi), Heroku adalah posisi saya yang paling utama . Untuk "Serious Production Deployment" dengan beberapa pelanggan yang membayar, dengan perjanjian tingkat layanan, dengan waktu khusus untuk dihabiskan untuk operasi, dan lain-lain, saya tidak bisa memaksa diri untuk melepas kendali sebanyak itu ke Heroku, dan kemudian AWS atau server kami sendiri telah menjadi platform hosting pilihan.

Pada akhirnya, ini tentang apa yang paling cocok untuk Anda. Anda mengatakan bahwa Anda adalah "seorang programmer pemula" - mungkin saja menggunakan Heroku akan membuat Anda fokus menulis Ruby, dan tidak perlu menghabiskan waktu untuk mendapatkan semua infrastruktur lain di sekitar kode yang Anda buat. Saya pasti akan mencobanya.


Catatan, AWS sebenarnya memiliki penawaran PaaS, Elastic Beanstalk , yang mendukung Ruby, Node.js, PHP, Python, .NET, dan Java. Saya pikir umumnya kebanyakan orang, ketika mereka melihat "AWS", melompat ke hal-hal seperti EC2 dan S3 dan EBS, yang jelas merupakan penawaran IaaS

Kristian Glass
sumber
33
Perhatikan bahwa sekarang beanstalk elastis sepenuhnya mendukung aplikasi ruby ​​di belakang penumpang.
ditulis ulang
4
Heroku sekarang juga mendukung server di UE bukan hanya wilayah AS.
Thomas Welton
7
Diberikan AWS BeanStalk, bukankah seluruh diskusi tentang bagaimana Heroku adalah solusi PaaS sementara AWS "hanya" merupakan penawaran IaaS tidak berlaku?
Gmu
6
@KristianGlass Akan luar biasa jika kita bisa mendapatkan jawaban yang diperbarui yang benar-benar terlihat pada dua penawaran PaaS (Beanstalk dan Heroku)
Alex Chumbley
3
Senang ini bermanfaat bagi orang-orang :) @Gmu Pada saat menjawab, EB cukup terbatas sehingga anggapan "AWS" berarti "EC2" tampaknya cukup masuk akal, tetapi seperti yang disarankan Alex, saya akan melihat kembali menjawab sekarang EB telah meningkat secara signifikan.
Kristian Glass
68

Seperti yang dikatakan Kristian Glass, tidak ada perbandingan antara IaaS ( AWS ) dan PaaS ( Heroku , EngineYard ).

PaaS pada dasarnya membantu pengembang untuk mempercepat pengembangan aplikasi, sehingga menghemat uang dan yang paling penting berinovasi dalam aplikasi dan bisnis mereka alih-alih mengatur konfigurasi dan mengelola hal-hal seperti server dan database. Fitur lain yang dibeli untuk menggunakan PaaS adalah proses penyebaran aplikasi seperti kelincahan, Ketersediaan Tinggi, Pemantauan, Skala / Descale, kebutuhan terbatas untuk keahlian, penyebaran mudah, dan pengurangan biaya dan waktu pengembangan.

Namun masih ada sisi gelap PaaS yang menjadi penghambat adopsi PaaS:

  • Kurang Kontrol atas Server dan database
  • Biaya akan sangat tinggi jika tidak dikelola dengan baik
  • Prematur dan meragukan di zaman sekarang

Selain di atas, Anda harus memiliki keterampilan yang cukup untuk mengatur Anda IaaS:

  • Akuisisi perangkat keras
  • Sistem operasi
  • Perangkat Lunak Server
  • Lingkungan Skrip Sisi Server
  • Server web
  • Sistem Manajemen Basis Data (Mysql, Redis dll)
  • Konfigurasikan server produksi
  • Alat untuk pengujian dan penyebaran
  • Aplikasi Pemantauan
  • Ketersediaan Tinggi
  • Load Blancing / Http Routing
  • Kebijakan Cadangan Layanan
  • Kolaborasi Tim
  • Membangun Kembali Produksi

Jika Anda memiliki bisnis skala kecil, PaaS akan menjadi pilihan terbaik untuk Anda:

  • Bayar sesuai yang anda pakai
  • Biaya awal yang rendah
  • Biarkan pipa ledeng sampai ahli
  • PaaS menangani penskalaan / penapisan otomatis, Load balancing, pemulihan bencana
  • PaaS mengelola semua persyaratan keamanan
  • PaaS mengelola keandalan, Ketersediaan Tinggi
  • Paas mengelola banyak add-on pihak ketiga untuk Anda

Ini akan menjadi pilihan individu berdasarkan kebutuhan. Anda dapat memiliki detail tentang Aplikasi Rail PPT Hosting saya .

Pravin Mishra
sumber
3
Saya melihat EngineYard dan Heroku, dan tentu saja ElasticBeanstalk ... semua berjalan dengan AWS di bawahnya. Faktanya, adakah PaaS utama yang TIDAK berjalan dengan aws di bawahnya? Ada ide? Cheers
Fattie
5
Joe, saya tahu ini sudah terlambat, tetapi untuk menjawab pertanyaan Anda IBM Bluemix berjalan di SoftLayer.
Antonio Cangiano
PaaS mengelola semua persyaratan keamanan Mengamankan server, mungkin, tetapi sangat menyesatkan (terutama di dunia di mana pengembang tampaknya menganggap sistem mereka aman secara default). Ini tentu tidak akan melindungi Anda dari XSS, CSRF, dan mungkin tidak akan mengatur header HTTP penting untuk Anda. Aku hanya bisa melihatnya sekarang: 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 tapi saya akan balik jika diedit dengan benar.
Nateowami
4
Semakin banyak kategori solusi PaaS (DIY PaaS) yang bekerja pada infrastruktur Anda sendiri sehingga mengatasi beberapa masalah dengan fleksibilitas / kontrol PaaS. Beberapa contoh: openshift , cloudfoundry , Hasura . Penafian: Saya bekerja di Hasura.
iamnat
35

Ada banyak cara berbeda untuk melihat keputusan ini dari pengembangan, TI, dan tujuan bisnis, jadi jangan merasa buruk jika tampaknya berlebihan. Tetapi juga - jangan terlalu berpikir skalabilitas.

Pikirkan tentang persyaratan Anda .

Saya telah merekayasa situs web yang telah melayani lebih dari 8 juta uniques sehari dan mengirimkan terabyte video per minggu yang dibangun di atas infrastruktur mulai dari $ 250rb dalam perangkat keras modal atau oleh staf tenaga kerja IT MM yang sangat besar.

Tetapi saya juga memiliki situs web yang lebih kecil yang dirancang untuk menghasilkan $ 10 - $ 20k per tahun, tidak memiliki lalu lintas yang sangat tinggi, persyaratan db atau pemrosesan, dan saya menjalankannya dari akun hosting generik $ 10 / bulan tanpa kompromi.

Di masa depan, penyebaran akan lebih mirip Heroku daripada AWS, hanya karena kemajuan. Tidak ada nilai sama sekali pada tombol IT untuk mengubah skala infrastruktur internet yang tidak semakin otomatis, dan tidak ada yang ada hubungannya dengan nilai produk atau layanan yang Anda tawarkan.

Juga, ingatlah dengan situs web komersial - skalabilitas adalah apa yang sering kita sebut sebagai 'masalah yang baik untuk dimiliki' - meskipun masalah skalabilitas dengan situs-situs seperti Facebook dan Twitter sangat menonjol, mereka tidak memiliki efek negatif pada kesuksesan mereka - berita bahkan mungkin berkontribusi lebih banyak pendaftaran (semua pers adalah pers yang baik).

Jika Anda memiliki layanan yang menghasilkan 100 k + uniques sehari dan mengalami masalah penskalaan, saya akan dengan senang hati melepaskannya untuk Anda, apa pun bahasa, db, platform, atau infrastruktur yang Anda jalankan!

Skalabilitas adalah masalah implementasi yang dapat diperbaiki - tidak memiliki pelanggan adalah masalah eksistensial.

BricoleurDev
sumber
35

Sebenarnya Anda dapat menggunakan keduanya - Anda dapat mengembangkan aplikasi dengan server amazon ec2. Kemudian dorong (dengan git) ke heroku gratis untuk sementara (gunakan heroku free tier untuk menyajikannya kepada publik) dan ujilah seperti itu. Ini sangat hemat biaya dibandingkan dengan menyewa server, tetapi Anda harus berbicara dengan api heroku yang lebih ketat yang merupakan sesuatu yang harus Anda pikirkan. Sumber: metode ini diadopsi untuk salah satu kelas online saya "Teknik permulaan dari Coursera / Stanford oleh Balaji S. Srinivasan dan Vijay S. Pande

Menambahkan skema sehingga penjelasan saya akan lebih mudah dimengerti

sivi
sumber
15
Apa manfaat menggunakan mesin virtual sebagai mesin pengembangan, alih-alih menggunakan komputer lokal Anda? Saya tidak melihat manfaat tambahan dari menambahkan AWS pada kasus khusus ini. Terima kasih!
Mateo
5
mungkin karena dalam pengaturan akademis itu akan membuatnya jadi petunjuk untuk mengatur lingkungan dev lebih konsisten dan mereka tidak perlu khawatir membuatnya bekerja di windows
Jeff Dickey
2
Arsitektur itu membantu menghindari banyak ketidakcocokan sistem operasi Windows / Linux. Dan juga belajar OS Linux tanpa harus menginstalnya di mesin lokal Anda. Jika Anda memiliki Mac, ini bukan masalah tetapi banyak orang menggunakan Windows.
sivi
13
Ini disebut mesin virtual, saya masih tidak melihat banyak gunanya melakukan ini.
Abe Petrillo
2
Memiliki platform terpisah untuk pementasan dan produksi adalah ide yang sangat mengerikan; versi perangkat lunak utama akan berbeda dengan cara yang tidak kompatibel. Anda harus dapat menjalankan kode Anda secara lokal untuk pengembangan, bahkan jika OS asli berbeda dari OS produksi (paling buruk dengan sesuatu seperti VMware atau gelandangan atau dengan emulator jika membangun untuk platform tertanam, tetapi biasanya lebih mudah untuk bekerja dengan). Hanya dengan mampu menyebarkan kode dari jarak jauh ke cloud adalah rintangan mengerikan bagi pengembangan aplikasi yang cepat yang membuat pengujian dan debugging tidak perlu menghabiskan waktu.
Iain Collins
28

Nah, orang biasanya menanyakan pertanyaan ini: Heroku atau AWS ketika mulai menyebarkan sesuatu.

Eksperimen saya menggunakan kedua Heroku & AWS, berikut ini adalah ulasan singkat dan perbandingan:

Heroku

  • Satu perintah untuk menyebarkan apa pun jenis proyek Anda: Ruby on Rails, Nodejs
  • Begitu banyak 1-klik untuk mengintegrasikan plugin & pihak ketiga: Sangat mudah untuk memulai dengan sesuatu.
  • Tidak memiliki penskalaan otomatis; itu berarti Anda perlu meningkatkan / menurunkan secara manual
  • Biaya mahal, terutama, ketika sistem membutuhkan lebih banyak sumber daya
  • Contoh gratis tersedia
  • Contoh gratis pergi tidur jika tidak aktif.
  • Pusat data: Hanya AS & UE
  • BISA terjun ke / mengakses ke level mesin dengan menggunakan Heroku run bash(Terima kasih, MJafar Mash atas sarannya) tetapi agak terbatas! Anda tidak memiliki akses penuh!
  • Tidak perlu tahu terlalu banyak tentang DevOps

AWS - EC2

  • Ini seperti mesin dengan OS pra-konfigurasi (atau tidak), jadi Anda perlu menginstal perangkat lunak, perpustakaan untuk membuat situs web / layanan Anda online.
  • Plugin & Perpustakaan perlu diintegrasikan secara manual, atau skrip otomatisasi (skrip publik & ditulis oleh Anda)
  • Penskalaan & penskalaan otomatis adalah layanan yang didukung, pelajari saja cara mengonfigurasi & mengintegrasikan ke sistem Anda
  • Biayanya cukup murah, tergantung layanan mana dan jumlah jam Anda menggunakannya
  • Ada beberapa jam gratis untuk instance T2.micro, tetapi biasanya, Anda akan membayar beberapa dolar setiap bulan (jika masih menggunakan T2.micro)
  • Mesin virtual gratis Anda tidak akan tidur, tersedia 24/7 (karena Anda dapat membayarnya :))
  • Pusat data: di seluruh dunia. Pilih daerah yang paling cocok untuk Anda.
  • Selami level mesin. Jadi kamu bisa menikmatinya
  • Beberapa pengetahuan tentang DevOps, tetapi tidak apa-apa, Stackoverflow sangat membantu di sana!

AWS Elastic Beanstalk merupakan alternatif dari Heroku, tetapi lebih murah

  • Elastic Beanstalk diumumkan sebagai beta publik mulai 2010; ini membantu kita lebih mudah untuk bekerja dengan penyebaran. Untuk detail silakan buka di sini

  • Beanstalk gratis, biaya yang akan Anda bayarkan adalah untuk layanan yang Anda gunakan & jumlah jam penggunaan.

  • Saya menggunakan Elastic Beanstalk untuk waktu yang lama, dan saya pikir itu bisa menjadi pengganti Heroku dan lebih murah!

Ringkasan

  • Heroku: Mudah di awal, contoh GRATIS , tapi mahal nanti
  • AWS: Tidak mudah, jam gratis tersedia, agak lebih murah , Beanstalk harus khawatir untuk digunakan

Jadi dalam sistem saya saat ini, saya menggunakan Heroku untuk pementasan dan Pohon Kacang untuk produksi!

Hieu Pham
sumber
3
Saya suka cara Anda menjawab pertanyaan itu. Saya sudah mencoba Heroku dan AWS. Saya setuju dengan Anda untuk merekomendasikan:Use Heroku for staging, and Beanstalk for production!
Chetabahana
1
heroku run bashdan Anda memiliki akses shell ke dyno Anda
Mohammad Jafar Mashhadi
Bisakah Anda memberikan estimasi harga? saya harus menerbitkan Java Web App di Tomcat (kerangka Spring, angularJS dll.), mari kita pikirkan sekitar 1000 pengguna sebulan, masing-masing menggunakan aplikasi selama 5 menit. Berapa harga perkiraan? (seperti penggunaan yang sangat rendah, tetapi ketersediaan untuk sebulan penuh)
pisau cukur
1
@ Mador jika Anda menggunakan contoh mikro t2 (baik untuk pra-produksi atau proyek kecil), harganya sangat murah, sekitar $ 5 hingga $ $ per bulan seperti memori saya di proyek sebelumnya. Detailnya di
Hieu Pham
dan Heroku akan jauh lebih mahal? (2 kali?) Dengan penggunaan yang sama? saya tahu halaman penetapan harga, tetapi sulit untuk menghitung / membayangkan berapa banyak daya CPU yang dibutuhkan oleh aplikasi sederhana atau apa yang akan menjadi penggunaan DB setelah satu bulan (DB akan memiliki keberanian yang kecil)
pisau cukur
27

Jawaban yang ada secara luas akurat:

  • Heroku sangat mudah digunakan dan digunakan, dapat dengan mudah dikonfigurasikan untuk penempatan repositori otomatis (misalnya GitHub), memiliki banyak add-on pihak ketiga dan mengenakan biaya lebih banyak per instance.

  • AWS memiliki jangkauan yang lebih luas dari layanan pihak pertama dengan harga bersaing termasuk DNS, load balancing, penyimpanan file yang murah dan memiliki fitur perusahaan seperti dapat menentukan kebijakan keamanan.

Untuk tl; dr, lompat ke akhir pos ini.

AWS ElasticBeanstalk adalah upaya untuk menyediakan platform autoscaling yang mudah digunakan dan seperti Heroku. Karena menggunakan instance EC2 (yang dibuat secara otomatis) EB server dapat melakukan segala hal yang dapat dilakukan oleh instance EC2 lainnya dan lebih murah untuk dijalankan.

Penempatan dengan EB sangat lambat; menyebarkan pembaruan dapat memakan waktu 10-15 menit per server dan menggunakan cluster yang lebih besar dapat mengambil bagian terbaik dari satu jam - dibandingkan dengan hanya beberapa detik untuk menggunakan pembaruan di Heroku. Penyebaran pada EB juga tidak ditangani dengan sangat mulus, yang dapat menimbulkan kendala pada desain aplikasi.

Anda dapat menggunakan semua layanan yang digunakan ElasticBeanstalk di belakang layar untuk membangun sistem Anda yang dipesan lebih dahulu (dengan CodeDeploy, Elastic Load Balancer, Auto Scaling Groups - dan CodeCommit, CodeBuild dan CodePipeline jika Anda ingin melakukan semuanya) tetapi Anda pasti dapat menghabiskan banyak uang beberapa minggu mengaturnya pertama kali karena cukup berbelit-belit dan sedikit lebih rumit daripada hanya mengkonfigurasi hal-hal di EC2.

AWS Lightsail menawarkan opsi hosting dengan harga bersaing, tetapi tidak membantu dengan penyebaran atau penskalaan - itu benar-benar hanya pembungkus untuk penawaran EC2 mereka (tetapi harganya jauh lebih mahal). Ini memungkinkan Anda secara otomatis menjalankan skrip bash pada penyetelan awal, yang merupakan sentuhan yang bagus tapi lebih baik dibandingkan dengan biaya hanya menyiapkan instance EC2 (yang juga dapat Anda lakukan secara terprogram).

Beberapa pemikiran tentang membandingkan (untuk mencoba dan menjawab pertanyaan, meskipun secara tidak langsung):

  1. Jangan meremehkan seberapa banyak administrasi sistem kerja, termasuk menjaga semua yang telah Anda instal dengan patch keamanan (dan sesekali pembaruan OS).

  2. Jangan meremehkan seberapa besar manfaat penerapan otomatis, penskalaan otomatis, dan penyediaan dan konfigurasi SSL.

    Penerapan otomatis ketika Anda memperbarui repositori Git Anda menjadi mudah dengan Heroku. Itu hampir instan, anggun sehingga tidak ada pemadaman untuk pengguna akhir dan dapat diatur untuk memperbarui hanya jika tes / Integrasi Berkelanjutan berlalu sehingga Anda tidak merusak situs Anda jika Anda menggunakan kode yang rusak.

    Anda juga dapat menggunakan ElasticBeanstalk untuk penerapan otomatis, tetapi bersiaplah untuk menghabiskan seminggu mengatur itu untuk pertama kalinya - Anda mungkin harus mengubah cara Anda menggunakan dan membangun aset (seperti CSS dan JS) untuk bekerja dengan bagaimana ElasticBeanstalk menangani penyebaran atau membangun logika ke dalam aplikasi Anda untuk menangani penyebaran.

    Berhati-hatilah dalam memperkirakan biaya bahwa untuk penyebaran tanpa gangguan di EB Anda perlu menjalankan beberapa instance - EB meluncurkan pembaruan untuk setiap server secara terpisah sehingga layanan Anda tidak terdegradasi - di mana Heroku memutar dino baru untuk Anda dan hanya membuat usang layanan lama sampai semua permintaan untuk itu selesai ditangani (kemudian dihapus).

    Menariknya, biaya hosting untuk menjalankan beberapa server dengan EB bisa lebih murah daripada satu contoh Heroku, terutama sekali Anda memasukkan biaya add-on.

Beberapa masalah lain tidak secara khusus ditanyakan, tetapi dimunculkan oleh jawaban lain:

  1. Menggunakan penyedia berbeda untuk produksi dan pengembangan adalah ide yang buruk.

    Saya merasa ngeri bahwa orang-orang menyarankan ini. Sementara kode idealnya harus berjalan dengan baik pada platform yang masuk akal sehingga se portable mungkin, versi perangkat lunak pada setiap host akan sangat bervariasi dan hanya karena kode berjalan dalam pementasan tidak berarti akan berjalan dalam produksi (mis. Node.js / besar Versi Ruby / Python / PHP / Perl dapat berbeda dalam cara yang membuat kode tidak kompatibel, sering kali dengan cara diam yang mungkin tidak ditangkap bahkan jika Anda memiliki cakupan pengujian yang layak).

    Apa ide yang bagus adalah memanfaatkan sesuatu seperti Heroku untuk membuat prototipe, proyek yang lebih kecil dan microsite - sehingga Anda dapat membangun dan menggunakan berbagai hal dengan cepat tanpa menginvestasikan banyak waktu dalam konfigurasi dan pemeliharaan.

    Pastikan untuk memperhitungkan biaya menjalankan instans produksi dan pra-produksi saat membuat keputusan itu, jangan lupa biaya mereplikasi seluruh lingkungan (termasuk layanan pihak ketiga seperti penyimpanan / penambahan data, pemasangan dan konfigurasi SSL, dll) .

  2. Jika menggunakan AWS, berhati-hatilah dengan AWS yang telah dikonfigurasi dari vendor seperti Bitnami - mereka adalah mimpi buruk keamanan. Mereka dapat mengekspos banyak aplikasi yang terkenal rentan secara default tanpa menyebutkannya dalam deskripsi.

    Pertimbangkan untuk menggunakan distribusi arus utama yang didukung dengan baik, seperti Ubuntu atau Debian (atau CentOS jika Anda memerlukan dukungan RPM).

    Catatan: Penawaran Amazon memiliki distribusinya sendiri yang disebut Amazon Linux, yang menggunakan RPM, tetapi spesifik EC2 dan kurang didukung oleh perangkat lunak pihak ketiga / sumber terbuka.

  3. Anda juga dapat mengatur instance EC2 pada AWS (atau Lightsail) dan mengonfigurasi dengan sesuatu seperti flynn atau dokku di atasnya - di mana Anda kemudian dapat menggunakan beberapa situs dengan mudah, yang dapat berguna jika Anda mempertahankan banyak layanan atau ingin menjadi mampu memutar hal-hal baru dengan mudah. Namun mengaturnya tidak seotomatis hanya dengan menggunakan Heroku dan Anda dapat menghabiskan banyak waktu untuk mengonfigurasikan dan memeliharanya (sampai pada titik saya menemukan penggunaan menggunakan clustering Amazon dan Docker Swarm lebih mudah daripada mengaturnya; YMMV).

Saya telah menggunakan instance AWS EC (sendirian dan dalam kelompok), Elastic Beanstalk dan Lightsail dan Heroku pada saat yang sama tergantung pada kebutuhan proyek yang sedang saya kerjakan.

Saya benci menghabiskan waktu mengkonfigurasi layanan tetapi tagihan Heroku saya akan ribuan per tahun jika saya menggunakannya untuk semuanya dan AWS bekerja sedikit dari biaya.

tl; dr

Jika uang tidak pernah menjadi masalah, saya akan menggunakan Heroku untuk hampir semua hal karena ini merupakan penghemat waktu yang sangat besar - tetapi saya masih ingin menggunakan AWS untuk proyek yang lebih rumit di mana saya memerlukan fleksibilitas dan layanan yang lebih maju yang tidak ditawarkan Heroku.

Skenario yang ideal bagi saya adalah jika ElasticBeanstalk bekerja lebih seperti Heroku - yaitu dengan konfigurasi yang lebih mudah dan lebih cepat serta mekanisme penyebaran yang lebih baik.

Contoh layanan yang hampir seperti ini adalah now.sh , yang sebenarnya menggunakan AWS di belakang layar, tetapi membuat penyebaran dan pengelompokan semudah di Heroku (dengan SSL otomatis, DNS, penyebaran anggun, pengaturan klaster super-mudah dan pengelolaan).

Saya sudah menggunakannya cukup banyak untuk aplikasi Node.js dan penyebaran gambar Docker, peringatan utama adalah instans dibagi (sesuatu tercermin dalam biaya lebih rendah) dan saat ini tidak ada pilihan untuk membeli instances khusus. Namun alat penyebaran sumber terbuka mereka 'sekarang' juga dapat digunakan untuk menyebarkan ke mesin virtual khusus pada AWS serta Google Cloud dan Azure.

Iain Collins
sumber
8

Ini merupakan persentase yang signifikan dari bisnis kami yang memigrasikan orang-orang dari Heroku ke AWS. Ada keuntungan untuk keduanya, tetapi akan berantakan pada Heroku setelah beberapa saat ... sekali Anda membutuhkan tingkat kompleksitas tertentu tidak lagi mudah untuk dipertahankan dengan keterbatasan Heroku.

Yang mengatakan, ada semakin banyak pilihan untuk memiliki kemudahan Heroku dan fleksibilitas AWS dengan berada di AWS dengan kerangka kerja / alat yang hebat.

Kendall Miller
sumber
Bisakah Anda memberikan estimasi harga? saya harus menerbitkan Java Web App di Tomcat (kerangka Spring, angularJS dll.), mari kita pikirkan sekitar 1000 pengguna sebulan, masing-masing menggunakan aplikasi selama 5 menit. Berapa harga perkiraan? (seperti penggunaan yang sangat rendah, tetapi ketersediaan untuk sebulan penuh)
pisau cukur
3

Lucunya, Heroku sebenarnya menggunakan AWS di backend. Ini menghilangkan semua overhead dan melakukan manajemen arsitektur pada EC2 untuk Anda. (Dapatkan pengetahuan itu dari insinyur senior di Perusahaan Besar selama Wawancara)

Saurav Prakash
sumber
1

Baik! Saya pengamat Heroku terkenal di pengembang pemula dan baru lahir sementara AWS telah mengembangkan persona pengembang. DigitalOcean juga pemain utama di tanah ini. Cloudways telah membuatnya sangat mudah untuk membuat tumpukan Lampu dengan mengklik DigitalOcean dan AWS. Memiliki semua layanan dan paket pembaruan dalam satu klik jauh lebih baik daripada melakukan semua hal secara manual.

Anda dapat memeriksa sepenuhnya di sini: https://www.cloudways.com/blog/host-php-on-aws-cloud/

Shahroze Nawaz
sumber
1

Yah Heroku menggunakan AWS di latar belakang, itu semua tergantung pada jenis solusi yang Anda butuhkan. Jika Anda seorang inti linux dan orang yang tidak Anda khawatir membuat vm dari awal seperti memilih dan memilih opsi pabrikan dll, Anda bisa menggunakan AWS. Jika Anda ingin melakukan hal-hal di permukaan tanpa nettigrities Anda bisa pergi dengan heroku

prasoon
sumber
0

Amazon Web Services (AWS) menawarkan banyak layanan dari IaaS ke PaaS dengan daya tahan 99,9999999% terjamin dan ketersediaan data dan infrastruktur. AWS menawarkan otomatisasi infrastruktur bersama dengan beberapa alat bagi pengembang untuk menyalurkan proses penerapan aplikasi mereka.

Di sisi lain, Heroku hanyalah PaaS yang menawarkan layanan untuk mengelola platform Anda di cloud mereka. Tidak ada tempat dengan AWS apakah itu infrastruktur atau keamanan.

Prash
sumber
6
Kutipan diperlukan untuk, "Tidak ada tempat dengan AWS apakah itu infrastruktur atau keamanan.".
pdoherty926
0

Terkadang, saya bertanya-tanya mengapa orang membandingkan AWS dengan Heroku. AWS adalah IAAS (infrastruktur sebagai layanan) yang dengan jelas menyatakan betapa kuat dan kalkulatif sistemnya. Heroku, di sisi lain, hanya SAAS, pada dasarnya hanya sebagian kecil dari layanan AWS. Jadi mengapa harus berjuang dengan menyiapkan AWS ketika Anda dapat mengirimkan produk pertama Anda ke perdana menggunakan Heroku.

Heroku gratis, sederhana dan mudah digunakan hampir semua jenis tumpukan ke web. Heroku secara khusus dibangun untuk memotong semua kerepotan pengiriman aplikasi Anda ke server langsung dalam waktu singkat.

Namun demikian, Anda mungkin ingin menggunakan aplikasi Anda menggunakan salah satu tutorial dari kedua belah pihak dan membandingkan

AWS DOCS dan Heroku Docs

Sammy Joseph
sumber
0

Meskipun AWS dan Heroku keduanya adalah platform cloud, mereka berbeda karena AWS adalah IaaS dan Heroku adalah PaaS

Gopinath J
sumber
2
Itu tidak benar. AWS memiliki penawaran IAAS dan PAAS.
Glenn Bech
0

Heroku seperti subset dari AWS. Ini hanya platform sebagai layanan, sementara AWS dapat diimplementasikan sebagai apa saja dan di tingkat apa pun.

Implementasinya tergantung pada apa kebutuhan bisnisnya. Jika cocok, gunakan yang sesuai.

Krunal Barot
sumber