DevOps означает, что разработчики теперь берут на себя ответственность за инфраструктуру и выпуск - но каковы причины этого изменения?
Я положу свои карты на стол: я разработчик и работал как в «DevOps», так и в других культурах. Необходимость беспокоиться об инфраструктуре и выпусках, о QA и связанной с этим церемонии - огромное отвлечение от написания хорошего кода.
Но индустрия движется в этом направлении, так каковы причины этого? Какие проблемы породила «старая» модель ролевой специализации?
Ответы:
Основной причиной является облако.
Раньше ваш код отправлялся на дискету, а затем на компакт-диск, а затем развертывался на сервере, а затем развертывался на двух серверах (для обеспечения отказоустойчивости) ... И все это развертывание можно было выполнить вручную. человеком, поэтому люди были обучены делать это.
Сегодня ваш код часто собирается на десятки или сотни серверов. Подготовка, настройка и развертывание на этих серверах не может быть реально осуществлено вручную человеком. Ваши системные администраторы должны знать достаточно сценариев, чтобы автоматизировать этот процесс, поскольку теперь вы используете Chef или его родственников. Но, честно говоря, не было достаточно системных администраторов, которые могли бы сделать это. Таким образом, разработчики были втянуты, чтобы исправить слабину.
И да, добавление новых навыков к постоянно растущим требованиям разработчиков, естественно, приведет к снижению их компетентности в других местах. Идея в том , что позволяет Dev способность проникновения в суть процесса сборки / выпуска, они могут предвидеть проблемы лучше, или иметь автономию , чтобы улучшить его. Идея состоит в том, что качество всего возрастает, так как релиз выигрывает, обгоняя потери при написании кода.
Я скептически отношусь к тому, что компромисс стоит того же, что и люди.
источник
Существует множество разных причин для перехода различных организаций в DevOps.
Я постараюсь перечислить те, которые часто появляются.
Сокращение времени на изменение цикла
Часто между запросом на изменение и его развертыванием и использованием в организации часто проходит много времени. Сначала он планируется разработчиками в одном из циклов разработки, а после его доставки - в одном из циклов выпуска. Оба цикла включают тестирование, и в случае обнаружения проблем оба цикла сбрасываются. Интегрируя отделы разработки и эксплуатации, мы можем оптимизировать оба процесса.
Проблемы программного и аппаратного обеспечения
Вспомните карикатуру «Bugs Bunny», в которой Bugs и Daffy спорят, сезон уток или кролик? Теперь представьте, что мы сделали это с разработчиками и операциями, где разработчики утверждают, что это аппаратная проблема, а операции утверждают, что это программная проблема. Для конечного пользователя это различие без разницы. Они просто хотят, чтобы это было исправлено.
Собрав вместе разработчиков и операции, им придется решать проблемы. И может оказаться, что это была программная и аппаратная проблема.
Мы против них
Во многих компаниях расстояние между тестировщиками и разработчиками росло, потому что они были отдельными отделами, а цикл разработки становился все более формализованным и стандартизированным.
С появлением Agile разработчики и тестировщики стали работать вместе, и мы начали видеть точку зрения друг друга на цикл разработки и, возможно, даже стали уважать ее.
Нечто подобное должно происходить между разработчиками и операциями, потому что, как зрелые области, так и процессы далее формализуются и стандартизируются, расстояние между этими отделами увеличивается. Таким образом, одна из проблем традиционной модели заключается в том, что она выглядит как «мы» против «них» как для разработчиков, так и для операций. Оба не совсем понимают сложность обязанностей другого.
Ожидания / положительные стороны
С DevOps обе специальности изучат некоторые навыки, традиционно выполняемые другими. Никто не ожидает, что системный администратор станет инженером-программистом, или разработчик - сетевым инженером, но ожидается, что оба они возьмут на себя часть обязанностей другого. Это означает, что когда вам действительно нужны дополнительные руки, они там.
И у разработчиков есть определенные плюсы: теперь у вас больше контроля над тестовыми средами, вам будет проще развертывать программное обеспечение для пользователей, и в вашей организации будет больше людей, чтобы поделиться своей любовью к ремеслу.
источник
Написание качественного кода просто недостаточно. Вы либо часть проблемы, либо часть решения.
Для многих программистов вы пишете программное обеспечение, за которое платит какой-то конечный пользователь. Написание качественного кода - это хорошо, но клиенты и менеджеры также предполагают, что вы всегда должны делать и делать быстро. Это все равно, что сказать, что плотник точно обрезает доски, но вы на самом деле строите что-то, за что кто-то хочет заплатить?
DevOps дает разработчикам больший контроль и, надеюсь, заставляет их код соответствовать конечному результату. Кто лучше всего подходит для автоматизации операционного процесса? Удовлетворенность конечного пользователя является основной мерой измерения. Вы должны не только написать качественный код, но и удовлетворить клиента. Извините, но никто не возвращается к использованию строк кода. Им все равно, построите ли вы собственную ORM-инфраструктуру с нуля, точно так же, как обычному покупателю дома все равно, если вы срубили дерево и сделали свои собственные доски. Кто-нибудь хочет повторить все свои файлы конфигурации, потому что ваше «обновление» устанавливает их обратно по умолчанию?
Вы хотите похвастаться своими разработчиками? Создавайте то, что люди хотят купить, и это включает в себя весь пользовательский опыт. Хорошо, что вы пишете качественный код, но, к сожалению, вы можете не получить бонус, если он не будет выпущен к удовлетворению платящего клиента. Не стесняйтесь обвинять QA, но вашей компании все еще не хватает денег, чтобы платить вам больше.
источник
Это то, что идет рука об руку с Agile & Scrum. Больше нет четко определенных рабочих ролей - каждый является «разработчиком».
И это не просто операции. Разработчикам часто приходится выполнять функции бизнес-анализа, тестирования, администрирования базы данных и менеджера сборки - этот список можно продолжить.
В основе проблемы было то, что вы могли бы назвать отток . По мере увеличения числа различных ролей, вовлеченных в проект, было больше встреч, недоразумений и столкновений ресурсов. Быстрая разработка программного обеспечения перед пользователями - это конечная игра, и все, что может помешать этому, несколько отошло на второй план.
Это не совсем плохо. Ваш средний разработчик расширяет свои навыки, хотя варенье сейчас становится очень тонким. Это также предотвращает споры между программистами и администраторами серверов относительно того, где возникают проблемы, когда развертывание идет своим чередом. Разработчики часто хотят предлагать решения с использованием новейших технологий, и администраторы сервера часто не представляют, что это означает, от имени администратора до тех пор, пока они не будут представлены с установочным набором.
Более яркие и дальновидные компании наконец начинают понимать, что Т-образные люди - это хорошая вещь. Тем не менее, существует разница между тем, чтобы думать, что это хорошо, и ожидать, что это просто волшебным образом произойдет там, где ранее была принята традиционная культура.
источник
Я уверен , что есть больше , чем несколько хороших причин для разработчиков и управления операциями и контроля качества (иногда). Вот три из них:
Некоторые разработчики на самом деле хотят проработать все аспекты продукта. Если они хороши в этом, и если они заполняют пустоту в команде или оказывают хорошую поддержку существующим членам команды в других ролях, не может быть никаких причин, чтобы остановить их.
Крупные компании могут позволить себе специализированных сотрудников. Небольшие компании иногда не могут. Некоторые из этих мест могут нанять 1 или, может быть, 2 или 3 разработчика, которые должны иметь возможность просто получить рабочие материалы на улице.
Не каждый проект - проект с несколькими людьми. Если вы создаете «маленькое» приложение, может быть просто излишне, когда более 1 человека работают над ним до конца. Более того, маленькие проекты со многими людьми, работающими на определенных ролях, пугают . Ни у кого нет достаточного количества работы, даже если вы можете позволить себе держать их вокруг в течение 6 месяцев, хорошие не останутся. Если им не надоест, они испугаются, или вы поймете, что платите немало денег ни за что. В любом случае, ваши хорошие сотрудники уйдут и скажут всем держаться подальше от вас.
... И другие причины, я уверен.
источник
«Необходимость беспокоиться об инфраструктуре и выпусках, о QA и связанной с этим церемонии - огромное отвлечение от написания хорошего кода»
По сути, я думаю, что DevOps говорит, что беспокоится об инфраструктуре и выпусках, а QA IS пишет хороший код.
В предыдущих ролях, работающих в культурах, отличных от DevOps, у меня было множество проблем, которые, возможно, могли бы предотвратить культура DevOps; проблемы производительности, связанные с кодом, который был разработан на нерепрезентативных платформах, проблемы кодировки символов, когда разработчики не знали о кодировках символов, используемых клиентом, инструкции по развертыванию, которые были вручную написаны и недостаточны для команды Ops без какой-либо догадки -Работа.
Теперь вы можете утверждать, что возросшая специализация как на стороне разработчиков, так и на стороне Ops позволяет нам преодолеть некоторые из них, но многое еще можно решить только путем некоторого обмена знаниями и работой между нашими командами.
источник
DevOps не обязательно должно означать «Dev теперь также Ops». Первоначально этот термин означал « люди из Dev и Ops тесно работают вместе в одной команде». Это делает означает , что Ops люди должны стать более похожим Devs, потому что автоматизация вещей требуют своего рода программирование, а старый ручной способ не режет его (см других ответов на более детальную проработку по этому вопросу).
Из Википедии :
Так что, на мой взгляд, на самом деле, если у вас, как у разработчика, есть такие же старые обязанности и, кроме того, теперь обязанности по эксплуатации, это кажется просчетом со стороны руководства. Автоматизируя вещи, вполне возможно, что вам понадобится меньше сотрудников Ops и, таким образом, на самом деле экономия средств. Но DevOps определенно не означает «Давайте избавимся от всех людей Ops и пустим разработчиков на дополнительную работу».
Как это часто случается с Buzzwords, происходит семантическая диффузия , и вдруг люди думают: «Давайте заставим разработчиков делать и операции, и я думаю, мы сможем сэкономить деньги ...»
источник