Apa perbedaan antara Elastic Beanstalk dan CloudFormation untuk proyek .NET?

121

Saya telah mengembangkan aplikasi .NET MVC dan mulai bermain-main dengan AWS dan menerapkannya melalui Visual Studio Toolkit. Saya telah berhasil menerapkan aplikasi menggunakan opsi Elastic Beanstalk di toolkit.

Saat saya membahas tutorial untuk menerapkan aplikasi .NET ke AWS dengan toolkit, saya melihat ada tutorial untuk menerapkan dengan Elastic Beanstalk dan CloudFormation . Apa perbedaan antara keduanya?

Dari apa yang dapat saya katakan, sepertinya mereka berdua pada dasarnya melakukan hal yang sama - membuatnya lebih mudah untuk menerapkan aplikasi Anda ke cloud AWS (menyiapkan instans EC2, penyeimbang beban, penskalaan otomatis, dll). Saya telah mencoba membaca tentang keduanya, tetapi sepertinya saya tidak mendapatkan apa pun selain sekumpulan kata-kata buzz yang terdengar seperti hal yang sama bagi saya. Saya bahkan menemukan FAQ di situs web AWS yang seharusnya menjawab pertanyaan persis ini, namun saya tidak begitu mengerti.

Haruskah saya menggunakan salah satunya? Kedua?

kspearrin.dll
sumber
Pertanyaan ini sedikit keluar dari topik untuk Stackoverflow, tetapi mungkin juga tidak cocok di ServerFault ... Saya telah mengusulkan situs baru untuk pertanyaan seperti ini, ikuti jika Anda setuju! area51.stackexchange.com/proposals/82757/…
Dan Ciborowski - MSFT

Jawaban:

212

Mereka sebenarnya sangat berbeda. Elastic Beanstalk dimaksudkan untuk mempermudah hidup pengembang. CloudFormation dimaksudkan untuk membuat hidup para insinyur sistem lebih mudah.

Elastic Beanstalk adalah lapisan seperti PaaS di atas layanan IaaS AWS yang mengabstraksi instans EC2 yang mendasarinya, Elastic Load Balancers, grup penskalaan otomatis, dll. Ini membuatnya jauh lebih mudah bagi pengembang, yang tidak ingin berurusan dengan semua hal-hal sistem, agar aplikasi mereka diterapkan dengan cepat di AWS. Ini sangat mirip dengan produk PaaS lainnya seperti Heroku, EngineYard, Google App Engine, dll. Dengan Elastic Beanstalk, Anda tidak perlu memahami cara kerja sihir yang mendasarinya.

CloudFormation, di sisi lain, tidak secara otomatis melakukan apa pun. Ini hanyalah cara untuk menentukan semua sumber daya yang diperlukan untuk penerapan dalam file JSON yang besar. Jadi, template CloudFormation sebenarnya dapat membuat dua lingkungan ElasticBeanstalk (produksi dan staging), beberapa kluster ElasticCache, tabel DyanmoDB, dan kemudian DNS yang sesuai di Route53. Saya kemudian mengunggah template ini ke AWS, pergi, dan 45 menit kemudian semuanya siap dan menunggu. Karena ini hanya file JSON teks biasa, saya dapat menempelkannya di kontrol sumber saya yang menyediakan cara yang bagus untuk membuat versi penerapan aplikasi saya. Ini juga memastikan bahwa saya memiliki konfigurasi berulang, "diketahui bagus" yang dapat saya terapkan dengan cepat di wilayah yang berbeda.

jamieb
sumber
Terima kasih! Sepertinya saya akan tetap menggunakan EBS untuk saat ini.
kspearrin
37
@xxkylexx FYI: "EBS" mengacu pada layanan AWS yang bernama "Elastic Block Store". Saya rasa Anda bermaksud mengatakan "Elastic Beanstalk" daripada "EBS".
ekillaby
2
Saya pikir mereka menggunakan dan mengotomatiskan template Cloud Formation untuk membuat lingkungan Elastic Beanstalk untuk aplikasi yang telah Anda buat - .Net atau apa pun ... FWIW
codeputer
51

Untuk memulai dengan cepat menerapkan aplikasi web .NET standar, Elastic Beanstalk adalah layanan yang tepat untuk Anda.

Grafik Perbandingan Layanan Aplikasi

AWS CloudFormation : "Penyediaan Berbasis Template"

AWS CloudFormation memberi pengembang dan administrator sistem cara mudah untuk membuat dan mengelola koleksi sumber daya AWS terkait, menyediakan dan memperbaruinya dengan cara yang teratur dan dapat diprediksi.

CloudFormation (CFn) adalah abstraksi ringan dan tingkat rendah di atas API AWS yang ada. Dengan menggunakan dokumen template JSON / YAML statis , Anda mendeklarasikan sekumpulan Sumber Daya (seperti instans EC2 atau bucket S3 ) yang sesuai dengan operasi CRUD di AWS API.

Saat Anda membuat tumpukan CloudFormation, CloudFormation memanggil API yang sesuai untuk membuat Sumber Daya terkait, dan saat Anda menghapus tumpukan, CloudFormation memanggil API yang sesuai untuk menghapusnya. Sebagian besar (tetapi tidak semua) API AWS didukung.

AWS Elastic Beanstalk : "Aplikasi Web Menjadi Mudah"

AWS Elastic Beanstalk adalah layanan yang mudah digunakan untuk menerapkan dan menskalakan aplikasi dan layanan web yang dikembangkan dengan Java , .NET , PHP , Node.js , Python , Ruby , Go , dan Docker di server yang sudah dikenal seperti Apache, Nginx, Passenger , dan IIS.

Anda cukup mengunggah kode dan Elastic Beanstalk secara otomatis menangani penerapan, mulai dari penyediaan kapasitas, penyeimbangan beban, penskalaan otomatis hingga pemantauan kesehatan aplikasi.

Elastic Beanstalk (EB) adalah 'platform sebagai layanan' (PaaS) yang dikelola dengan level yang lebih tinggi untuk menghosting aplikasi web, serupa dalam cakupannya dengan Heroku . Daripada berurusan dengan sumber daya AWS tingkat rendah secara langsung, EB menyediakan platform yang terkelola sepenuhnya di mana Anda membuat lingkungan aplikasi menggunakan antarmuka web , memilih platform mana yang digunakan aplikasi Anda, membuat dan mengunggah bundel sumber , dan EB menangani sisanya.

Dengan menggunakan EB, Anda mendapatkan semua jenis fitur bawaan untuk memantau lingkungan aplikasi Anda dan menerapkan versi baru aplikasi Anda .

Di balik terpal, EB menggunakan CloudFormation untuk membuat dan mengelola berbagai sumber daya AWS aplikasi. Anda dapat menyesuaikan dan memperluas lingkungan EB default dengan menambahkan Sumber Daya CloudFormation ke file konfigurasi EB yang disebarkan dengan aplikasi Anda.

Kesimpulan

Jika aplikasi Anda adalah aplikasi tingkat web standar yang menggunakan salah satu platform yang didukung Elastic Beanstalk, dan Anda ingin hosting yang mudah dikelola dan berskala tinggi untuk aplikasi Anda, gunakan Elastic Beanstalk .

Jika kamu:

  • Ingin mengelola semua sumber daya AWS aplikasi Anda secara langsung;
  • Ingin mengelola atau sangat menyesuaikan proses penyediaan atau penerapan instans Anda;
  • Perlu menggunakan platform aplikasi yang tidak didukung oleh Elastic Beanstalk; atau
  • Hanya tidak ingin / membutuhkan fitur Elastic Beanstalk tingkat yang lebih tinggi

kemudian gunakan CloudFormation secara langsung dan hindari lapisan konfigurasi tambahan dari Elastic Beanstalk.

wjordan.dll
sumber
14

Cloud Formation adalah layanan yang memungkinkan Anda menerapkan layanan AWS. Anda membuat file template yang menjelaskan layanan yang Anda inginkan. Saat Anda menerapkan template tersebut, Cloud Formation membuat sumber daya untuk Anda sebagai "paket". Semua sumber daya yang Anda tentukan dalam template Anda dimulai dan diakhiri bersama-sama. Contoh jenis sumber daya yang dapat dibuat dengan Formasi Cloud adalah: instans S3, EC2, Penskalaan Otomatis, DynamoDb, dll. Untuk EC2, Formasi Awan juga memberi Anda kemampuan untuk menggunakan skrip "cfn-init"; yang dapat digunakan bersama dengan template untuk melakukan booting pada instance Anda.

Elastic Beanstalk menggunakan templat dan skrip Formasi Cloud untuk: 1. Membuat Load Balancer dan Grup Penskalaan Otomatis, 2. Salin kode Anda ke S3, 3. Bootstrap instans Ec2 untuk Mengunduh kode dari S3 dan menerapkannya.

Cloud Formation tidak mudah digunakan seperti EB, tetapi jauh lebih kuat, karena Anda dapat membuat sumber daya selain instans EC2, mengontrol cara skrip cfn-init, dan lain-lain.

Edwin
sumber
10

Ada perbedaan lain yang perlu diperhatikan. Pohon kacang elastis dirancang sebagai wadah untuk satu aplikasi. Saya memiliki sekumpulan beberapa situs web dan layanan tetapi merasa sangat sulit untuk menerapkan beberapa situs web dengan beanstalk dan disarankan, setelah beberapa kali mencoba, oleh AWS membantu untuk menggunakan formasi cloud dalam situasi ini karena memiliki fleksibilitas ekstra. Ada artikel yang sangat membantu tentang bootstrap pembentukan cloud AWS dan memperbarui situs yang sedang berjalan di sini yang jauh lebih jelas daripada halaman AWS. Masih mencoba mencari tahu apakah kita dapat menerapkan dari VS langsung ke template formasi cloud yang disimpan di S3 dan membuatnya diperbarui secara otomatis seperti beanstalk ...

Matt
sumber
3

Layanan ini dirancang untuk saling melengkapi. AWS Elastic Beanstalk menyediakan lingkungan untuk menerapkan dan menjalankan aplikasi dengan mudah di cloud. Ini terintegrasi dengan alat pengembang dan memberikan pengalaman satu atap bagi Anda untuk mengelola siklus hidup aplikasi Anda. AWS CloudFormation adalah mekanisme penyediaan yang nyaman untuk berbagai sumber daya AWS dan pihak ketiga. Ini mendukung kebutuhan infrastruktur berbagai jenis aplikasi seperti aplikasi perusahaan yang ada, aplikasi lama, aplikasi yang dibangun menggunakan berbagai sumber daya AWS dan solusi berbasis kontainer (termasuk yang dibuat menggunakan AWS Elastic Beanstalk).

AWS CloudFormation mendukung lingkungan aplikasi Elastic Beanstalk sebagai salah satu jenis sumber daya AWS. Ini memungkinkan Anda, misalnya, untuk membuat dan mengelola aplikasi yang dihosting AWS Elastic Beanstalk bersama dengan database RDS untuk menyimpan data aplikasi. Selain instans RDS, sumber daya AWS lain yang didukung dapat ditambahkan ke grup juga.

Mohit Sharma
sumber
1

Elastic Beanstalk secara otomatis menangani penerapan, mulai dari penyediaan kapasitas, penyeimbangan beban, penskalaan otomatis hingga pemantauan kesehatan aplikasi berdasarkan kode yang Anda unggah ke dalamnya, sedangkan CloudFormation adalah mesin penyediaan otomatis yang dirancang untuk menerapkan seluruh lingkungan cloud melalui skrip JSON.

Mahesh Bablu
sumber