Я хотел бы знать, каковы преимущества и недостатки использования 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.
Меня интересует система, которая может быть автоматически масштабирована для обработки любого большого количества одновременных веб-запросов (от 1000 запросов в минуту до 10 миллионов об / мин.), Включая уровень базы данных, который также может быть автоматически масштабируемым.
Под капотом OpsWorks и Elastic Beanstalk используют EC2 + CloudWatch + Auto Scaling, что позволяет справляться с нагрузками, о которых вы говорите. RDS обеспечивает поддержку масштабируемых баз данных на основе SQL.
Вместо того, чтобы иметь отдельный экземпляр для каждого приложения, в идеале я хотел бы эффективно использовать некоторые аппаратные ресурсы. Раньше я использовал в основном экземпляр EC2 + RDS + Cloudfront + S3
В зависимости от того, что вы подразумеваете под « некоторыми аппаратными ресурсами», вы всегда можете запускать автономные экземпляры EC2 вместе со средами OpsWorks или Elastic Beanstalk. В настоящее время Elastic Beanstalk поддерживает одно веб-приложение для каждой среды. Я не помню, что поддерживает OpsWorks.
В стековой системе будут размещаться некоторые приложения с высоким трафиком ruby on rails, которые мы переносим с Heroku, а также некоторые приложения python / django и некоторые приложения PHP.
Все это полностью поддерживается AWS. OpsWorks и Elastic Beanstalk оптимизированы для множества сред разработки (в списке есть Ruby, Python и PHP), а EC2 предоставляет необработанные серверы, на которых вы можете установить все, что захотите.