Наша команда начала применять практику DEVOPS задолго до того, как мы зарегистрировали Mad Devs в качестве компании. В частности, я побежал в этот подход более 10 лет назад в другой компании, где я работал системным администратором.
Вернувшись тогда, этот термин еще не существовал, но люди, включая себя, уже применили еще не формализованные правила и принципы, которые стали известны как DevOps:
- непрерывная интеграция;
- Автоматические поставки;
- ответственность каждого члена команды для продукта;
- прямое общение с заказчиком;
- Сбор и анализ метрик бизнеса/приложения;
- Документация и т. Д.
На самом деле, все это было логическое расширение практики, перечисленных в Agile Mainifeesto, и началось с того момента, когда разработчик перестал писать код для localhost.
Схема DEVOPS, представленная Атласской спиной, то все еще актуальна сегодня. По сути, это современный цикл разработки и доставки продукции, который также включает в себя свою операцию после запуска.
ERA Pre-DEVOPS: стена между администраторами и разработчиками
Долгое время операция продукта была отделена от разработки и разработчиков. Это было сделано некоторыми необитаемыми злыми существами, называющими себя Sysadmins. Сысадминс не участвовал в разработке и общении. Они получили кодовые пакеты из отверстия в стене и пытались где-нибудь запускать этот код, крича четырехбуквенных слов. Каждая попытка запуска была болезненной. Им пришлось потратить несколько дней, уставившись на журналы, ищет непонятную ошибку, профилированные запросы базы данных, застряли в stroace и т. Д. Позже оказалось, что необходимо только определить новую переменную среды или добавить новый параметр на конфигурацию: это был только разработчик, который не смог предупредить администратора, которому было только известно о имени продукта, и тот факт, что это был написан в PHP …
Как я начал в качестве инженера DEVOPS 10 лет назад
Возвращаясь в ностальгическое прошлое: когда я начал делать работу администратора в моей команде 10 лет назад, я не ставил в подвал от других людей, таких как стереотипный админ. Напротив, я получил рабочее место в гуще разработчиков. Это был момент, когда я начал в качестве инженера DevOps. В то же время я узнал, что, несмотря на важность знаний и навыков, даже более приоритетное внимание следует уделить коммуникации и способности напрямую влиять на продукт с позиции операций. Я имел право на объект и озвучивать свои проблемы, и разработчики смогли передать или отрегулировать свои требования задолго до доставки. Если ваши администраторы попробуют это, они никогда не согласятся заняться местом в подвале!
Это быстро стало ясно, что, когда дизайн, разработка продукта и операция рассматриваются вместе, это действительно выгодно. Когда все отвечают за продукт и знают, где, как, и что запускается в производственной среде, предоставляя разработчику с доступом к «производству», больше не является проблемой. Конечно, ни OPS, ни разработчики не должны быть там без серьезной потребности, но вернулись тогда, это был культурный шок — разработчик вошел в систему, и оно не упало! Это определенно невозможно, когда вы строите стену между вашими Devs и Ops.
Но если DevOps является процессом Agile Development с фазой эксплуатации, добавленной к нему, то кто эти инженеры DEVOPS? Что в списке основных обязанностей в мире DevOps? И последнее но не менее важное,
Кто идеальный лидер команды DevOps?
Эта роль в команде может быть захвачена профессионалом среднего уровня, независимо от названия или профессии работы (мы можем рассмотреть разработчики, администраторы или даже персонал QA). Основная цель существования DevOps состоит в том, чтобы заполнить дыру в цикле непрерывной интеграции, доставки и эксплуатации продукта.
По моему субъективному мнению, лучше, когда дежопт возглавляет кого-то с фоном администратора (но не «любой ключевой» специалистом). В этом случае этот человек будет обрабатывать нагрузку команды, связанную с низкоуровневыми вопросами, такими как обновление базы данных, управление конфигурацией или любые другие инфраструктурные вещи, которые могут отвлекать или раздражать разработчиков. Я также привел бы еще один момент, чтобы оправдать начало администратора как свинцом DEVOPS: с ростом и развитием продукта команда DEVOPS также начинает расти и развиваться. Это потребует больше времени и усилий, и если разработчик ведет команду DEVOPS, этот разработчик начнет приклеить в разработке. Мой последний момент в пользу команды Admin-LED заключается в том, что уровень начала ниже для администратора, поэтому это означает более быстрый запуск.
Что нужно знать? Список критических навыков Madops
Что DEVOPS знают и уметь делать? Мы придумали наш собственный список требований к инженерам DEVOPS. Отказ от ответственности: Я не буду список всех точек здесь. Я обобщу основные навыки, которые они должны обладать.
Принципы гибкого развития. Это один из самых важных навыков в современном мире развития (и особенно удаленного). Это включает в себя не только возможность отличить канбан от Scrum, но и возможность общаться с командой, понять ценность для клиента, отслеживать время, а также создавать читаемые рабочие журналы, отчеты о резюме и прозрачную документацию.
Автоматизация + все как код. Вы должны избавиться от руководства «Обезьяна» как можно скорее. В настоящее время есть инструмент практически для каждой рутинной задачи. Если вы не смогли найти готовый инструмент, вы всегда можете использовать Python и Bash, чтобы написать его для себя. Например, если вам нужно создать изображение VM, затем используйте Packer. Если вы настраиваете 10+ хостов, продолжайте Anibile. Если вы создадите кластер Kubernetes в Google Cloud Platform или работайте на CDN на Amazon, сделайте свою жизнь проще с террафом. Все должно быть автоматизировано, от загрузки нового голого-металлического сервера над сетью для развертывания нового контейнера в существующий кластер. Код, который вы пишете, должны быть воспроизведены и IdEmpotent. Обязательства должны быть оправданы задачей в трекере и подчиняться томерию выше.
Облако и гибридные архитектуры. В настоящее время мы видим, что компании стремятся не зависеть от одного поставщика облаков (и у них есть основания для этой проблемы). Вы не должны быть вентилятором и евангелистом только одного решения для облака. Различные части обслуживания могут работать на AWS, Heroku и других IAAS, PAAS и SAAS. Необходимо найти наиболее выгодное решение и иметь возможность мигрировать обслуживание между платформами в адекватный период времени. Не забывайте, как упомянутую, которую я упомянул, чтобы получить миграцию менее болезненной.
Масштабируемость и высокие требования к доступности. Важно знать о допуске бизнеса к простоянию и потере данных за определенный период и т. Д. Нет бессмысленно, чтобы обеспечить высокую доступность для ресурса, который может быть в течение 24 часов без серьезного ущерба для бизнеса. В то же время, почасовое время простоя на другом ресурсе может стоить больше, чем на его полную горячую резервную копию, оплаченную за год заранее. Расширение вверх стало намного проще с облаками и контейнерами. Однако как инфраструктура, так и сама услуга должны быть готовы к масштабу (здесь я должен упомянуть наиболее распространенную боль в использовании местного хранилища для объектов).
Мониторинг и оповещение. Для ретроспективных, прогнозов и реакций необходимо собрать все доступные метрики для вашей системы, приложения и бизнеса. У команды должны быть глаза. Нет универсального решения для мониторинга. Каждый облачный сервис или платформа предлагает свой собственный набор доступных метрик и сигналов тревоги, но очень часто, используя только одно решение недостаточно. Вы можете использовать внешние системы, такие как Librato или DataDog или создают пользовательскую службу мониторинга на вершине PROMETHEUS. Все основано на бюджете, времени и задачах.
Безопасность. Обеспечение безопасности не является основной ответственностью инженера DEVOPS. Однако знание оснований необходимо. SSL на конечных точках, нет * в политиках, нет публичных или открытых ведрах, шифрование для раздела, закрытые брандмауэры и секьюритизированные группы, MFA и т. Д. В дополнение к этому, DEVOPS должны работать с отделом безопасности для автоматизации процессов и быстро применить новые политики безопасности для услуг.
Что, если все, кажется, работает без инженера DEVOPS?
Что может сделать Expons Expert, если все, кажется, настроен и работает? Допустим, разработчики настроили среду, выяснили, как запустить базу данных и создал автокалую группу. В качестве альтернативы, даже проще, чем это, скажем, что они запустили приложение на Heroku, добавили необходимые дополнения и могут хорошо спать. Есть некоторые оповещения и метрики, и все выглядит хорошо.
В этом случае я бы рассмотрел следующие проблемы.
Поскольку все обычно делается вручную, невозможно воспроизвести архитектуру или восстановить часть этого, если у вашего облачного поставщика есть проблемы.
Затраты высоки из-за отсутствия контроля над потреблением ресурсов. Многие вещи могут быть заброшены однажды сконфигурированы, но их все еще оплачены. Обычно быстрый запуск является приоритетом, поэтому во многих случаях нет никаких исследований для расходов и сравнения различных предложений и альтернатив. Там нет зарезервированных экземпляров заранее.
Процесс развертывания не совсем хорошо установлен. Там нет практики последовательного тестирования. Интеграционные тесты редко на месте. Тестирование делается локально разработчиками, если тесты когда-либо работают вообще.
Есть странные ошибки, которые появляются только в производстве и не могут быть возобновлены локально. Это влияет на доверие клиента в ИТ-отделе, которое должно участвовать в постоянных битвах с владельцем продукта проекта.
Проблемы производительности происходят без четкиных причин. Здесь есть Spoffs и там, обходные пути и ремонт занимают много времени, что замедляет уже медленный процесс разработки еще больше.
Существует необходимость перенести свой сервис на другую платформу и подготовить нынешнюю архитектуру для быстрого роста.
Уведомления о мониторинге приходят слишком поздно, чтобы принять меры. Команда будет последнему знать о проблеме простоя. В худшем случае это происходит после того, как пользователи и клиент замечает его.
Этот список неполный. Я мог назвать еще много вопросов. Некоторые из них могут быть решены своевременно разговору, а некоторые требуют изменения в процессе доставки и развития. Чтобы продолжить эти изменения, вам может понадобиться чисто технические навыки или знание определенной платформы. В любом случае, даже краткое участие квалифицированного DevOps Pro в проекте окажет положительное влияние на ваш процесс команды и разработки в целом.
Ранее опубликовано в Maddevs.io.
Оригинал: «https://dev.to/maddevs/devops-at-mad-devs-a-list-of-skills-practiceswe-use-to-train-our-devops-internally-dd3»