AWS OpsWorks กับ AWS Beanstalk กับ AWS CloudFormation?


87

ฉันต้องการทราบว่าข้อดีและข้อเสียของการใช้ AWS OpsWorks vs AWS Beanstalk และ AWS CloudFormation คืออะไร

ฉันสนใจระบบที่สามารถปรับขนาดอัตโนมัติเพื่อจัดการกับคำขอเว็บพร้อมกันจำนวนมาก (จาก 1,000 คำขอต่อนาทีถึง 10 ล้านรอบต่อนาที) รวมถึงชั้นฐานข้อมูลที่สามารถปรับขนาดได้อัตโนมัติด้วย

แทนที่จะมีอินสแตนซ์แยกต่างหากสำหรับแต่ละแอปตามหลักการแล้วฉันต้องการแบ่งปันทรัพยากรฮาร์ดแวร์อย่างมีประสิทธิภาพ ที่ผ่านมาฉันใช้อินสแตนซ์ EC2 + RDS + Cloudfront + S3 เป็นส่วนใหญ่

ระบบสแต็กจะโฮสต์ทับทิมที่มีปริมาณการใช้งานสูงบนแอปรางที่เราย้ายจาก Heroku รวมถึงแอพ python / django และแอพ PHP บางตัวด้วย

ขอบคุณล่วงหน้า.


2
คำถามนี้ไม่ตรงประเด็นสำหรับ Stackoverflow แต่อาจจะไม่เหมาะกับ ServerFault เช่นกัน ... ฉันได้เสนอไซต์ใหม่สำหรับคำถามเช่นนี้โปรดปฏิบัติตามหากคุณเห็นด้วย! area51.stackexchange.com/proposals/82757/…
Dan Ciborowski - MSFT

คำตอบ:


70

ฉันต้องการทราบว่าข้อดีและข้อเสียของการใช้ AWS OpsWorks กับ AWS Beanstalk และ AWS CLoudFormation มีอะไรบ้าง

คำตอบคือมันขึ้นอยู่กับ

AWS OpsWorks และ AWS Beanstalk เป็นวิธีการจัดการโครงสร้างพื้นฐานที่แตกต่างกันซึ่งขึ้นอยู่กับว่าคุณคิดอย่างไร CloudFormation เป็นเพียงวิธีการสร้างเทมเพลตโครงสร้างพื้นฐานของคุณ

โดยส่วนตัวแล้วฉันคุ้นเคยกับ Elastic Beanstalk มากกว่า แต่สำหรับแต่ละคน ฉันชอบเพราะมันสามารถปรับใช้ผ่าน Git เป็นข้อมูลสาธารณะที่ Elastic Beanstalk ใช้ CloudFormation ภายใต้ประทุนเพื่อเปิดใช้งานสภาพแวดล้อม

สำหรับโครงการของฉันฉันใช้ทั้งสองอย่างควบคู่กัน ฉันใช้ CloudFormation เพื่อสร้างสภาพแวดล้อม VPC ที่กำหนดค่าเองบัคเก็ต S3 และตาราง DynamoDB ที่ฉันใช้สำหรับแอปของฉัน จากนั้นฉันเปิดใช้งานสภาพแวดล้อม Elastic Beanstalk ภายใน VPC ที่กำหนดเองซึ่งรู้วิธีพูดกับทรัพยากร S3 / DynamoDB

ฉันสนใจระบบที่สามารถปรับขนาดอัตโนมัติเพื่อจัดการกับคำขอเว็บพร้อมกันจำนวนมาก (จาก 1,000 คำขอต่อนาทีถึง 10 ล้านรอบต่อนาที) รวมถึงชั้นฐานข้อมูลที่สามารถปรับขนาดได้อัตโนมัติด้วย

ภายใต้ฝากระโปรง OpsWorks และ Elastic Beanstalk ใช้ EC2 + CloudWatch + Auto Scaling ซึ่งสามารถจัดการโหลดที่คุณกำลังพูดถึงได้ RDS ให้การสนับสนุนสำหรับฐานข้อมูลที่ใช้ SQL ที่ปรับขนาดได้

แทนที่จะมีอินสแตนซ์แยกต่างหากสำหรับแต่ละแอปตามหลักการแล้วฉันต้องการแบ่งปันทรัพยากรฮาร์ดแวร์อย่างมีประสิทธิภาพ ที่ผ่านมาฉันใช้อินสแตนซ์ EC2 + RDS + Cloudfront + S3 เป็นส่วนใหญ่

ขึ้นอยู่กับความหมายของ " ทรัพยากรฮาร์ดแวร์บางอย่าง " คุณสามารถเปิดใช้งานอินสแตนซ์ EC2 แบบสแตนด์อโลนควบคู่ไปกับสภาพแวดล้อม OpsWorks หรือ Elastic Beanstalk ได้ตลอดเวลา ในปัจจุบัน Elastic Beanstalk รองรับหนึ่งเว็บแอพต่อสภาพแวดล้อม ฉันจำไม่ได้ว่า OpsWorks สนับสนุนอะไร

ระบบสแต็กจะโฮสต์ทับทิมที่มีปริมาณการใช้งานสูงบนแอปรางที่เราย้ายจาก Heroku รวมถึงแอพ python / django และแอพ PHP บางตัวด้วย

ทั้งหมดนี้ได้รับการสนับสนุนอย่างเต็มที่โดย AWS OpsWorks และ Elastic Beanstalk ได้ปรับให้เหมาะสมกับสภาพแวดล้อมการพัฒนาที่หลากหลาย (Ruby, Python และ PHP อยู่ในรายการ) ในขณะที่ EC2 มีเซิร์ฟเวอร์ดิบที่คุณสามารถติดตั้งอะไรก็ได้ที่คุณต้องการ


3
OpsWorks จัดการการปรับใช้ git แม้ว่าจะแตกต่างกัน ในกรณีที่การปรับใช้ git ของ ElasticBeanstalk ถูกผลักจาก repo โดยใช้ CLI OpsWorks จะใช้การเข้าถึง repo แบบอ่านอย่างเดียวโดยใช้ SSH (หรือ HTTPS หาก repo สาธารณะ)
Jack Frost

@Ryan ตามที่กล่าวไว้ Beanstalk ใช้เทมเพลตประเภทการสร้างคลาวด์ในพื้นหลังเพื่อสร้างโครงสร้างพื้นฐานที่จำเป็น
Mohd Belal

23

OpsWorks เป็นเครื่องมือในการประสานงานเช่นเดียวกับ Chef - อันที่จริงมันมาจาก Chef - Puppet, Ansible หรือ Saltstalk คุณใช้ Opsworks เพื่อระบุสถานะที่คุณต้องการให้เครือข่ายของคุณอยู่โดยระบุสถานะที่คุณต้องการให้แต่ละทรัพยากร - อินสแตนซ์เซิร์ฟเวอร์แอปพลิเคชันพื้นที่เก็บข้อมูล - อยู่ในและคุณระบุสถานะที่คุณต้องการให้แต่ละทรัพยากรอยู่ การระบุค่าที่คุณต้องการสำหรับแต่ละแอตทริบิวต์ของสถานะนั้น ตัวอย่างเช่นคุณอาจต้องการให้บริการ Apache พร้อมใช้งานอยู่เสมอและเริ่มการบู๊ตโดยใช้ Apache เป็นผู้ใช้และ Apache เป็นกลุ่ม Linux

CloudFormation เป็นเทมเพลต json (**) ที่ระบุสถานะของทรัพยากรที่คุณต้องการปรับใช้เช่นคุณต้องการปรับใช้อินสแตนซ์ AWS EC2 micro t2 ใน us-east-1 เป็นส่วนหนึ่งของ VPC 192.168.1.0/24 . ในกรณีของอินสแตนซ์ EC2 คุณสามารถระบุสิ่งที่ควรรันบนทรัพยากรนั้นผ่านสคริปต์ทุบตีที่กำหนดเองของคุณในส่วนข้อมูลผู้ใช้ของทรัพยากร EC2 CloudFormation เป็นเพียงเทมเพลต เทมเพลตจะถูกทำให้เป็นทรัพยากรที่กำลังทำงานอยู่ก็ต่อเมื่อคุณเรียกใช้ผ่าน AWS Management Console สำหรับ CloudFormation หรือถ้าคุณเรียกใช้คำสั่ง aws cli สำหรับ Cloudformation เช่น aws cloudformation ...

ElasticBeanstalk เป็น PAAS คุณสามารถอัปโหลดแอป Ruby / Rails, node.js หรือ Python / django หรือ Python / Flask โดยเฉพาะ หากคุณใช้งานสิ่งอื่นเช่น Scala, Haskell หรือสิ่งอื่นใดให้สร้างอิมเมจ Docker ขึ้นมาและอัปโหลดอิมเมจ Docker นั้นไปยัง Elastic Beanstalk (*)

คุณสามารถอัปโหลดแอปของคุณไปยัง Elastic Beanstalk ได้โดยเรียกใช้ aws cli สำหรับ CloudFormation หรือสร้างสูตรสำหรับ Opsworks เพื่ออัปโหลดแอปของคุณไปยัง Elastic Beanstalk คุณยังสามารถรัน aws cli สำหรับ Cloudformation ผ่าน Opsworks

(*) ในความเป็นจริงเอกสารของ AWS เกี่ยวกับตัวอย่างแอป Ruby นั้นแย่มากจนฉันหมดความอดทนและฝังแอปตัวอย่างลงในอิมเมจ Docker และอัปโหลดอิมเมจ Docker ไปยัง Elastic Beanstalk

(**) ณ เดือนกันยายน 2016 Cloudformation ยังรองรับเทมเพลต YAML


8

ใน Opsworks คุณสามารถแชร์ "บทบาท" ของเลเยอร์ข้ามสแต็กเพื่อใช้ทรัพยากรน้อยลงโดยการรวมงานเฉพาะที่อินสแตนซ์พื้นฐานอาจทำ

รายการความเข้ากันได้ของเลเยอร์ (ตราบใดที่ตั้งค่ากลุ่มความปลอดภัยอย่างเหมาะสม):

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. 

อ้างอิง: http://docs.aws.amazon.com/opsworks/latest/userguide/layers.html


8

AWS Beanstalk: ใช้งานและจัดการแอปพลิเคชันใน AWS Cloud โดยไม่ต้องกังวลเกี่ยวกับโครงสร้างพื้นฐานที่เรียกใช้เว็บแอปพลิเคชันด้วย Elastic Beanstalk ไม่ต้องกังวลเกี่ยวกับ EC2 หรือการติดตั้งอื่น ๆ

AWS OpsWorks AWS OpsWorks เป็นเพียงบริการจัดการแอปพลิเคชันที่ช่วยให้ผู้ใช้ DevOps ใหม่สามารถสร้างโมเดลและจัดการแอปพลิเคชันทั้งหมดได้อย่างง่ายดาย


1
ฉันคิดว่าคำตอบนี้ไม่ถูกต้อง ความจริงก็คืออีกทางหนึ่ง แม้ว่า Elastic Beanstalk จะเป็นเพียง PaaS แต่ด้วย OpsWorks คุณมีหน้าที่ทั้งหมดในการสร้างสแตกโดยใช้ส่วนประกอบที่เหมาะสม คำจำกัดความ 'สำหรับ DevOps ใหม่' จะใช้กับผู้ใช้ EB ไม่ใช่ OpsWorks '
Scaryguy

3

AWS CloudFormation - สร้างและอัปเดตสภาพแวดล้อมของคุณ

AWS Opsworks - จัดการระบบของคุณภายในสภาพแวดล้อมเช่นเดียวกับที่เราทำกับ Chef หรือ Puppet

AWS Beanstalk - สร้างจัดการและปรับใช้

แต่โดยส่วนตัวแล้วฉันชอบ CloudFormation และ OpsWorks โดยใช้พลังเต็มที่เพื่อสิ่งที่พวกเขามีไว้เพื่อ

ใช้ CloudFormation เพื่อสร้างสภาพแวดล้อมของคุณจากนั้นคุณสามารถเรียก Opsworks จากสคริปต์การสร้างคลาวด์เพื่อเปิดเครื่องของคุณ จากนั้นคุณจะมี Opsworks stack เพื่อจัดการ ตัวอย่างเช่นเพิ่มผู้ใช้ในกล่อง linux โดยใช้ Opsworks หรือทำการแก้ไขกล่องของคุณโดยใช้สูตรอาหารของเชฟ คุณสามารถจดสูตรอาหารเชฟเพื่อนำไปใช้งานได้ด้วย มิฉะนั้นคุณสามารถใช้ CodeDeploy build สำหรับการปรับใช้โดยเฉพาะ


3

AWS OpsWorks - เป็นส่วนหนึ่งของบริการจัดการ AWS ช่วยในการกำหนดค่าแอปพลิเคชันโดยใช้การเขียนสคริปต์ ใช้ Chef เป็นเฟรมเวิร์กการพัฒนาสำหรับการจัดการและการดำเนินการแอปพลิเคชันนี้ มีเทมเพลตที่สามารถใช้สำหรับการกำหนดค่าเซิร์ฟเวอร์ฐานข้อมูลหน่วยเก็บข้อมูล แม่แบบยังสามารถปรับแต่งเพื่อทำงานอื่น ๆ ได้ DevOps Engineers สามารถควบคุมการอ้างอิงและโครงสร้างพื้นฐานของแอปพลิเคชันได้

AWS Beanstalk - จัดเตรียมสภาพแวดล้อมสำหรับภาษาเช่น Java, Node Js, Python, Ruby Go Elastic Bean stalk ให้ทรัพยากรในการรันแอปพลิเคชัน นักพัฒนาไม่ต้องกังวลเกี่ยวกับโครงสร้างพื้นฐานและไม่มีการควบคุมโครงสร้างพื้นฐาน

AWS CloudFormation - CloudFormation มีเทมเพลตตัวอย่างเพื่อจัดการทรัพยากร AWS ตามลำดับ


0

ตามที่คนอื่น ๆ แสดงความคิดเห็น AWS Beanstalk AWS OpsWorks และ AWS Cloud Formation นำเสนอโซลูชันที่แตกต่างกันสำหรับปัญหาที่แตกต่างกัน

เพื่อที่จะบรรลุธรรมด้วย

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.

และเมื่อพิจารณาว่าคุณอยู่ในขั้นตอนการย้ายข้อมูลฉันขอแนะนำอย่างยิ่งให้คุณเริ่มดูโซลูชัน AWS Lambda & AWS DynamoDB (หรือแบบไฮบริดหนึ่ง)

ทั้งสองได้รับการออกแบบมาสำหรับการปรับขนาดอัตโนมัติด้วยวิธีง่ายๆและอาจเป็นวิธีที่ถูกมาก


-1

เพียงใช้พื้นระเบียงและ ECS หรือ EKS

opsworks, ฝักถั่วยืดหยุ่นและ cloudformation เทคโนโลยีเก่าในขณะนี้ -)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.