DEVOPS — это процесс развертывания, который помогает автоматизировать много процессов, которые использовались, чтобы взять командный часы до нескольких дней, чтобы пройти. Когда вы пытаетесь получить этот процесс, вам нужно знать, что все на борту или не будут работать. Переключение с развертываний водопада в DevOps — огромные организационные изменения.
Требуется одобрение каждого или иначе вы получите несколько человек, которые до сих пор делают ручные развертывания до производства. Будьте вы на старте или огромной компании Enterprise, получаете процесс DEVOPS, готов к реальному использованию, принимает прочную стратегию. Вы должны учитывать большие целы на картинке и повторяющиеся задачи, которые в настоящее время находятся, прежде чем начать делать предложения о том, как процесс должен течь.
Соображения для вашей стратегии
Главное, на которую вы хотите сосредоточиться, когда вы разрабатываете стратегию, избавляются от проблем, которые вы сталкиваетесь с вашим текущим процессом. Есть ли много ошибок, попадающих в производство? Есть ли только один человек, который понимает, как все инструменты работают вместе? Вы должны сохранить несколько команд на звонок после развертывания? Это некоторые огромные определяющие факторы для всего, что вы делаете в начале.
Еще одно важное соображение — это звание того, что ваши требования. DEVOPS не только для одного приложения в вашей организации, но для каждого программного обеспечения команда разработки поднимает изменения в. С какими облачными инфраструктурами вы собираетесь работать? Вы работаете с массовым количеством данных или работаете с несколькими приложениями, которые нуждаются в высоком обновлении?
Это такие вещи, которые необходимо решить, прежде чем вы начнете инвестировать в какие-либо инструменты или продукты, потому что они проводят все основные решения, которые будут направлять все остальное. Многие из инструментов вы сможете выбрать из этой части требований к созданию требований к вашей инструментарии.
Установить процесс
Убедитесь, что все команды пострадали от ввода здесь. Там будет необходимость написать автоматические тесты, внедрить правильные инструменты безопасности и способ обрабатывать несколько сред. Посмотрите, какой ваш текущий процесс и начнет откладывать основные части.
В частности, посмотрите, как работает процесс сборки. Есть ли одна команда, которую вам нужно запустить, как пряжа строит
? Или есть ли более сложный процесс для создания вашего приложения? Оттуда посмотрите, как вы получаете код с локальной машины разработчика к производственному серверу.
Если вам нужно сначала развернуть в другие среды, обратите внимание на это. Если вам нужно очистить кеш сервера, чтобы убедиться, что пользователи увидят новые изменения, убедитесь, что включены.
Вот почему вы увидите много тех же этапов, обычно используемых в CI/CD-трубопроводах, таких как этапы сборки, тестирования, доставки и развертывания. Разрыв всего развертывания процесса вверх на эти этапы облегчают сосредоточиться на деталях, которые должны быть включены в каждый.
Например, вам может потребоваться создать несколько баз кода, прежде чем вы сможете пройти через стадию сборки. Или вам может потребоваться импортировать ряд ресурсов, чтобы делать вещи, как им нужно в производстве.
На этапе тестирования вы можете сделать как единичное тестирование, так и тестирование безопасности. Обычно это приходит сразу после фазы сборки, и некоторые тестирования могут произойти перед сборкой. Это зависит от вашей кодовой базы и как ваши команды работают лучше всего.
Поставка и развертывание этапов будут иметь некоторые сходства. Вы будете иметь дело с полномочиями и секретами для разных услуг по нескольким средам, которые вы развертываете.
У вас может быть установлена установка постановки среды, которая использует бесплатную версию инструментов, которые вы используете в производстве. Или у вас может быть среда QA, имеющая данные для конкретно адресации странных случаев Edge. Это хорошее место для управления интеграционными тестами, чтобы убедиться, что все работает, как вы ожидали.
После того, как вы готовитесь к развертыванию вашего кода до производства, вам необходимо убедиться, что все ваши секреты верны и зашифрованы, ваши данные являются правильными, и для вас не осталось не каких-либо патчей, чтобы сделать Отказ
Получите некоторые инструменты и начните тестирование вашего процесса
Там есть много инструментов CI/CD, и все они имеют отличные функции. Некоторые будут легче использовать с вашими проектами, чем другие, поэтому вы должны проверить несколько из них, прежде чем принимать решение. Есть инструменты с открытым исходным кодом и корпоративные инструменты в зависимости от того, что вам нужно.
Помните, ваш типичный поток трубопровода будет выглядеть:
Построить -> тест -> доставить -> Развертывать
Несколько популярных инструментов включают в себя: Circleci , Travisci , Дириу , Дженкинс и Gitlab Отказ
Просто чтобы увидеть пример того, как может выглядеть простой трубопровод после того, как у вас есть процесс в порядке, мы посмотрим на проводной трубопровод.
import conducto as co def cicd() -> co.Serial: image = co.Image("node:current-alpine", copy_dir=".") cra_node = co.Exec("npx create-react-app conducto-demo") installation_node = co.Exec("cd conducto-demo; npm i; CI=true; npm test") build_node = co.Exec("npm build") start_node = co.Exec("npm start") pipeline = co.Serial(image=image, container_reuse_context=co.ContainerReuseContext.NEW) pipeline["Make CRA..."] = cra_node pipeline["Install dependencies..."] = installation_node pipeline["Build project..."] = build_node pipeline["Start project..."] = start_node return pipeline if __name__ == "__main__": co.main(default=cicd)
Это простой трубопровод, но он содержит все этапы, которые мы обсуждали. Единственное, что нужно сделать отсюда, добавьте подробнее и больше инструментов, чтобы получить его в состояние, которое вы хотите.
Работа над добавлением автоматизированных тестов
Без автоматических тестов вы не можете доверять, что ваш трубопровод будет развернуть хороший код каждый раз. Это было бы как автоматически отправлять ошибки в производство.
Найдя время, чтобы добавить хорошие тесты — это огромная доставка, а окупаемость длится годами. У вас будет более удобный код, который легче начать работу новых людей. Это дает вам некоторое спокойствие, что нет никаких регрессий из новых изменений.
Тогда вам нужно будет убедиться, что вы выполняете тестирование безопасности. Это обычно означает добавление инструментов, таких как Арахни или Снайк к вашему трубопроводу на этапе сборки. Это делает сканирование всего приложения, проверку уязвимостей и создание отчета. Тестирование безопасности в начале процесса CI/CD поможет вам оставаться в преддверии нарушений и удерживайте вас в проверке соответствия.
Добавление некоторого тестирования интеграции на этапе доставки поможет вам поймать любые услуги, которые не отвечают или не бросают странное поведение. Они могут быть автоматизированы с помощью инструмента, такими как Gauntlt и предупредить вас о проблемах, прежде чем они доберутся до клиентов.
Несколько автоматизированных тестов на этап развертывания. В этот момент вам нужно будет инвестировать в какой-то тип проверки проникновения с разными наборами инструментов. Многие инструменты хакеров могут быть автоматизированы в некотором роде, но они не вещи, которые вы хотите работать на одних и тохных клиентах серверов.
Пока вы включаете модульные тесты, тесты безопасности, и, возможно, некоторые тесты в интеграции в зависимости от вашего приложения, вы охватывали основы автоматизированного тестирования для вашего трубопровода. Большинство других типов тестирования займет много времени и замедлить развертывание.
Одна из вещей, которые вам придется посмотреть, как вы добавляете тесты, состоит в том, что вы слишком много заменяют процесс. Есть баланс для добавления тестов и сохранение трубопровода «достаточно быстро». Цель состоит в том, чтобы сохранить его в течение 5 минут, но если он должен быть дольше, убедитесь, что вы добавили все оптимизации, которые вы можете.
Начать отслеживание метрик
После того, как у вас есть процесс определенного процесса и построен по трубопроводу, вы можете начать отслеживать, как эта стратегия DevOps улучшила вещи. Есть ли меньше проблем поддержки? Можете ли вы быстро получить вещи для аудита? Это действительно быстрее получить изменения?
Это всего лишь несколько вещей, на которые вы можете проверить. Вы также можете проверить, изменено ли потребление вашего ресурса или, если вам нужны некоторые из услуг, которые вы использовали. Это возвращается к причине, по которой вы начали пытаться реализовать DevOps в первую очередь. Эти метрики докажут, что вся эта работа стоила этого.
Другие мысли
Переключение на DevOps, когда на месте существуют отдельные команды, занимают время и терпение. Есть много вещей, которые необходимо учитывать до того, как реализовано, что это будет реализовано. Даже если вы начинаете проект с нуля, это все еще сложно создавать конвейер Ci/CD. Это будет развиваться со временем так же, как и ваше приложение.
Истинное преимущество приходит, когда разработчики толкают изменения, и кто-то еще может их развернуть, когда пришло время. Некоторые организации будут иметь развертывание команды продукта, потому что все, что им нужно сделать, это щелкнуть кнопку, и они знают, что изменения сделают его пользователям. Точка создания стратегии DevOps — это позволить кому-либо, в любое время развертывающую изменения в производстве быстро без проблем.
После того, как у вас есть и идет, будет трудно оправдать выполнение ручного развертывания снова.
Убедитесь, что вы следуете за мной на Twitter Потому что я публикую такие вещи, как это и другие темы, все время!
Если вам интересно, какой инструмент вы должны проверить сначала, попробуйте Дирижер Для вашего CI/CD-трубопровода. Довольно легко встать и бежать, и даже проще отладить, пока он работает.
Оригинал: «https://dev.to/flippedcoding/making-a-devops-strategy-2f6g»