Перейти к основному содержимому

DevOps CookBook

Раздел содержит важную информацию из DevOps CookBook из СберТеха.

DevOps-инженер

DevOps инженер является экспертом по практикам DevOps, владеет инструментами CI и CD, выстраивает Pipeline cборки и развертывания:

  • Настраивает процесс CI на централизованном сервисе, интегрирует его с моделью ветвления и кодом развертывания на средах разработки.
  • Разрабатывает процесс поставки ПО на целевых инструментах CD для всех сред (разработки, тестирования и эксплуатации).
  • Обеспечивает единообразие процессов поставки и выстраивания их в единый бесшовный процесс поставки.
  • Управляет и обеспечивает процесс распространения конфигураций тестовых сред для сред разработки и тестирования.

Модели ветвления

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

  • Git flow
  • Github flow
  • Gitlab flow
  • Feature Branch Workflow - используется на проекте Boomq

Базовые принципы моделей ветвления:

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

Термины

Система управления версиями (от англ. Version Control System, VCS или Revision Control System) — программное обеспечение для облегчения работы с изменяющейся информацией. Система управления версиями позволяет хранить несколько версий одного и того же документа, при необходимости возвращаться к более ранним версиям, определять, кто и когда сделал то или иное изменение, и многое другое.

Запрос на слияние (Pull-Request) – механизм системы контроля версий, позволяющий оформить изменения из ветки в виде предложения к слиянию в основную (или какую-то иную) ветку репозитория.

Сборка ПО (англ. Software Build) – процесс преобразования файлов с исходным кодом и их компиляция в артефакты, составляющие приложение такие, как бинарные и исполняемые файлы. Для сложных программ после компиляции происходит процесс связывания (линковка), упаковка бинарных/исполняемых файлов и сопутствующих ресурсов, требуемых для работы ПО, в дистрибутив.

Метрика программного обеспечения (software metric) – численная мера, позволяющая оценить определенные свойства конкретного участка программного кода. Для каждой метрики обычно существуют ее эталонные показатели, указывающие, при каких крайних значениях стоит обратить внимание на данный участок кода.

Непрерывное тестирование (Continuous Testing) – практика выполнения автоматизированных тестов в рамках конвейера Continuous Delivery для получения немедленной обратной связи о результатах проверки правильности функционирования системы.

Непрерывное измерение (CM, Continuous Measurement) – DevOps практика, которая заключается в постоянном отслеживании показателей всех систем и процессов, составляющих весь DevOps цикл.

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

Билд (англ. build) - процесс сборки и/или компиляции программного продукта

Артефакт - готовая для использования сборка продукта

Релиз - версионированный артефакт сборки

Окружение - изолированный набор серверов и/или сервисов

Продакшн - обозначение окружения для клиентов

Тест - среда (песочница, англ. sandbox), которая используется для тестирования приложения.

Стейджинг - это среда для тестирования, которая в точности похожа на продакшен-окружение.

Конвейер (англ. pipeline) - набор процессов организованный в последовательность по типу конвейера позволяющий непрерывно производить программные артефакты.

Виды автоматизированного тестирования

Модульное тестирование (unit testing) — проверка работоспособности части кода (функции, класса и т.д.). Тесты пишутся на языке программирования с использованием специальных фреймворков.

Статический анализ кода – процесс выявления ошибок и недочётов в исходном коде программ. Статический анализ можно рассматривать как автоматизированный процесс инспекции кода. Он выполняется без исполнения исследуемого кода.

Статический анализ кода и ИБ – проверка кода на соответствие международным стандартам языков программирования и написания безопасного кода с помощью специальных инструментов.

Системное тестирование – проверка работоспособности изолированной части функционала системы (без интеграции).

Интеграционнофункциональное тестирование – проверка работоспособности сквозных бизнес-операций между разными системами для нового и для ранее разработанного функционала.

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

Динамическое тестирование приложения на безопасность – проверка системы на уязвимости (повышение привилегий, выполнение произвольного кода, sql injection,…) и «закладки».