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.
sumber
Jawaban:
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.
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.
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.
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.
sumber
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.
sumber
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
sumber
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
sumber
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.
sumber
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.
sumber
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.
sumber
Cukup gunakan terraform dan ECS atau EKS.
opsworks, pohon kacang elastis dan teknologi lama cloudformation sekarang. -)
sumber