Рынок труда и DevOps. Часть 2: инструментарий и технологии

  • View
    6.595

  • Download
    0

  • Category

    Career

Preview:

Citation preview

Инструментарий DevOps

О чем пойдет речь

• Облака (AWS, Heroku, OpenStack, ...)

• Управление конфигурацией (Chef, Ansible, ...)

• Непрерывная интеграция (Jenkins, Bamboo, ...)

• Контейнеры (Docker)

Облака

Что это?

• Способ взять в аренду "машинные" ресурсы

• Часто - и готовую инфраструктуру

• Иногда - законченные программные решения

Зачем это?

• Не делаете то, в чем вы не компетентны

• Покупаете то, что не можете сделать сами

• Меньше затрат на планирование проекта

• Часто дешевле, чем делать самим

Типы облаков

SAAS (Software As A Service)

• Готовое программное решение "в аренду"

• Типичные примеры: Gmail, Dropbox, GitHub

• Так часто покупают инструменты разработки

• Ну и инфраструктурные инструменты тоже

PAAS (Platform As A Service)

• Умеет запускать ваши приложения

• Само управляет ресурсами

• Вы не спускаетесь на уровень ОС

• Часто "заточено" под языки/фреймворки

IAAS (Infrastructure As A Service)

• Похоже на "классический" хостинг

• Вам дается виртуальная или физическая машина

• Плюс "сеть", бэкапы и "объектное хранилище"

AWS(Amazon Web Services)

AWS

• Самое крупное и известное облако

• Разрабатывается компанией Amazon

• Умеет почти все, что можно представить

• "Знание AWS" часто встречается в вакансиях

Heroku

Heroku

• Один из первых PAAS

• До сих пор очень известен

• Фокус на запуске приложений

• Часто используется стартапами

OpenStack

OpenStack• "Облако на своем железе"

• Это OpenSource продукт

• Практически не имеет аналогов

• Сложен в эксплуатации

• Нужен если не хочется "отдавать данные"

• Может быть сильно дешевле AWS

vCloud/vSphereот vmWare

vCloud/vSphere• От авторов первого решения по виртуализации

• "Облако на своем железе"

• Предназначено для enterprise-применения

• На нем работает "инфраструктура" компаний

• Редко используется для "продуктовых" целей

Управление конфигурацией

Что это?

• Запись конфигурации Операционной Системы в коде

• Способ передачи знаний о работе продукта

• Идентичное воспроизведение среды продукта

Зачем это?

• "Проверяемая" документация

• Меньше ошибок на каждом этапе разработки

• Элемент построения "конвеера" разработки

• Контроль над системой - в руках разработчиков

Chef

Chef• Одна из самых сложных систем

• Высокий порог вхождения

• Решает широкий спектр проблем

• "Сценарии" пишутся на Ruby

• Выбирается теми, кто умеет программировать

• Требует значительных вложений

Puppet

Puppet• По возможностям почти то же, что и Chef

• Имеет упрощенную форму "Сценариев"

• Расширения пишутся на Ruby

• Раньше часто выбирался "админами"

• Требует значительных вложений

Ansible

Ansible• Система с фокусом на простоте

• Низкий порог вхождения

• Сценарии пишутся на YAML

• Расширения пишутся на Python

• Выбирается небольшими компаниями

• Не требует больших вложений

Непрерывная интеграция

(Continuous Integration)

Что это?

• По сути это - конвейер

• Постоянная проверка труда разработчиков

• Коммит->сборка->разворачивание->тесты

Зачем это?

• Увеличение производительности труда

• Увеличение предсказуемости

• Раннее обнаружение ошибок

Jenkins

Jenkins• Самая известная бесплатная система CI

• Настоящий "конструктор"

• Не очень стабильный

• Умеет почти все, что нужно

• Требует вложений времени в обслуживание

• Часто требует выделенных инженеров

Bamboo

Bamboo• Коммерческий продукт компании Atlassian

• Хорошо совместим с другими их инструментами

• Довольно надежен

• Не требует вкладываться в обслуживание

• Подходит для продуктов средней сложности

TeamCity

TeamCity

• Самое продвинутое коммерческое решение

• Хорошо организует сложные процессы

• Не требует больших вложений в обслуживание

• Подходит для сложных продуктов

TravisCI

TravisCI

• SAAS продукт

• Часто используется совместно с GitHub

• Простой в использовании

• Подходит для простых проектов и стартапов

Контейнеры

Что это?• Похоже на виртуализацию

• Разделяем один сервер на много "логических"

• Очень большая плотность

• Большая скорость запуска

• Малое потребление ресурсов

Зачем это?

• Иногда - как легкая замена виртуализации

• Изоляция частей приложения друг от друга

• Строительный инструмент

• Для запуска "микросервисов"

Docker

Docker

• Инструмент, созданный поверх контейнеров

• Упрощает запуск контейнеров и их менеджмент

• Активно развивается

• Часто используется для построения PAAS

Fin.

Recommended