Начните с того, что больно больше всего. Большинство людей ищут контрольный список о том, как реализовать DevOps, но это редко так просто. Проблема в том, что каждая группа находится на разных этапах преобразования своих DevOps. Итак, где «начинается каждое путешествие» будет отличаться для каждой организации.
Тем не менее, DevOps также является культурой, которая опирается на себя, причем каждый слой строится на основе того, что происходит раньше, поэтому в этом отношении есть строительные блоки, которые вам нужно иметь, прежде чем вы сможете построить следующий слой. Я часто называю это подходом «LEGO». У вас есть куча отдельных строительных блоков, и в некоторых организациях у вас есть области, которые более зрелые, с несколькими блоками, которые уже объединены в некоторые основные структуры и процессы, и вам нужно сформировать стратегию, чтобы собрать их все вместе в один сплоченный Структура DevOps.
Вот некоторые из основных строительных блоков, которые, я думаю, понадобится каждой организации, чтобы построить культуру DevOps.
Метрики: Мы должны быть в состоянии измерить, где мы находимся, если хотим выяснить, куда нам нужно пойти. Метрики помогут нам выяснить, где мы находимся, что важно для организации, и как каждый шаг в путешествии DevOps поможет улучшить наш процесс, чтобы повысить ценность для наших конечных пользователей. Вы должны иметь возможность измерять и сообщать о них, чтобы усилить позитивное поведение. Найдите пару основных измерений и поместите это на панель панели где -нибудь, чтобы вся команда увидела, чтобы помочь им сосредоточиться на том, что мы стремимся улучшить.
Управления источником: Это, вероятно, один из самых фундаментальных строительных блоков, которые должна иметь компания, прежде чем создать любую другую часть своего путешествия DevOps. Они должны иметь свой код в месте, где его можно получить и просмотреть, и посмотреть, какие изменения были внесены. Это имеет основополагающее значение для возможности защиты своего кода, выполнять проверки, обзоры и понимать, что именно они проталкивают через конвейер доставки.
Здесь мы также начинаем строить некоторые другие наши показатели. Такие вещи, как отток кода и активные файлы, становятся простыми для идентификации, даже некоторые из более неоднозначных показателей, таких как строки кода, хотя бы доступны для нас, чтобы обернуть наши руки, насколько большой проект или какой технический долг может скрываться под обложками.
Отслеживание рабочих элементов: Используйте некоторую форму отслеживания рабочих элементов для функций, элементов отставания, ошибок и задач. Я большой поклонник Agile, поэтому наличие отставания за продуктом или советом Kanban, видимым всей группе, позволит им сосредоточиться на цели. Отслеживание рабочих элементов четко излагает, кто отвечает за то, что добавляет уровень подотчетности. Каждая итерация должна иметь четкое определение того, что «сделано» означает для команды.
Непрерывная интеграция: Реализовав систему управления источником, которая позволяет централизовать ваш код, означает, что теперь у вас есть место, где вы можете начать создавать систему непрерывной интеграции (CI), которая может извлечь исходный код и выполнять автоматические сборки, модульные тесты и анализ статического кода (SCA ), все это также может помочь внести свой вклад в некоторые полезные показатели о том, насколько хорошо вы делаете. Разработчики следует поощрять к тому, чтобы проверять свой код на раннем этапе и часто, чтобы мы получали постоянную обратную связь каждый раз, когда проект строится, протестируется и упаковывается в артефакты сборки на отдельной машине сборки (избегайте синдрома «он работает на моей машине»).
При создании блоков CI, это отличное место для сбора дополнительных показателей, где вы можете видеть, что существуют постоянные зеленые сборки, все ваши модульные тесты проходят, и если вы используете такие инструменты, как Sonarqube или укрепляют, это поможет получить дополнительные Метрики, связанные с качеством кода, стандартам и техническим долгам, где члены команды могут заметно увидеть качество кода через отчетность о панелях и уверенности в своих сборках.
Автоматизированное развертывание (в первую очередь единственная среда): Здесь мы начинаем видеть много синергии, но также и много проблем с укреплением доверия к этому процессу. Слишком часто чрезмерный инженер пытается автоматизировать весь трубопровод за один выстрел. Вместо этого начните с малой работы над автоматизацией развертывания только одной среды, не пытаются «варить океан» и вместо этого поработайте над тем, чтобы сгладить изломы с помощью развертывания одной среды. Установите доверие и уверенность в способности развернуть код без ручных шагов. Сделайте это в «выбросной» среде, где вы можете развернуть и уничтожать снова и снова. Со временем другие коллеги увидят удивительные преимущества для использования и автоматического развертывания и пригласят вас, чтобы позволить это для других среда в вашем трубопроводе. Но выберите свои автоматические развертывания в первую очередь в единственной среде, с пулевой защитой и постройте это доверие к остальной части команды, что это процесс, в который они могут доверять и доверять.
Автоматизированное тестирование: После того, как мы получим полностью автоматизированный и повторяемый процесс для развертывания системы в тестовую среду, работайте над автоматизацией тестирования этой системы с интеграцией и кодированным тестированием пользовательского интерфейса. В сборке CI мы запускаем модульные тесты, но с полностью функциональной системой у нас есть возможность запустить интеграцию и нагрузочные тесты. Возможность автоматической реконструкции всей среды и провести более продвинутое тестирование имеет решающее значение для увеличения скорости команды и сокращения времени простоя из -за простых ошибок, которые можно поймать с помощью базового тестирования функций. Тем не менее, будьте уверены, чтобы не доверять тестированию автоматизации. Эти тесты отлично подходят для сценария положительного тестирования, например, в том, чтобы войти в систему или запрос на известную информацию, но не может быть учтено каждый тест, и нет ничего лучше, чем иметь человека у руля для проведения исследовательских испытаний.
Самое замечательное в этом то, что он также становится итеративным процессом, каждый раз, когда вы создаете тест, его можно считать, и вы можете создать свой набор тестов, чтобы каждая итерация была более полной, чем последняя. Я также хочу отметить, что, хотя автоматизированное тестирование отлично подходит для основных сценариев, но попытка поддерживать сложные сценарии с помощью сценариев иногда может быть больше проблем, чем стоит. Одна из худших вещей, которые вы можете провести, — это автоматизированные тесты, которые постоянно терпят неудачу и игнорируются, потому что это записано на «О, это всегда терпит неудачу при изменении интерфейса», потому что теперь вы обучаете свою команду игнорировать определенные тесты. Каждый сценарий должен проходить каждый раз, прежде чем сертифицировать сборку.
Инфраструктура как код: После того, как мы получим развертывание кода, и мы сможем успешно развернуться в известном наборе серверов или среды, следующим шагом является представление концепции, известной как инфраструктура как код (IAC) в процессе. Обеспечивая конфигурации кода и инфраструктуры, хранящиеся в управлении источником, это позволит вашей команде встать новые среды, просто изменив некоторые параметры в управлении источником. Наличие параметризованных сценариев, использующих такие инструменты, как Chef или Puppet, мы можем высвободить ручный процесс входа на порталы VMware на серверы предоставления или настройку таких функций, как веб -серверы, которые необходимо настроить, прежде чем иметь возможность успешно развертываться в среде, что еще больше сокращает шанс человеческой ошибки.
Мониторинг: Это одна из тех областей, которые часто упускают из виду. После того, как итерация закончилась, и последний код подталкивается к производству, мы часто забываем, что эксплуатация системы так же важна, как и его создание. Но это также одна из самых важных предметов для бизнеса. Мы должны отслеживать наш код и наши системы, поскольку он работает в производстве, чтобы убедиться, что мы предоставляем ценность для наших конечных пользователей. Это не должно быть ограничено только обычным мониторингом производительности и исключений. Мониторинг должен помочь ответить на более интересные вопросы для бизнеса, например, как конечные пользователи используют приложение, какие функции они используют больше всего, которые могут выиграть от расширения, а также функций, которые могут вообще не использовать и могут быть обрезаны от Система в будущей итерации. Кто -то однажды объяснил мне эту функцию, как управление рестораном. Когда вы управляете рестораном, вы расширяете меню и улучшаете определенные блюда, но если никто не заказывает определенные предметы, вы снимаете их из меню. Ни один ресторан никогда не пытался бы иметь 400 предметов в меню и делать все покупки и все остальное, что касается тех пунктов меню, которые никто никогда не заказывает, так зачем вам сохранять 400 функций в своей системе, которые никто никогда не использует?
Непрерывное улучшение: Если что -то не сломано, это не означает, что вы не можете улучшить это. Когда вы проходите через процесс интеграции различных инструментов и процессов в свой конвейер доставки, подумайте о том, как вы можете ускорить действия, которые занимают самые длинные или содержащие наибольший риск. Просмотрите свои ограничения рабочего процесса и подумайте о том, как вы можете сократить время цикла. DevOps — это не только автоматизация вашего трубопровода. Иногда вам нужно вернуться назад и провести исследование своей существующей системы таким образом, чтобы она позволяет эффективно развернуться таким образом, чтобы не влиять на ваших пользователей. Многие системы не построены с этой способностью обрабатывать сложные стратегии развертывания DevOps, такие как развертывание синего зеленого, канарейки, кольца и другие стратегии, которые обеспечивают нулевое время простоя при создании релизов с низким риском. Но это именно те возможности, на которые вы захотите нацелиться, когда ваше путешествие DevOps созревает.
Как многие люди любят говорить: «Путешествие в тысячу миль начинается с первого шага». Путешествие DevOps ничем не отличается, он начинается с нескольких небольших шагов, и вы начинаете двигаться по дороге зрелости. Не все начинаются в одном месте, но это дорога, которую мы все идем вместе. DevOps — это путешествие, а не пункт назначения.
Пост DevOps — с чего начать? появился первым на Опыт внутренней империи папа Анкет
Оригинал: «https://dev.to/iedaddy/devops—where-should-we-start-2pff»