DevOps означает, что разработчики теперь берут на себя ответственность за инфраструктуру и выпуск - но каковы причины этого изменения?

18

DevOps означает, что разработчики теперь берут на себя ответственность за инфраструктуру и выпуск - но каковы причины этого изменения?

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

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

Бен
источник
4
Вы говорите, что качество вашего кода ухудшается, потому что вы делаете другие вещи, или количество кода снижается.
Caleth
1
Убери свои карты со стола, пожалуйста. Это звучит как жалоба как есть.
svidgen
7
@svidgen Если бы этот вопрос был просто напыщенным, это было бы иначе, но ФП имеет право высказать свое мнение, а также задать совершенно правильный вопрос.
Робби Ди
1
@ Робби уверен. вы заметите, что я все равно ответил на него ... но часть "вопроса" этого вопроса потребляет более половины тела, зажатого между тем же повторяющимся основным вопросом, и это отвлекает от потенциальной чистоты основного вопроса в этом случае. Но да. Все еще стоит ответить ..
svidgen

Ответы:

19

Основной причиной является облако.

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

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

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

Я скептически отношусь к тому, что компромисс стоит того же, что и люди.

Telastyn
источник
2
Вы потеряли меня в " Основной причиной является прикладом ".
tedder42
15

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

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

Проблемы программного и аппаратного обеспечения
Вспомните карикатуру «Bugs Bunny», в которой Bugs и Daffy спорят, сезон уток или кролик? Теперь представьте, что мы сделали это с разработчиками и операциями, где разработчики утверждают, что это аппаратная проблема, а операции утверждают, что это программная проблема. Для конечного пользователя это различие без разницы. Они просто хотят, чтобы это было исправлено.
Собрав вместе разработчиков и операции, им придется решать проблемы. И может оказаться, что это была программная и аппаратная проблема.

Мы против них
Во многих компаниях расстояние между тестировщиками и разработчиками росло, потому что они были отдельными отделами, а цикл разработки становился все более формализованным и стандартизированным.
С появлением Agile разработчики и тестировщики стали работать вместе, и мы начали видеть точку зрения друг друга на цикл разработки и, возможно, даже стали уважать ее.
Нечто подобное должно происходить между разработчиками и операциями, потому что, как зрелые области, так и процессы далее формализуются и стандартизируются, расстояние между этими отделами увеличивается. Таким образом, одна из проблем традиционной модели заключается в том, что она выглядит как «мы» против «них» как для разработчиков, так и для операций. Оба не совсем понимают сложность обязанностей другого.

Ожидания / положительные стороны
С DevOps обе специальности изучат некоторые навыки, традиционно выполняемые другими. Никто не ожидает, что системный администратор станет инженером-программистом, или разработчик - сетевым инженером, но ожидается, что оба они возьмут на себя часть обязанностей другого. Это означает, что когда вам действительно нужны дополнительные руки, они там.

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

Мигель ван де Лаар
источник
4
+1 - потому что речь идет о конечном пользователе, а не только код.
Джеффо
3

Написание качественного кода просто недостаточно. Вы либо часть проблемы, либо часть решения.

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

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

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

JeffO
источник
2
Я уверен, что вы знаете, насколько сложно нанимать хороших разработчиков программного обеспечения. И теперь нам нужно, чтобы они были хорошими бизнес-аналитиками, интересовались церемонией обеспечения качества и волновались о процессах выпуска. Число людей, которые встретят новый бар, будет исчезающе маленьким.
Бен
2
@ Бен: нет "и сейчас"; Это то, что хорошие разработчики делали десятилетия, прежде чем кто-то подумал, что DevOps - это новая вещь, и придумал этот термин. Ваша работа как разработчика заключается в том, чтобы решать проблемы, которые выходят за пределы чьей-то потребности в решении, чтобы у людей, которым приходится обрабатывать ваш код после того, как вы написали его, не было трудных моментов. Скупитесь на все это, и никто не будет заботиться о том, как красиво сделаны ваши квадратные колышки, если им нужны сани по десять фунтов, чтобы загнать их в круглые отверстия.
Blrfl
Это похоже на аргумент против специализации. Что человек должен быть мастером на все руки мастером ни одного. Это не предложено ни в одной другой отрасли, у вас нет электриков-каменщиков-сантехников, пытающихся понять каждый мелочь о строительстве дома
Ричард Тингл
2
@RichardTingle: Никто не говорит, что вы должны понимать все, но вы должны понимать то, что ваш продукт будет касаться при использовании. Сантехник должен знать достаточно о том, что делают электрики - или, по крайней мере, работать с ним - чтобы знать, что опасно прокладывать трубу холодной воды через распределительную коробку, даже если для этого есть выбивки.
Blrfl
Даже не пытается ответить на вопрос. -1
RubberDuck
2

Это то, что идет рука об руку с Agile & Scrum. Больше нет четко определенных рабочих ролей - каждый является «разработчиком».

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

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

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

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

Робби Ди
источник
-1 «роли больше не имеют четкого определения - каждый разработчик». Это совсем не так. Предполагается, что команда разработчиков состоит из разнообразных людей, включая разработчиков, графиков, ИТ-специалистов и т. Д. Роли не исчезают, но идея в том, что теперь они все в одной команде, а не отдельные отделы.
Энди
1
@ И я бы посоветовал вам еще раз прочитать руководство по scrum : Scrum не распознает никаких названий для членов команды разработчиков, кроме разработчика, независимо от того, какую работу выполняет этот человек; нет никаких исключений из этого правила . Люди, конечно, специализируются, но по самой своей природе они должны быть самоорганизующимися.
Робби Ди
Призывая кого-то, кто специализируется на создании графики в Photoshop, или кого-то, кто выполняет роль переводчика, разработчик вводит в заблуждение, поскольку разработчик в программных проектах универсально понимается как разработчик программного обеспечения. Руководство Scrum просто неправильно с этим утверждением.
Энди
0

Я уверен , что есть больше , чем несколько хороших причин для разработчиков и управления операциями и контроля качества (иногда). Вот три из них:

  • Интерес
    Некоторые разработчики на самом деле хотят проработать все аспекты продукта. Если они хороши в этом, и если они заполняют пустоту в команде или оказывают хорошую поддержку существующим членам команды в других ролях, не может быть никаких причин, чтобы остановить их.
  • Стоимость
    Крупные компании могут позволить себе специализированных сотрудников. Небольшие компании иногда не могут. Некоторые из этих мест могут нанять 1 или, может быть, 2 или 3 разработчика, которые должны иметь возможность просто получить рабочие материалы на улице.
  • Размер проекта
    Не каждый проект - проект с несколькими людьми. Если вы создаете «маленькое» приложение, может быть просто излишне, когда более 1 человека работают над ним до конца. Более того, маленькие проекты со многими людьми, работающими на определенных ролях, пугают . Ни у кого нет достаточного количества работы, даже если вы можете позволить себе держать их вокруг в течение 6 месяцев, хорошие не останутся. Если им не надоест, они испугаются, или вы поймете, что платите немало денег ни за что. В любом случае, ваши хорошие сотрудники уйдут и скажут всем держаться подальше от вас.

... И другие причины, я уверен.

svidgen
источник
0

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

По сути, я думаю, что DevOps говорит, что беспокоится об инфраструктуре и выпусках, а QA IS пишет хороший код.

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

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

Мэтт Фрейк
источник
0

DevOps не обязательно должно означать «Dev теперь также Ops». Первоначально этот термин означал « люди из Dev и Ops тесно работают вместе в одной команде». Это делает означает , что Ops люди должны стать более похожим Devs, потому что автоматизация вещей требуют своего рода программирование, а старый ручной способ не режет его (см других ответов на более детальную проработку по этому вопросу).

Из Википедии :

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

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

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

jhyot
источник