|
|
@@ -1,39 +1,44 @@
|
|
|
-**Что такое DevOps?**
|
|
|
+# Что такое DevOps
|
|
|
+В любом процессе разработки участвует три команды:
|
|
|
+- **Dev** — программисты, которые непосредственно пишут код;
|
|
|
+- **QA/QC** — тестировщики, которые выявляют ошибки в коде, вручную или автоматически;
|
|
|
+- **Ops** — инженеры, которые поддерживают инфраструктуру для написания кода, например сервера, а также берут уже рабочий код и запускают на реальные сервера, чтобы клиент получил доступ к сайту, сервису или приложению.
|
|
|
|
|
|
-DevOps — это подход к разработке программного обеспечения, объединяющий разработку («Development») и эксплуатацию («Operations»). Основная цель DevOps заключается в обеспечении быстрого выпуска качественного ПО путём тесного взаимодействия команд разработчиков и инженеров эксплуатации.
|
|
|
+При классическом подходе к разработке все эти команды работают независимо друг от друга. У каждой своя зона ответственности, а код от других команд они получают не в потоке, а порциями. Из-за этого возникают задержки и недопонимание: тестировщики тестируют неактуальную сборку кода, сисадмины сидят без работы, пока код не будет готов, разработчики не задумываются о результате.
|
|
|
|
|
|
-
|
|
|
+Чтобы избавиться от этих задержек и недопонимания, была придумана методология DevOps — особый подход к организации команд разработки. Он позволяет выстроить конвейер, на котором разработчики, тестировщики и сисадмины работают в едином потоке и вместе отвечают за результат — код, выпущенный в релиз для пользователей.
|
|
|
|
|
|
-**Основные принципы DevOps:**
|
|
|
+
|
|
|
|
|
|
-*Непрерывная интеграция (CI)* — регулярное объединение изменений в коде для предотвращения конфликтов и раннего выявления проблем;
|
|
|
+Методология DevOps — это комбинация из двух факторов:
|
|
|
+- Особой философии, принципов работы DevOps: налаженного общения между командами, совместных KPI, общей ответственности за результат;
|
|
|
+- Набора инструментов, который позволяет создать этот самый конвейер: автоматических систем тестирования, инфраструктуры для написания и развёртывания кода, программ для передачи кода между разными командами.
|
|
|
|
|
|
-*Непрерывная доставка (CD)* — автоматизированное развертывание новых версий приложения в тестовую среду и далее в продакшн;
|
|
|
+Чтобы всё это работало, нужен специальный человек — DevOps-инженер. Именно он налаживает коммуникацию, разрабатывает и настраивает инструменты для совместной работы, служит проводником между всеми командами.
|
|
|
|
|
|
-*Инфраструктура как код (IaC)* — управление инфраструктурой посредством декларативных конфигураций, хранящихся в версионных системах контроля;
|
|
|
|
|
|
-*Мониторинг и обратная связь* — постоянный мониторинг производительности приложений и инфраструктуры для своевременного обнаружения и устранения неисправностей;
|
|
|
+# Критика и недостатки DevOps
|
|
|
+Сейчас DevOps становится новым стандартом, но этот подход не лишён некоторых недостатков.
|
|
|
|
|
|
-*Коллаборация и культура доверия* — взаимодействие всех участников процесса разработки и эксплуатации, минимизация барьеров между ними.
|
|
|
+**Дороговизна для небольших компаний.** Некоторые DevOps-инструменты стоят недёшево: нужно покупать лицензию для использования, закупать сервера для развёртывания, поддерживать инфраструктуру. Кроме того, для работы может понадобиться нанять DevOps-специалиста, зарплата которого обычно начинается от 150 000 ₽ и может доходить до 400 000 ₽. Небольшим компаниям такое не по карману. При этом требования к скорости релиза у них обычно не такие высокие, а барьеры между командами меньше, поэтому они могут эффективно работать и без DevOps-подхода, а свободные деньги лучше потратить на развитие и наём более квалифицированных разработчиков.
|
|
|
|
|
|
-**Преимущества внедрения DevOps:**
|
|
|
+**Неправильное понимание принципов DevOps.** DevOps появился недавно, и его принципы ещё не устоялись. Из-за этого иногда возникает недопонимание:
|
|
|
|
|
|
-- Ускорение цикла доставки продукта;
|
|
|
-- Повышение качества выпускаемого ПО;
|
|
|
-- Сокращение числа сбоев и увеличение стабильности сервисов;
|
|
|
-- Улучшенная прозрачность и контроль над изменениями;
|
|
|
-- Увеличение удовлетворенности клиентов и повышение конкурентоспособности компаний.
|
|
|
+- Программистам кажется, что их заставляют решать задачи сисадминов;
|
|
|
+- Менеджеры пытаются настроить непрерывный конвейер без инструментов автоматизации;
|
|
|
+- В компанию нанимают DevOps-инженера в надежде, что он будет и сисадмином, и разработчиком, и тестировщиком;
|
|
|
+- В компанию нанимают обычного сисадмина и поручают ему «внедрять DevOps».
|
|
|
|
|
|
-**Ключевые технологии и инструменты DevOps:**
|
|
|
+Из-за таких ошибок может показаться, что DevOps вообще не работает. Но тут проблема не в DevOps, а в неправильном подходе к его внедрению.
|
|
|
|
|
|
-- GitLab/GitHub — системы управления версиями кода;
|
|
|
-- Docker/Kubernetes — контейнеризация и оркестровка контейнеров;
|
|
|
-- Jenkins/Bamboo/CircleCI — CI/CD серверы;
|
|
|
-- Terraform/Ansible — средства автоматизации IaC;
|
|
|
-- Prometheus/Grafana — инструменты мониторинга и визуализации метрик.
|
|
|
|
|
|
-**Примеры успешного внедрения DevOps:**
|
|
|
+# Кто и где использует DevOps
|
|
|
+На современном рынке DevOps-подход обычно используют три группы компаний.
|
|
|
|
|
|
-Крупнейшие технологические компании, такие как Amazon, Netflix, Spotify активно внедряют практики DevOps. Например, компания Netflix смогла перейти от физического хостинга к облаку всего за пару лет именно благодаря культуре DevOps.
|
|
|
+**IT-агентства.** Это компании, которые что-то разрабатывают на заказ для других компаний. Для них разработка — главный продукт, поэтому они часто первыми внедряют разные инновации. И DevOps позволяет быстрее выпускать продукт за меньшие деньги, что важно для их клиентов.
|
|
|
|
|
|
-Подход DevOps становится стандартом современной индустрии разработки программного обеспечения. Благодаря автоматизации процессов и культурному сдвигу, компании способны быстрее реагировать на изменения рынка, улучшать продуктивность и повышать уровень удовлетворённости пользователей своими сервисами.
|
|
|
+**IT-компании.** Те, кто зарабатывает именно на программах и сайтах, вроде Яндекса. Без DevOps они не смогут быстро выпускать свой главный продукт и выживать среди конкурентов.
|
|
|
+
|
|
|
+**Крупные компании с IT-отделами.** Обычно это фирмы, которые занимаются чем-то другим: крупные супермаркеты, застройщики, заводы. У них есть основная деятельность, но её нужно поддерживать: разрабатывать сайт, делать сервисы для внутренней аналитики, создавать мобильные приложения. Поэтому нужен IT-отдел, а в нём необходим DevOps.
|
|
|
+
|
|
|
+Без DevOps сейчас обходятся только небольшие фирмы, у которых настолько маленькая команда, что процессы сами идут достаточно быстро. Но даже они внедряют в процессы элементы DevOps: автоматизацию, системы контроля версий и конвейеры. Так что в скором времени DevOps-специалисты, скорее всего, будут в каждой компании, связанной с IT.
|