2017-01-04 3 views
7

Я не понимаю даже принципиальной разницы между услугами в названии. Предоставляют ли эти службы просто программное обеспечение, которое поможет вам настроить/организовать/управлять вашими виртуальными машинами или они также обеспечивают физическую инфраструктуру для работы вашей виртуальной машины? Другими словами, это просто удобные интерфейсы между разработчиками и AWS, Rackspace и Azure?Бродяга, Докер, Кукольный, Шеф-повар

+0

Похоже, вы также должны взглянуть на Ansible и Terraform для ваших конкретных интересов. –

ответ

18

Не совсем.

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.

Надеюсь, что это дает немного больше информации о том, как их можно использовать.

+1

Это значительно более точный ответ и должен быть принятым ответом. –

+0

Спасибо, особенно для примера. Сегодня я помню другой ответ с разными комментариями. Все это исчезло без каких-либо доказательств, когда-либо существовавших. Это из-за подозрения в плагиате? –

+0

@JosephJohnston Я подозреваю, что так. IIRC, в нем также содержится некоторая неточная информация. Но это может быть просто сгнило с моей стороны. :-) Если вам нужна дополнительная помощь/разъяснение, дайте мне знать. –

2

Я попытаюсь передать, как и в повседневной беседе,

Vagrant - Для создания среды разработки раскрутить на машине нового разработчика в одном проекте, в идеале в течение нескольких минут. Обычно используется поверх виртуального бокса, но может использоваться с различными поставщиками оборудования.

Docker - Ничего виртуального здесь, просто представьте, что реальный процесс и требуемые библиотеки изолированы, а затем отправлены на сервер в виде архива. Использование ресурсов определяется командой запуска.

Chef/Puppet - Может использоваться для автоматизации всего, что вы набираете в bash, чтобы настроить проект (кроме клавиш приложения и т. Д.). Вы можете использовать их для создания изображений докеров или бродячих сред, поэтому они не обязательно должны существовать на физическом сервере производства. См. Packer.

AWS/Rackspace/Azure - являются поставщиками IaaS. На простом английском языке они разворачивают серверы по мере необходимости и предоставляют вам доступ к SSH. Конечно, они предоставляют больше, чем это.

Угадайте, что они могут быть использованы друг в друге.

Эти инструменты, похоже, упростили развертывание, но, как правило, не используйте их все вместе, если это не сэкономит вам время и вашу команду. Иногда проще прокручивать EC2 вручную и scp ваш проект с ручной настройкой. Вы можете автоматизировать позже.

Преждевременная оптимизация является корнем всего зла - сэр Тони Хоара

1

Шеф: повар является платформой автоматизации для преобразования инфраструктуры в код. Он обычно называется, программное обеспечение для управления конфигурацией. Вы можете определить состояние с различными параметрами в виде файлов конфигурации, 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 Мы, наконец, начинаем соглашаться не только с изображениями и временем выполнения.