developer tip

AWS OpsWorks vs AWS Beanstalk vs AWS CloudFormation?

copycodes 2020. 9. 25. 07:59
반응형

AWS OpsWorks vs AWS Beanstalk vs AWS CloudFormation?


AWS OpsWorks와 AWS Beanstalk 및 AWS CloudFormation을 사용할 때의 장점과 단점은 무엇인지 알고 싶습니다.

자동 확장이 가능한 데이터베이스 계층을 포함하여 많은 수의 동시 웹 요청 (분당 1,000 건에서 1,000 만 rpm까지)을 처리하도록 자동 확장 할 수있는 시스템에 관심이 있습니다.

각 앱에 대해 별도의 인스턴스를 갖는 대신, 이상적으로는 일부 하드웨어 리소스를 효율적으로 공유하고 싶습니다. 과거에는 주로 EC2 인스턴스 + RDS + Cloudfront + S3를 사용했습니다.

스택 시스템은 Heroku에서 마이그레이션하는 Rails 앱, 일부 python / django 앱 및 일부 PHP 앱에 트래픽이 많은 루비를 호스팅합니다.

미리 감사드립니다.


AWS OpsWorks와 AWS Beanstalk 및 AWS CLoudFormation을 사용할 때의 장점과 단점은 무엇인지 알고 싶습니다.

답은 상황에 따라 다릅니다.

AWS OpsWorks와 AWS Beanstalk는 생각하는 방식에 따라 단순히 인프라를 관리하는 다른 방법입니다. CloudFormation은 단순히 인프라를 템플릿 화하는 방법입니다.

개인적으로 저는 Elastic Beanstalk에 더 익숙하지만 각각에 대해 잘 알고 있습니다. Git을 통해 배포 할 수 있기 때문에 선호합니다. Elastic Beanstalk가 환경을 시작하기 위해 내부적으로 CloudFormation을 사용하는 것은 공개 정보입니다.

내 프로젝트에서는 두 가지를 동시에 사용합니다. CloudFormation을 사용하여 앱에 사용하는 사용자 지정 구성 VPC 환경, S3 버킷 및 DynamoDB 테이블을 구성합니다. 그런 다음 S3 / DynamoDB 리소스와 대화하는 방법을 알고있는 사용자 지정 VPC 내에서 Elastic Beanstalk 환경을 시작합니다.

자동 확장이 가능한 데이터베이스 계층을 포함하여 많은 수의 동시 웹 요청 (분당 1,000 건에서 1,000 만 rpm까지)을 처리하도록 자동 확장 할 수있는 시스템에 관심이 있습니다.

내부적으로 OpsWorks 및 Elastic Beanstalk는 사용자가 말하는로드를 처리 할 수있는 EC2 + CloudWatch + Auto Scaling을 사용합니다. RDS는 확장 가능한 SQL 기반 데이터베이스를 지원합니다.

각 앱에 대해 별도의 인스턴스를 갖는 대신, 이상적으로는 일부 하드웨어 리소스를 효율적으로 공유하고 싶습니다. 과거에는 주로 EC2 인스턴스 + RDS + Cloudfront + S3를 사용했습니다.

" 일부 하드웨어 리소스"의 의미에 따라 OpsWorks 또는 Elastic Beanstalk 환경과 함께 항상 독립형 EC2 인스턴스를 시작할 수 있습니다. 현재 Elastic Beanstalk는 환경 당 하나의 웹앱을 지원합니다. OpsWorks가 무엇을 지원하는지 기억이 나지 않습니다.

스택 시스템은 Heroku에서 마이그레이션하는 Rails 앱, 일부 python / django 앱 및 일부 PHP 앱에 트래픽이 많은 루비를 호스팅합니다.

이 모든 것이 AWS에서 완벽하게 지원됩니다. OpsWorks 및 Elastic Beanstalk는 다양한 개발 환경 (Ruby, Python 및 PHP가 모두 목록에 있음)에 맞게 최적화 되었으며 EC2는 원하는 모든 것을 설치할 수있는 원시 서버를 제공합니다.


OpsWorks는 Chef와 같은 오케스트레이션 도구입니다. 사실 Chef-Puppet, Ansible 또는 Saltstalk에서 파생되었습니다. Opsworks를 사용하여 각 리소스 (서버 인스턴스, 애플리케이션, 스토리지)가있을 상태를 지정하여 네트워크가있는 상태를 지정합니다. 그리고 각 리소스가있을 상태를 지정합니다. 해당 상태의 각 속성에 대해 원하는 값을 지정합니다. 예를 들어, Apache 서비스가 항상 실행되고 실행되고 Apache를 사용자로, Apache를 Linux 그룹으로 사용하여 부팅 할 때 시작할 수 있습니다.

CloudFormation은 배포하려는 리소스의 상태를 지정하는 json 템플릿 (**)입니다. 즉, VPC 192.168.1.0/24의 일부로 us-east-1에 AWS EC2 micro t2 인스턴스를 배포하려고합니다. . EC2 인스턴스의 경우 EC2 리소스의 사용자 데이터 섹션에있는 사용자 지정 bash 스크립트를 통해 해당 리소스에서 실행할 항목을 지정할 수 있습니다. CloudFormation은 단순한 템플릿입니다. 템플릿은 CloudFormation 용 AWS Management Console을 통해 실행하거나 Cloudformation 용 aws cli 명령을 실행하는 경우에만 실행 리소스로 구체화됩니다 (예 : aws cloudformation ...

ElasticBeanstalk는 PAAS입니다. 특히 Ruby / Rails, node.js 또는 Python / django 또는 Python / Flask 앱을 ​​업로드 할 수 있습니다. Scala, Haskell 또는 다른 것을 실행하는 경우 Docker 이미지를 생성하고 해당 Docker 이미지를 Elastic Beanstalk (*)에 업로드합니다.

CloudFormation 용 aws cli를 실행하여 앱을 Elastic Beanstalk에 업로드하거나 Opsworks에 대한 레시피를 생성하여 앱을 Elastic Beanstalk에 업로드 할 수 있습니다. Opsworks를 통해 Cloudformation 용 aws cli를 실행할 수도 있습니다.

(*) 실제로 Ruby 앱 예제에 대한 AWS의 문서가 너무 열악하여 인내심을 잃고 예제 앱을 Docker 이미지에 내장하고 Docker 이미지를 Elastic Beanstalk에 업로드했습니다.

(**) 2016 년 9 월부터 Cloudformation은 YAML 템플릿도 지원합니다.


CloudFormation : AWS CloudFormation은 Amazon Web Services 리소스를 모델링하고 설정하는 데 도움이되는 서비스입니다. 따라서 이러한 리소스를 관리하는 데 드는 시간을 줄이고 AWS.it에서 실행되는 애플리케이션에 더 많은 시간을 할애 할 수 있습니다. 템플릿 은 리소스를 설명합니다. 당신이 원하는 설정.여기에 이미지 설명 입력

탄력있는 콩나무

Elastic Beanstalk를 사용하면 해당 애플리케이션을 실행하는 인프라에 대한 걱정없이 AWS 클라우드에서 애플리케이션을 빠르게 배포하고 관리 할 수 ​​있습니다. 이 점에서 CloudFormation과 유사합니다. 실제로 CloudFormation 템플릿과 스크립트를 사용하여…

  • 로드 밸런서 및 Auto Scaling 그룹을 생성합니다.
  • 코드를 S3에 복사합니다.
  • EC2 인스턴스를 부트 스트랩하여 S3에서 코드를 다운로드하고 배포합니다.

OpsWorks

OpsWorks enables you to automate management actions so that they are performed automatically and reliably. You can benefit from automatic failover, package management, EBS volume RAID setup, and rule-based or time-based auto scaling.

Now some big picture

여기에 이미지 설명 입력 여기에 이미지 설명 입력 여기에 이미지 설명 입력


In Opsworks you can share "roles" of layers across a stack to use less resources by combining the specific jobs an underlying instance maybe doing.

Layer Compatibility List (as long as security groups are properly set):

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. 

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


AWS Beanstalk: It is Deploy and manage applications in the AWS cloud without worrying about the infrastructure that runs yor web applications with Elastic Beanstalk. No need to worry about EC2 or else installations.

AWS OpsWorks AWS OpsWorks is nothing but an application management service that makes it easy for the new DevOps users to model & manage the entire their application


AWS CloudFormation - Create and Update your environments.

AWS Opsworks - Manage your systems inside that environments like we do with Chef or Puppet

AWS Beanstalk - Create, Manage and Deploy.

But personally I like CloudFormation and OpsWorks both by using its full power for what they are meant for.

Use CloudFormation to create your environment then you can call Opsworks from cloud formation scripts to launch your machine. Then you will have Opsworks stack to manage it. For example add a user in linux box by using Opsworks or do patching of your boxes using chef recipes. You can write down chef recipes for deployment also. Otherwise you can use CodeDeploy specifically build for deployment.


AWS OpsWorks - This is a part of AWS management service. It helps to configure the application using scripting. It uses Chef as the devops framework for this application management and operation. There are templates which can be used for configuration of server, database, storage. The templates can also be customized to perform any other task. DevOps Engineers have control on application's dependencies and infrastructure.

AWS Beanstalk - It provides the environment for language like Java, Node Js, Python, Ruby Go. Elastic Bean stalk provide the resource to run the application. Developers not to worry about the infrastructure and they don't have control on infrastructure.

AWS CloudFormation - CloudFormation has sample templates to manage the AWS resources in order.


As many others have commented AWS Beanstalk, AWS OpsWorks and AWS Cloud Formation offers different solutions for different problems.

In order to acomplish with

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.

And taking into consideration you are in migration process I strongly recommend you to start taking a look at AWS Lambda & AWS DynamoDB solution (or hybrid one).

Both two are designed for auto scaling in a simple way and may be a very cheap solution.


terraform 및 ECS 또는 EKS를 사용하십시오.

opsworks, elastic beanstalk 및 cloudformation 오래된 기술. -)

참고 URL : https://stackoverflow.com/questions/21310125/aws-opsworks-vs-aws-beanstalk-vs-aws-cloudformation

반응형