Книга: Философия DevOps. Искусство управления IT

Разработка программного обеспечения

Разработка программного обеспечения

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

Локальная среда разработки

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

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

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

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

Контроль версий

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

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

Выбирайте систему контроля версий, которая поощряла бы желаемый для вас тип сотрудничества. В следующем списке приведены предпосылки для развития сотрудничества:

• открытие и доступ к клонированию хранилищ;

• содействие развитию хранилищ;

• управление вкладами в собственные хранилища;

• определение процессов для содействия;

• обмен правами для фиксации изменений.

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

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

В следующем списке приводится дополнительная терминология, относящаяся к контролю версий.

Фиксация

Фиксация – это последовательность действий по включению изменений, внесенных в файлы под управлением контроля версий.

Конфликты

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

Запрос на включение кода

Запрос на включение кода (pull request) – это механизм, который посылает разработчику сигнал о том, что его вклад готов к просмотру и слиянию с основной ветвью.

Избирательный подход

Избирательный подход – это применение определенных подтверждений из одной отрасли в другой отрасли. Этот подход полезен при необходимости выбора определенных изменений запроса на включение кода.

Управление артефактами

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

Хранилище артефактов должно быть:

• защищенным;

• доверенным;

• стабильным;

• доступным;

• версионированным.

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

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

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

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

РАННИЕ ПОЛИТИКИ

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

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

В следующем списке приведена дополнительная терминология, относящаяся к управлению артефактами.

Управление зависимостями

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

Закрепление

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

Продвижение

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

Оглавление книги


Генерация: 0.691. Запросов К БД/Cache: 2 / 0
поделиться
Вверх Вниз