4 антипаттерна DevOps, которые приведут к катастрофе

Как и в любой другой практике, в DevOps есть свои разрушительные антипаттерны.

И некоторые из них, такие как знаменитый антипаттерн «Герой», описанный ниже, поначалу кажутся отличным решением, но в конечном итоге ведут к провалу. 

Разберемся, как распознать подобные антипаттерны, откуда они берутся, и как не дать им уничтожить ваши DevOps-проекты.

 

Объяснение понятия “антипаттерн”

 

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

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

Из огня да в полымя, как говорят.



Антипаттерны. В чем подвох?

 

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

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

 

Антипаттерн “Герой”

 

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

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

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

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

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

Как это исправить 

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

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

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

 

Антипаттерн непрерывной сборки 

 

DevOps не застрахован от антипаттернов, и непрерывная сборка (Continuous Building, CB) является одним из таких примеров. Это то, что у вас происходит, когда вы настраиваете сервер непрерывной интеграции (Continuous Integration, CI), фактически не имея набора юнит-тестов или выполняя анализ качества кода на базе кода. Вы создаете программное обеспечение при каждой итерации.

(Для уточнения: CB - это подмножество CI, в котором вы выполняете только первую часть CI, а именно сборку. CI включает сборку, модульные тесты и статический анализ качества кода.) 

Антипаттерн CB часто используется с устаревшими приложениями или при переходе команды к Agile и DevOps. Часто все начинается с благих намерений - вы решаете установить CI-сервер и приступить к созданию тестов. Дабы не пугать людей метриками качества кода с кучей проблем, которые вы считаете незначительными, вы решаете установить метрики после того, как почистите код.

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

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

Как это исправить 

Цель CI - обеспечить уверенность в том, что вы можете объединить код, написанный разными членами команды, скомпилировать его и продолжить  работать так, как было задумано автором кода. Это невозможно без тестов, и зачастую юнит-тесты - отличное решение.

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

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



Создание антипаттерна DevOps-отдел

 

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

Создание отдельного DevOps-отдела, используемого в долгосрочной перспективе, является антипаттерном.

Как это исправить 

Когда DevOps-отдел создан, целью должно стать сближение команд dev’ов и ops’ов для сознательного взаимодействия. У DevOps-отдела должно быть четко определенное время жизни как часть этапа трансформации. Рамки его существования должны быть регламентированы, скажем, от одного до трех лет, а по истечении этого времени отдел расформировывается.

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

Фактически, вся компания должна быть заинтересована в преобразовании, необходимом для того, чтобы потребность в DevOps-отделе отсутствовала. Команды dev’ов и ops’ов должны пересекаться друг с другом, а работа DevOps выполняться на этом пересечении. 



Выборочная автоматизация 

 

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

Как это исправить

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

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

 

Распознать тревожные сигналы

 

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

 

Источник






Как с нами связаться?

“Экспресс 42”

Телефон +7 (495) 088-42-84
Адрес Москва, ул. Вятская 27с7
Время работы Пн-Вс: 10:00 - 19:00

Получить консультацию


Регистрация

Запишитесь на вебинар

Фамилия, Имя *
E-mail *
Контактный телефон *
Должность
Расчет стоимости
К сожалению, невозможно указать универсальные расценки на анализ и внедрение DevOps практик,
потому что трудозатраты зависят от целого ряда факторов.

Расскажите о вашем проекте, мы свяжемся с вами
и вместе рассчитаем стоимость в индивидуальном порядке.

Имя *
E-mail *
Контактный телефон *
Комментарий
Оформление заявки

Давайте обсудим ваш проект
и разберемся, как мы можем вам помочь

Имя *
E-mail *
Контактный телефон *
Комментарий
Бесплатная консультация

Остались вопросы?
Мы перезвоним и ответим на них!

Имя *
Контактный телефон *
Заголовок отзыва
Политика конфеденциальности
Политика конфиденциальности персональных данных

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

1. Определение терминов

1.1 В настоящей Политике конфиденциальности используются следующие термины:

1.1.1. «Администрация сайта» (далее – Администрация) – уполномоченные сотрудники на управление сайтом Экспресс 42, действующие от имени ООО "Экспресс 42", которые организуют и (или) осуществляют обработку персональных данных, а также определяет цели обработки персональных данных, состав персональных данных, подлежащих обработке, действия (операции), совершаемые с персональными данными.

1.1.2. «Персональные данные» - любая информация, относящаяся к прямо или косвенно определенному, или определяемому физическому лицу (субъекту персональных данных).

1.1.3. «Обработка персональных данных» - любое действие (операция) или совокупность действий (операций), совершаемых с использованием средств автоматизации или без использования таких средств с персональными данными, включая сбор, запись, систематизацию, накопление, хранение, уточнение (обновление, изменение), извлечение, использование, передачу (распространение, предоставление, доступ), обезличивание, блокирование, удаление, уничтожение персональных данных.

1.1.4. «Конфиденциальность персональных данных» - обязательное для соблюдения Оператором или иным получившим доступ к персональным данным лицом требование не допускать их распространения без согласия субъекта персональных данных или наличия иного законного основания.

1.1.5. «Сайт Экспресс 42» - это совокупность связанных между собой веб-страниц, размещенных в сети Интернет по уникальному адресу (URL): express42.com, а также его субдоменах.

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

1.1.5. «Пользователь сайта Экспресс 42 » (далее Пользователь) – лицо, имеющее доступ к сайту Экспресс 42, посредством сети Интернет и использующее информацию, материалы и продукты сайта Экспресс 42.

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

1.1.8. «IP-адрес» — уникальный сетевой адрес узла в компьютерной сети, через который Пользователь получает доступ на Экспресс 42.

1.1.9. «Товар » - продукт, который Пользователь заказывает на сайте и оплачивает через платёжные системы.

2. Общие положения

2.1. Использование сайта Экспресс 42 Пользователем означает согласие с настоящей Политикой конфиденциальности и условиями обработки персональных данных Пользователя.

2.2. В случае несогласия с условиями Политики конфиденциальности Пользователь должен прекратить использование сайта Экспресс 42 .

2.3. Настоящая Политика конфиденциальности применяется к сайту Экспресс 42. Экспресс 42 не контролирует и не несет ответственность за сайты третьих лиц, на которые Пользователь может перейти по ссылкам, доступным на сайте Экспресс 42.

2.4. Администрация не проверяет достоверность персональных данных, предоставляемых Пользователем.

3. Предмет политики конфиденциальности

3.1. Настоящая Политика конфиденциальности устанавливает обязательства Администрации по неразглашению и обеспечению режима защиты конфиденциальности персональных данных, которые Пользователь предоставляет по запросу Администрации при регистрации на сайте Экспресс 42, при подписке на информационную e-mail рассылку или при оформлении заказа.

3.2. Персональные данные, разрешённые к обработке в рамках настоящей Политики конфиденциальности, предоставляются Пользователем путём заполнения форм на сайте Экспресс 42 и включают в себя следующую информацию:

3.2.1. фамилию, имя, отчество Пользователя;

3.2.2. контактный телефон Пользователя;

3.2.3. адрес электронной почты (e-mail)

3.2.4. место жительство Пользователя (при необходимости)

3.2.5. адрес доставки Товара (при необходимости) 3.2.6. фотографию (при необходимости).

3.3. Экспресс 42 защищает Данные, которые автоматически передаются при посещении страниц:

- IP адрес;

- информация из cookies;

- информация о браузере

- время доступа;

- реферер (адрес предыдущей страницы).

3.3.1. Отключение cookies может повлечь невозможность доступа к частям сайта , требующим авторизации.

3.3.2. Экспресс 42 осуществляет сбор статистики об IP-адресах своих посетителей. Данная информация используется с целью предотвращения, выявления и решения технических проблем.

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

4. Цели сбора персональной информации пользователя

4.1. Персональные данные Пользователя Администрация может использовать в целях:

4.1.1. Идентификации Пользователя, зарегистрированного на сайте Экспресс 42 для его дальнейшей авторизации, оформления заказа и других действий.

4.1.2. Предоставления Пользователю доступа к персонализированным данным сайта Экспресс 42.

4.1.3. Установления с Пользователем обратной связи, включая направление уведомлений, запросов, касающихся использования сайта Экспресс 42, оказания услуг и обработки запросов и заявок от Пользователя.

4.1.4. Определения места нахождения Пользователя для обеспечения безопасности, предотвращения мошенничества.

4.1.5. Подтверждения достоверности и полноты персональных данных, предоставленных Пользователем.

4.1.6. Создания учетной записи для использования частей сайта Экспресс 42, если Пользователь дал согласие на создание учетной записи.

4.1.7. Уведомления Пользователя по электронной почте.

4.1.8. Предоставления Пользователю эффективной технической поддержки при возникновении проблем, связанных с использованием сайта Экспресс 42.

4.1.9. Предоставления Пользователю с его согласия специальных предложений, информации о ценах, новостной рассылки и иных сведений от имени сайта Экспресс 42.

4.1.10. Осуществления рекламной деятельности с согласия Пользователя.

5. Способы и сроки обработки персональной информации

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

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

5.3. Персональные данные Пользователя могут быть переданы уполномоченным органам государственной власти Российской Федерации только по основаниям и в порядке, установленным законодательством Российской Федерации.

5.4. При утрате или разглашении персональных данных Администрация вправе не информировать Пользователя об утрате или разглашении персональных данных.

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

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

6. Права и обязанности сторон

6.1. Пользователь вправе:

6.1.1. Принимать свободное решение о предоставлении своих персональных данных, необходимых для использования сайта Экспресс 42, и давать согласие на их обработку.

6.1.2. Обновить, дополнить предоставленную информацию о персональных данных в случае изменения данной информации.

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

6.2. Администрация обязана:

6.2.1. Использовать полученную информацию исключительно для целей, указанных в п. 4 настоящей Политики конфиденциальности.

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

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

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

7. Ответственность сторон

7.1. Администрация, не исполнившая свои обязательства, несёт ответственность за убытки, понесённые Пользователем в связи с неправомерным использованием персональных данных, в соответствии с законодательством Российской Федерации, за исключением случаев, предусмотренных п.п. 5.2., 5.3. и 7.2. настоящей Политики Конфиденциальности.

7.2. В случае утраты или разглашения Конфиденциальной информации Администрация не несёт ответственность, если данная конфиденциальная информация:

7.2.1. Стала публичным достоянием до её утраты или разглашения.

7.2.2. Была получена от третьей стороны до момента её получения Администрацией Ресурса.

7.2.3. Была разглашена с согласия Пользователя.

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

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

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

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

7.6. В отношение текстовых материалов (статей, публикаций, находящихся в свободном публичном доступе на сайте Экспресс 42) допускается их распространение при условии, что будет дана ссылка на Экспресс 42.

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

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

7.9. Администрация не несет ответственность за какую-либо информацию, размещенную пользователем на сайте Экспресс 42, включая, но не ограничиваясь: информацию, защищенную авторским правом, без прямого согласия владельца авторского права.

8. Разрешение споров

8.1. До обращения в суд с иском по спорам, возникающим из отношений между Пользователем и Администрацией, обязательным является предъявление претензии (письменного предложения или предложения в электронном виде о добровольном урегулировании спора).

8.2. Получатель претензии в течение 30 календарных дней со дня получения претензии, письменно или в электронном виде уведомляет заявителя претензии о результатах рассмотрения претензии.

8.3. При не достижении соглашения спор будет передан на рассмотрение Арбитражного суда г. Москва.

8.4. К настоящей Политике конфиденциальности и отношениям между Пользователем и Администрацией применяется действующее законодательство Российской Федерации.

9. Дополнительные условия

9.1. Администрация вправе вносить изменения в настоящую Политику конфиденциальности без согласия Пользователя.

9.2. Новая Политика конфиденциальности вступает в силу с момента ее размещения на сайте Экспресс 42, если иное не предусмотрено новой редакцией Политики конфиденциальности.

9.3. Все предложения или вопросы касательно настоящей Политики конфиденциальности следует сообщать по адресу: input@express42.com

9.4. Действующая Политика конфиденциальности размещена на странице по адресу https://express42.com/user-agreement

Обновлено: 01 Июля 2017 года

г. Москва, ООО "Экспресс 42", ОГРН 1127746121535

Спасибо за заявку!


Спасибо, ваши данные успешно отправлены!
Мы свяжемся с вами как можно скорее