За последнее десятилетие или около того много было сделано из необходимости «преодолеть пропасть» 1 между программным обеспечением Dev Команды Elopment и это op Эрационные команды. Это обещает ряд технологических и организационных преимуществ, таких как более быстрые циклы доставки, меньше дефектов, сокращение времени на рынок и большую прибыльность.
Для тех компаний, «родившихся в облаке», которые никогда не развернулись нигде, кроме Firebase И думай, что Хелм Как вы управляете яхтой, которую вы купили за финансирование серии C, то, что будет в значительной степени незнакомы. Эти компании, по сути, noOps 2 И нет пропасти, чтобы могить.
Существует гораздо большее количество организаций, которые находятся где -то в спектре между наличием дипломированных, тестовых и операционных групп, и единорогов NOOPS.
Для этой второй группы есть ряд проблем, многие из которых имеют Технологические решения , но самые неразрешимые проблемы, как и всегда, являются человеческими.
Центр передового опыта DevOps
Общий первый шаг в путешествии DevOps — реорганизовать существующий зверинец специалистов по безопасности, сетевых архитекторов и администраторов баз данных в центр передового опыта DevOps, готовые и способные реагировать на потребности племени разработчика в мигании запроса на обслуживание В рамках задокументированных и согласованных SLA, при условии одобрения кабиной, которая собирается каждый второй вторник.
Покупка стола на фосболе и кегератора можно считать необязательными на этом этапе в путешествии DevOps.
К настоящему времени должно быть неудобно, что это не улучшение предыдущего расположения Silos Dev и Ops 3 , поскольку он сохраняет почти все недостатки с небольшим количеством роста, кроме Kegerator:
Мотивы «команды DevOps» и «Dev Team (S)» остаются смещенными.
- Неспособность предоставить функцию вовремя редко имеет какие -либо негативные последствия для команды DevOps.
- Предоставление функций таким образом, что сложное или дорогое для развертывания и патча редко имеет какие -либо негативные последствия для разработчиков.
Традиционная антипатия между Dev и OPS остается присутствующей.
- Команда DevOps продолжает рассматривать разработчиков как мошеннические элементы, не заботясь о безопасности или стабильности системы.
- Разработчики продолжают рассматривать команду DevOps как динозавры, единственная цель, цель в жизни — замедлить развитие.
- Во многих организациях обе эти характеристики являются точными.
Я затронул эти проблемы в предыдущей статье на этом сайте:
Бросание кода через другой забор
Гэвин Кэмпбелл ・ 11 декабря ’17 ・ 3 мин читал
Эти недостатки остаются независимо от количества инициатив, основанных на инструментах, предпринятых командой DevOps.
Пока Cloudformation и Рука Шаблоны, Ansible пьесы и Хелм Диаграммы остаются обязанностью центральной команды DevOps. Размещение стимулов будет сохраняться.
Это получает, даже если инструменты и методы — управление источниками, серверы CI/CD, гибкие методы, могут быть идентичными для двух команд. Ни один из этих инструментов не может разрушить коммуникационные барьеры между двумя командами.
Распределенная команда DevOps
Следующий шаг по путешествию часто включает в себя демонтаж команды Central Devops и «встраивание» одного или нескольких инженеров DevOps в каждой команде разработчиков. Это часто вдохновляется идеей, что «Facebook делает это таким образом 4 ».
Однако:
- Ваша компания не Facebook.
- Инженеры по производству Facebook, вероятно, пишут больше кода, чем ваши разработчики
Для большинства компаний, кроме Facebook, основным преимуществом внедрения инженеров DevOps в команды разработчиков является сокращение накладных расходов на общение между разработчиками и инженерами DevOps.
Поскольку структуры управления, связанные с командами программного обеспечения, «не могут обеспечить карьеру для OPS People», а лидеры программного обеспечения «не могут управлять людьми OPS», встраиваемые OPS люди часто управляются отдельно для разработчиков, с которыми они работают,. и может даже вращаться между иначе стабильными командами разработчиков.
Ребенок, которого не обнимают деревней, сжечь его, чтобы почувствовать тепло
Анон., Интернет
Следствием этого является то, что, хотя накладные расходы на общение могут быть уменьшены, стимулы до сих пор не совпадают между разработчиками функций и встроенными OPS. Вместо того, чтобы «бросить код над забором» в поле OPS, мы бросаем код в клетку Ops «Кэдж», встроенный в каждую команду.
Кроме того, задачи остаются строго категориальными — и часто «помечены» — как «девственные задачи» и «задачи OPS». Это означает, что разработчики продолжают жаловаться на людей DevOps, DevOps, люди, не мотивированы, чтобы помочь разработчикам.
Другим эффектом является ежедневная отставка, в которой две или три группы людей по очереди обсуждают свои не связанные с ними деятельность под руководством «Менеджер проекта Scrummaster Slash». Такие встречи-это хорошо отрепетированная вариация на тему «Стенд в качестве статусного собрания» 5 Анкет
Изменяющийся характер ИТ -операций
Существует случай, когда в мире разработки функций мало что изменилось в мире индустрии программного обеспечения. В конце концов, мы все еще вводим код в редакторах, код собирается или иным образом собирается во что -то полезное, мы могли бы немного тестировать, и мы отправляем конечный продукт пользователям.
То же самое нельзя сказать об ИТ -операциях. Хотя инструменты автоматизации существовали с самого начала — до интерактивных редакторов, фактически 6 — Большая часть истории ИТ -операций включала определение процедур и документирование их таким образом, чтобы они могли быть выполнены людьми.
В течение многих лет большинство прикладных программного обеспечения было установлено более или менее сценарием, и многие компании обнаружили автоматические способы обеспечения постоянной настройки их среды операционной системы.
Совсем недавно мы видели рост инфраструктуры в качестве услуги и платформы в качестве предложений по обслуживанию, причем многие современные приложения зависят от обоих. Это привело к изменениям в инструментах в той степени, в которой практически любая операционная среда может быть определена набором текстовых файлов, которые будут обработаны каким -то инструментом или другим. Это то, что подразумевается под «инфраструктурой в качестве кода».
История Real DevOps — это не сотрудничество, это конвергенция
Инфраструктура в качестве кода оказалась настолько удобной, что разработчики смогли предоставить свою среду без ссылки на операционную команду. Естественно, это сопровождалось большим ворчанием о «разработчиках-мошенниках», «Shadow It» и «неконтролируемыми расходами». Между тем, операционные команды были заняты обучением использовать эти новые инструменты для обеспечения большего количества инфраструктуры и быстрее, чем когда -либо прежде.
Таким образом, если разработка приложений и разработка инфраструктуры включают в себя много одинаковых инструментов и методов, есть ли какая -то ценность для того, чтобы отдельные люди выполняли каждую из этих задач? И учитывая относительно высокую степень связи между приложениями и средами, которые они потребляют, имеет ли смысл управлять кодом, который определяет их отдельно?
Учитывая, что строки между кодом фронтального кода, кодом первого кода, кодом базы данных и кодом инфраструктуры становятся слабее каждый год, который проходит, разве мы только не время назвали его «кодом»? В конце концов, разве мы не должны быть «разработчиками полного стека» в наши дни?
Разве мы не будем стремиться к разработке команд «Т-образных» людей, способных поддерживать какую-либо часть нашего продукта, от инфраструктуры до CSS?
Конвергенция в команде
Самая сложная часть этой конвергенции — это то, как управлять интеграцией людей, уже работающих в организации, в частности «профессионалами OPS», практически без фона кодирования.
На современном рабочем месте программного обеспечения многие задачи, которые ранее были выполнены командами OPS, теперь должны выполняться с кодом. Это означает, что для администратора базы данных, аналитика безопасности или специалиста по сети становится все более неприемлемо, чтобы утверждать, что он не «кодер», так же, как разработчик с полным стеком недопустимо, чтобы «знать только jQuery».
Более тонкая проблема заключается в том, что команды OPS могут быть опытными в написании кода, в виде сценариев, шаблонов или пьес, но менее опытны в других практиках, которые входят в разработку программного обеспечения, такие как непрерывная интеграция, автоматическое тестирование и стратегии ветвления Анкет
Наша цель состоит в том, чтобы захватить опыт людей OPS, а также навыки разработчиков, поскольку оба важны для качества конечного продукта.
Разработчики не хотят выполнять операции и Операции, которые люди не хотят делать развитие
Подслушал в лифте
Я не могу думать ни о каких технологических решениях, даже Pulumi и друзья, которые сами способны достичь этой конвергенции.
Конечно, инструменты важны, и, конечно, был мой опыт, что чем более удобны для разработчиков инструменты, тем больше разработчики будут развлекать идею «выполнения операций». В первом десятилетии облака много инфраструктурного кода была написана с использованием DSL, специфичных для поставщика, таких как Cloudformation и Рука шаблоны. Они удовлетворяют определению «инфраструктуры как кода», но я думаю, что причина популярности Terraform является то, что он имеет функции, которые делают его более «кодом, как и более легкая композиция и уменьшенная словесность.
История разработки базы данных — это похожая история; В течение многих лет были люди, специализирующиеся на создании объектов базы данных и PL/SQL Процедуры, но в большинстве современных приложений они были заменены абстракциями, такими как Спеценат , Организация объекта и Dapper Анкет
Обещание Пулуми Это то, что это предложит аналогичную абстракцию для нашей инфраструктуры, и я думаю, что будет интересно посмотреть, как это получится.
Скорее решения Все это практика работы, большинство из которых должны быть очень знакомыми.
Пара программирования
Парное программирование существует очень долго, но все еще является проблемой для многих команд 7 Анкет В контексте конвергенции разработчиков/OPS он имеет много преимуществ.
Пара способствует владению коллективным кодом, включая код инфраструктуры, что должно означать конец «проблем приложения» и «проблем инфраструктуры».
Если члены команды приходят из ряда разных фонов, тем лучше. Разработчики учатся «делать инфраструктуру», в то время как операции, которые люди учатся «делать развитие». Со временем трудно сказать, кто раньше был разработчиком, а кто был старшим аналитиком по инфраструктуре, поскольку оба одинаково удобны, поддерживая кодовую базу.
Это шаблон, который уже появляется в тестировании программного обеспечения; Microsoft, среди прочего, утверждает, что отказалась от различия между разработчиками и тестерами 8 И я подозреваю, что в будущем мы будем говорить то же самое о инженерах инфраструктуры.
Одним из факторов, способствующих преимуществам совпадений, обмена знаниями является практика парного ротации, в которой мы поощряем каждого члена команды в сочетании с рядом других членов команды. Это может быть подкреплено такими инструментами, как Матрица Парного программирования 9 Анкет
В той ситуации, когда мы интегрируем людей с опытом работы с не развитием, это еще более ценно, поскольку это мешает любому разработчику быть тем, кто всегда должен сочетаться с «парнем из Ops». Это также позволяет людям с инфраструктурным опытом ознакомиться со многими различными областями кодовой базы и делиться своим опытом со многими другими членами команды.
Парное программирование и парное вращение не без проблем, и требуются выделенные усилия для обеспечения успеха.
Стоит упомянуть практику «Программирование толпы 10 », в которой Вся команда работает вместе, чтобы предоставить функцию. Это также может быть эффективным способом содействия обмену знаниями, устранения барьеров и развития навыков всей команды.
Автоматизированное тестирование
Если пользовательская история является независимо ценной, то есть рассуждает, что она должна быть независимо проверена. Сходимость приложений и инфраструктуры означает, что мы можем проверить оба одновременно.
Для этого нам нужно написать тесты не только для функциональности нашего приложения, но и для безопасности, доступности и наблюдения всей нашей среды. Это само по себе является огромным преимуществом конвергентного подхода.
Тестирование на инфраструктуру — это интеграционное тестирование с реальными зависимостями, и это область, где вклад людей с опытом работы может быть особенно ценным.
Тонкие вертикальные ломтики
Это известная гибкая практика-попытаться определить пользовательские истории как «вертикальные кусочки» функциональности 11 Анкет Это означает, что вместо того, чтобы пытаться доставить полную базу данных, за которой следует полный бизнес -уровни, за которым следует автобус предприятия, за которым следует передняя часть, мы доставляем Достаточно каждого уровня, чтобы иметь возможность показать что -то ценное для конечного пользователя.
Помимо этих уровней, мы также можем доставить Достаточно Инфраструктура для поддержки этой функции, которую мы хотим предоставить. Эта практика может даже привести к снижению затрат на инфраструктуру.
Добавление инфраструктуры и связанных с ними тестов к каждой истории может сделать эти истории больше и сложнее для доставки. Ответ, конечно, состоит в том, чтобы сделать ломтики более тонкими, достаточно тонкими, чтобы они доставлялись, в то же время добавляя ценность.
Определение достаточно тонких вертикальных срезов не всегда легко. Тем не менее, инвестирование в это будет облегчить другие практики — тонкие ломтики легче тестировать и легче для пары разработчиков из разнообразного происхождения.
Вывод
Инфраструктура как код в будущем, это настоящее. Переход ко всему, как код, вероятно, будет сложнее для профессионалов инфраструктуры, чем для разработчиков.
В статье Microsoft есть смущающее замечание о тестировании конвергенции, связанной выше 8
Это был болезненный переход для компании. Мы упорно трудились, чтобы перемещать [инженеры -тестовые инженеры] на другие роли, а некоторые сделали, но многое из них не было.
Вы не хотите, чтобы это было вашей компанией, и вы не хотите, чтобы это были вашими людьми инфраструктуры. Это сложные проблемы, но практика, изложенная выше, наряду с другими, предназначенными для детоксикации рабочего места, могут каким -то образом смягчить их.
Там могут быть некоторые специалисты по инфраструктуре, которые сопротивляются переходу на все как код. В настоящее время им может быть работа в «инфраструктуре, которая поддерживает инфраструктуру», что означает подписки, контракты, счета -фактуры и соглашения о обслуживании. Эти задачи, которые являются более административными, чем техническими, представляют будущее «не кодирующего ИТ-профессионала».
Для других конвергенция создает возможность развить новые навыки и оказывать более заметное влияние на готовый продукт. По всей команде цель не является нереалистичной гомогенизацией, где каждый член команды является «ресурсом», а в том, чтобы извлечь выгоду из разнообразия опыта членов команды.
Google Поиск DevOps Bridge Down Chasm Возвращает около 15 000 результатов на момент написания. ↩
Я думаю https://go.forrester.com/blogs/11-02-07-i_dont_want_devops_i_want_noops/ является самым ранним опубликованным использованием этого термина. ↩
https://engineering.fb.com/category/production-engineering/ ↩
https://www.scrum.org/resources/blog/scrum-myths-daily-scrum-not-status-meeting ↩
https://en.wikipedia.org/wiki/support_programs_for_os/360_and_successors#iebupdte Да, Википедия. Документация IBM 1960 -х годов нелегко найти в Интернете. ↩
https://martinfowler.com/articles/on-pair-programming.html ↩
http://alaverdyan.com/readme/2010/12/pair-programming-matrix-board/ ↩
https://www.agilealliance.org/resources/experience-reports/mob-programming-agile2014/ ↩
https://xp123.com/articles/invest-in-good-stories-and-smart-s- Tasks/ , см. Также https://www.thoughtworks.com/insights/blog/slicing-your-development-work-multi-layer-cake ↩
Оригинал: «https://dev.to/gavincampbell/human-aspects-of-dev-ops-convergence-3jj5»