Добавить в корзинуПозвонить
Найти в Дзене

Что такое DevOps и зачем он нужен? Объясняем простыми словами

DevOps - это подход, методология и даже культура и философия процесса разработки, при котором программисты, тестировщики и системные администраторы могут работать над продуктом быстрее и эффективнее. Подход помогает снизить ошибки при передаче проекта от разработчиков к тестировщикам и сисадминам и наладить между ними взаимодействие. В основе лежит идея, что разработка, тестирование и эксплуатация цифровых продуктов — это единый, бесшовный и циклический процесс. Это набор практик, нацеленных на активное взаимодействие и интеграцию специалистов по разработке и эксплуатации. Нацелена на то, чтобы помогать организациям быстрее создавать и обновлять программные продукты (популяризация термина DevOps в 2009 г.). chmod (от англ. change mode) — команда для изменения прав доступа к файлам и каталогам, используемая в Unix-подобных операционных системах Архитектура веб-сервиса, которая позволит переключаться между версиями по распространенным схемам развертывания: Обе схемы используют пару бэке

DevOps - это подход, методология и даже культура и философия процесса разработки, при котором программисты, тестировщики и системные администраторы могут работать над продуктом быстрее и эффективнее.

Подход помогает снизить ошибки при передаче проекта от разработчиков к тестировщикам и сисадминам и наладить между ними взаимодействие.

В основе лежит идея, что разработка, тестирование и эксплуатация цифровых продуктов — это единый, бесшовный и циклический процесс.

Это набор практик, нацеленных на активное взаимодействие и интеграцию специалистов по разработке и эксплуатации.

Нацелена на то, чтобы помогать организациям быстрее создавать и обновлять программные продукты (популяризация термина DevOps в 2009 г.).

chmod (от англ. change mode) — команда для изменения прав доступа к файлам и каталогам, используемая в Unix-подобных операционных системах

Архитектура веб-сервиса, которая позволит переключаться между версиями по распространенным схемам развертывания:

Обе схемы используют пару бэкендов: «синий» и «зеленый».

Сначала на одном из бэкендов (например, на «синем») размещается стабильная версия, доступная пользователям, а другой («зеленый») используется для тестирования следующей версии. Когда тестирование окончено, бэкенды меняются ролями:

  • При сине-зеленом развертывании весь пользовательский трафик одномоментно перераспределяется с одного бэкенда на другой. Сине-зеленое развертывание (blue-green deployment) — это метод внесения изменений в веб-сервер, приложение или сервер базы данных, путем замены чередующихся промышленных и промежуточных серверов.
  • При канареечном развертывании переключение происходит постепенно, начиная с части пользователей.

После этого основным становится «зеленый» бэкенд, а на «синем» бэкенде можно тестировать следующую версию сервиса. Также, пока на «синем» бэкенде остается предыдущая версия, на нее можно откатить сервис, снова поменяв бэкенды ролями.

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

Канареечный релиз (canary release) — это метод снижения риска внедрения новой версии в эксплуатацию путем предоставления изменения небольшому подмножеству пользователей с нарастанием до состояния, когда это изменение становится доступным для всех

Балансировщик нагрузки (Load Balancer) — сервис, помогающий серверам эффективно перемещать данные, оптимизирующий использование ресурсов доставки приложений и предотвращающий перегрузки. Он управляет потоком информации между локальным или облачным хранилищем и конечным устройством — ПК, ноутбук, планшет или смартфон.

С помощью инструмента Docker девопс организует упаковку кода в контейнеры. Примерно как обычные грузовые контейнеры, которые благодаря стандартным габаритам укладываются, как конструктор, на палубе любого сухогруза. Только внутри виртуальных контейнеров — код, который «едет» на сервер, чтобы там исполняться. Девопс настраивает систему управления контейнерами — Swarm. Она следит за их состоянием, совместной работой, распределяет нагрузку.

Контейнеризация помогает:

  • увеличить скорость выкладки кода на сервер, так как контейнер при запуске уже готов к работе
  • быстро вернуться к предыдущей версии, если в новой обнаружились проблемы: закачиваем старые контейнеры — и снова все работает
  • В итоге программисты сосредоточены на своей главной задаче: пишут код. А девопс помогает пройти весь остальной путь: собирает проверенные коды в контейнер, отправляет его на сервер и добавляет к уже работающей программе.
-3
Карта работы DevOps
Карта работы DevOps

Окружения среды разработки:

  • Local - компьютер разработчика
  • Development - сервер разработки выступающий как песочница, где разработчик может выполнить unit-тестирование
  • Integration - основа для построения CI, или для тестирования сайд-эффектов разработчиком
  • Testing/Test/Internal Acceptance - окружение в котором выполняется тестирование интерфейса. Команда контроля качества проверяет что новый код не будет иметь влияния на существующую функциональность системы после деплоя нового кода в тестовое окружение.
  • Staging/Stage/Model/Pre-Production/Demo - зеркало прод окружения
  • Production/Live - серверы конечных пользователей/клиентов

Мерж реквест / Пул реквест - мерж-реквест или пулл-реквест создаётся в системе управления git-репозиториями. Это запрос на мерж одной ветки в другую, подобно задаче, назначаемый на какого-либо исполнителя. GitHub и Bitbucket используют термин «пулл-реквест», потому что первое необходимое действие — сделать пулл предлагаемой ветки.

Деплой - это развертывание/помещение исполняемого кода на сервер, где он будет работать.

Deploy - это целый процесс действий, которые делают программный продукт готовым к использованию:

  • выпуск;
  • установка;
  • активация;
  • адаптация;
  • обновление;
  • исправление ошибок и другие.
DEV+STAGE+PROD
DEV+STAGE+PROD

разработчиков, позволяющий создавать, публиковать, запускать и управлять контейнерными приложениями. Это платформа, которая позволяет упаковать в контейнер приложение со всем окружением и зависимостями, а затем доставить и запустить его в целевой системе.

Создание образов - docker Build создает базовый образ контейнера, который включает все необходимое для запуска приложения — его код, двоичные файлы, сценарии, зависимости, конфигурацию, переменные среды и другое. Для определения и запуска много контейнерных приложений применяется инструмент docker compose.

Docker daemon - сервис, через который осуществляется взаимодействие с контейнерами

Docker client - интерфейс командной строки управления Docker daemon

Docker image - файл (образ), из которого разворачиваются контейнеры

Docker container - развернутое из образа приложение

Docker registry - репо с докер образами

Docker file - инструкция для сборки образа

Kubernetes (K8s) — портативная платформа оркестрации контейнеров с открытым исходным кодом. Этот инструмент используется для автоматизации развертывания контейнерных приложений на разных хостах, а также планового масштабирования и управления ими.

Для чего нужен Kubernetes

  • Управление контейнерами на нескольких хостах одновременно.
  • Оптимизация ресурсов используемого оборудования.
  • Автоматическое развертывание и обновления приложений.
  • Подключение и добавление хранилищ для запуска приложений с отслеживанием состояния.
  • Масштабирование контейнерных приложений и их ресурсов на лету.
  • Декларативное управление службами, что гарантирует полный контроль над развернутыми приложениями.
  • Автоматический контроль работоспособность и восстановление приложений с помощью функций автозапуска, автозамены, авторепликации и автомасштабирования.

Виртуальная машина — это полноценная операционная система внутри другой ОС, с собственным ядром и другими изолированными ресурсами. Контейнер — не готовый «компьютер», а лишь изолированный механизм для запуска одного приложения.

В отличие от аппаратной виртуализации, контейнеризация обеспечивает разделение ресурсов не на аппаратном уровне, а на базе ядра операционной системы. Контейнеры более легковесны, менее требовательны и полностью зависимы от «материнской» ОС, чем VM.

Контейнер приложения — экземпляр исполняемого программного обеспечения (ПО), который объединяет двоичный код приложения вместе со всеми связанными файлами конфигурации, библиотеками, зависимостями и средой выполнения.

Смысл и главное преимущество технологии в том, что контейнер абстрагирует приложение от операционной системы хоста, то есть остается автономным, благодаря чему становится легко переносимым — способным работать на любой платформе

Зачем нужна контейнеризация?

  • Контейнеры решают критически важную проблему переносимости кода. Они сводят на нет возможные противоречия между собственной локальной средой разработки и производственной средой приложения.
  • Упаковка в контейнеры позволяя отделить код от базовой инфраструктуры, в которой он работает. В производственной среде этот контейнер можно запускать на любом компьютере, на котором есть платформа контейнеризации. В продакшене код будет работать также хорошо, как и на машине программиста.

Преимущества контейнеризации:

  • Контейнеризация стала ключевым техническим компонентом для обеспечения непрерывного развертывания и уменьшения жизненного цикла инновации продукта. Благодаря тому, что предприятия разбивают монолитную архитектуру своих производств на гибкие контейнерные микросервисы, время вывода на рынок начинает отсчитываться не в месяцах, а в днях.
  • Упрощение конфигурирования приложений. Стандартный контейнер Docker универсален. Упакованное в него приложение может работать без дополнительных настроек где угодно — на персональном компьютере (ПК, Mac, Linux), в облаке, на локальных серверах и даже на пограничных устройствах.
  • Контейнерная технология крайне эффективна как средство повышения эффективности разработки. Небольшие группы могут разрабатывать и упаковывать свои приложения на локальных устройствах (например, ноутбуках), а затем развертывать его в практически любой тестовой или производственной среде. Время и усилия, сэкономленные при тестировании и развертывании, кардинально меняют правила игры во всем процессе автоматизации производства.
  • Контейнеры легко воспроизвести, поэтому их удобно использовать для автоматического масштабирования приложений.

Что такое inode в Linux?

Индексный дескриптор в файловой системе, который хранит метаданные о файлах, за исключением имени файла. В дескрипторе хранится: длина файла в байтах, id устройства с файлом, id пользователя владельца файла, id группы файла, режим файла (права доступа), timestamp последнего изменения файла, счётчик хардлинков, указатели на блоки файла.

Что такое POSIX?

Набор стандартов, описывающих интерфейсы между операционной системой и прикладной программой (системный API), библиотеку языка C и набор приложений и их интерфейсов. Создан для совместимости различных Unix-подобных дистрибутивов.