HTML Diff
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>