Linux и инструменты devops что это

Содержание

Что такое методология DevOps и кому она нужна

Разбираемся, в чём суть методологии и кому она может принести пользу.

Также поговорим о DevOps-специалистах: их задачах, зарплатах и навыках.


Фото Matt Moor / Flickr / CC BY-SA

Что такое DevOps

DevOps — это методология разработки ПО, задача которой наладить взаимодействие программистов и сисадминов в компании. Если ИТ-специалисты из разных отделов недопонимают суть задач друг друга, выпуск новых приложений и обновлений для них затягивается.

DevOps формирует «бесшовный» цикл разработки, тем самым помогая ускорить выпуск программного продукта. Ускорение достигается за счет внедрения систем автоматизации. Плюс программисты начинают участвовать в настройке серверов и поиске багов, например, они могут писать автоматизированные тесты.

Таким образом налаживается взаимодействие между отделами. Сотрудники начинают лучше понимать, какие этапы проходит программный продукт перед тем, как попасть в руки пользователя.

Когда разработчик понимает, с чем сталкивается администратор при настройке сервера, он постарается сгладить возможные «острые углы» в коде. Это сокращает количество багов при развертке приложения — по статистике оно уменьшается примерно в пять раз.

Кому нужна и не нужна методология

Многие ИТ-эксперты считают, что DevOps принесет пользу любой организации, которая занимается разработкой ПО. Это справедливо даже в том случае, если компания является простым потребители ИТ-сервисов и не разрабатывает собственные приложения. В этом случае внедрение DevOps-культуры поможет сконцентрироваться на инновациях.

Исключение составляют стартапы, но и здесь все зависит от масштабов проекта. Если ваша цель — запустить минимально жизнеспособный продукт (minimum viable product, MVP), чтобы протестировать новую идею, то можно обойтись и без DevOps. Например, основатель Groupon в начале работы над сервисом сам вручную размещал все предложения на сайте и собирал заказы. Никаких инструментов автоматизации он не использовал.

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

Как внедрить DevOps

Далее — несколько рекомендаций для перехода на новую методологию.

Выявите проблемы в бизнес-процессах. Перед внедрением методологии выделите цели и проблемы организации. От них будет зависеть стратегия перехода на DevOps. Для этого составьте список вопросов, например:

Поменяйте культуру в компании. Важно убедить всех сотрудников изменить привычные способы работы и расширить свой спектр компетенций. Например, в Facebook все программисты отвечают за жизненный цикл приложения целиком: от написания кода до внедрения. Также в Facebook нет отдельного отдела тестирования — тесты пишут сами разработчики.

Начните с малого. Выберите процесс, который отнимает больше всего времени и сил при выпуске обновлений, и автоматизируйте его. Это может быть тестирование или процесс развертывания приложений. Эксперты советуют первым делом внедрить инструменты распределенного контроля версий. С ними проще управлять исходниками. Среди таких решений наиболее известны Git, Mercurial, Subversion (SVN) и CVS.

Также стоит обратить внимание на системы непрерывной интеграции, ответственные за сборку и тестирование конечного продукта. Примеры таких инструментов: Jenkins, TeamCity и Bamboo.

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

Критика DevOps

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

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

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


Фото Ed Ivanushkin / Flickr / CC BY-SA

Кто такой DevOps-инженер

DevOps-инженер занимается внедрением методологии DevOps. Он синхронизирует все этапы создания программного продукта: от написания кода до тестирования и выпуска приложения. Такой специалист контролирует отделы разработки и администрирования плюс автоматизирует выполнение их задач, внедряя различные программные инструменты.

Фишка DevOps-инженера в том, что он совмещает множество профессий: админа, разработчика, тестировщика и менеджера.

Джо Санчес, DevOps-евангелист из VMware, компании-разработчика программного обеспечения для виртуализации, выделил ряд навыков, которыми обязан обладать DevOps-инженер. Помимо очевидного знания методологии DevOps, этот человек должен иметь опыт администрирования ОС Windows и Linux и опыт работы с инструментами автоматизации вроде Chef, Puppet, Ansible. Еще он должен уметь писать скрипты и код на паре-тройке языков и разбираться в сетевых технологиях.

DevOps-инженер отвечает за любую автоматизацию задач, связанных с настройкой и развертыванием приложений. На его плечи ложится и мониторинг программного обеспечения. Для решения этих задач он применяет различные системы управления конфигурациями, решения виртуализации и облачные инструменты для балансировки ресурсов.

Кто нанимает

DevOps-инженеры могут принести пользу любой организации, чья деятельность связана с разработкой приложений или управлением большим количеством серверов. DevOps-инженеров нанимают ИТ-гиганты вроде Amazon, Adobe и Facebook. Еще они работают на Netflix, Walmart и Etsy.

Не нанимают DevOps-инженеров только стартапы. Их задача — выпустить минимально жизнеспособный продукт, чтобы проверить новую идею. В большинстве случаев стартапы могут обойтись без DevOps.

Сколько платят

DevOps-инженеры зарабатывают больше всех в отрасли. Средний заработок таких специалистов по миру составляет от 100 до 125 тыс. долларов в год.

В США они получают 90 тыс. долларов в год (500 тыс. рублей в месяц). В Канаде им платят 122 тыс. долларов в год (670 тыс. рублей в месяц), а в UK — 67,5 тыс. фунтов стерлингов в год (490 тыс. рублей в месяц).

Что касается России, то московские компании готовы платить DevOps-специалистам от 100 до 200 тыс. рублей в месяц. В Санкт-Петербурге работодатели чуть щедрее — предлагают 160–360 тыс. рублей в месяц. В регионах указывают зарплату 100–120 тыс. рублей в месяц.

Как стать специалистом по DevOps

DevOps — это относительно новое направление в IT, поэтому устоявшегося перечня требований к DevOps-инженерам нет. В вакансиях среди требований на эту должность можно встретить как навыки администрирования Debian и CentOS, так и умение работать с дисковыми RAID-массивами.

На основании этого можно сделать вывод, что прежде всего DevOps-инженер должен иметь хороший технический кругозор. Такому человеку важно постоянно изучать новые инструменты и технологии.

Проще всего стать DevOps-инженером будет сисадмину или разработчику. У них уже есть ряд навыков, которые нужно просто развить. Главная задача — подтянуть минимальный набор знаний по DevOps, понять, как работать с инструментами автоматизации и заполнить пробелы в навыках администрирования, программирования и виртуализации.

Чтобы понять, где знаний пока не хватает, можно воспользоваться мини-википедией на GitHub или ментальной картой. Резиденты Hacker News также рекомендуют почитать книги «Проект „Феникс“» и «Руководство по DevOps» (которые мы упоминали выше) и «Философия DevOps. Искусство управления IT» под грифом O’Reilly Media.

Еще можно подписаться на рассылку Devops Weekly, почитать статьи тематического портала DZone и начать общаться с DevOps-инженерами в Slack-чате. Еще стоит изучить бесплатные курсы на Udacity или edX.

Источник

Гайд по DevOps для начинающих

В чем важность DevOps, что он означает для ИТ-специалистов, описание методов, фреймворков и инструментов.

Многое произошло с тех пор, как термин DevOps закрепился в IT-мире. С учетом того, что большая часть экосистемы имеет открытый исходный код, важно пересмотреть, почему это началось и что это значит для карьеры в IT.

Что такое DevOps

Хотя нет единого определения, я считаю, что DevOps — это технологическая структура, которая обеспечивает взаимодействие между командами разработчиков и операционными командами для более быстрого развертывания кода в производственных средах с возможностью повторения действий и автоматизации. Остаток статьи мы потратим на распаковку этого утверждения.

Слово «DevOps» является объединением слов «разработка» (development) и «операции» (operations). DevOps помогает увеличить скорость доставки приложений и услуг. Это позволяет организациям эффективно обслуживать своих клиентов и становиться более конкурентоспособными на рынке. Проще говоря, DevOps — это согласованность между разработкой и ИТ-операциями с более эффективным взаимодействием и сотрудничеством.

DevOps предполагает такую культуру, при которой сотрудничество между командами разработчиков, операторами и бизнес-командами считается критически важным аспектом. Речь идет не только об инструментах, поскольку DevOps в организации постоянно приносит пользу и клиентам. Инструменты являются одним из его столпов, наряду с людьми и процессами. DevOps увеличивает возможности организаций по предоставлению высококачественных решений в кратчайшие сроки. Также DevOps автоматизирует все процессы, от сборки до развертывания, приложения или продукта.

Дискуссия о DevOps сосредоточена на взаимоотношениях между разработчиками, людьми, которые пишут программное обеспечение для жизни, и операторами, ответственными за поддержку этого программного обеспечения.

Вызовы для команды разработчиков

Разработчики, как правило, с энтузиазмом и желанием внедряют новые подходы и технологии для решения проблем организаций. Однако они также сталкиваются с определенными проблемами:

Проблемы, с которыми сталкивается операционная группа

Операционные группы исторически ориентированы на стабильность и надежность ИТ-сервисов. Именно поэтому операционные команды занимаются поиском стабильности с помощью внесения изменений в ресурсы, технологии или подходы. К их задачам относятся:

Как DevOps решает проблемы разработки и операций

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

DevOps пытается решить различные проблемы, возникающие в результате применения методологий прошлого, в том числе:

Противостояние DevOps, Agile и традиционного IT

DevOps часто обсуждается в связи с другими ИТ-практиками, в частности, гибкой и водопадной ИТ-инфраструктурой.

Agile — это набор принципов, ценностей и методов производства программного обеспечения. Так, например, если у вас есть идея, которую вы хотите преобразовать в программное обеспечение, вы можете использовать принципы и ценности Agile. Но это программное обеспечение может работать только в среде разработки или тестирования. Вам нужен простой и безопасный способ быстро и с высокой повторяемостью переносить программное обеспечение в производственную среду, а путь лежит через инструменты и методы DevOps. Гибкая методология разработки программного обеспечения сосредоточена на процессах разработки, а DevOps отвечает за разработку и развертывание — самым безопасным и надежным способом.

Сравнение традиционной водопадной модели с DevOps – хороший способом понять преимущества, которые дает DevOps. В следующем примере предполагается, что приложение будет запущено через четыре недели, разработка завершена на 85%, приложение будет запущено, и процесс закупки серверов для отправки кода только что был начат.

Традиционные процессы Процессы в DevOps
После размещения заказа на новые серверы команда разработчиков работает над тестированием. Оперативная группа работает над обширной документацией, необходимой на предприятиях для развертывания инфраструктуры. После размещения заказа на новые серверы, команды разработчиков и операторов совместно работают над процессами и документооборотом для установки новых серверов. Это позволяет лучше понять требования к инфраструктуре.
Искажена информация о восстановлении после отказа, избыточности, расположении центров обработки данных и требованиях к хранилищам, так как отсутствуют входные данные от команды разработчиков, которая обладает глубокими знаниями в области применения. Подробная информация о преодолении отказа, избыточности, аварийном восстановлении, расположении центров данных и требованиях к хранилищам известна и корректна благодаря вкладу команды разработчиков.
Оперативная группа не имеет представления о прогрессе команды разработчиков. Также она разрабатывает план мониторинга на основе собственных представлений. Оперативная группа полностью осведомлена о прогрессе, достигнутом командой разработчиков. Она также взаимодействует с командой разработчиков, и они совместно разрабатывают план мониторинга, который удовлетворяет IT и потребности бизнеса. Они также используют инструменты мониторинга производительности приложений (APM).
Нагрузочный тест, проводимый перед запуском приложения, приводит к сбою приложения, что задерживает его запуск. Нагрузочный тест, проводимый перед запуском приложения, приводит к снижению производительности. Команда разработчиков быстро устраняет узкие места, и приложение запускается вовремя.

Жизненный цикл DevOps

DevOps подразумевает принятие определенных общепринятых практик.

Непрерывное планирование

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

Совместное развитие

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

Непрерывное тестирование

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

Непрерывные выпуск и развертывание

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

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

Непрерывный мониторинг

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

Постоянная обратная связь и оптимизация

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

Преимущества DevOps

DevOps может способствовать созданию среды, в которой разработчики и операторы работают как одна команда для достижения общих целей. Важной вехой в этом процессе является внедрение непрерывной интеграции и непрерывной доставки (CI/CD). Эти методики позволят командам быстрее выводить программное обеспечение на рынок с меньшим количеством ошибок.

Важными преимуществами DevOps являются:

Принципы DevOps

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

Разрабатывайте и тестируйте в среде, похожей на производственную

Суть заключается в том, чтобы позволить командам разработчиков и специалистов по контролю качества (QA) разрабатывать и тестировать системы, которые ведут себя как производственные системы, чтобы они могли видеть, как приложение ведет себя и работает задолго до того, как оно будет готово к развертыванию.

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

Развертывание с воспроизводимыми, надежными процессами

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

Мониторинг и проверка качества работы

Организации хороши в мониторинге приложений на производстве, потому что у них есть инструменты, которые фиксируют показатели и ключевые показатели эффективности (KPI) в режиме реального времени. Этот принцип переносит мониторинг на ранние стадии жизненного цикла, гарантируя, что автоматизированное тестирование отслеживает функциональные и нефункциональные атрибуты приложения на ранних стадиях процесса. Всякий раз, когда приложение тестируется и развертывается, качественные показатели должны быть изучены и проанализированы. Инструменты мониторинга обеспечивают раннее оповещение о проблемах, связанных с эксплуатацией и качеством, которые могут возникнуть в процессе производства. Эти показатели должны быть собраны в формате, доступном и понятном всем заинтересованным сторонам.

Усовершенствование циклов обратной связи

Одна из целей процессов DevOps заключается в том, чтобы дать возможность организациям быстрее реагировать и вносить изменения. При поставке программного обеспечения эта цель требует, чтобы организация получала обратную связь на ранней стадии, а затем быстро училась на каждом предпринятом действии. Этот принцип требует от организаций создавать каналы коммуникации, которые позволяют заинтересованным сторонам получать доступ и взаимодействовать по принципу обратной связи. Разработка может осуществляться путем корректировки своих проектных планов или приоритетов. Производство может действовать путем улучшения производственной среды.

В заключение

DevOps — это все более популярная методология, целью которой является объединение разработчиков и операторов в единое целое. Она уникальна, отличается от традиционных IT-операций и дополняет Agile (но не является столь же гибкой).

Узнайте подробности, как получить востребованную профессию с нуля или Level Up по навыкам и зарплате, пройдя платные онлайн-курсы SkillFactory:

Источник

DevOps-инструменты, которые должен изучить каждый в 2020 году

Начни применять лучшие DevOps-инструменты уже сегодня!

DevOps-революция наконец захватила мир, и DevOps-инструменты стали невероятно популярны. По данным сервиса Google Trends, количество запросов «DevOps tools» постоянно растет, и эта тенденция сохраняется.

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

Разобьем DevOps-инструменты на категории и сравним с аналогами:

Инструменты разработки и сборки

Это основа стека CI/CD-пайплайна. Всё начинается именно здесь! Лучшие инструменты в этой категории могут управлять несколькими потоками событий и легко интегрироваться с другими продуктами.

На этом этапе жизненного цикла разработки выделяют три группы инструментов:

Инструмент SCM + CI №1

Победитель: GitLab и GitLab-CI

Лучший инструмент цикла DevOps 2020 г., вне всякого сомнения, GitLab, и он точно останется лидером инноваций в ближайшем будущем.

Основная функция GitLab — обеспечивать комфортное управление Git-репозиторием. Веб-интерфейс интуитивно понятен и удобен в использовании. GitLab предоставляет всё, что нужно, в бесплатной версии и поставляется как SaaS и on-prem (использование собственных ресурсов для размещения программного обеспечения).

Участвовали в схватке, но не победили

В этой категории есть и другие популярные инструменты, однако они не так хороши, как GitLab. И вот почему:

Jenkins — Хотя Jenkins по умолчанию считается стандартом среди инструментов непрерывной интеграции, ему всегда недоставало возможности управления версиями. Получается, что вы используете Jenkins плюс какой-то SCM-инструмент. Слишком сложно, когда GitLab умеет и то и другое. Посредственный UX-дизайн не годится для современного веб-приложения и оставляет желать лучшего.

BitBucket / Bamboo — Должен признать его автоматически проигравшим: зачем два инструмента, когда GitLab выполняет всё полностью самостоятельно. BitBucket Cloud поддерживает функционал GitLab-CI / GitHub Action, но ни одна компания более крупная, чем стартап, не сумеет легко его внедрить. Сервер BitBucket версии on-prem даже не поддерживает BitBucket-пайплайны!

Инструмент управления данными №1

В разработке веб-приложений именно автоматизации баз данных обычно не придают значения. Идея развернуть изменения схемы БД для новых версий приложения приходит с запозданием. Изменения схемы часто приводят к добавлению и переименованию столбцов или таблиц. Если версия приложения не соответствует версии схемы — приложение может выйти из строя. Кроме того, организовать изменение базы данных при обновлении приложения может быть непростой задачей, так как существуют две разные системы. FlyWayDB решает все эти проблемы.

Участвовали в схватке, но не победили

В этой области не так много инструментов. Давайте рассмотрим некоторые из них:

LiquiBase — Liquibase напоминает FlywayDB. Я бы хотел настроить его поверх Flyway, если бы в моей команде был специалист с бóльшим опытом работы с Liquibase.

Flocker — Может работать только для контейнерных приложений. Для успешного запуска баз данных в контейнерах все должно быть идеально спланировано. Я рекомендую использовать RDS (Relational Database Service) для баз данных и не советую хранить важную информацию в контейнере.

Инструменты для автоматизации тестирования

Начнем обсуждение инструментов для автоматизации тестирования с их классификации на основе пирамиды тестирования.

Пирамида тестирования (тестов) имеет 4 уровня:

Инструмент для интеграционного тестирования №1

Cucumber объединяет спецификации и тестовую документацию в единый живой документ. Спецификации всегда актуальны, так как они автоматически тестируются Cucumber. Если вы хотите собрать фреймворк для автоматизированного тестирования с нуля и моделировать поведение пользователя в веб-приложении, то Selenium WebDriver с Java и Cucumber BDD — отличный способ изучить и внедрить Cucumber в проекте.

Участвовали в схватке, но не победили

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

Инструменты сквозного тестирования

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

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

Отсутствие этих 2 видов тестирования будет существенным недостатком в вашем CI/CD-пайплайне.

Инструмент сквозного тестирования №1. Функциональное тестирование

Победитель: SoapUI Pro

SoapUI долгое время находился в области тестирования API, поскольку веб-сервисы на основе SOAP были стандартом. Хотя мы больше не создаем новые SOAP-сервисы, и название инструмента не изменилось, это не значит, что он не развивался. SoapUI предоставляет отличную основу для создания автоматизированных функциональных бэкенд-тестов. Тесты можно легко объединить с инструментами непрерывной интеграции и использовать как часть CI/CD-пайплайна.

Участвовали в схватке, но не победили

Selenium — еще один замечательный инструмент в этой группе. Я рекомендую использовать его, если вы создаете и запускаете приложение на основе Java. Однако, если вы создаете полноценное веб-приложение с несколькими технологиями, оно может стать громоздким для не-Java компонентов.

Инструмент сквозного тестирования №1. Нагрузочное тестирование

Пояснение: Когда приходит время для нагрузочного тестирования каждого элемента приложения, только LoadRunner может выполнить эту задачу. Да, дороговато и первое время сложно, но LoadRunner — единственный инструмент, который дает мне как техническому архитектору полную уверенность, что новый код будет работать в условиях экстремальной нагрузки. Кроме того, я думаю, что LoadRunner пора передать в ответственность команды разработки, а не команды тестирования.

Участвовали в схватке, но не победили

Опять же, в этой области не так много универсальных инструментов, поэтому лучшее решение — то, которое будет работать в любой среде с любой технологией.

Инструменты для деплоя

Инструменты для деплоя, вероятно, наименее понятный аспект разработки. Для команды сопровождения (operation team) без глубокого понимания кода и функционала приложения сложно использовать подобные инструменты. Для разработчиков управление деплоем — новая обязанность, поэтому у них еще недостаточно опыта в работе с подобными инструментами.

Прежде всего, разделим все инструменты развертывания на три подкатегории:

Инструмент управления артефактами №1

Репозиторий артефактов Nexus поддерживает практически все основные технологии: от Java до NPM и Docker. Мы можем использовать этот инструмент для хранения всех используемых артефактов. Проксирование удаленных менеджеров пакетов также значительно ускоряет процесс сборок CI, делая пакеты доступнее для сборки. Другое преимущество — возможность получить полное представление обо всех пакетах, используемых в нескольких программных проектах, блокируя небезопасные open source пакеты (они могут выступать вектором атаки).

Инструмент управления конфигурациями №1

Ansible является лидером по одной простой причине: отсутствие состояния (stateless). Ранее подобные инструменты были сосредоточены на управлении состоянием конфигурации. При запуске, такой инструмент, получив желаемую конфигурацию, будет пытаться исправить текущую конфигурацию приложения. А при новом подходе присутствуют только компоненты с отсутствием состояния. Новые версии кода являются артефактами, которые разворачивают для замены существующих. Это можно считать неким эфемерным, краткосрочным окружением.

Участвовали в схватке, но не победили

OpsCode Chef — Я начинал карьеру в DevOps как разработчик cookbook. Ruby и Chef, конечно, очень дороги моему сердцу, но они просто не решают проблемы современных stateless, облачных приложений. OpsCode Chef — отличный инструмент для более традиционных приложений, а в этой статье мы сосредоточены на будущем.

Puppet — Puppet никогда не имел много поклонников, особенно в сравнении с Chef и Ansible. Он отлично подходит для провизионирования и работы с «железом», но современная поддержка управления конфигурациями для веб-приложения в нем отсутствует.

Инструмент для деплоя №1

Terraform решает проблему описания вашей инфраструктуры как кода: начиная с сетевых компонентов и заканчивая полноценными образами сервера. Этот продукт прошел долгий путь с момента первого выпуска: создано огромное количество плагинов и выработано такое сильное сообщество, что вам точно помогут при любом сценарии развертывания. Способность поддерживать любой тип окружения (локально, в облаке или где-то еще) не имеет равных. Наконец, последняя версия предоставляет большую часть тех же логических функций и классов в HCL, что и любой другой традиционный язык программирования, — разработчики быстро схватывают суть и с легкостью могут освоить Terraform.

Участвовали в схватке, но не победили

AWS CloudFormation — Даже если вы работаете только в облачной среде AWS, на следующем месте работы может применяться другой инструмент. Посвятить всё время и силы только одной платформе — недальновидное решение. Кроме того, многие новые сервисы AWS часто доступны в виде модулей Terraform прежде, чем они станут доступны в CloudFormation.

Runtime-инструменты

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

Инструмент X-как-сервис №1

Победитель: Amazon Web Services

Amazon всегда был лидером в облачных технологиях, но он не останавливается на этом: от разнообразия новых сервисов для разработчиков разбегаются глаза. Перенесите любую технологию и шаблон в AWS, и они будут собраны и запущены. Стоимость инструмента вполне обоснована: сравните ее со сборкой, управлением и обслуживанием оборудования в собственном дата-центре. Бесплатная версия позволяет экспериментировать и принять правильное решение до траты денег.

Участвовали в схватке, но не победили

Heroku — Я бы никогда не запустил ничего кроме личного проекта на Heroku из-за низкого уровня надежности и прозрачности, поэтому компаниям не стоит использовать его в качестве платформы. Heroku отлично подходит для демонстрации чего-то в блоге, но для практического применения — “Нет, спасибо!”.

Инструмент оркестрации № 1

Вы, вероятно, используете Docker или другие контейнеры в вашем стеке приложений. Бессерверные приложения хороши, но они не могут подходить любой архитектуре. Запуск контейнеров без платформы оркестрации просто не сработает. Ядро Kubernetes (K8s) не имеет соперников с точки зрения безопасности и инструментария. OpenShift — единственная платформа на основе Kubernetes, которая умеет собирать Source2Image, поддерживает автоматизацию развертывания в поды, а также отслеживание и мониторинг. OpenShift может быть запущен on-prem, в облаке или on-prem и в облаке одновременно.

Участвовали в схватке, но не победили

Docker Swarm — Docker Swarm попытался упростить K8s, избавившись от многих вещей. Он отлично подходит для небольших приложений, но для корпоративных приложений просто не работает. Кроме того, такие решения, как AWS ECS, используют аналогичный подход, но облегчают работу с другими сервисами, с которыми я также могу взаимодействовать (Lambda, IAM и др.).

Инструмент мониторинга №1

Победитель: New Reliс

Ранние релизы New Relic хорошо справлялись с одной задачей — мониторинг APM (Application Performance Monitoring). Сейчас это полнофункциональный инструмент мониторинга, позволяющий контролировать производительность сервера, контейнера, базы данных, мониторинг опыта конечного пользователя и, конечно, мониторинг производительности приложений.

Участвовали в схватке, но не победили

Zabbix — Моя первая и любимая система мониторинга, но она осталась в прошлом из-за отсутствия развития в облачных технологиях и в области мониторинга производительности приложений APM. Zabbix по-прежнему хорошо выполняет традиционный мониторинг серверной инфраструктуры, однако на этом всё.

DataDog — Слишком сильно ориентирован на процесс управления продакшн-окружением приложения, а не на сам код. С DevOps-командами, в которых участвуют разработчики, нам не нужно полагаться на сложные в использовании инструменты для обеспечения первоклассной поддержки.

Инструмент логирования №1

С Splunk сложно соперничать! Долгое время он остается лидером в логировании, продолжая делать это лучше всех. С предложениями on-prem и SaaS вы можете использовать Splunk, где угодно. Существенный недостаток — его цена: Splunk по-прежнему чертовски дорогой!

Участвовали в схватке, но не победили

ELK Stack (ElasticSearch, LogStash и Kibana) — Эти инструменты кажутся фаворитами, ведь вам даже не нужно продавать печень за их использование. Однако с ростом набора логов и с увеличением количества приложений на борту работа становится всё сложнее. По сравнению с Splunk, с ELK Stack я потратил гораздо больше времени на настройку инструментария перед созданием каких-либо дашбордов, чем когда-либо.

Инструменты для совместной работы

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

Подкатегории инструментов для совместной работы:

Инструмент отслеживания проблем №1

Jira удерживает лидирующие позиции, хотя конкуренция в этой области возрастает. Невероятная гибкость Jira позволяет командам разработки и сопровождения управлять проектной работой и задачами спринта. Встроенные стандарты, использующие Agile-терминологию, упрощают переход от традиционных методов работы к более эффективным процессам.

Участвовали в схватке, но не победили

Trello — Trello быстро завоевал популярность благодаря бесплатному инструменту Kanban. Однако, как только процессы масштабируются и вы переходите от десятков задач к тысячам, в Trello трудно ориентироваться, искать и составлять отчеты.

Pivotal Tracker — Я был большим фанатом этого инструмента, когда работал на стартап. Однако Pivotal Tracker больше ориентирован на управление продуктом, а не на технические задачи. Хотя управление продуктом в Jira немного сложнее, но его всё же можно реализовать там, не используя дополнительный инструмент.

ChatOps-инструмент №1

Пояснение: Возможно, самый большой сюрприз для вас в моей подборке, и это хорошая новость! MatterMost приобрел популярность, взяв лучшее от предыдущих инструментов, но включил их в on-prem. Для компаний это очень важно: MatterMost позволяет контролировать данные, а также помогает интегрировать их с инструментами, работающими локально. Нам больше не нужно выходить за пределы файрвола, чтобы проверить рабочие чаты.

Участвовали в схватке, но не победили

Slack — Slack крутой, но эти ребята настолько выросли, что начали искать прибыль. Приближается этап окупаемости бизнеса, который забирает их главную ценность: Slack предоставлял услуги бесплатно; наиболее важный недостаток бесплатной версии — удаление истории чата.

Microsoft Teams — Попробуйте интегрировать продукт Microsoft с чем-то, не принадлежащим Microsoft… Желаю удачи! Это всё, что я хочу сказать об этом инструменте!

Инструмент документации №1

Создание и сохранение качественной технической документации — сложный процесс независимо от используемого вами инструмента. Хотя за последнее время на рынке появилось множество инструментов документации SaaS, однако мне было бы трудно передавать хранение технической документации о критически важных приложениях третьим лицам. Хранить данные и документы предпочтительнее on-prem, и вот как это решает Confluence.

Участвовали в схватке, но не победили

Read the docs — Круто для open source, но даже не думайте о хранении критических знаний здесь.

MarkDown — Отлично подходит для документирования кода, но здесь трудно размещать архитектуру, процессы или другие виды документации из-за специфичного форматирования MarkDown.

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

Подведем итоги

На рынке буквально сотни инструментов DevOps, поэтому трудно сориентироваться, какие из них следует использовать и в какой момент они должны быть внедрены. Следуйте этому простому руководству по выбору инструментов DevOps для полного CI/CD-пайплайна.

Не забудьте выбрать инструменты из всех пяти категорий:

Источник

Операционные системы и программное обеспечение