Цель любого devopsa – оставить себя без работы

На vc активно обсуждались пара статей про такие размытые понятия как devops и full-stack разработчик. Я вам не скажу за полный стэк, стэк тот очень уж велик. Но и разработчик, и даже тестер, знают за devops’а молодца.

В закладки

Кто такой девопс (если мы говорим о человеке, а не «наборе практик») можно описать двумя способами. Корректным и еще одним:

  • Новый вид сисадмина. Только вместо скилла замены картриджа, он научился безболезненно выкатывать на прод бесконечные обновления/дополнения любых продуктов и сервисов

  • Разработчик, которому быть джуниором не позволяет религия, а сеньором лень/компетенции

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

Примеры

Продаван, ЦКП — деньги в кассе/контракты. Приносит прибыль прямо.

Секретарь, ЦКП — время руководителя. Приносит прибыль косвенно, если руководитель не делает ничего хорошего в освободившееся время, то работа секретаря бессмысленна.

Разработчик какого-нибудь инди-шедевра, ЦКП — оплата внутри приложения или в AppStore. Приносит прибыль прямо.

Разработчик ЯндексТакси, ЦКП — стабильная работа приложения и удовлетворенность пользователей. Приносит прибыль косвенно. Подведут водители или продакты включат в спринт плохую идею и даже идеальная работа разработчика не принесет денег.

ЦКП devops’a?

Если теряешься в догадках нужен ли тебе любой специалист, просто ответь на вопрос нужен ли твоему бизнесу его ЦКП. Значит решение берем/нет devops’a в штат зависит от задач, которые ты хочешь решить. Банальность? Да, но как отправная точка понадобится.

В наиболее частом случае (имхо + опрос devops'ов) основная задача — это поддержание бесперебойной работы и накатка на прод бесконечных обновлений. Обновляется ли сайт, приложение или математическая модель вторично. Главное тут, что работа сводится к двум моментам:

  1. Обеспечь стабильность системы

  2. Итерационно производи одни и те же действия в соответствии с графиком обновлений

Это и есть ЦКП devopsd’a. Если продолжать мыслить в деньгах, то первый пункт сразу хочется отдать на аутсорс, верно? Мое мнение, так рано или поздно случится в 90% компаний. Вспомните время, когда bash еще был торт и там напалмом жег сердца людей zog. Сисадмины были везде и делали все, от картриджа в принтер, до поменять шрифты на сайте. Со временем аппетиты профессионалов росли. Им на смену приходили джуны с ЧСВ до небес, но качественно работать из них могли (или хотели) единицы. Сложность обслуживания наиболее популярных систем снижалась в ответ на запрос рынка, явление «сисадмин на час» стало массовым, появились и активно захватывали рынок аутсорсинговые компании.

Кнопка «сделай хорошо» должна заменить devops’a. Дело не только в экономии

Вторая задача «раскатай на прод обновления» итерационна, зачастую имеет четкое расписание или легко прогнозируема, и главное ОДНОТИПНА.

Расскажу на живом примере.

Дано: Hadoop кластер, который понимает java/scala и хранит много полезных данных разной степени структурированности. Данные храним не красоты ради, а прибыли для. Чтобы получить прибыль необходимо создать какую-либо мат. модель и запустить её на кластере. Тут мы получаем 3 второстепенные задачи:

  1. Выгрузить часть данных для создания/проверки модели

  2. Переписать модель с python на java/scala

  3. Раскатать переписанную модель на прод

В теории все просто, но на практике очень весело:

  • Devops выгружает данные по принципу «я так вижу». Чаще всего логично, например, убрав тестовые записи. Аналитика, естественно, никто в нюансы не посвящает. Может проскочить что-то реально важное. Есть тут продакты? Списывали из-за «так вышло» 100-1000 человекочасов не самых дешевых специалистов?

  • У модели есть KPI по точности. На локальной машине аналитика все отлично, но переписанная модель KPI не достигает. Проблема в модели или некорректной пересборке? Выгрузить все данные на локальную машину чтобы проверить оригинальную модель, естественно, невозможно

  • Критичное увеличение time-to-market. На одно согласование витрины данных может уйти больше суток. А на мемасики в «жизненно необходимом» для парного программирования чатике до 50% рабочего времени (ребята, я вас прикрыл. Мы то знаем что до 95%)

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

Задача итерационна и однотипна? Они потратили время и автоматизировали её. Теперь аналитики сами берут данные в пару кликов и прекрасно понимают, что взяли. Модели не переписываются, на прод они уходят как создавались — на python. Все любимые инструменты, типа Jupiter, доступны в новом интерфейсе.

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

Вопрос к vc. А если честно-честно и не предвзято, Вы знаете devops’ов, которых нельзя заменить? Конечно, в компаниях где их работа не основная услуга или компания не размером с большую "тройку с полтиной" телекома?

Если кто-то знаком с озвученными проблемами при работе с hadoop — по коду "vc_without_dev-ops" может дать бесплатную триалку нашего продукта. Единственное условие, реальное использование и фидбек. Заявку с кодом оставлять тут

ПС. Власть роботам!

#devops #hadoop

Материал опубликован пользователем. Нажмите кнопку «Написать», чтобы поделиться мнением или рассказать о своём проекте.

Написать
{ "author_name": "Руслан Зиганшин", "author_type": "self", "tags": ["hadoop","devops"], "comments": 2, "likes": 3, "favorites": 5, "is_advertisement": false, "subsite_label": "hr", "id": 52087, "is_wide": false, "is_ugc": true, "date": "Thu, 29 Nov 2018 14:01:23 +0300" }
{ "id": 52087, "author_id": 174880, "diff_limit": 1000, "urls": {"diff":"\/comments\/52087\/get","add":"\/comments\/52087\/add","edit":"\/comments\/edit","remove":"\/admin\/comments\/remove","pin":"\/admin\/comments\/pin","get4edit":"\/comments\/get4edit","complain":"\/comments\/complain","load_more":"\/comments\/loading\/52087"}, "attach_limit": 2, "max_comment_text_length": 5000, "subsite_id": 199121, "possessions": [] }

2 комментария 2 комм.

Популярные

По порядку

2

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

Ответить
0

Вот согласен — чем меньше отдельных специалистов на вспомогательные (пусть и жизненно необходимые) задачи, тем лучше.

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

Но в приведенном примере, с hadoop'ом и мат. моделями экономика говорит о другом. Ты хочешь найти человека, который может в статистику и python (его готовые библиотеки заменить сложно). Задача сложная, но решаемая. А вот если ты еще навесишь в необходимые скиллы java/scala, то в бюджет вписаться будет оооооочень сложно

Ответить
0
{ "page_type": "article" }

Прямой эфир

[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox_method": "createAdaptive", "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfl" } } }, { "id": 2, "label": "1200х400", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfn" } } }, { "id": 3, "label": "240х200 _ТГБ_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fizc" } } }, { "id": 4, "label": "240х200_mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "flbq" } } }, { "id": 5, "label": "300x500_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfk" } } }, { "id": 6, "label": "1180х250_Interpool_баннер над комментариями_Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "ffyh" } } }, { "id": 7, "label": "Article Footer 100%_desktop_mobile", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjxb" } } }, { "id": 8, "label": "Fullscreen Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjoh" } } }, { "id": 9, "label": "Fullscreen Mobile", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjog" } } }, { "id": 10, "disable": true, "label": "Native Partner Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyb" } } }, { "id": 11, "disable": true, "label": "Native Partner Mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyc" } } }, { "id": 12, "label": "Кнопка в шапке", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "bscsh", "p2": "fdhx" } } }, { "id": 13, "label": "DM InPage Video PartnerCode", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox_method": "createAdaptive", "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "flvn" } } }, { "id": 14, "label": "Yandex context video banner", "provider": "yandex", "yandex": { "block_id": "VI-223676-0", "render_to": "inpage_VI-223676-0-1104503429", "adfox_url": "//ads.adfox.ru/228129/getCode?pp=h&ps=bugf&p2=fpjw&puid1=&puid2=&puid3=&puid4=&puid8=&puid9=&puid10=&puid21=&puid22=&puid31=&puid32=&puid33=&fmt=1&dl={REFERER}&pr=" } }, { "id": 15, "label": "Плашка на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byudx", "p2": "ftjf" } } }, { "id": 16, "label": "Кнопка в шапке мобайл", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byzqf", "p2": "ftwx" } } }, { "id": 17, "label": "Stratum Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fzvb" } } }, { "id": 18, "label": "Stratum Mobile", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fzvc" } } }, { "id": 19, "label": "Тизер на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "p1": "cbltd", "p2": "gazs" } } } ]
Приложение-плацебо скачали
больше миллиона раз
Подписаться на push-уведомления
{ "page_type": "default" }