Я не понимаю даже принципиальной разницы между услугами в названии. Предоставляют ли эти службы просто программное обеспечение, которое поможет вам настроить/организовать/управлять вашими виртуальными машинами или они также обеспечивают физическую инфраструктуру для работы вашей виртуальной машины? Другими словами, это просто удобные интерфейсы между разработчиками и AWS, Rackspace и Azure?Бродяга, Докер, Кукольный, Шеф-повар
ответ
Не совсем.
Chef/Puppet - это «то же самое», это управление конфигурацией. Хотя вы можете использовать их для управления виртуальными машинами или облачными/частными облаками, большинство людей не склонны использовать их таким образом. Это управление конфигурацией. Они обычно вступают в игру после запуска виртуальной машины, чтобы получить их в желаемом состоянии. То есть, какое программное обеспечение необходимо на виртуальной машине, какие пользователи нужно добавить, какая конфигурация необходима и т. Д. Таким образом, она, как правило, используется для масштабирования инфраструктуры.
Vagrant, а также может использоваться для управления виртуальными машинами и облаками общего пользования, как правило, используется только для одной среды. Он обеспечивает связный файл для создания виртуальной машины. Это похоже на шеф-повара/марионетки, но не имеет тенденций к использованию в масштабе.
Докер - это отдельный зверь. Он имеет несколько компонентов, но в основном он используется для «связывания» (примечание: он делает гораздо больше, но это решение ELI5) и требует, чтобы хост-система (или инфраструктура) работала. Он добавляет небольшую безопасность приложениям, но в основном обеспечивает согласованную «ОС» для приложения для запуска.
На практике все они могут быть использованы в среде. Вот пример:
Скажите, что у вас есть приложение FunTime. У вас есть восемь разработчиков, которые вносят свой вклад в это, и FunTime предназначен для запуска в масштабируемой инфраструктуре на AWS. Он предназначен для использования в интерфейсе (FunTime-Front) и back-end (FunTime-API) и требует postgres. 4 разработчиков работают на передней панели, четыре разработчика работают на бэкэнд.
Я хотел бы сделать следующее (есть много способов кожи этого кота, но это один из примеров):
Я хотел бы использовать Docker для Funtime-фронта и Funtime-API. Я бы использовал Vagrant для создания среды разработчиков для разработчиков (чтобы они могли настраивать различные компоненты). Vagrant: запускать виртуальную локальную сеть локально (или при необходимости в облаке), устанавливать докеры, вытаскивать изображения докеров для FunTime-Front и FunTime-API, устанавливать postgres и заполнять postgres фиктивными данными, настраивать сетевые порты для различных компоненты.
Теперь разработчик имеет полный стек FunTime на своем локальном компьютере и не нуждается в том, чтобы прикручивать что-либо самостоятельно: они могут просто набирать «бродячие».
На стороне инфраструктуры я хотел бы использовать шеф-повар (или марионетку) для настройки среды: Производство, этап и разработка (или что-то еще необходимо), тогда шеф-повар установил докер на «прикладные» серверы, «postgres» «на серверах postgres, применяйте параметры безопасности и т. д. Таким образом, все связанные серверы одинаковы. Если мне нужно было обновить сервер или добавить патч, было бы тривиально с управлением конфигурацией.
Во всех случаях Docker будет использоваться так, чтобы не было разницы между приложениями, включая рабочую станцию разработчиков.
Это гарантирует, что вы не услышите оправдание «Ну, это работает на моей локальной машине!» очень часто. Кроме того, если есть неудачное развертывание, откат приложения будет очень простым с Docker.
Надеюсь, что это дает немного больше информации о том, как их можно использовать.
Это значительно более точный ответ и должен быть принятым ответом. –
Спасибо, особенно для примера. Сегодня я помню другой ответ с разными комментариями. Все это исчезло без каких-либо доказательств, когда-либо существовавших. Это из-за подозрения в плагиате? –
@JosephJohnston Я подозреваю, что так. IIRC, в нем также содержится некоторая неточная информация. Но это может быть просто сгнило с моей стороны. :-) Если вам нужна дополнительная помощь/разъяснение, дайте мне знать. –
Я попытаюсь передать, как и в повседневной беседе,
Vagrant - Для создания среды разработки раскрутить на машине нового разработчика в одном проекте, в идеале в течение нескольких минут. Обычно используется поверх виртуального бокса, но может использоваться с различными поставщиками оборудования.
Docker - Ничего виртуального здесь, просто представьте, что реальный процесс и требуемые библиотеки изолированы, а затем отправлены на сервер в виде архива. Использование ресурсов определяется командой запуска.
Chef/Puppet - Может использоваться для автоматизации всего, что вы набираете в bash, чтобы настроить проект (кроме клавиш приложения и т. Д.). Вы можете использовать их для создания изображений докеров или бродячих сред, поэтому они не обязательно должны существовать на физическом сервере производства. См. Packer.
AWS/Rackspace/Azure - являются поставщиками IaaS. На простом английском языке они разворачивают серверы по мере необходимости и предоставляют вам доступ к SSH. Конечно, они предоставляют больше, чем это.
Угадайте, что они могут быть использованы друг в друге.
Эти инструменты, похоже, упростили развертывание, но, как правило, не используйте их все вместе, если это не сэкономит вам время и вашу команду. Иногда проще прокручивать EC2 вручную и scp
ваш проект с ручной настройкой. Вы можете автоматизировать позже.
Преждевременная оптимизация является корнем всего зла - сэр Тони Хоара
Шеф: повар является платформой автоматизации для преобразования инфраструктуры в код. Он обычно называется, программное обеспечение для управления конфигурацией. Вы можете определить состояние с различными параметрами в виде файлов конфигурации, s/w, инструментов, типов доступа и типов ресурсов и т. Д. Кроме того, вы можете настроить различные машины с различными функциональными возможностями в зависимости от ваших потребностей.
Puppet: Puppet - это инструмент, который позволяет абстрагироваться от конкретных концепций целевой машины и сделать процесс настройки более оперативным с точки зрения агностики. Он позволяет самостоятельно установить пакет или запустить фоновый сервис при запуске. Определите команду, пакеты, которые должны быть установлены, зависимостей шагов, содержимого файла и других вещей, которые вам нужно будет запускать и запускать без проблем.
Vagrant: Vagrant - это проект, который помогает нересту виртуальных машин. Это началось как командная строка VirtualBox, что-то похожее на Gemfile для VM. Вы можете выбрать базовое изображение для начала, сеть, IP, общий доступ к папкам и поместить все это в файл, который каждый может повторно использовать для создания той же настроенной машины. Vagrant имеет разные расширения, варианты предоставления услуг и провайдеры VM. Вы можете запустить VirtualBox, VMware, и он достаточно расширяем, чтобы создавать экземпляры на EC2.
Docker: Docker, позволяет упаковать приложение со всеми его зависимостями в стандартизованную единицу разработки программного обеспечения.Таким образом, это уменьшает трение между разработчиком, QA и тестированием. Он динамически меняет ваше приложение, добавляя новые возможности каждый день, масштабируя службы для быстрого изменения проблемных областей. Docker ставит себя в возбужденном месте, поскольку интерфейс для PaaS - это создание сетей, обнаружение и сервис, с приложениями, которые не должны заботиться о базовой инфраструктуре. Да, их по-прежнему проблемы с грузчиком в производстве (думал, что все крупные компании уже мигрировали свою инфраструктуру докера), но, надеюсь, мы увидим решение этих проблем, так как докер команда и участники напряженно работает над этими вопросами. Поскольку драйвер Docker Volume позволяет сторонним решениям управления данными контейнеров предоставлять объемы данных для контейнеров, которые работают с данными, такими как базы данных, хранилища ключей и другие приложения с поддержкой состояния. Как вы можете видеть один, rexray, как плагин тома и обеспечивает расширенные функции хранения. emccode/rexray Мы, наконец, начинаем соглашаться не только с изображениями и временем выполнения.
Похоже, вы также должны взглянуть на Ansible и Terraform для ваших конкретных интересов. –