AWS OpsWorks vs AWS Beanstalk vs AWS CloudFormation?

87

Saya ingin tahu apa saja keuntungan dan kerugian menggunakan AWS OpsWorks vs AWS Beanstalk dan AWS CloudFormation?

Saya tertarik dengan sistem yang dapat diskalakan secara otomatis untuk menangani sejumlah besar permintaan web secara bersamaan (Dari 1000 permintaan per menit hingga 10 juta rpm.), Termasuk lapisan database yang juga dapat diskalakan secara otomatis.

Alih-alih memiliki contoh terpisah untuk setiap aplikasi, Idealnya saya ingin membagikan beberapa sumber daya perangkat keras secara efisien. Di masa lalu saya telah menggunakan sebagian besar instans EC2 + RDS + Cloudfront + S3

Sistem stack akan menghosting beberapa ruby ​​dengan lalu lintas tinggi pada aplikasi rel yang kita migrasikan dari Heroku, juga beberapa aplikasi python / django dan beberapa aplikasi PHP juga.

Terima kasih sebelumnya.

ipegasus
sumber
2
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:

70

Saya ingin tahu apa saja keuntungan dan kerugian menggunakan AWS OpsWorks vs AWS Beanstalk dan AWS CLoudFormation?

Jawabannya adalah, tergantung.

AWS OpsWorks dan AWS Beanstalk (saya telah diberi tahu) hanyalah cara yang berbeda untuk mengelola infrastruktur Anda, bergantung pada bagaimana Anda memikirkannya. CloudFormation hanyalah cara untuk membuat template infrastruktur Anda.

Secara pribadi, saya lebih akrab dengan Elastic Beanstalk, tetapi masing-masing memiliki ciri khas mereka sendiri. Saya lebih suka karena dapat melakukan penerapan melalui Git. Ini adalah informasi publik bahwa Elastic Beanstalk menggunakan CloudFormation untuk meluncurkan lingkungannya.

Untuk proyek saya, saya menggunakan keduanya secara bersamaan. Saya menggunakan CloudFormation untuk membuat lingkungan VPC yang dikonfigurasi khusus, bucket S3, dan tabel DynamoDB yang saya gunakan untuk aplikasi saya. Kemudian saya meluncurkan lingkungan Elastic Beanstalk di dalam VPC kustom yang mengetahui cara berbicara dengan sumber daya S3 / DynamoDB.

Saya tertarik dengan sistem yang dapat diskalakan secara otomatis untuk menangani sejumlah besar permintaan web secara bersamaan (Dari 1000 permintaan per menit hingga 10 juta rpm.), Termasuk lapisan database yang juga dapat diskalakan secara otomatis.

Di balik terpal, OpsWorks dan Elastic Beanstalk menggunakan EC2 + CloudWatch + Auto Scaling, yang mampu menangani beban yang Anda bicarakan. RDS menyediakan dukungan untuk database berbasis SQL yang dapat diskalakan.

Alih-alih memiliki contoh terpisah untuk setiap aplikasi, Idealnya saya ingin membagikan beberapa sumber daya perangkat keras secara efisien. Di masa lalu saya telah menggunakan sebagian besar instans EC2 + RDS + Cloudfront + S3

Bergantung pada apa yang Anda maksud dengan " beberapa sumber daya perangkat keras", Anda selalu dapat meluncurkan instans EC2 mandiri bersama lingkungan OpsWorks atau Elastic Beanstalk. Saat ini, Elastic Beanstalk mendukung satu aplikasi web per lingkungan. Saya tidak ingat apa yang didukung OpsWorks.

Sistem stack akan menghosting beberapa ruby ​​dengan lalu lintas tinggi pada aplikasi rel yang kita migrasikan dari Heroku, juga beberapa aplikasi python / django dan beberapa aplikasi PHP juga.

Semua ini didukung penuh oleh AWS. OpsWorks dan Elastic Beanstalk telah mengoptimalkan dirinya sendiri untuk berbagai lingkungan pengembangan (Ruby, Python, dan PHP semuanya ada dalam daftar), sementara EC2 menyediakan server mentah tempat Anda dapat menginstal apa pun yang Anda inginkan.

Ryan Parman
sumber
3
OpsWorks menangani penerapan git dengan baik meskipun berbeda. Jika penerapan git ElasticBeanstalk didorong dari repo menggunakan CLI, OpsWorks menggunakan akses hanya baca ke repo menggunakan SSH (atau HTTPS jika repo publik).
Jack Frost
@Ryan Seperti yang disebutkan, Beanstalk menggunakan templat tipe formasi Cloud di latar belakang untuk membuat infrastruktur yang diperlukan.
Mohd Belal
23

OpsWorks adalah alat orkestrasi seperti Chef - sebenarnya, ini berasal dari Chef - Puppet, Ansible, atau Saltstalk. Anda menggunakan Opsworks untuk menentukan keadaan jaringan yang Anda inginkan dengan menentukan keadaan yang Anda inginkan untuk setiap sumber daya - instance server, aplikasi, penyimpanan -. Dan Anda menentukan keadaan yang Anda inginkan untuk setiap sumber daya. menentukan nilai yang Anda inginkan untuk setiap atribut negara bagian itu. Misalnya, Anda mungkin ingin layanan Apache selalu aktif dan berjalan serta mulai saat boot dengan Apache sebagai pengguna dan Apache sebagai grup Linux.

CloudFormation adalah template json (**) yang menentukan status sumber daya yang ingin Anda terapkan, yaitu Anda ingin menerapkan instans mikro t2 AWS EC2 di us-east-1 sebagai bagian dari VPC 192.168.1.0/24 . Dalam kasus instans EC2, Anda dapat menentukan apa yang harus dijalankan pada sumber daya itu melalui skrip bash kustom Anda di bagian data pengguna dari sumber daya EC2. CloudFormation hanyalah sebuah template. Templat menjadi lebih baik sebagai sumber daya yang berjalan hanya jika Anda menjalankannya melalui AWS Management Console untuk CloudFormation atau jika Anda menjalankan perintah aws cli untuk Cloudformation yaitu aws cloudformation ...

ElasticBeanstalk adalah PAAS- Anda dapat mengunggah aplikasi Ruby / Rails, node.js atau Python / django atau Python / Flask secara khusus. Jika Anda menjalankan apa pun seperti Scala, Haskell, atau apa pun, buat gambar Docker untuknya dan unggah gambar Docker itu ke Elastic Beanstalk (*).

Anda dapat mengunggah aplikasi Anda ke Elastic Beanstalk dengan menjalankan aws cli untuk CloudFormation atau Anda membuat resep untuk Opsworks untuk mengunggah aplikasi Anda ke Elastic Beanstalk. Anda juga dapat menjalankan cli aws untuk Cloudformation melalui Opsworks.

(*) Faktanya, dokumentasi AWS pada contoh aplikasi Ruby-nya sangat buruk sehingga saya kehilangan kesabaran dan menyematkan aplikasi contoh ke dalam gambar Docker dan mengunggah gambar Docker ke dalam Elastic Beanstalk.

(**) Mulai Sep 2016, Cloudformation juga mendukung template YAML.

Vietnhi Phuvan
sumber
8

Di Opsworks, Anda dapat berbagi "peran" dari lapisan di seluruh tumpukan untuk menggunakan lebih sedikit sumber daya dengan menggabungkan pekerjaan tertentu yang mungkin dilakukan instance yang mendasarinya.

Daftar Kompatibilitas Lapisan (selama grup keamanan diatur dengan benar):

HA Proxy : custom, db-master, and memcached.
MySQL :  custom, lb, memcached, monitoring-master, nodejs-app, php-app, rails-app, and web.
Java : custom, db-master, and memcached.
Node.js : custom, db-master, memcached, and monitoring-master
PHP : custom, db-master, memcached, monitoring-master, and rails-app.
Rails :  custom, db-master, memcached, monitoring-master, php-app.
Static :  custom, db-master, memcached.
Custom : custom, db-master, lb, memcached, monitoring-master, nodejs-app, php-app, rails-app, and web 
Ganglia :  custom, db-master, memcached, php-app, rails-app. 
Memcached :  custom, db-master, lb, monitoring-master, nodejs-app, php-app, rails-app, and web. 

referensi: http://docs.aws.amazon.com/opsworks/latest/userguide/layers.html

Imran Ahmed
sumber
8

AWS Beanstalk: Menyebarkan dan mengelola aplikasi di cloud AWS tanpa mengkhawatirkan infrastruktur yang menjalankan aplikasi web Anda dengan Elastic Beanstalk. Tidak perlu khawatir tentang EC2 atau instalasi lainnya.

AWS OpsWorks AWS OpsWorks tidak lain adalah layanan manajemen aplikasi yang memudahkan pengguna DevOps baru untuk membuat model & mengelola seluruh aplikasi mereka

Yogesh Funde
sumber
1
Saya pikir jawaban ini tidak akurat. Faktanya adalah sebaliknya. Meskipun Elastic Beanstalk hanyalah PaaS, dengan OpsWorks, Anda bertanggung jawab untuk membuat tumpukan menggunakan komponen yang sesuai. Definisi 'Untuk DevOps baru' akan berlaku untuk pengguna EB, bukan OpsWorks '.
scaryguy
3

AWS CloudFormation - Buat dan Perbarui lingkungan Anda.

AWS Opsworks - Kelola sistem Anda di dalam lingkungan tersebut seperti yang kami lakukan dengan Chef atau Puppet

AWS Beanstalk - Buat, Kelola, dan Terapkan.

Tapi secara pribadi saya suka CloudFormation dan OpsWorks, keduanya dengan menggunakan kekuatan penuhnya untuk tujuan mereka.

Gunakan CloudFormation untuk membuat lingkungan Anda, lalu Anda dapat memanggil Opsworks dari skrip pembentukan awan untuk meluncurkan mesin Anda. Kemudian Anda akan memiliki tumpukan Opsworks untuk mengelolanya. Misalnya menambahkan pengguna di kotak linux dengan menggunakan Opsworks atau melakukan penambalan kotak Anda menggunakan resep koki. Anda juga dapat menuliskan resep koki untuk penerapan. Jika tidak, Anda dapat menggunakan CodeDeploy yang secara khusus dibuat untuk penerapan.

Budak
sumber
3

AWS OpsWorks - Ini adalah bagian dari layanan manajemen AWS. Ini membantu untuk mengkonfigurasi aplikasi menggunakan scripting. Ini menggunakan Chef sebagai kerangka kerja pengembang untuk manajemen dan operasi aplikasi ini. Ada template yang dapat digunakan untuk konfigurasi server, database, penyimpanan. Templat juga dapat disesuaikan untuk melakukan tugas lainnya. Teknisi DevOps memiliki kendali atas dependensi dan infrastruktur aplikasi.

AWS Beanstalk - Ini menyediakan lingkungan untuk bahasa seperti Java, Node Js, Python, Ruby Go. Tangkai Elastic Bean menyediakan sumber daya untuk menjalankan aplikasi. Pengembang tidak perlu khawatir tentang infrastruktur dan mereka tidak memiliki kendali atas infrastruktur.

AWS CloudFormation - CloudFormation memiliki templat sampel untuk mengelola sumber daya AWS secara berurutan.

Sanjeev Singh
sumber
0

Seperti banyak orang lain yang berkomentar tentang AWS Beanstalk, AWS OpsWorks dan AWS Cloud Formation menawarkan solusi berbeda untuk masalah yang berbeda.

Untuk menyelesaikannya

I am interested in a system that can be auto scaled to handle any high number of simultaneous web requests (From 1000 requests per minute to 10 million rpm.), including a database layer that can be auto scalable as well.

Dan dengan mempertimbangkan Anda sedang dalam proses migrasi, saya sangat menyarankan Anda untuk mulai melihat solusi AWS Lambda & AWS DynamoDB (atau solusi hybrid).

Keduanya dirancang untuk penskalaan otomatis dengan cara yang sederhana dan mungkin merupakan solusi yang sangat murah.

siomes
sumber
-1

Cukup gunakan terraform dan ECS atau EKS.

opsworks, pohon kacang elastis dan teknologi lama cloudformation sekarang. -)

neill
sumber