0 added
0 removed
Original
2026-01-01
Modified
2026-02-21
1
<p><a>#статьи</a></p>
1
<p><a>#статьи</a></p>
2
<ul><li>24 сен 2019</li>
2
<ul><li>24 сен 2019</li>
3
<li>0</li>
3
<li>0</li>
4
</ul><p>Почему полезно работать с DevOps, где применять эту технологию и какие существуют инструменты. Объясняет Алексей Климин из компании "Атвинта".</p>
4
</ul><p>Почему полезно работать с DevOps, где применять эту технологию и какие существуют инструменты. Объясняет Алексей Климин из компании "Атвинта".</p>
5
<p> vlada_maestro / shutterstock</p>
5
<p> vlada_maestro / shutterstock</p>
6
<p>Программист, компания "Атвинта"</p>
6
<p>Программист, компания "Атвинта"</p>
7
<p>Фронтенд, Бэкэнд, Админ, DevOps. Обожаю все оптимизировать и автоматизировать. Постоянно ищу новые технологии и способы их внедрения.</p>
7
<p>Фронтенд, Бэкэнд, Админ, DevOps. Обожаю все оптимизировать и автоматизировать. Постоянно ищу новые технологии и способы их внедрения.</p>
8
<ul><li>Что это за <a>технология</a></li>
8
<ul><li>Что это за <a>технология</a></li>
9
<li><a>Проблемы</a>при работе без DevOps</li>
9
<li><a>Проблемы</a>при работе без DevOps</li>
10
<li>Как DevOps<a>улучшает</a>процесс разработки</li>
10
<li>Как DevOps<a>улучшает</a>процесс разработки</li>
11
<li><a>Инструментарий</a>для DevOps</li>
11
<li><a>Инструментарий</a>для DevOps</li>
12
<li><a>Кому и для чего</a>применять</li>
12
<li><a>Кому и для чего</a>применять</li>
13
</ul><p>Термин<a>DevOps</a>образован от английских слов development и operations. Это подход, методология и даже культура и философия процесса разработки, при котором программисты, тестировщики и системные администраторы могут работать над продуктом быстрее и эффективнее. Подход помогает снизить ошибки при передаче проекта от разработчиков к тестировщикам и сисадминам и наладить между ними взаимодействие. В основе лежит идея, что разработка, тестирование и эксплуатация цифровых продуктов - это<strong>единый, бесшовный и циклический процесс</strong>.</p>
13
</ul><p>Термин<a>DevOps</a>образован от английских слов development и operations. Это подход, методология и даже культура и философия процесса разработки, при котором программисты, тестировщики и системные администраторы могут работать над продуктом быстрее и эффективнее. Подход помогает снизить ошибки при передаче проекта от разработчиков к тестировщикам и сисадминам и наладить между ними взаимодействие. В основе лежит идея, что разработка, тестирование и эксплуатация цифровых продуктов - это<strong>единый, бесшовный и циклический процесс</strong>.</p>
14
<p>Сама по себе тема DevOps довольно объемная. Это автоматизация процессов подготовки инфраструктуры как для разработки, так и для тестирования приложения, а также для его эксплуатации. Сюда же входят автоматизация деплоя и мониторинг.</p>
14
<p>Сама по себе тема DevOps довольно объемная. Это автоматизация процессов подготовки инфраструктуры как для разработки, так и для тестирования приложения, а также для его эксплуатации. Сюда же входят автоматизация деплоя и мониторинг.</p>
15
<p>Наиболее ярко DevOps раскрывается при разработке приложения с применением микросервисной архитектуры1.</p>
15
<p>Наиболее ярко DevOps раскрывается при разработке приложения с применением микросервисной архитектуры1.</p>
16
<p>Рассмотрим на примере заказной разработки веб-приложений, с какими проблемами сталкиваются разработчики и как их устранить с DevOps-подходом.</p>
16
<p>Рассмотрим на примере заказной разработки веб-приложений, с какими проблемами сталкиваются разработчики и как их устранить с DevOps-подходом.</p>
17
<p>До попадания к пользователям программный продукт проходит несколько этапов. Разработчик пишет код, его тестирует<a>QA</a>, после чего системный администратор заливает приложение на боевой сервер.</p>
17
<p>До попадания к пользователям программный продукт проходит несколько этапов. Разработчик пишет код, его тестирует<a>QA</a>, после чего системный администратор заливает приложение на боевой сервер.</p>
18
<p>Разработчик устанавливает у себя на машине все необходимое: язык программирования, на котором будет вестись разработка, например PHP 7.0, базу данных, MySQL 5.7 и веб-сервер, Apache. Какая операционная система и какие версии библиотек и зависимостей будут установлены на сервере, неизвестно.</p>
18
<p>Разработчик устанавливает у себя на машине все необходимое: язык программирования, на котором будет вестись разработка, например PHP 7.0, базу данных, MySQL 5.7 и веб-сервер, Apache. Какая операционная система и какие версии библиотек и зависимостей будут установлены на сервере, неизвестно.</p>
19
<p>После того как нужная функциональность приложения реализована, требуется ее протестировать.</p>
19
<p>После того как нужная функциональность приложения реализована, требуется ее протестировать.</p>
20
<p>Программист упаковывает в архив свой код, копию базы данных, информацию о требуемом ПО и инструкцию по установке всего необходимого для запуска и работы приложения. После этого он передает архив тестировщику.</p>
20
<p>Программист упаковывает в архив свой код, копию базы данных, информацию о требуемом ПО и инструкцию по установке всего необходимого для запуска и работы приложения. После этого он передает архив тестировщику.</p>
21
<p>QA-специалист устанавливает все необходимое на тестовый стенд, разворачивает приложение и принимается тестировать.</p>
21
<p>QA-специалист устанавливает все необходимое на тестовый стенд, разворачивает приложение и принимается тестировать.</p>
22
<p>Если в процессе тестирования появляется новая версия разработки, то приходится повторять процедуру. Разработчику нужно снова создать архив, передать тестировщику; а тому, в свою очередь, снова развернуть приложение.</p>
22
<p>Если в процессе тестирования появляется новая версия разработки, то приходится повторять процедуру. Разработчику нужно снова создать архив, передать тестировщику; а тому, в свою очередь, снова развернуть приложение.</p>
23
<p>В результате таких многократно повторяющихся процедур ошибки наслаиваются, и QA- специалисту приходится дважды перепроверять одни и те же баги.</p>
23
<p>В результате таких многократно повторяющихся процедур ошибки наслаиваются, и QA- специалисту приходится дважды перепроверять одни и те же баги.</p>
24
<p>После того как ручное тестирование прошло удачно и решено переносить приложение на боевой сервер, системный администратор подготавливает новый или уже существующий сервер. Программист заливает туда приложение, и тут начинаются проблемы.</p>
24
<p>После того как ручное тестирование прошло удачно и решено переносить приложение на боевой сервер, системный администратор подготавливает новый или уже существующий сервер. Программист заливает туда приложение, и тут начинаются проблемы.</p>
25
<p>Версия языка программирования может отличаться от той, на которой велась разработка. Могут различаться версии базы данных. И даже сама система управления базами данных может быть другой. И это не говоря о том, что пути до файлов и каталогов в коде самого приложения различаются, так как приложение на боевом сервере находится совершенно в другом месте, нежели на машине разработчика.</p>
25
<p>Версия языка программирования может отличаться от той, на которой велась разработка. Могут различаться версии базы данных. И даже сама система управления базами данных может быть другой. И это не говоря о том, что пути до файлов и каталогов в коде самого приложения различаются, так как приложение на боевом сервере находится совершенно в другом месте, нежели на машине разработчика.</p>
26
<p>В итоге при использовании на продакшне другого веб-сервера приходится настраивать приложение заново. А это дополнительное время.</p>
26
<p>В итоге при использовании на продакшне другого веб-сервера приходится настраивать приложение заново. А это дополнительное время.</p>
27
<p>У нас в digital-агентстве "Атвинта" я настроил процессы таким образом, что сборка проекта, запуск автотестов и деплой на тестовый сервер происходят автоматически, а на продакшн - полуавтоматически. Если какой-либо из этапов завершился неудачно, разработчик получит оповещение.</p>
27
<p>У нас в digital-агентстве "Атвинта" я настроил процессы таким образом, что сборка проекта, запуск автотестов и деплой на тестовый сервер происходят автоматически, а на продакшн - полуавтоматически. Если какой-либо из этапов завершился неудачно, разработчик получит оповещение.</p>
28
<p>Эти технологии подходят при разработке веб-приложений, закрытых сервисов вроде корпоративных порталов и сервисов учета сделок для интернет-магазинов.</p>
28
<p>Эти технологии подходят при разработке веб-приложений, закрытых сервисов вроде корпоративных порталов и сервисов учета сделок для интернет-магазинов.</p>
29
<p>Для подготовки серверов используются инструменты наподобие<strong>Ansible</strong>. Они позволяют быстро настроить окружение, в котором приложение будет работать в автоматическом режиме. На это тратится несколько минут, а не несколько часов.</p>
29
<p>Для подготовки серверов используются инструменты наподобие<strong>Ansible</strong>. Они позволяют быстро настроить окружение, в котором приложение будет работать в автоматическом режиме. На это тратится несколько минут, а не несколько часов.</p>
30
<p>Для единообразия окружения используем инструмент<strong>Docker</strong>.</p>
30
<p>Для единообразия окружения используем инструмент<strong>Docker</strong>.</p>
31
<p>После того как разработчик сделал определенный функционал, он отправляет код в репозиторий. Там вступает в работу процесс, называемый<em>Continuous Integration/Continuous Delivery</em>- непрерывная интеграция и непрерывная доставка (далее CI/CD).</p>
31
<p>После того как разработчик сделал определенный функционал, он отправляет код в репозиторий. Там вступает в работу процесс, называемый<em>Continuous Integration/Continuous Delivery</em>- непрерывная интеграция и непрерывная доставка (далее CI/CD).</p>
32
<p>Если процесс сборки и автоматического тестирования прошел успешно, приложение разворачивается на тестовом сервере (staging server), где специалист по QA проводит ручное тестирование либо тестирование с применением инструментов вроде<strong>Selenium</strong>- для автоматизации действий веб-браузера в случае веб-приложения.</p>
32
<p>Если процесс сборки и автоматического тестирования прошел успешно, приложение разворачивается на тестовом сервере (staging server), где специалист по QA проводит ручное тестирование либо тестирование с применением инструментов вроде<strong>Selenium</strong>- для автоматизации действий веб-браузера в случае веб-приложения.</p>
33
<p>Даже если во время ручного тестирования возникли какие-либо ошибки, разработчик быстро вносит правки и выкатывает обновление. Даже если нужно повторять процедуру, это происходит быстро.</p>
33
<p>Даже если во время ручного тестирования возникли какие-либо ошибки, разработчик быстро вносит правки и выкатывает обновление. Даже если нужно повторять процедуру, это происходит быстро.</p>
34
<p>После успешного тестирования принимается решение о релизе, после чего достаточно нажать одну кнопку, чтобы выпустить новый релиз в продакшн.</p>
34
<p>После успешного тестирования принимается решение о релизе, после чего достаточно нажать одну кнопку, чтобы выпустить новый релиз в продакшн.</p>
35
<p>DevOps-инженер также проводит работы по так называемому незаметному деплою, когда конечные пользователи даже не подозревают о том, что вышла новая версия.</p>
35
<p>DevOps-инженер также проводит работы по так называемому незаметному деплою, когда конечные пользователи даже не подозревают о том, что вышла новая версия.</p>
36
<p>Разнообразие инструментов DevOps невероятно велико, так что я перечислю лишь некоторые из них, которые применяю в своей работе.</p>
36
<p>Разнообразие инструментов DevOps невероятно велико, так что я перечислю лишь некоторые из них, которые применяю в своей работе.</p>
37
<ul><li>Управление конфигурацией серверов:<strong>Ansible, Chef, Puppet</strong>.</li>
37
<ul><li>Управление конфигурацией серверов:<strong>Ansible, Chef, Puppet</strong>.</li>
38
<li>Для непрерывной интеграции и доставки (CI/CD):<strong>GitLab, Jenkins, TeamCity, Drone</strong>.</li>
38
<li>Для непрерывной интеграции и доставки (CI/CD):<strong>GitLab, Jenkins, TeamCity, Drone</strong>.</li>
39
<li>Сбор данных для мониторинга:<strong>Prometheus, Telegraf, LogStash</strong>.</li>
39
<li>Сбор данных для мониторинга:<strong>Prometheus, Telegraf, LogStash</strong>.</li>
40
<li>Для отображения собранных данных:<strong>Grafana, Kibana, Zabbix</strong>.</li>
40
<li>Для отображения собранных данных:<strong>Grafana, Kibana, Zabbix</strong>.</li>
41
<li>Мониторинг ошибок:<strong>Sentry, Rollbar</strong>.</li>
41
<li>Мониторинг ошибок:<strong>Sentry, Rollbar</strong>.</li>
42
</ul><p>Cистема управления конфигурациями, написанная на Python с использованием декларативного языка разметки (yaml) для описания конфигураций.</p>
42
</ul><p>Cистема управления конфигурациями, написанная на Python с использованием декларативного языка разметки (yaml) для описания конфигураций.</p>
43
<p>Была выбрана за низкий порог вхождения. Уже через пару часов можно написать рабочую конфигурацию.</p>
43
<p>Была выбрана за низкий порог вхождения. Уже через пару часов можно написать рабочую конфигурацию.</p>
44
<p>Cистема контроля версий со встроенной CI/CD.</p>
44
<p>Cистема контроля версий со встроенной CI/CD.</p>
45
<p>Выбрана, потому что можно развернуть на своем сервере и использовать бесплатно. Имеет большой функционал и интеграцию со множеством сторонних сервисов.</p>
45
<p>Выбрана, потому что можно развернуть на своем сервере и использовать бесплатно. Имеет большой функционал и интеграцию со множеством сторонних сервисов.</p>
46
<p>Для мониторинга нагрузки серверов используется довольно популярный стек:<strong>Grafana</strong>+<strong>InfluxDB</strong>+<strong>Telegraf</strong>.</p>
46
<p>Для мониторинга нагрузки серверов используется довольно популярный стек:<strong>Grafana</strong>+<strong>InfluxDB</strong>+<strong>Telegraf</strong>.</p>
47
<p>Это платформа с открытым исходным кодом для визуализации, мониторинга и анализа данных.</p>
47
<p>Это платформа с открытым исходным кодом для визуализации, мониторинга и анализа данных.</p>
48
<p><strong>InfluxDB</strong>- база данных для хранения собранной статистики.</p>
48
<p><strong>InfluxDB</strong>- база данных для хранения собранной статистики.</p>
49
<p><strong>Telegraf</strong> - агент, который устанавливается на сервер и пересылает метрики, а также логи в базу<strong>InfluxDB</strong>.</p>
49
<p><strong>Telegraf</strong> - агент, который устанавливается на сервер и пересылает метрики, а также логи в базу<strong>InfluxDB</strong>.</p>
50
<ul><li><strong>Разработчикам</strong>. Позволит сконцентрироваться на коде приложения и не задумываться об инфраструктуре, которая будет на продакшне.</li>
50
<ul><li><strong>Разработчикам</strong>. Позволит сконцентрироваться на коде приложения и не задумываться об инфраструктуре, которая будет на продакшне.</li>
51
<li><strong>Тестировщикам</strong>. Предоставит больше простора в тестировании приложения на разных конфигурациях систем и с разным набором библиотек.</li>
51
<li><strong>Тестировщикам</strong>. Предоставит больше простора в тестировании приложения на разных конфигурациях систем и с разным набором библиотек.</li>
52
<li><strong>Системным администраторам</strong>. Снимет с них работы по развертыванию и мониторингу приложения.</li>
52
<li><strong>Системным администраторам</strong>. Снимет с них работы по развертыванию и мониторингу приложения.</li>
53
<li><strong>Бизнесу в цифровой среде</strong>. Поможет быстрее адаптировать продукт под запросы рынка, выпускать новые версии и улучшать пользовательский опыт клиентов.</li>
53
<li><strong>Бизнесу в цифровой среде</strong>. Поможет быстрее адаптировать продукт под запросы рынка, выпускать новые версии и улучшать пользовательский опыт клиентов.</li>
54
</ul><p>Применение методологии DevOps поможет наладить бизнес-процессы и ускорить выход обновлений.</p>
54
</ul><p>Применение методологии DevOps поможет наладить бизнес-процессы и ускорить выход обновлений.</p>
55
<a><b>Бесплатный курс по Python ➞</b>Мини-курс для новичков и для опытных кодеров. 4 крутых проекта в портфолио, живое общение со спикером. Кликните и узнайте, чему можно научиться на курсе. Смотреть программу</a>
55
<a><b>Бесплатный курс по Python ➞</b>Мини-курс для новичков и для опытных кодеров. 4 крутых проекта в портфолио, живое общение со спикером. Кликните и узнайте, чему можно научиться на курсе. Смотреть программу</a>