Поиск по сайту:

Как «все как код» меняет доставку программного обеспечения


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

Переход на «как код» для всего, что связано с вашим проектом, помогает поддерживать согласованность, отслеживать изменения с течением времени и автоматизировать процессы. Эффективная реализация должна позволить вам более эффективно поставлять надежное программное обеспечение.

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

1. Это действительно все

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

  • Спецификация проекта. Хранение исходного документа спецификации в виде кода гарантирует, что каждый может получить к нему доступ. Вы можете вносить изменения, сохраняя все предыдущие версии.
  • Документация. Документация проекта в виде кода обеспечивает ее хранение и управление версиями в тандеме с исходным кодом, к которому она относится.
  • Инфраструктура. Вы можете использовать такие технологии, как Ansible и Terraform, для программного определения инфраструктуры вашей системы, обеспечивая воспроизводимость таких ресурсов, как виртуальные машины и экземпляры облачных вычислений.
  • Формирование шаблонов. Ваши шаблоны для создания новых проектов можно хранить в виде кода, чтобы вы могли клонировать репозиторий для запуска другой системы.

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

2. Все дело в автоматизации

Хранение всего в виде кода должно оказать ощутимое влияние на ваши процессы. Это проявляется в возможностях автоматизации, которые создают методологии «как код».

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

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

Конвейеры CI обычно обсуждаются в контексте изменений кода: канонический пример — это конвейер, который развертывается в рабочей среде каждый раз, когда вы меняете код. Однако на самом деле конвейеры — это просто автоматизированные сценарии, которые запускаются при возникновении триггера (обычно события слияния). У вас может быть конвейер, который создает проектный документ как артефакт каждый раз, когда ваша спецификация изменяется.

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

3. Объявите текущее состояние

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

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

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

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

4. Повышает последовательность

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

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

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

5. Это представляет собой изменение мышления

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

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

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

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

Заключение

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

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

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