Русский
Русский
English
Статистика
Реклама

Devopsconf

DevOps с человеческим лицом

04.08.2020 14:20:22 | Автор: admin
Мы часто рассказываем, что полезного услышали на конференциях, реже о спикерах будущих мероприятий. И почти никогда не показываем людей, которые стоят за кулисами каждого хорошего выступления и дирижируют ансамблем тем. Пора это менять, потому что то, кто и с каким подходом готовит программу, может рассказать о конференции гораздо больше, чем список тезисов.

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


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

В этой беседе участвовали четверо: Тимур Батыршин, Дмитрий Зайцев, Валерия Пилия и Мона Архипова. И так удачно совпало, они все смотрят на DevOps немного под разными углами и приносят разные акценты в программу конференции.

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

Тимур Батыршин: Можно сказать, что путь в программный комитет DevOpsConf начался в 2012-2013 году с сообщества Hangops Ru (Hangops можно расшифровать как Ops на Hangouts, именно в Hangouts проводились регулярные беседы об индустрии). Постепенно сообщество выросло за пределы чата, и основной костяк энтузиастов стал организовывать DevOpsDays Moscow. Дима и Лера тоже участвовали, а больше всех двигал конференцию Саша Титов (osminog).

Дмитрий Зайцев (bhavenger) развивал DevOps- и SRE-практики, когда это ещё не было модным. Совмещал их с ITIL и Cobit, пока те ещё были в моде. Имеет опыт работы в gamedev, adtech, bigdata, fintech, marketing. Является одним из организаторов DevOpsDays Moscow, DevOps Moscow, Hangops Ru. Сейчас Head of SRE во flocktory.com.

Дмитрий Зайцев: Году в 2015 я как-то оказался в чате Hangops, вскоре стал участвовать в записи и организации видеопосиделок. В 2017 Саша Титов обратился ко мне с идеей сделать конференцию. Тогда она называлась RootConf и была больше для системных администраторов. Я как раз был среди тех, кто пытался её изменить. В 2018 это удалось, мы перезапустили конференцию уже под названием DevOpsConf, сместив акцент с тулинга для сисадминов на DevOps: что это такое, что мы хотим от этого подхода, чего хочет рынок от специалистов в DevOps.

Валерия Пилия работает во flocktory.com Infrastructure Engineer, занимается поддержкой инфраструктуры на AWS с k8s. Участвовала в адаптации русскоязычного издания книги DevOps Handbook и является одним из организаторов митапов DevOps Moscow и конференции DevOpsDays Moscow 2019. В программный комитет DevOpsConf пришла два года назад, как и другие участники беседы с подачи Александра Титова.

Валерия Пилия: Я присоединилась к программному комитету конференции, потому что мне было интересно узнать, как это устроено изнутри. У меня даже догадок не было, как, например, распределяются задачи между программным комитетом и организаторами события. Мною двигало любопытство и мне дали возможность его удовлетворить. И это та возможность, от которой не отказываются.

Мона Архипова (Mona_Sax) COO sudo.su (МИРЦ), до этого занимала руководящие и экспертные должности в области безопасности и IT. В ежедневной работе активно использует DevOps-практики и тоже начинала, когда это еще не было мейнстримом. Мона присоединилась к программному комитету после отличного доклада Как (вы)жить без отдела безопасности о том, что безопасность это ответственность каждого человека. Теперь несет безопасность в массы не только на конференциях по безопасности, но и на DevOps Live.

Мона Архипова: Когда Саша Титов пригласил меня в ПК, я решила, не можешь предотвратить возглавь. К сожалению, большинство IT-конференций не уделяет внимание безопасности и получается вжух-вжух и в продакшн, а потом бывает очень больно от того, что что-то утекло или выставлено без пароля. Хотелось бы насадить в IT понимание того, что безопасность нужна, но важно искать баланс между безопасность и скоростью DevOps.

Безопасность и DevOps


Как вы уже поняли, Мона продвигает DevSecOps и в этом году безопасности на конференции станет больше. Но это не будет конференция по безопасности внутри DevOps Live все выступления рассчитаны на любой уровень экспертизы, то есть подойдут тем, кто только начинает задумываться о безопасности. Но и тем, кто уже работает в этом направлении, покажем некоторые неочевидные моменты и полезные инструменты.

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

DevOps системным инженерам: инструменты и не только


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

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

При этом нужно иметь в виду, что есть инструменты, которые очень быстро развиваются, и подходы, которые меняются чуть медленнее. Мы будем говорить и о том, и о другом:

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

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

Валерия Пилия: Было бы наивно ставить перед собой исключительно просветительскую цель. Она, конечно, заложена в конференциях by design, но невозможно научить кого-либо против воли. Зато можно заинтересовать, заставить удивиться и усомниться. Помочь узнать что-то новое, что, может быть не сразу, но пригодится и получится что-то очень классное.

Мона Архипова: Я в свою очередь привношу старые добрые вещи. По одной простой причине: хотя область и молодая, уже успело смениться поколение тех, кто занимается инфраструктурой, DevOps и т.д. Нынешние джуниоры уже не слышали про этот наш ITIL и другие страшные аббревиатуры. Поэтому, мне кажется, важно не только рассказывать о новом, но и напоминать, что старые практики никуда не делись, они все еще актуальны. Новые инструменты безусловно облегчают жизнь, но фундамент и база тоже должны быть.

Дмитрий Зайцев: Ждать от новых людей в индустрии, что они будут изучать ITIL, я бы не стал. Кажется, основное, что нужно было взять из ITIL, естественным образом перешло в современные практики. С другой стороны, странно, если вы работаете в IT и ничего не читали об Extreme Programming, хотя этой методологии уже больше двадцати лет.

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

Мона Архипова: Рано или поздно любой технический специалист сталкивается с тем, что решения его проблемы нет в гугле. И вот тут и нужна фундаментальная база. Да и вообще, стильные модные молодежные системы управления логами изобрели, если не ошибаюсь, в 1969 году.

DevOps в продуктовой разработке


Идея конференции DevOps Live посмотреть на DevOps с разных сторон, в частности с точки зрения продуктовой разработки.

В рамках DevOps-подхода технические решения должны быть связаны с задачами бизнеса. Но инженеры часто не очень хорошо себе представляют, в чём эти задачи состоят. Например, считают, что раз в DORA Report написано, что крутые организации релизятся по несколько раз в день, то для бизнеса важнее всего time-to-market.

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

Для DevOps Live Тимур Батыршин и Андрей Шорин поговорили с Product Owner'ам. Оказалось, что time-to-market как его понимают инженеры частые релизы им не очень-то и важен. Важнее предсказуемость, которая достигается, когда продуктовые команды, команды разработки, эксплуатации и менеджмент работают над общими целями и понимают друг друга. Поэтому на конференции уделим внимание тому, как договариваться, устанавливать доверие, работать с токсичностью и т.д.

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

Валерия Пилия: Когда человек начинает чуть больше понимать себя как профессионала и задумывается, что он хочет от работы в контексте все своей жизни, оказывается, что это не целыми днями ставить Kubernetes. Потому что: А зачем?. Тут и до экзистенциального кризиса недалеко.

Хорошо искать ответы в комфортной среде людей, которые тоже через это прошли, уже подумали об этом и могут поделиться. Обмен опытом из разряда Я выжил, и вы выживете является одной из целью конференции, в том числе и в вопросе самоопределения в профессиональном развитии.

DevOps на Chief-уровне


Внедрение DevOps-практик в компании однозначно не обходится без активного включения CTO, то есть среди аудитории DevOps Live есть технические руководители. ПК решили определить, какие боли у CTO и как можно помочь их решить, потому что оказалось, что на современных IT-конференциях такого контента мало. Чаще всего рассматриваются более частные вопросы отдельных команд или технических задач.

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

Человек с приставкой Chief помимо технических решений занимается еще и такими увлекательными вещами как: подсчет стоимости владения и затрат на инфраструктуру, планирование технологического стека, capacity management и прочее, что выпадает из поля зрения большинства.

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

Взаимопонимание во главе угла


Как видите, все темы взаимосвязаны и являются частью пазла. Не нужно думать: Ага, продуктовая разработка меня не интересует, до СТО мне еще далеко остается только часть с инженерными практиками. Это не так.

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

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

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

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

Всё это онлайн


Тема, о которой мы не могли не поговорить, онлайн, куда пока что переместились все мероприятия. Мы в Онтико уже провели три тестовых и три больших онлайн-конференции (как они прошли можно посмотреть в статье о KnowledgeConf), не всё так страшно. Но мы понимаем, какие могут быть сомнения, более того, они есть даже внутри ПК.

Две главные проблемы онлайна на наш взгляд:

  • Конкуренция за внимание, потому что в отличие от очной конференции, на которую приезжаешь в специальной место, на онлайн-конференции участники остаются в привычном окружении со всеми отвлекающими чатами и прочими соцсетями.
  • Отсутствие живого общения со всеми его невербальными составляющими.

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

Валерия Пилия: Онлайн на самом деле дает участнику дополнительные неожиданные возможности, которых в офлайне нет. Например, если вы пытались задать вопрос спикеру после доклада в кулуарах, то знаете, что часто он уже окружен людьми, которые его что-то спрашивают. Приходится ждать, пока поток иссякнет, и надеяться, что у спикера еще останутся силы и на вас. И вы бы может и хотели что-то спросить, но в данных обстоятельствах махнете рукой.

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

Мона Архипова: Это удобнее и для спикера, потому что есть возможность как-минимум не стоять у флипчарта, а сидеть, а еще лучше иметь под рукой кофе, перекус и вообще чувствовать себя комфортно.

Другое не самое очевидное преимущество онлайна в том, что мы не ограничены не только пространством (например, Инфопространством), но и временем. Весной на собственном опыте мы поняли, что на онлайн-конференции совершенно невозможно оставаться вовлеченным восемь часов подряд. Зато у нас есть возможность для маневра: мы можем распределить наши мероприятия на несколько дней по несколько часов. Расписание будет всё еще довольно плотным, чтобы участники были погружены в контекст, но несколько дней по несколько часов в удобное время обеспечит комфортную скорость для восприятия информации.

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

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

Дмитрий Зайцев: В онлайне проще собирать следы обсуждений. Если кулуарное общение переходит в чат или зум, то его результаты не остаются только в виде обрывков в головах участников, но доступны и другим людям и к ним можно вернуться через время простым поиском по ключевым словам.

Поэтому как таковой нетворкинг онлайн может быть даже эффективнее, а как его оживить, мы тоже знаем. Остается только опасение, что к концу сентября все мы в принципе пресытимся онлайном, но оно нейтрализуется тем контентом, который готовит ПК. И разноплановостью.

DevOps Live получается:

  • Вот такой ширины с точки зрения форматов: будут доклады, мастер-классы, воркшопы, дискуссии, групповые и индивидуальные консультации и это еще не все карты раскрыты.
  • Вот такой высоты с точки зрения аудитории: ждём на конференции инженеров разных IT-специальностей, безопасников, CТО, менеджеров продуктов и владельцев бизнеса.
  • А еще и глубины, потому что хардкорные вещи тоже обязательно будут.

Надеемся, это и наша со спикерами тщательная подготовка позволит конференции победить в конкуренции за внимание даже работу и соцсети.

Мы знаем, как трудно выделить время, чтобы, сидя дома, начать что-то смотреть, вовлекаться в это, думать, дискутировать и общаться с другими людьми. Ради таких людей и хочется делать реально классный контент, искать кого-то, договариваться, придумывать новые форматы. Приходите, мы вас ждём!

DevOps Live пройдет в два этапа 29-30 сентября и 6-7 октября. До 15 августа еще можно подать доклад или забронировать билет перед повышением цены.

Следите за обновлениями в телеграме или рассылке будем сообщать о принятых спикерах и открывать подробности форматов.

Всё, что осталось за кадром в этой беседе, можно будет уточнить 5 августа в 18:00 на онлайн-встрече программного комитета с докладчиками и сочувствующими. Подключайтесь и задавайте свои вопросы, уточняйте темы для заявок или давайте программному комитету задание закрыть свой запрос. Встреча открытая, но нужно зарегистрироваться, чтобы мы прислали ссылку.
Подробнее..

Кому полезна DevOpsConf рассвет эры поиска в мире после начала пандемии

18.03.2021 10:09:11 | Автор: admin

Прошлый год стал немалым испытанием для многих из нас, но дал он и толчок к новому восприятию, выстраиванию новых рабочих процессов и возникновению новых вопросов. Что находится на современном срезе индустрии DevOps и каковы тренды будущего? Об этом председатель программного комитета конференции DevOpsConf 2021 Артем Каличкин рассказал во время интервью подкасту DevOps Дефлопе, а мы перенесли беседу в текстовый вариант.

Из этой статьи вы узнаете о том, кто в российском девопсе идет в ногу со временем, или даже немного опережает мировых лидеров, посмотрите на особенности командных топологий и задумаетесь о том, кого еще нужно подружить, кроме Devов и Opsов, для того, чтобы все работало отлично. А еще заглянете в закулисье DevOpsConf 2021.

Расскажи немного о себе.

С 2004 года я занимаюсь вопросами отказоустойчивости высоконагруженных систем и поддержкой mission critical systems. В индустрии, в целом, работаю уже 22 года. Последние три года я являюсь техническим директором сервисов Faktura.ru это интернет-банк как для физических, так и для юридических лиц.

Впервые на публичной конференции я выступил в 2014 году. Это был Город IT в Томске, и на ней я рассказывал про паттерны/антипаттерны отказоустойчивых приложений. Я постоянно говорю про отказоустойчивость, потому что это непосредственно имеет отношение ко всему, что касается Operations.

Мне очень близок вопрос дружбы Devов и Opsов. Если что-то не так, Opsы забывают о сне. А я, как руководитель, обычно стараюсь сделать так, чтобы спокойный сон закончился у всех причастных, чтобы все были в одном положении.

Потом я выступил на RootConf и рассказал, как мы, в рамках энтерпрайзной компании, ставили сервис на рельсы DevOps. Тогда еще доклады о том, есть ли devOps в энтерпрайзе, не были в тренде.

А дальше пошло-поехало: каждый год я выступал на трех-четырех конференциях. Последние четыре года в программном комитете DevOpsConf, и в 2020 был избран председателем программного комитета.

Есть ощущение, что сегодня в России индустрия финтеха интенсивно развивается.

Да, действительно это так. Финтех в России очень динамично развивающаяся отрасль, которая подстегивается, в том числе, и инициативами Центробанка. В качестве примера можно привести систему быстрых платежей по номеру телефона, раньше это было доступно только клиентам Сбера, но с прошлого года есть СБП, и это доступно всем.

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

Развивающиеся экосистемы

Какие отрасли, на твой взгляд, идут в российской индустрии в ногу со временем, а возможно, даже опережают зарубежные рынки? Кроме финтеха, конечно. С ним всё понятно. За рубежом самая большая новость последних лет была о том, что появилась Apple-карта. А мы этим пользуемся уже довольно давно.

Сейчас в России многие ориентированы на движение в сторону супер-приложений и супер-сервисов B2C. Сегодня вперед вырываются те, кто задумывается о цифровизации клиентского опыта.

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

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

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

Кому полезна DevOpsConf

Мы поговорили о том, каково текущее состояние индустрии и о том, куда мы движемся. Исходя из парадигмы цифровизации пользовательского опыта и формирования больших экосистем, хочется понять, как быть молодым разработчикам? И вопрос с другой стороны: кому полезна DevOpsConf?

Я преподаю в Новосибирском государственном университете на факультете информационных технологий. И всегда пытаюсь донести до своих студентов: пока не взяли ипотеку, попробуйте замутить что-то свое, ведь сейчас для этого есть масса возможностей, в том числе благодаря App Store и Google Play. Каждый может попробовать написать что-то, что зайдет аудитории, не выходя из дома.

Вернемся к конференции и оценке состояния отрасли. В этом году Agile-манифест, по-моему, отпраздновал свое двадцатилетие. И мы сегодня находимся в том состоянии отрасли, когда все должны быть максимально нацелены на поиск. Казалось бы, история Agile-манифеста о том, что нужно быть гибким, адаптироваться, или умереть, уже всем приелась. Но, по факту, мы еще недостаточно научились быть гибкими. Стоит лишь вспомнить 2020 год со всеми его особенностями. COVID 2019 уже назвали главным цифровизатором. И он показал, что мы еще недостаточно трансформировались.

С моей точки зрения, основной тренд современности это поиск. Поиск форматов взаимодействия и управленческих форматов, поиск технологических решений. Пару лет назад говорили о том, что Docker это конец истории. Сейчас мы уже думаем: да ну, наверняка будет что-то еще. Продолжается поиск решений для повышения степени иммутабельности кода, сборок, окружений, средств изоляции. Это нужно чтобы снижать или хотя бы сдерживать рост количества ошибок в усложняющихся экосистемах. Их ищут для того, чтобы сделать клиентский опыт еще более комфортным.

Зачем делать программу, которая редко ломается? Чтобы клиент был доволен. Зачем выстраивать пайплайн, который позволяет быстро выкатывать фичу? Для того, чтобы построить FastTrack, чтобы быстро понимать, что мы сделали что-то не то, исправили это, а клиент получил новые возможности, соответствующие изменяющимся потребностям.

У меня на работе до сих пор сотрудники спрашивают о том, как мы будем работать: удаленно или в офисе? Ответов нет, но наверняка как раньше работать уже не будет никто.

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

Мы находимся в периоде пересмотра, поэтому основная цель DevOpsConf 2021 рассмотреть вопросы вокруг взаимодействия разных цехов в рамках производства ПО, вокруг доступности, отказоустойчивости SRE-практик. Потому что все это аффектит клиентский опыт. В этом году мы в явном виде ввели в тематику контекст топологии. Например, прозвучал вопрос о том, кто такой тимлид в DevOps команде. Мы его услышали и постараемся дать ответ.

Я надеюсь, что конференция будет не суммой констатаций каких-то вещей, отраслевых решений, очевидностей, а станет окном, которое открывает сознание. Что ее участники осознали нынешнюю эру поиска и начали в ней активно участвовать. На нашей конференции есть замечательный постоянный докладчик Андрей Квапил, который рассказывает про Kubernetes, но всегда задает вопрос: Почему вообще это с ним нужно делать, что за извращение?. И это искусство, в определенном смысле слова.

То есть основная цель DevOpsConf в 2021 показать все разнообразие возможностей для команды и зародить идею, что мы все динамично развиваемся, это мир возможностей, и что будет завтра непонятно? Это все можно будет посмотреть, потрогать на конференции, позадавать вопросы спикерам оффлайн?

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

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

На любой конференции я воспринимаю себя не только в роли докладчика, но в первую очередь, в роли участника. Докладчик я всего на полтора часа (40 минут доклада, и еще где-то час нужно отвести на вопросы в дискуссионной зоне), все остальное время я участник. Если я не участвую, значит, я зря потратил время и деньги.

Мы стараемся отобрать темы, которые должны побудить к живым обсуждениям. Надеюсь, что у нас будет максимальный состав, который только возможно собрать на конференции вживую. А мы уж постараемся максимально поддержать огонь в нетворкинге и кулуарах.

Темы конференции

На конференции будут подниматься вопросы про эксплуатацию, про надежность программного обеспечения разрабатываемого продукта, про скорость процессов поставки, про командное взаимодействие. Будут ли освещены на DevOpsConf вопросы продуктовой разработки?

Таких тем в явном виде нет. Но когда мы говорим про DevOps в широком контексте, они все равно затрагиваются. Не бывает growth hacking без FastTrack, не бывает growth hacking без возможностей ставить фичу по факту ее коммита и прогона автотестов.

Что такое DevOps? С точки зрения философии Dev и Ops должны не ругаться, а научиться договариваться. Но почему только Dev и Ops? На самом деле, все участники производственного цикла для того, чтобы он был эффективен, должны научиться договариваться.

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

Хочется, чтобы на конференцию пришли все участники процесса, чтобы посмотреть, что происходит с другой стороны. Есть ли цель в рамках конференции научить взаимодействию оба лагеря?

Это звучит прямо как миссия! Ровно такую цель мы старались реализовывать в рамках DevOps Life 2020. Там даже были прямые столкновения. Например, доклад о том, почему техдир не понимает продакта.

Очень важно начать с возникновения интереса к тому, что происходит в соседнем лагере за стенкой. И здесь мы переходим к моей философии малых команд.

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

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

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

А если я буду работать в большой команде, не уверен, что мотивация останется такой же сильной. Почему сейчас так часто говорят о цифровых трансформациях, в том числе, в энтерпрайзах и крупных компаниях? Что там происходит? Они вынуждены делиться на маленькие команды, потому что в большой команде с большой бюрократической системой интерес сотрудников в том, чтобы выполнить свои функциональные обязанности. А когда моя цель лишь в том, чтобы выполнить функциональные обязанности, никто не заставит меня интересоваться тем, что происходит за стенкой. Это две противоречащие установки.

Если мы работаем в парадигме малых команд, персонажа, не вовлеченного в общий процесс, перевоспитают. Либо, простите, от него избавятся. Жесткая закрытая позиция в малых командах обычно не жизнеспособна.

О командных топологиях

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

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

Навскидку, на DevOpsConf уже есть пара докладов, близких по тематике. Есть доклад о том, как используется Scaled Agile Framework, чтобы выстроить взаимодействие команд. Для меня это один из самых ожидаемых докладов из этой области.

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

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

Я не знаю великой истины о том, как наладить межкомандное взаимодействие. Но считаю, что нужно искать хороший способ, приняв эту историю как данность. Могу привести метафорический пример, который меня тревожит.

Меня пугает такое явление, как GraphQL: вроде бы, мы все пытались уйти от энтерпрайз-шины, от некого большого бэкенда, резались на микро-сервисы, но в итоге, как мне кажется, сами себя обманули и при помощи GraphQL создаем пятую колонну новый старый бэкенд.

Мне кажется, инфраструктурные и платформенные команды это что-то типа GraphQL, и меня это смущает. Во всех крупных Agile фреймворках есть подобные команды: в Nexus это infrastructure team, в SAFe system team, в LeSS undone work team.

То есть везде есть так называемые платформенные команды. Но в SAFe это норм, к ним относятся как к константе, а в Nexus и LeSS заявляется, что это переходный этап, и со временем они должны уйти.

Опять же про взаимодействие взаимодействовать нужно не только Dev и Ops, но и внутри Dev бэкендерам с фронтендерами.

На одном проекте мы выстроили взаимодействие фронтенда и бэкенда таким образом: специально брали задачу в один спринт и бэкенд, и фротненд. В начале спринта бэкенд формировал спеку, показывал ее всем фронтендерам. А те хейтили ее, ругались, расходились, через час собирались снова и решали, что делать дальше. Это был лучший, с моей точки зрения, процесс взаимодействия: только совместно, в рамках одного спринта, обязательно с ранним согласованием интерфейсов. Всякий раз, когда я вижу, что отходят от этой позиции, неизбежно потом начинается: А это он! А это он!.

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

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

Ожидаешь ли ты на DevOpsConf доклады об архитектуре приложения?

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

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

Простой пример: появились микросервисы. Разработчики этому рады, а классические Opsы совсем нет.

Архитектура аффектит жизненный цикл, и то, что одной стороне кажется откровением и спасением, другой приносит боль. Я видел это лично: когда у нас в одном из продуктов появились микросервисы, ко мне каждый день прибегали Opsы со словами: Артем, останови это немедленно! Пусть они прекратят!. Я выяснил, что они переживают о том, что невозможно будет читать логи, и предложил собраться всем вместе и решить эту проблему.

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

Доклады, которые хотелось бы увидеть

А что вообще ждет нас на конференции? Возможно, у тебя есть доклад, которого ты ждешь-не дождешься, чтобы послушать и обсудить его в зале?

Мне кажется, что наша конференция может стать ориентиром для того самого поиска и пересмотра, в эре которых мы находимся.

Есть тематика, которая, с моей точки зрения, по-прежнему освещается слабо, по-прежнему про нее говорится мало и разрозненно, по-прежнему нет попытки системного осмысления именно нашего, российского, опыта. Я говорю про SRE. Про SRE-практики у нас, к сожалению, в инфо-поле всех конференций, я слышу мало крутого, системного, из чего бы сложилась мозаика. Это по-прежнему остается набором практик и подходов.

Я сейчас выступаю не за то, чтобы превратить это в строго связанные процессы. Даже ITIL в 4 версии отошел от трактовки себя, как процессов жизненного цикла ПО. Но какая-то мозаика из этого набора должна появиться.

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

Поэтому тему SRE (Site Reliability Engineering) мне очень хочется прокачать. Я знаю, что у нас уже есть доклады по GitOps, по ChatOps. Это, конечно, не напрямую связано с SRE, но все же находится довольно близко. Я сам сейчас заявил доклад в названии которого значится, что SRE это тот же самый ITIL. Но уже в тезисах я напрямую говорю о том, что это то же самое, но не то же самое. По сути, речь идет о практике ITIL с человеческим лицом.

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

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

А что делать на конференции прожженным технарям? Я услышал про GitOps, про ChatOps. Будет ли Kubernetes?

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

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

Мы работаем над этим. И делаем все возможное для того, чтобы так и было.

Профессиональная конференция по интеграции процессов разработки, тестирования и эксплуатации DevOpsConf 2021 пройдет 31 мая и 1 июня в московской Radisson Slavyanskaya. Программа ожидается насыщенной! Готовы творить будущее devOps вместе? Спешите за билетами, их можно купить тут.

А уже 24 марта, 19:00 (МСК) состоится митап Настоящее и будущее DevOps. На нем поговорим о текущих задачах DevOps-инженеров и погрузимся в технические детали управления релизами бессерверных приложений (AWS) с помощью terraform. Чтобы получить ссылку на трансляцию, нужно всего лишь зарегистрироваться.

Хотите бесплатно получить материалы предыдущей конференции? Подписывайтесь на нашу рассылку.

Подробнее..

Антиформаты не-идеального DevOps Live

02.09.2020 16:16:09 | Автор: admin
Обычно на конференции по DevOps приезжает выступать передовой ТОП докладчиков, которые съели Docker и Kubernetes на завтрак и рассказывают о своем успешном опыте при наличии почти неограниченных возможностей корпораций, в которых они работают. На DevOps Live 2020 все будет немного по-другому.



DevOps стирает границы между разработкой и инфраструктурой, а DevOps Live 2020 размывает границы между докладчиком и слушателем. В этом году онлайн-формат позволяет отказаться от концепции докладов, в которых спикеры рассказывают как они использовали режима Бога в DevOps. У большинства из нас нет таких чит-кодов, а есть обычные стандартные проблемы при минимальных ресурсах. У большинства из нас DevOps не-идеальный его мы и хотим показать. Как это будет и что нас ждет, расскажем дальше.

Программа


В программе DevOps Live 2020 утверждены 15 активностей, а готовятся еще около 30 добавляем больше интерактива, например, перестраиваем доклады спикеров под онлайн-формат.

Программа рассчитана не только на дорогих нашему сердцу DevOps-инженеров и системных администраторов, но и на тех, кто принимает решения: на product owners, технических директоров, СЕО и тимлидов. Поэтому мы рассчитываем, что участники придут не только послушать а как у других, а с намерением что-то изменить в своей организации.

Всего будет 11 видов форматов:

  • доклады;
  • домашние задания;
  • мастер-классы;
  • дискуссии;
  • круглый стол;
  • исповедальня;
  • анкеты;
  • lightning;
  • холиварня;
  • кибер-полигон.

Доклады, мастер-классы и lightningи


Доклады не будут проходить в классическом онлайн-формате или в формате YouTube-вещания. Мы ориентируем докладчиков на повышенный уровень интерактива с аудиторией. Например, когда мы слушаем классический доклад и у нас возникает вопрос, то к концу выступления его можно забыть. Но у нас онлайн, а значит всё иначе.

На DevOps Live 2020 каждый участник сможет написать свой вопрос в чат, вместо того, чтобы держать его в памяти и пропустить всю остальную часть доклада. У каждого докладчика будет модератор секции из ПК, который будет помогать собирать и обрабатывать вопросы. А докладчик во время повествования будет останавливаться для ответов (но традиционные вопросы-ответы в конце, конечно, будут).

Сам докладчик также будет задавать предметные вопросы слушателям, например, Кто сталкивался с настройкой service mesh вне Kubernetes. Кроме того, модератор будет включать в трансляцию участников во время обсуждения кейсов.

Примечание. Недавно мы рассказывали о том, что ПК DevOps Live 2020 и Express 42 запустили первое в России исследование состояния DevOps индустрии. Сейчас опрос прошли больше 500 человек, но статистики никогда не бывает многопереходите в опрос и оставьте след в истории. Результат опроса мы узнаем в первые два дня, в виде доклада-отчёта, который готовит Игорь Курочкин под руководством Саши Титова. Отчёт будет определять весь тон конференции.

Lightning. Это укороченная версия докладов на 10-15 минут, например, Я поднимаю Oracle СУБД 10 ТБ в Kubernetes вот так и так. После вводной начинается самое интересное рубилово с участниками. Конечно, будут присутствовать модераторы, чтобы люди могли обсуждать спорные темы без конфликтов. У нас есть уже некоторые запросы с экзотическими вещами, которые мы готовы обсудить.

Мастер-классы. Они же воркшопы. Если в докладах и lightningах на теорию выделяется достаточно времени, то в мастер-классах теории минимальное количество. Ведущий коротко описывает некоторую матчасть, участники делятся на микрогруппы и тренируются на практике. Мастер-классы естественное продолжение докладов.

Анкеты, тесты и домашние задания


Анкеты. Мы заранее разошлем участникам ссылки на Google-формы анкеты, например, для сбора кровавых кейсов цифровой трансформации (вашей, конечно). Они помогут структурировать свои мысли, в том числе, по цифровой трансформации, а нам подготовить фундамент для обсуждений и холиваров.

Некоторые анкеты входят в отдельную активность домашнее задание. Дело в том, что конференция DevOps Live 2020 разбита на три части:

  • 2 дня работы;
  • 5 дней домашнее задание, самостоятельная работа участников, анкетирование, тестирование;
  • 2 дня работы.

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

Все домашние задания (как и вся программа) объединены общей тематикой DevOps цифровой трансформацией. Домашнее задание не обязательно. Но некоторые дискуссии, круглые столы и доклады в расписании будут строиться на результатах этих домашних работ. Но лишь некоторые, потому что если никто ничего не делал, то следующие два дня мы не отменим:)

Обсуждения: дискуссии, круглые столы, исповедальни и холиварни


Дискуссии. Это открытое совещание. Ведущий задает тему, есть основной держатель темы, а остальные участники могут обсуждать и высказывать свое мнение.

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

Исповедальня. Это разбор разделов Что я хочу изменить и кейсов Как мы внедряли и как мы проходили DevOps-трансформацию, а также домашних заданий.

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

У нас есть кнопка Задать вопрос ПК используйте её, чтобы заявиться на исповедальню. Так ПК сможет заранее подобрать время в сетке, проверить оборудование, звук и вашу камеру.

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

Холиварня. Все знакомы с холиварами дискуссиями в экстремальной форме. Например, нужен ли DevOps в энтерпрайз или должен DevOps владеть навыками инженера, можно обсудить в рамках дискуссий ли lightningов.

Но в таких темах всегда есть что обсудить и доказать свою позицию, поэтому ПК заранее подберет 3-4 темы для холиварни. Это онлайн-площадка с модератором, которая действует в течение дня. Модератор выступает в роли владельца стола формата World Caf. Его задача вести брифинг того, что уже высказалось на эту тему, в виде онлайн-документа, например, в Miro. Когда появляются новые участники модератор будет демонстрировать всем прибывающим брифинг.

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

Кибер-полигон


На DevOps Live 2020 мы отдельно уделим время на безопасность. Кроме докладов от ведущих специалистов в сфере безопасности, в блоке Безопасность будет мощный воркшоп Кибер-полигон. Это мастер-класс, где участники будут активно участвовать во взломе и проникновении в течении двух часов.

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

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

Нестандартный DevOps Conf


Есть еще нюанс. Доклады и мастер-классы, как на обычных конференциях, обычно записывают и их можно посмотреть в другое время. Но интерактивные форматы повторить уже нельзя. Не получится записать все комнаты в Zoom, Special Chat или Roomer, где проходят обсуждения, холивары и lightning (напомним, что активностей примерно 50). Поэтому, в этом смысле это будет уникальное событие. Один раз оно произойдет, и больше такого не будет никогда.

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

Если:

  • у вас монолит;
  • вы уперлись в бюрократические препоны на работе;
  • вы еще делаете только первые шаги в направлении улучшения процессов, надежности, качества инфраструктуры
  • не знаете, как масштабировать DevOps с одной команды/продукта на всю компанию

присоединяйтесь к DevOps Live вместе найдем ответы на эти вызовы. Бронируйте билеты (14 сентября повышение цен), изучайте программу на странице Доклады и Митапы мы добавляем информацию о принятых докладах и активностях, а также подписывайтесь на рассылку будем присылать новости и анонсы, в том числе и о программе.
Подробнее..

Несколько трансформаций одновременно не по книжкам, а ровно наоборот

30.03.2021 12:10:29 | Автор: admin

Общепринятые мировые практики против проведения нескольких трансформаций в компании одновременно. И все же они возможны, при соответствующей подготовке, привлечении необходимых ресурсов и правильном мониторинге результатов. Плюсами и минусами одновременных трансформаций на конференции DevOps Live 2020 поделился лидер трайба IT4IT в ОТП Банке Максим Ефимов.

В этой статье вы найдете материалы, которые были полезны при внедрении нескольких трансформаций, детальное описание процесса, а также уроки, которые вынесли для себя в банке: как позитивные, так и негативные.

Как происходит любая трансформация в крупной организации?

Как правило, берутся лучшие мировые практики, опыт и книги, в которых можно почерпнуть для себя полезную информацию. Максим предлагает остановиться на трех произведениях:

Впереди перемен Джона Коттера мировой бестселлер, который может стать настольной книгой любого лидера трансформации.

Accelerate это произведение о том, как инженерные практики и DevOps культура меняются сами, меняют организации и бизнес, увеличивают performance и profitability любой организации.

Team topologies рассказывает о практиках организации взаимодействия между командами.

Основная мысль, которую можно вынести из книги Впереди перемен, это:

Никогда нельзя делать несколько крупных глобальных изменений одновременно.

Это анти-паттерн того, как выполняются трансформации, потому что такие действия влекут за собой:

  • Гораздо большие риски;

  • Размытие фокуса;

  • Выгорание сотрудников;

  • Взаимное негативное влияние трансформаций.

Не нужно забывать о том, что изменения нередко вызывают негатив у многих людей. А когда речь идет о большом количестве изменений, негатива становится больше.

Кроме того, трансформации могут иметь негативное влияние друг на друга. И занимаясь, вроде бы, хорошими делами, вы в конце концов приходите к отрицательному результату.

Трансформация в ОТП

Предпосылки для начала трансформации в ОТП были серьезными: процессы критично устарели и усложнились, а TTM был очень низким (4 релиза в год).

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

И в ОТП решили сделать все и сразу:

  • Изменить оргструктуру, перейти к Spotify-модели и внедрить продуктовые трайбы;

  • Создать институты чаптеров и гильдий;

  • Сфокусироваться на продуктовой разработке и поменять процессы IT;

  • Провести редизайн IT ландшафта и модернизацию IT;

  • Внедрить DevOps и автоматизацию;

  • Кардинально привязать работу к облакам и микросервисной архитектуре.

Обсудим подробнее, что произошло по каждому из этих пунктов.

Трайбы и оргструктура

В ОТП запустили трайбы, отказались от линейной подчиненности и ввели матричное подчинение.

У каждого трайба есть трайб-лидер и трайб-техлидер. Первый отвечает за бизнес-направление и доходность, второй за IT-составляющую в каждом трайбе.

Трайб состоит из нескольких команд. У каждой из них есть product owner и бизнес-эксперты.

В ОТП есть своя особенность: в их командах нет выделенных DevOpsов и QA, это роли, которые выполняют разработчики.

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

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

Важный нюанс: в компании хотели, чтобы люди переопылялись не только внутри трайба, но и кросс-трайбово. Для этого был запущен институт гильдий. Разница между подходами в том, что участие в трайбе условно обязательно. Если вы бэкенд-разработчик, то попадете к сеньору Васе в чаптер бэкенд-разработки, трайба 1. Гильдия это сообщество, можно сказать, кружок по интересам.

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

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

Продуктовая разработка и изменение IТ процессов

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

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

  1. Продуктовые команды могли вносить изменения в функционал CORE систем;

  2. Эти изменения не влияли негативно на стабильность в CORE системах;

  3. Сохранялся необходимый темп доработок.

В ОТП распределили функциональность некоторых систем и дали возможность продуктовым командам контрибьютить в них. Конечно, при определенных условиях и наличии договоренностей между платформенными и продуктовыми командами. Эти условия описывают правила совместной работы над кодом, автоматизированные пайплайны сборки, требования к тестированию и т.д.

IT модернизация и редизайн IT ландшафта

Для того, чтобы все вышеописанное стало возможно, в ОТП решили создать слой API вокруг CORE систем.

Например, есть платформенная команда, развивающая сервис В. Она, посредством API, взаимодействует с сервисом А, который развивает продуктовая команда. В ОТП выработали стандарт, проясняющий, каким образом можно делать интеграции, как они должны работать и как организовано синхронное/асинхронное взаимодействие.

DevOps и автоматизация IT4IT (enabling team)

Если вспомнить про Team Foundation, IT4IT та самая enabling team.

Когда-то одной из ключевых задач в ОТП было создание стека централизованных инструментов. Это базис, с которого нужно было начать. Его выбрали совместно с community, внедрили и начали использовать. Естественно, для того, чтобы все это было возможно, пришлось серьезно вложиться в процессы и составляющую DevOps культуры. И сейчас в компании этим серьезно занимаются.

В ОТП не стали выбирать путь создания пайплайнов за команды. Вы ведь помните, что DevOpsов в командах нет?:) Эксперты из IT4IT приходят в команду, которой требуется определенная помощь (например, с пайплайном). В этом случае члены команды разбираются в проблематике с девелопером и вместе пишут пайплайн.

Почему был выбран именно этот путь? Есть ведь распространенная альтернатива создание пайплайна вместо команды. Давайте посмотрим, как бы это выглядело на практике: эксперт из Enabling team делал бы пайплайн, отдавал его в эксплуатацию и уходил из команды.

Вроде бы, бинго! Продукт активно развивается, меняются конфигурация приложений и инфраструктура, окружение, появляются новые интеграции. Но все это требует доработки и внесения изменений в пайплайн. А экспертиза внутри команды, в случае написания пайплайна, не была бы проведена. И никто в команде не понимал бы, как провести доработку.

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

Облака и микросервисы

С точки зрения инфраструктуры, запустить огромное количество новых команд, которых раньше не было, достаточно сложно.

В ОТП выбрали подход использования облачной инфраструктуры, заключили договор с провайдером и начали осваивать public clouds. Важный нюанс: речь идет о банке, где очень беспокоятся о безопасности. В публичные облака договорились выносить только то, что не содержит чувствительных клиентских данных.

Сейчас в ОТП идет работа над внедрением Private cloud, которое позволит размещать любые сервисы и даст командам возможность еще более гибко управлять своей инфраструктурой. В дальнейшем public и private будут связаны. Командам не придется ждать, пока будет создана необходимая классическая инфраструктура. Это положительно отличает ОТП от других банков.

Все эти изменения произошли буквально за полгода.

На данный момент в ОТП уже есть:

  • 8 трайбов, 60+ команд и продуктовая разработка;

Часть трайбов сфокусирована на определенных бизнес-направлениях, а еще есть три IT трайба, которые поддерживают CORE-платформы, общебанковские сервисы и сервисы для IT.

  • Матричная структура и функционально/административная подчиненность;

  • Чаптеры и гильдии по всем трайбам;

  • Слой в 60+ API вокруг CORE-систем;

  • Большая часть (90%) команд находятся на централизованном стеке CI/CD;

Изначально у всех были и GitLab, и Jenkins, и инстансы Nexus. Однако централизация важный аспект для банка. Она позволяет ускорить наращивание экспертизы, упрощает обмен опытом и знаниями.

Уроки, вынесенные во время трансформации

Lesson 1. Негативный эмоциональный фон

Многие люди любые изменения воспринимают в штыки, потому что не все готовы быстро меняться. Так как в ОТП запустили несколько трансформаций, негативный эмоциональный фон был особенно ярким.

Настолько, что несколько человек решили уйти без какой-то конкретной причины, а просто из-за ощущения неопределенности. Казалось, что ситуация тяжелая, но обратившись к сухим фактам, в ОТП поняли, что даже в самый пиковый по уходам месяц среднегодовой показатель текучки персонала не превысил 13%, при рыночном бенчмарке в 10-15%. То есть происходящее ощущалось страшнее, чем было на самом деле.

Кроме того, оказалось, что всех уходящих объединяло одно желание: они хотели просто писать код. То есть you build it, you run it, DevOps, автоматизация и прочие штуки были им не интересны. Таким узко-специализированным профессионалам стало сложно продолжать получать удовольствие, когда вокруг наступили всеобщие эджайл и гонка за тайм ту маркетом. Сложившаяся ситуация была взаимовыгодной: уходящие, будучи крутыми профи в своей сфере, нашли себе команду по душе, а в ОТП продолжают развитие культуры, не тратя силы и время на перевоспитание тех, кому это не интересно.

Lesson 2: Внезапный COVID

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

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

Lesson 3: Измерения важная часть DevOps культуры

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

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

Поэтому было принято решение запустить ручной assessment и условно измерить, насколько в командах все хорошо с точки зрения:

  • Процессов;

  • Техники;

  • Архитектуры.

Когда assessment был запущен, его показали топ-менеджменту, и все сказали: Вау! Круто! Давайте это запускать везде, где только сможем. И в этот момент было принято важное решение о том, что полученные оценки не должны стать KPI. Ведь assessment базируется на честности и открытости. И ОТП доверяют своим сотрудникам какая же DevOps культура без доверия?

В какой-то момент heatmap выглядел так (это только часть, просто чтобы дать некоторое общее видение):

Есть определенный трайб, в нем команда 1,2,3, а у них несколько приложений. Базируясь на их ответах, можно понять, что происходит, и построить heatmap вместе с Agile коучами и архитекторами. Здесь можно увидеть интересующие практики, подчеркнуть сильные стороны трайба и команды, наметить основные зоны роста.

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

Кроме того, принято решение о том, что в ОТП станут опираться на четыре основные метрики DORA, о которых много говорится в Accelerate. Например, есть идея, чтобы Lead time распадался в дальнейшем на все составляющие SDLC процесса, которые происходят условно от события git push до выкатки в продакшен. Таким образом, его можно будет измерить. А каждая из составляющих второго уровня метрик распадется, в свою очередь, на еще большее количество технических метрик (наличие и использование код-ревью, сколько времени согласовывается pull request и пр.).

И, конечно, этот assessment будущего по-прежнему не будет являться основой для KPI.

Lesson 4 Любая трансформация это в первую очередь люди

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

Важно управлять ожиданиями со старта трансформации. Сейчас даже на этапе интервью в компании уделяют большое внимание проверке вовлеченности: насколько человек в принципе готов к продуктовой разработке, как относится к T-shape или готов ли он надеть на себя шапочку QA, когда и если это потребуется?

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

Подытожим

Что в ОТП вынесли для себя:

  • Запуск нескольких трансформаций значительно увеличивает риски неуспешности каждой из них.

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

  • Важна плотнейшая работа с людьми, в том числе:

Информационные события и постоянный подогрев информационного поля;

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

Персональное общение и индивидуальный подход.

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

  • Существенные единовременные затраты.

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

  • Во время трансформации рекрутменту придется несладко.

Люди будут уходить это неизбежно и относиться к этому нужно как к неизбежной данности. При запуске нескольких трансформаций такой отток может быть больше обычного, что логично и не страшно.

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

Профессиональная конференция по интеграции процессов разработки, тестирования и эксплуатации DevOpsConf 2021 пройдет 31 мая и 1 июня 2021. Билеты на нее вы можетеприобрестиуже сейчас, успев сделать это до повышения цены.

С 1 апреля стоимость билетов на наши ближайшие конференции:TeamLead Conf 2021,DevOpsConf 2021иHighLoad++ Весна 2021возрастет.

Хотите получать полезные материалы по DevOps?Подписывайтесьна рассылку.

Подробнее..

Продуктовый разворот от фигачечной к сознательной работе инженеров

02.07.2020 16:18:36 | Автор: admin
Весна 2020 показала, что благодаря DevOps-практикам многие бизнесы смогли быстро перестроить продукты и перейти в онлайн, сохранив работоспособность. Оказалось, что от зрелости практик DevOps зависят не только результаты бизнеса, но и само его выживание.

Наши встречи на конференции DevOpsConf концентрировались не только на инструментарии инженеров, а еще и на процессах, для которых эти инструменты нужны. Кажется, этого недостаточно, чтобы бизнес увидел, как извлечь из DevOps максимум пользы для продукта.

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



Основные измеряемые характеристики DevOps это стабильность работы приложений и производительность IT-команд, от идеи до выкладки фичи на продакшн. Поэтому мы много говорим о time to market и мониторинге и продолжаем технический трек.

А ещё IT-команды состоят из живых людей, которые не только могут выдавать хорошие KPI, а ещё и делают заведомо полезную работу. Ведь если DevOps-подход завоевал популярность в мире, то, наверное, это кому-то нужно. Для вас мы повстречались с Product Owners и бизнесменами, которые не всегда знают, что такое DevOps (как будто мы знаем :D) и расспросили их о том, что же им важно получить от технарей. В чём эта самая польза.

Первым делом пришлось поменять свой словарь и способ общения. Мы говорили не нашими привычными терминами, а старались использовать язык продактов. Даже в качестве способа общения мы выбрали CustDev-интервью, как и принято в продуктовом мире. Эти интервью подтверждают или опровергают наши гипотезы о том, что же важно в работе над продуктом со стороны бизнеса.

Вот какие гипотезы мы проверяли на встречах:

  • TTM важен для интересов Product Owner-а.
  • Стабильность работы приложения влияет на бизнесовые показатели.
  • Разработчики зачастую не согласны с мнением PO о том, что и как делать.
  • TTM помогает проводить CustDev. Речь не о технике интервью, а о поиске и подтверждении потребностей клиентов и построении компании.

Я беседую через с Zoom со своей давней знакомой, которая убеждена, что человеку, который ни разу в жизни не продавал, нечего делать в профессии Product Owner. Она часто появляется в передачах на радио и ТВ, проводит семинары по своей предметной области. Как только режим самоизоляции был облегчён, они с мужем и ребёнком арендовали дом на берегу великолепного озера и на всё лето переехали жить и работать туда. Её компания почти 20 лет на рынке онлайн-услуг. На первом месте по рейтингам в своей предметной области.

Скажи пожалуйста, проводишь ли ты специальную работу по сокращению цикла разработки и запуска фич в продакшн в своей команде?

Ты знаешь, уже нет. Если в 2014 году бутылочным горлышком была производительность айтишников, как разработки с тестированием, так и команды эксплуатации, то уже несколько лет я решаю другую задачу. Как успеть подготовить эксперименты, чтобы команде было, чем заняться (смеётся). Если говорить серьёзно, то сейчас я уверена, что фича будет запущена за срок от шести часов до недели...

Погоди, 6 часов?! Это...

От первой беседы с командой до пользователя. Т.е. уже на проде.

Зачем тебе такая скорость?

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

Мы продолжили беседу, и за следующие полчаса Наталья рассказала, что крупные изменения продукта сейчас проходят гораздо увереннее и спокойнее. Основным фактором такого изменения она называет её уверенность в команде и доверие команды к ней.

Следующий мой звонок на Пхукет. Игорь переехал туда несколько лет назад и для этого провел не самые простые переговоры со своим работодателем. Тогда удалённая работа была в диковинку, и все сотрудники работали в офисе в Москве. Сейчас за кадром слышны визги и возня его большой семьи. Его компания тоже лидирует на российском рынке по своему направлению.

Внезапно я стал экспертом по удалёнке этой весной! (смеётся)

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

Когда мы с техдиром начали эту работу, ещё не были в ходу такие термины, как LTV, customer retention или unit economy. Просто мы представили, что пользователи не очень довольны падением приложения 20% времени...

Во, NPS!

Андрей, не было никакого NPS. Сейчас это технологизированный индикатор того, насколько довольны пользователи. Он не покажет мне деньги. Он не покажет, каково отношение затрат на какой-либо проект и отдачи в деньгах от его реализации.

Тебе именно это отношение важно?

Мне важен рост аудитории. Т.е. её лояльность и приверженность к моему продукту.

Что-то ещё? Как маркетинг связан с аптаймом?

Смотри, налить трафик стоит денег. Будь то прямая реклама или SEO оптимизация, органические переходы. Когда в трафик вложены ресурсы, а на стороне приложения он попадает в черную дыру, то это немножечко потери.

Т.е. для тебя сейчас важно, чтобы приложение было доступно.

Сейчас я спокоен, потому что наш аптайм 4,5 девятки. В течение месяца приложение исправно отвечает на 99,995% запросов.

DevOps сделал своё дело, DevOps может...

DevOps ещё и не это может. В какой-то момент мы посчитали, что наш способ развития, через изменения в лаборатории и проверку на фокус-группах, дороже, чем проверка на малых долях аудитории. Вместо того, чтобы разработать прототип, собрать фокус группу и получить одобрение, а потом на живых пользователях увидеть их разочарование, я могу быстро-быстро проверить трипять вариантов на 0,1% пользователей и выбрать лучший.

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

Да, из палок и синей изоленты. (Игорь морщится, потому что я на громкой связи, а рядом дети)

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

Поэтому для нас важно управлять техдолгом. Можно сказать, что между бизнесом и IT есть контракт: в течение года не менее 30% времени разработки идёт на разгребание долга. Причём, эти проценты мы считаем совокупно за год. Например, весной 2020 мы перекрыли работу с техдолгом полностью, потому что нам была важна скорость изменения продукта. Нам пришлось искать новые модели использования наших сервисов.

Значит ли это, что за оставшиеся полгода ребята будут уже 40% времени заниматься рефакторингом, изменением архитектуры и выпиливанием костылей, а также работать с производительностью приложения?

Абсолютно.

Дальше Игорь рассказал, что у него появилась возможность работать на опережение. Значительная часть задач направлена на освоение новых технологий и интерфейсов. Первые результаты экспериментов уже доступны пользователям, например общение на естественном языке. При этом на сегодняшний день скорее можно говорить о Research части R&D. Компания осваивает технологии заранее, чтобы использовать момент зрелости технологий искусственного интеллекта для получения конкурентного преимущества.

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

  • Продуктовые. Product owner может включить или отключить фичу, а также раскатать её на заданный процент пользователей или даже конкретный список.
  • Настройки взаимодействия сервисов это зона ответственности разработчиков.
  • Админские, их крутит команда, которая занимается инфраструктурой.

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

Мы также созвонились с ребятами, которые ведут продукт в компаниях, где потенциал для развития DevOps намного больше. Они запускают стартапы или работают на крупного заказчика. Другими словами и больше через боль, они говорили о тех же ценностях для Product Owner-а, что и предыдущие собеседники.

Мы обнаружили, что находки нашего исследования подтверждают те выводы, которые есть в в отчете Google The 2019 Accelerate State of DevOps: Elite performance, productivity, and scaling (версия на русском).

Мы выделили четыре основные ценности для Product Owner-ов при использовании DevOps:

  • Предсказуемость времени реализации фичи и уверенность в качестве софта это необходимая база для активных экспериментов.
  • Надёжность работы прода = деньги. Когда трафик попадает на работающее приложение, то это не только позволяет рационально использовать бюджет на продвижение, но ещё и повышает лояльность пользователей, а значит и долю на рынке.
  • Скорость экспериментов определяет успех как для стартапа, так и для бизнеса со зрелым продуктом. Если стартапу важно быстро обнаружить предпочтения пользователей и удачные ответы на них, то зрелому продукту нужно удержание пользователей, стабильность массовой выручки и research работа на будущее технологий.
  • Доверие к разработчикам и взаимное доверие разработчиков к продакту. Партнёрские отношения между IT подразделением и бизнес юнитами, когда заключается контракт о способах взаимодействия и этот договор исполняют обе стороны. В терминах DevOps это управление техдолгом, поддержка кода в порядке и вовлечение команды в интерес своих пользователей.

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

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

Большинство активностей на конференции сделаем интерактивными, потому что говорящих голов достаточно в интернете. Ведь каждый сознательный инженер может не только найти видео докладов по нужной ему тематике, но и прочитать статьи (например, статьи по следам всех DevOpsConf в профиле Александра Титова).

Наша цель этой осенью дать каждой компании возможность высадить виртуальный десант из Product Owner-ов, техлидов и инженеров всех мастей. Так, чтобы IT-спецназ сориентировался на местности и вернулся в работу с разработанным планом захвата Вселенной!

В следующих статьях расскажем про CTO, разработчиков и безопасников зачем конференция им.
DevOps Live пройдет онлайн 29-30 сентября и 6-7 октября 2020. В онлайне будет всё, за что сообщество любит наши конференции, и при этом мы вместе исследуем новые возможности онлайна.

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

Как стать кросс-функциональной командой

21.10.2020 16:06:58 | Автор: admin
DevOps обычно рассматривается в двух ипостасях:
  1. Инструментарий техника, tooling, технические процессы, CI/CD и прочие штуки авто-всё, всё как код и т.д.
  2. Культура это как отдельным разработчикам прийти всем вместе к мир, дружба, жвачка.

На стыке этого у людей происходит некоторый слом, и они не понимают ОК, есть DevOps, есть автоматизация, у нас всё это есть. Но, ребята, у нас команда из 10 человек мы не можем, например, пилить процессинг на банк, или сервис для нашего биллинг-оператора, или что-то еще такое. 10 человек та самая Scrum-команда, которой предлагается всё это сделать, не могут этого технически.

У таких команд, помимо мы так не умеем, потому что так раньше не делали, есть и другие вызовы. Михаил Бижан рассказал на конференции DevOps Conf 2019 о тех, с которыми встретилась его команда в Райффайзенбанке, и как они это решали. Михаил отвечает за автоматизацию в банке, вместе с командой внедряя инженерные практики и поддерживая инструменты автоматизации.

Раньше Михаил уже внедрял культуру DevOps в Сбербанке. Но до этого, работая на стороне интегратора (в основном на госов) наловил кучу анти-паттернов. Потому что чем характерны госзаказчики? Годовалыми проектами, невообразимыми бюджетами и полным отсутствием намека на Agile и DevOps. Там все строго. Сначала ты пишешь ТЗ, чтобы стопка бумаги была метр от пола. Если меньше, это не ТЗ (и даже не проект) это несерьёзно. Потом ты разрабатываешь, а если что-то не получается виноват ты и денег не получаешь (хотя госзаказчик, скорее всего, все равно счастлив, потому что бюджет освоен и что-то формальное достигнуто).

Так что у Михаила большой опыт в том, как делать не надо. А как делать можно понимает из чтения книг и общения с сообществом и коллегами. Как системный аналитик, Михаил не старается решить всё методами разработки, а анализирует проблему, чтобы понять её root cause и сделать так, чтобы она больше никогда не повторялась. На этом сочетании и построен доклад.



Сегодня поговорим о том, что болит у всех и всегда, и что иногда кажется невозможным о кросс-функциональности в энтерпрайзе. Энтерпрайз это любая компания, которая разрабатывает более, чем один IT- продукт. Если у вас языковая школа, и вы пилите в целом всё для неё, у вас вряд ли энтерпрайз. А если у вас, например, универсальный банк, где есть розничное кредитование, факторинг, кэш-менеджмент, и все это legacy, спагетти-код и прочее, скорее всего, у вас энтерпрайз. Или если вы системный интегратор, у вас тоже может быть энтерпрайз, потому что вы пилите для большого количества заказчиков всякое счастье и используете все виды технологий, процессов в ежедневной деятельности.

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

Разберемся с матчастью


Что вообще такое продуктовая команда?


Есть мнение, что DevOps летает только там, где есть Agile. С одной стороны это так, с другой стороны необязательно. Но суть Scrum-, Agile-, DevOps-, каких угодно продуктовых команд в том, что одна группа людей создает один продукт под ключ. Это может быть сложносоставная группа из нескольких feature-teams, которых объединяет только единый бэклог, но в любом случае это единый продукт. У продуктовой команды единые цели, структура прибыли, структура затрат и один продукт:



Такое описание продуктовой команды это краеугольный тезис, который толкает вас в дебри невозможности кросс-функциональности, потому что у любого адекватного человека начинается смех и истерика, когда ему говорят: Ребята, вы теперь будете делать всё. У вас 20 человек в команде, делайте розничное кредитование, например. Скорее всего, после такой постановки задачи вы поинтересуетесь у коллег, где скачать заявление на увольнение, потому что неохота от руки писать.

Но вам говорят; Спокойно, мы будем делать из вас кросс-функциональную команду, вас всему научим, всё вам дадим! И получается примерно так:



Кросс-функциональностью что только не называют. Я встречал мнение, что это система, при которой какой-то огромный департамент с индусами каждой продуктовой команде разрабатывает всё, что не относится к логике работы самого продукта. Если нужно что-то ещё, команды опять прибегают к этому огромному департаменту. Но, по сути, это внутренний аутсорс, когда вы примерно половину своей работы передаете какому-то дежурному терапевту.

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

С точки зрения продуктовой разработки, одним из базовых является принцип You build you run it. Только пока ты сам сопровождаешь то, что накодил только тогда ты понимаешь все проблемы, которые твои клиенты, пользователи и смежные команды испытывают при работе с твоим продуктом. Об этом очень важно не забывать.

Маленький экскурс в Википедию
Обычно все говорят, что кросс-функциональность это про t-shape. Давайте определимся с терминами:
  • Монофункциональность (i-shape). От греческого один. Допустим, я разработчик Java: я умею писать на Java и больше ничего не умею и уметь не хочу (причем очень воинственно). Даже если умею, ни за что об этом не расскажу, потому что мне платят за то, что я пишу код на Java. Я i-shaped, узконаправленный моноспециалист, я творец, пишу код, если вы против до свидания!
  • Полифункциональность (t-shape). От древнегреческого многочисленный. Это когда я становлюсь менее агрессивным Java-кодером и говорю: ОК, я могу еще тесты написать. Не себе, потому что это будет странно, а, например, тебе Или, например, я понимаю, как работает инфраструктура, на которой мой продукт функционирует, и могу там скрипты позапускать, пописать, повидоизменять. То есть я в целом имею представление о том, как работает весь ландшафт, в котором мой код существует, и в случае чего хотя бы пойму, что там не так работает. А если я совсем крут, то я могу еще что-нибудь поправить.
  • Омнифункциональность (-shape). От латинского omnis каждый, всякий. Это достаточно новая в нашей индустрии штука. Ее называют -shape, расческа-shape, как угодно-shape. Суть в том, что у вас вертикальных палочек с core-экспертизой становится больше ты не просто крутой Java-разработчик, но ты еще крутой DevOps-инженер. Например, ты очень хорошо представляешь, как работает твой CI/CD, в идеале ты его еще и сам создал под свой Java-проект, ты молодец, ты -shaped!



Это не значит, что все умеют всё


Очень важный момент. Если мы из нашего -shaped специалиста будем делать расческу, добавляя много ключевых экспертиз, то его госпитализируют в Кащенко (потому что он сойдет с ума). А если не сойдёт, то его экспертиза будет не такой уж глубокой, потому что человеческой жизни не хватит на то, чтобы стать экспертом во всем:



Каждый новый скилл, который вы приобретаете, и каждая новая экспертная область, с которой вы знакомитесь, должна позволять вам более эффективно выполнять свои текущие задачи. Если вы прочитали на Хабре, что ML это круто, и решили на досуге выучить Python, то это ваше хобби. Когда у вас появятся задачи, связанные с Python или с ML, за которые вам будут платить тогда можно говорить, что вы наращиваете горизонтальные навыки. Например, я люблю играть на гитаре, но за это в банке мне не доплачивают (к сожалению). То есть я не могу сказать, что я -shaped в сторону игры на гитаре.

В энтерпрайзе команда должна уметь делать неочевидные вещи


Когда мы говорим про энтерпрайз (банки, телеком и пр.), есть ряд неочевидных штук, про которые все либо никогда не задумывались, либо задумывались, но не придавали им значения до тех пор, пока им не сказали: Ребята, вы теперь продуктовая кросс-функциональная команда!

Взаимодействие с клиентом


Продукт это то, за что клиенты платят вашей компании. У продукта всегда есть P&L (Profits and Losses). Он отчуждаемый. Например, кредитная карта это продукт, потому что за нее вы платите деньги банку. А банк несет за неё какие-то расходы: он ее запрограммировал, создал бизнес-модель, как-то её рекламирует, печать пластика, доставка, логистика и пр. Банку может казаться, что супер-крутая карта, сделанная из чистого золота с гравировкой лица вашей мамы или бабушки это супер-свежая бизнес-модель, которая прямо сейчас взорвет рынок, и все придут к нему, отключившись от всех остальных банков. Но это может оказаться не так, если банк предварительно не спросит об этом у вас клиента.

Это кажется банальностью, но очень многие продуктовые команды (и даже компании) не знают, чего хотят их клиенты. Они делают то, что хочет, например, их CEO. Вы сами можете вспомнить 100500 таких примеров:



При создании продукта вы должны не просто понимать, что нужно вашему клиенту. Вы должны знать, что хочет ваш клиент сегодня, завтра, послезавтра и в любой другой день. Специфика банковского рынка такова, что наша прибыль не будет расти, если мы будем повышать цены на услуги или наращивать комиссии. Единственный рабочий драйвер рост клиентской базы. Но это справедливо и наоборот демпинг не сработает. Условно, ипотека везде стоит плюс-минус 10%. Но если сегодня мы сделаем ипотеку 5%, у нас будет очень много клиентов, но у ЦБ будут серьезные вопросы. Поэтому вместо этого мы вкладываемся в маркетинг и даем клиентам какие-то другие плюшки, например хороший сервис или скидки на другие продукты. Причем давать нужно именно то, что хочет клиент это поможет выбрать именно наш ипотечный продукт.

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

Горячая линия 24/7


Ещё до Сбербанка, работая проектным менеджером, я, как и многие айтишники, дежурил по выходным. И это был отстой! Я ничего не умел делать с кодом и чувствовал себя максимально тупым и бесполезным в это время. Я сидел перед монитором с графиками только для того, чтобы в случае аварии взять такси и доехать до дома моего разработчика и позвонить в дверь, потому что он телефон не слышит. Не рекомендую!



Если бы тогда я знал то, о чём сейчас рассказываю, мы бы на берегу договорились с командой о правильной организации поддержки. Обычно в энтерпрайзе есть отдельная выделенная линия поддержки 24/7, колл-центр где-нибудь не в Москве. И любая команда должна иметь возможность с ним работать.

Как это сделать?
Допустим, я product owner той же кредитной карты. Я могу написать условный скрипт (инструкцию в Word), отдать в 24/7 и сказать, что если на горячую линию банка будут звонить по таким-то вопросам, то звоните Пете, если по таким то Коле, а все остальное не наше. Это я уже наполовину молодец.

Чтобы мне стать полностью молодцом, нужно еще при каждом изменении функционала моего продукта оповещать об этом службу 24/7. Если Коля заменился на Аллу, функциональность добавилась или убавилась, колл-центр должен об этом узнавать.

Почему это важно?
Клиент это тот, кто платит. У нас для продуктовой разработки специфично и характерно то, что все клиенто-центрично, а не IT- или CEO-центрично. Клиент хочет быстро получать всё, что ему нужно. И если у него есть проблема, он должен максимально быстро получить решение, просто позвонив или написав. Никто этого сейчас, наверное, нормально делать не умеет, но это то, к чему нужно стремиться.

Технологический долг и инциденты


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

Инциденты, баги, аварии прода и так далее это то, что случается у всех. Но когда это начинает случаться часто и по одним и тем же причинам, это вызывает серьёзное раздражение. Тем не менее, мы не должны заливать эту проблему человеческими или какими угодно другими ресурсами (На 20 падений сервисов ответим наймом 20 новых DevOps-инженеров!), нужно сесть и подумать, почему сервис падает и как сделать так, чтобы он не падал. Тогда наши инженеры могут заниматься новыми более классными штуками, например, попилотировать CI/CD инструменты, которые они еще не трогали, чтобы потом к нам прийти и сказать: Чувак, я нашел что-то круче Jenkins:



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

Взаимодействие со смежными сервисами


Представим, что мы разрабатываем функционал выдачи кредитов в мобильном приложении. Я product owner в розничном кредитовании с отличным отделяемым P&L. И есть ряд каналов, через которые я этот продукт продаю сайт, iOS и Android приложения, мобильное рабочее место операциониста.

В мобильном приложении банков, как вы знаете, какой только функциональности нет от переводов между картами до выпуска новых карт, погашения ипотек, алиментов, оплаты ЖКХ и прочего. Это круто, это XXI век:



Но я, как product owner, отвечаю только за свой продукт за розничное кредитование. А если в мобильном приложении, например, iOS, которым пользуются миллионы людей, вдруг сбойнул текущий счет и человек просто свой баланс не видит? Он не будет, заходя в приложение, даже думать о том, чтобы взять кредит. Он скажет: О! Где мои сто тысяч рублей?! и будет звонить в банк и спрашивать: Доколе?!

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

В чем он может вам помочь? Если вы делаете какие-то смежные маркетинговые компании и продвигаете их через единый канал (например, мобильное приложение), вы можете получить синергию. Например, я выпускаю функционал по розничному кредитованию и могу предложить кредит на супер-условиях для молодых семей. А команда ипотеки то же самое делает, но для пенсионеров и лиц пожилого возраста. Мы можем прекрасно скооперироваться и вывести единый релиз под эгидой социальной защищенности.

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

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

Прикладные платформы


Это частный случай смежных сервисов. Ранее упомянутая шина одна из них.

В банках это чаще всего DWH и АБС автоматизированные банковские системы. АБС это монструозная конструкция, в которой делается собственно банкинг. Там происходят основные финансовые операции, генерируется отчетность ЦБ. Это мозг зверя по имени банк. А все остальные его органы с АБС так или иначе взаимодействуют. Обычно АБС в банке ровно одна, потому что больше не надо. Есть исключения, например, при объединении банков какое-то время они живут с двумя, а то и тремя АБС, но обычно это нерационально. Так же, как и в случае с процессингом.

Любая платформа это, по сути, черепаха, на которой стоит мир. Клиенты пользуются вашими услугами они покупают кредитку, скачивают мобильное приложение, отправляют друг другу стикеры и чатятся. Но если у вас где-нибудь умрет процессинг, всё пойдет насмарку:



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

Это базовая безопасность, которая позволит вам не упасть в случае падения платформы. Если в вашей компании упадет сервисная шина, ваш продукт упадет и не будет работать тоже. Если в банке упадет процессинг, через 5 часов вам позвонят из ЦБ, а через сутки заберут лицензию, каким бы банк ни был, даже 1. Это недопустимо.

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

Инфраструктура


Инфраструктурный департамент это те обслуживающие подразделения, которые представляют сервисы командам для того, чтобы они могли пилить свои продукты железо, сети, и так далее. При этом, сама по себе инфраструктура это адский ад сложностей. Потому что никто снаружи не понимает, как она устроена и какие есть планы ее развития. Они говорят: Друзья, у вас сейчас голый Docker, мы пилотируем ванильный Kubernetes, еще в январе у нас будет Tanzu, еще где-то там рядом Openshift. А потом: Все, это мы больше не поддерживаем, переезжай вон туда. Когда и чем всё это кончится, непонятно:



Вы всегда должны понимать, что происходит и будет происходить с вашей инфраструктурой, причем под инфраструктурой я понимаю и hardware, и базовые middleware штуки, и те самые оркестраторы всего на свете, которые вы используете при работе. Вы должны знать в моменте, как их использовать, как их точно не использовать и что с ними будет дальше. Потому что это даст вам возможность не только не допустить ошибку (классика), но и потенциально получить гешефт.

Хороший пример: у нас недавно появилась новая команда, которой нужна помощь в настройке CI/CD. У нас в банке CI/CD тулой сейчас является Atlassian Bamboo. Мы могли им сказать: Друзья, вот Atlassian Bamboo, вот SDK, вот человек, который вам поможет это настроить. Мы готовы отправить вас на наш курс CI/CD, где вам расскажут основные паттерны взаимодействия наслаждайтесь.

Но прямо сейчас мы в банке пилотируем другие альтернативные инструменты, так как нас во многом не устраивает Bamboo. Этой команде мы объяснили, что расклад такой прямо сейчас есть Bamboo, есть пилоты такого и такого инструментов: Не хотите ли вы попробовать сделать на них? Риски понятны: если пилот не пойдет, им придется все это перевезти на тот, который будем внедрять. Но мы гарантируем поддержку и поможем им перепилить, чтобы безопасно перейти на тот, который будет выбран целевым.

То есть мы им дали информацию о том, какие минусы есть у текущего инструмента и какие плюсы у потенциально будущего. И дали информацию о том, как работает наша инфраструктура, чтобы они сделали осмысленный выбор. Они сказали: Да, кайф, и выбрали тот пилот, в котором им было бы интересно поучаствовать. Без этой информации, просто выбрав линию партии и продолжив на Bamboo, через пару месяцев мы бы получили волну негатива, когда поменяли бы наш CI/CD-оркестратор: Ребята, мы два месяца назад приходили...

Танцуем от цели


Очень часто команды изобретают велосипед. Например, мне нужно выбрать инструмент оркестрации контейнеров. Я смотрю в Google какой-нибудь рейтинг от Gartner и вижу там K8S: Нам нужен Кубер прямо сейчас! Почему именно Кубер? Да потому что я нагуглил, и он в каком-то рейтинге первый.

Но такой способ выбора решения не самый оптимальный. Нужно танцевать от цели. Какая у нас цель, зачем мне вообще оркестрация контейнеров? Зачем мне в принципе контейнеры? Затем, что я не хочу, чтобы каждая из команд, которые я обслуживаю (которым я служу есть такой термин servant leadership, лидерство как служение), тратила по неделе рабочего времени одного человека на то, чтобы заполучить базовые образы, которые они потом будут в своем CI/CD конвейере использовать. Я хочу создать централизованно полный набор образов, которые будут безопасны, всех удовлетворять и прочее. Куда-то их положить, чтобы всем было хорошо, комфортно и удобно, и пусть юзают.

Поэтому целесообразно спросить тех, кто ими пользоваться будет. Клиенты это мои команды: Ребята, у вас какие ожидания? Если они будут называть названия оркестраторов это не то, что мне нужно. Мне интересны принципы, по которым они выбирают.

Один скажет, что ему нужно, чтобы работало быстро: быстро писалось и быстро читалось. Второму важно, чтобы на рынке была экспертиза представлена, потому что он ноль в этом, а ему надо брать с рынка джуниоров, которые в этом быстро разберутся (т.е. чтобы было просто). Третьему нужно, чтобы какой-нибудь PCI DSS проходил (стандарты по работе с картами Visa, Mastercard и НСПК) особенные требования к безопасности должен прийти аудитор и кадилом помахать: Ваше управление контейнерами удовлетворяет требованиям PCI DSS.

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

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

Как все это сделать?


Вы можете сказать: Молодец, рассказал очевидные вещи спасибо, кэп! а что с этим делать? Ответ очень простой: создать в вашей компании такую среду, чтобы работать неправильно было некомфортно, слишком дорого, сложно и т.д.:



Взаимодействие с клиентом


Как заставить, побудить, продать (какие угодно слова можно использовать) наши команды взаимодействовать с клиентом, чтобы они начали его слышать и слушать? Вы должны включить им голос клиента в какой-то мониторинг, либо в цели. Хоть радио в офисе повесьте с записями из отделений банка, как бабушки кричат том, что полчаса не могут пенсию снять.

Как это сделано у нас. Мы безальтернативно проводим опрос клиентов по основным банковским услугам, потом безальтернативно всем его показываем. Например, вы продаете кредитные карты, а вы дебетовые: вами довольны, а вами нет. Люди видят результаты друг друга и понимают, что происходит не так. Их никто за это не наказывает, просто им стыдно. Когда один продукт любят, а второй нет, то вторые придут к первым и попросят рассказать секрет что я делаю не так, что ты делаешь так, почему так происходит? Со временем эта история всегда выравнивается, потому что системы (а корпорация это конечно система) склонны к равновесию.

Это очень долго, если у вас инертная компания, но, если вы молодые и энергичные ребята это будет быстро. Если вам не все равно, процесс можно ускорить ходить и пальчиком тыкать: Смотри, у них хорошо, у тебя плохо. Не хочешь присмотреться? Мы так делаем.

Резюме


Кросс-функциональная команда умеет:



1. Измерение клиентского опыта


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

2. Поддержка продукта 24/7


Помните, как раньше учили детей плавать? Вывозишь на лодке на середину реки и бросаешь в воду: Давай, встретимся на берегу! В переводе на нормальный язык с языка метафор это значит, что пусть команда пострадает.

Вы им говорите: Вас 10 человек. Есть возможность работать с горячей линией 24/7, но для этого нужны скрипты, которые вы должны дать. Но вы можете этим не пользоваться живите, как хотите!, а потом все звонки на горячую линию, когда какая-нибудь кредитка умерла, роутить прямо на product owner. В субботу ночью? ОК! В воскресенье ночью? ОК! В понедельник примерно к 5 утра он задумается о том, что же он делал в этой жизни не так, и к обеду скрипт будет в службе 24/7 готовый и со всеми нюансами.

3. Технологический долг и инциденты


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

Например, у вас и у соседней команды плюс-минус похожие продукты, но у вас стремный legacy-код, а у соседней команды нет. В результате у вас есть некий постоянный уровень аварийности (допустим, 10 аварий в год), в отличие от той команды. Тут очень важный момент нужно найти человека, который согласится исправить что-то один раз. Найдите конкретный legacy-фрагмент в коде и поймите, на что это влияет. Потом убедите команду это изменить и покажите цифры: Вот у тебя было 10 аварий в год, теперь их 8! Давай сделаем дальше, и будет у тебя еще все более круто.

4. Взаимодействие с прикладными платформами


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

В этом случае мы задаём вопрос что я могу сделать, чтобы я получил быстрее то, что я хочу? У продуктовой команды в целом таким и должно быть мышление если вам что-то нужно, но говорят НЕТ, то узнайте, что нужно сделать, чтобы было ДА. То есть узнать, что нужно сделать, чтобы прикладная платформа внедрила изменения на своей стороне, которые нужны вам, быстрее (например, через месяц) должны вы, как идеологи DevOps. Например, давайте сделаем API, или давайте продуктовая команда сделает изменения в платформенном коде, только чтобы все это было безопасно и т.д.

5. Взаимодействие со смежными сервисами


Аналогично никаких секретов, просто человеческое общение, поиск взаимовыгодных условий совместной работы и ad hoc решение задач.

6. Инфраструктура


Как это бывает: приходит новая команда и говорит, что им нужны среды: Нам нужен продакшн-сервак, у нас релиз через месяц. Хорошо, вот заполни Excel, что конкретно ты хочешь, там всего 120 строчек. Я смотрю в эту таблицу и понимаю оттуда от силы 20 строчек, а для остальных мне нужен переводчик человек, который знает, как их заполнять. Когда мы первый раз сказали нашей инфре, что это странно, даже мы в этом не шарим, то они дали нам образец, как это заполняется. С образцом я стал уметь заполнять 40 строчек из 120.

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

Это шесть основных моментов, на которые, как показал опыт моей команды, нужно обращать внимание.

Если вы знаете еще какие-то вещи, которые кросс-функциональная продуктовая команда должна уметь делать со своим окружением пишите, обсудим.

Вместо заключения: это будет непросто


Это невероятно сложная и неблагодарная работа всё это провернуть и претворить в жизнь. Вам будет очень тяжело, если вы встанете на этот скользкий путь. Нам было очень тяжело:



Каждый раз, когда вы говорите, что будете менять среду таким образом, чтобы она побуждала людей сделать что-то, чего они раньше не делали, это будет дико демотивировать вас и ваших людей. Вы будете выгорать и ненавидеть весь мир. Но потом (через пару лет), люди, у которых стало хорошо, скажут: Я красавчик, я всё сделал. Ты мне помогал, я помню. Но это фигня, а вот я красавчик!

У нас две важных новости о конференции HighLoad++ 2020. Во-первых, готово расписание конференции. Оно будет дополняться, но планировать дни 9 и 10 ноября уже возможно.

Во-вторых, HighLoad++ 2020 переезжает из Сколково в большее помещение в Крокус Экспо. Это ещё одна мера безопасности большая площадка позволит нам дополнительно разрядить пространство и рассредоточить слушателей.

В программе доклады от разработчиков, CTO и основателей технологических компаний. Узнаем, какие технологии применяют в Badoo, Сбере, Tinkoff, Яндексе, Юле, Erlyvideo и в других компаниях-лидерах рынка.

Официальный телеграм-канал конференции поможет вам быть в курсе событий и изменений, а неформально обсудить можно в этом. Забронировать билет на HighLoad++ 2020 можно здесь. Встречаемся 9 и 10 ноября в Крокус Экспо!
Подробнее..

Микросервисы VS монолит баттл адептов

09.02.2021 10:17:03 | Автор: admin

Монолитная и микросервисная архитектуры два диаметрально разных подхода. Во время круглого стола на конференции DevOps Live 2020 столкнулись адепты этих архитектур, которые в формате баттла искали ответы на самые актуальные вопросы. Избыточны ли ресурсы на каждый микросервис? Есть ли необходимость в постоянном рефакторинге? И как грамотно организовать рабочее место?

Адвокатом микросервисов выступил Алексей Шарапов, а обвинительную речь зачитал Андрей Булов. Оба сотрудники Deutsche Telekom IT Solutions стратегического подразделения крупнейшей в Европе телекоммуникационной компании Deutsche Telekom и не новички в обсуждаемом вопросе.

Андрей Булов: Я работаю в довольно крупном энтерпрайзе, в котором берут свое начало молодые стартапы. Побывал в разных ролях: архитектора, девелопера. С 2016 года начал писать на микросервисах.

С тех пор я невзлюбил паттерн Microservice as a goal, которым грешат многие энтерпрайзы, и стал пропагандировать здравый смысл. Честно говоря, я считаю, что микросервис и текущая разработка это что-то типа Spotify в Agile: все хотят внедрить, но не все понимают, зачем это нужно.

Тема этого мини-баттла родилась чуть ли не из кухонного спора. Я устал всем доказывать, что микросервис это не Грааль, не панацея, и готов поделиться своим мнением.

А еще я люблю лямбды, и считаю, что микросервис это некое переходное звено.

Алексей Шарапов: На данный момент я являюсь DevOps евангелистом. То есть хожу и очень громко всем говорю: Давайте делать DevOps!. Я в разработке с 2010 года. Занимался разработкой фронтенда и немного бэкенда. С 2015 года влюбился в DevOps и DevOps-практики. Стараюсь заниматься ими ежедневно и приносить счастье нашим разработчикам.

Я работаю с Андреем в одной компании. Это крупный энтерпрайз. И у нас есть исключительно микросервисные проекты, которые я полюбил всем сердцем. Поэтому я выступлю адвокатом микросервисов.

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

На самом деле, вам придется купить облако и Кубер, и во всей этой виртуализации будет работать Docker, в котором зашиты ОС Java-машина, Application Server и микросервис, раздающий три строчки. А вы будете греть воздух всей этой чудесной инфраструктурой.

С точки зрения программной оптимизации, микросервис это постоянная перегонка из строк в строки. Это съедает массу памяти, и возникает нагрузка и на сеть, и на программистов. Микросервисы дорого имплементировать, и не всегда понятно, зачем люди их выбирают.

Тот же монолит или мелкая галька прекрасно выполняются на Bare Metal, не требуют особых ресурсов, Application Server JVM. И внутри себя они общаются по бинарным внутренним протоколам, байтики бегают по серверу: все прекрасно и довольно быстро работает.

Да, можно писать не на JVM, но все равно выходит недешево. Микросервисы обходятся дорого с точки зрения перформанса, скорости разработки и работы внутри.

Алексей Шарапов: На все это могу ответить, как человек, занимающийся инфраструктурой в крупных компаниях последние несколько лет, что мы можем делать очень много классных вещей. В первую очередь, ограничивать минимум. Если на наш сервис нет нагрузки в спокойном состоянии, можем сделать ему минимальные ресурсы. Мы должны содержать Kubernetes-кластер, какие-то дополнительные сущности, но запуском внутренних компонентов можем управлять очень-очень тонко. И если в какой-то момент нам на определенное время нужны сущности, мы можем использовать CronJob. А еще Openfaas, о чем часто забывают. Мы не греем наш кластер ненужными сущностями, а запускаем только то, что необходимо.

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

Например, можно использовать те же самые AWS лямбды и запускать в них какой-то код да, может быть, это будет не в кластере, а отдельно. Кроме того, не стоит забывать, что у нас есть Kubernetes-кластер. Мы можем не иметь его у себя, а запускать где-то на стороне. Такую возможность предоставляет облачный провайдер.

Не стоит забывать и о том, что когда мы запускаем на Bare Metal, нужно какое-то общее окружение, с которым мы работаем. Если все это учесть, получается даже чуть больше, чем в кластере Kubernetes.

Андрей Булов: Микросервисы это штука, которая требует некоей Java-команды и постепенного обучения. То есть вы девелопите какой-то микросервис, и в нем может постепенно меняться его бизнес-контекст. Многие забывают, что помимо обычного советского рефакторинга, который нужно делать практически каждый день, микросервисы еще требуют бизнес-рефакторинга. Если в монолите вы можете просто порефачить модули и сделать git push force, как тимлид или девелопер, то в микросервисах вам придется договориться с другими командами, с другими людьми и, например, перенести функционал из одного микросервиса в другой.

Мой личный опыт: когда разрастается какой-нибудь важный микросервис типа Order-микросервиса, или Booking-микросервиса, который выполнял 90% функционала приложения, по-моему, немного теряется смысл. Нам требовался временный рефакторинг в заказной разработке или в бизнесе. Довольно трудно продать людям, которые заведуют деньгами, что нам нужно еще пару спринтов, чтобы перекроить бизнес boundaries наших микросервисов. Потому что с первого раза (и со второго, и с третьего) мы не смогли понять этот контекст, зато теперь научились.

Я это лично продавал продуктоунерам. Это занимательно. Если уж вы отважились на микросервисы, всегда помните о том, что рефакторинг не закончится никогда. Он как ремонт, и вам нужно будет всегда со всеми договариваться. Закладывайте хотя бы процентов 20 времени исключительно на это.

Алексей Шарапов: С мыслями о рефакторинге я не согласен. Если API меняется от версии к версии, возможно, это включает в себя несколько проблем, которые больше на совести девелопера, разрабатывающего эту часть. Либо нужно запланировать, что не стоит вводить постоянные изменения, включая новый функционал микросервисов.

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

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

Как всегда, когда собрались архитекторы, происходит рефакторинг ради рефакторинга. Но нужен ли он здесь на самом деле, или хочется впихнуть то, что в формат микросервиса впихивать не нужно? В монолите мы привыкли к тому, что можно что-то переписать, поменять модуль, и все классно! Но чтобы отрефакторить монолит, которому 20 лет (а я с таким сталкивался в реальном мире, это не сказки), только для того, чтобы разобраться, как это сделать, нужно полгода. И это без учета времени на необходимые изменения.

Андрей Булов: Микросервисы copy & paste driven development. Согласно идеологии микросервисов, в них не должно быть общих зависимостей, кроме какого-нибудь спринга, или общих либ. Но почему-то все забывают о том, что когда микросервисы пишутся для энтерпрайза, пусть и не очень кровавого, у него есть enterprise-specific вещи. А есть еще базовые, типа общей аутентификации, общего логирования, общих доменных объектов.

В зависимости от упорства адептов микросервиса, мы будем либо копипастить весь этот код между нашими микросервисами, либо сделаем библиотеку, либо вынесем это в отдельный микросервис.

Я прекрасно помню кейс, когда мы деплоимся на какой-то init или prod, у нас собираются нормально десять микросервисов, а одиннадцатый бабах! падает. Мы забыли туда скопипастить наш общий user-объект, в котором есть пермиссии. И с матами, конечно, все это дело правим.

Поэтому от идеологии всегда приходится отступать, и делать либы. Но тогда это уже перестает быть микросервисом.

Очень трудно определить бизнес-контекст такого микросервиса. Например, аутентификация это бизнес или не бизнес? А общие объекты, которые валидны для всего приложения, или для всего энтерпрайз-ландшафта? И начинаются всякие интересные спекуляции.

За это я микросервисы не очень люблю.

Алексей Шарапов: В этом моменте я с тобой согласен, но не во всем. Мне нравится подход, когда библиотека выносится отдельно, и все ее куски делаются при помощи CTRL-C CTRL-V. С июля мы начали новый проект, в котором изначально используется микросервисный подход. И я слышал что-то подобное от наших архитекторов: либо мы копируем, либо выносим в библиотеки.

Но подключать библиотеку стоит, наверное, на стадии сборки самого микросервиса. А мы сейчас говорим про наш энтерпрайз Agile, и в этом нет ничего страшного. Это просто зависимость, которая будет выполнять близкий функционал. Либо к чему мы пришли только спустя четыре месяца работы стоит выносить этот функционал в отдельный микросервис.

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

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

Андрей Булов: Собственно, именно поэтому: в микросервисах нет единого хорошего стандарта, а есть набор практик и адепты, каждый из которых агитирует за свое. Если микросервис разрабатывает программист или команда программистов, вы получите свой уникальный стиль микросервиса с такими вещами, как POST vs PUT (холивар на кухне), и рассуждениями о том, какие ошибки мы возвращаем при валидации, какое возвращаем время и в каком стиле мы возвращаем API.

Это требует либо постоянного ревью: чтобы пришел архитектор или лид-девелопер и вставил руки в нужное место, либо нужен общий гайдлайн на проект. Но опять же, общих best practices для микросервисов, к сожалению, нет. Адепты спорят друг с другом. И ты думаешь: Хм, разработчик Василий так любит двухсотый код возвращать, надо учесть эту специфику. А этот, наверное, 404 бросит. Ведь тут не сервер упал, просто у него код ошибки такой. Либо требуется централизованное управление, и тогда теряется весь смысл микросервисов. У тебя получается команда с многими модулями, которые просто деплоятся отдельно, и архитектор ходит и пишет для них гайдлайны.

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

Алексей Шарапов: А как вообще жить без документации? Я бы начал с этого, потому что я себе такого не представляю. Да, мысль, может быть, чуть-чуть испорчена энтерпрайз-сложным миром, большим и тяжелым. Но даже несмотря на микросервисную инфраструктуру и архитектуру, мне нравится документация. Под ней можно понимать не подробный талмуд о том, как мы должны написать микросервис, а описание общих частей.

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

По поводу всего остального. Во-первых, инфраструктура as a code становится проще. То есть деплой становится everything as a code, а все части деплоя, инфраструктуры и самого кода вы можете посмотреть в Гите. Разработчику проще, когда он деплоит какое-то количество микросервисов, и отлавливает эти ошибки быстрее. Ему не нужно лезть в тяжелый монолит, рассматривать его и пытаться понять, что происходит. Он понимает, что происходит от написания первой строчки до попадания на ProdStage, и на каждой отдельной части.

Плюс выпуск происходит намного быстрее, и ему легче свериться с документацией. Ему не нужно разбираться с внутренними взаимодействиями, с тем, как работает система. Он написал свою часть. Видит, с чем это все вместе работает, и может выпускать этот кусочек. С Андреем я согласен в одном: в команде должны быть люди, которые понимают, что они делают. Даже несмотря на кровавый энтерпрайз, они должны понять, что они создают микросервис по определенным законам. И все будет круто до тех пор, пока люди соблюдают установленные правила, хотя бы из взаимоуважения.

Андрей Булов: Да, давайте наймем команду космонавтов, которая нам все хорошо сделает.

О, мое любимое.

На самом деле картинка это практически реальный ландшафт системы и реальный кейс. Прибегает ко мне заказчик, говорит: Слушай, там бага. Из Гуя на проде неправильно заказ считается для такой-то модели машинки для немецкого рынка. Для остальных все хорошо работает. Вот тебе логи, прод не трогай. На деве это воспроизводится. И вот тебе данные.

На деве все хорошо. Значит, мне нужно поднять у себя Docker, кучу микросервисов с базой, учесть взаимодействие этого всего. А потом сидеть, как обезьянка, переключаться между PyCharm и смотреть, куда приведет тот или иной breakpoint. Потому что проблема очень скользкая, и просто логами ее вычислить невозможно.

С точки зрения вычислительных мощностей, поднять у себя такое количество докеров, конечно, можно, но тогда тормозить будет зверски. Если мы подключаемся к какому-нибудь Куберу и удаленно пробрасываем порты, конечно, оно может сработать. Но тогда получается, что один девелопер блокирует все девовское окружение, а другие сидят, курят бамбук или девелопят локально. Либо нам нужно много-много окружения, иначе необходимо много-много серверов. Что возвращает нас к первому вопросу: все это совсем не дешево.

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

Поэтому дебажить микросервисы я люблю очень сильно!

Алексей Шарапов: Андрей прямо по больному прошелся. Конечно, дебажить микросервисы довольно-таки сложно. Но, на самом деле, команда должна просто привыкнуть к освоению новых инструментов.

В мыслях о port forwarding я с Андреем абсолютно не согласен. Если приходится пробрасывать огромное количество каких-то сущностей в единицу времени, наверное, мы опять говорим о том, что у нас слишком большое количество взаимодействий. Нужно вообще прекратить это дебажить, поднимая какие-то локальные контейнеры. Либо, необходимо иметь достаточное количество неймспейсов. Понимайте изначально, во что вы вписываетесь. Да, это может быть дорого. Вы можете поднять какой-нибудь свой minikube.

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

Кроме того, можно прекратить создавать костыли, и позвать человека. Можно окружить все трассировкой, например использовать Jaeger, посмотреть, собирать логи с каждого момента. Логов не хватает: значит нужно посмотреть, как микросервисы взаимодействуют между собой. При нормальной трассировке можно обнаружить, где происходят падения. Придется поднять буквально несколько сервисов. И это займет не так много времени и ресурсов. И жизнь твоя улучшится.

К этому просто надо привыкнуть. Очень сложно осознать, что все поменялось извините, теперь будет так. Но когда привыкнешь, станет легче.

Андрей Булов: Видимо, я морально устарел в микросервисах.

Есть еще вот такой интересненький кейс:

У нас есть микросервис со своими бизнес-контекстами, сервис, который делает Order, сервис, хранящий в себе Vehicle. Есть API GW, есть GUI. К нам приходит продактоунер и говорит: Эй, ребята, мы принимаем заказы на машины, и теперь занимаемся отделкой салона.

И начинается парад независимости. Это когда команды внедряют у себя один параметр и проносят его через все независимо друг от друга.

А потом начинается игра: давайте все это дело проинтегрируем! Мы возвращаемся к предыдущему слайду: как это дебажить?

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

Это абсолютно реальный пример: нам никуда не деться от того, что придется пронести бедный параметр VehicleCover через все микросервисы и базы. Давайте это сделаем и помолимся, чтобы все программисты микросервисов назвали это правильно, соблюли чудесный capital letter, сделали везде одинаковый тип, воркчар был правильным, все это прошло ревью архитектора и т.д.

В монолите это сделать довольно легко: открываем идею, смотрим, даем кому надо по рукам профит! В микросервисах придется побегать между командами.

Алексей Шарапов: Я согласен с тем, что это будет боль. Но самое главное не создавать SOA в этом случае. Это же не микросервис: протаскиваешь через распределенные данные монолита из кусков какое-то значение, которое ты должен везде обработать. Почему твое значение не может быть отдельным микросервисом, из которого все берут данные? Или который это обрабатывает отдельно от всех, чтобы не нарушать состояние остального. Если такие требования появились, как их вписать со стороны идеологии? А если это вам не подходит, зачем вы вообще начали делать микросервисы?

По поводу зависимостей. Хочу вернуться к прошлому вопросу про копипаст, где нужно вставлять и описывать одну часть. Ты говоришь: не факт, что они правильно дадут название во всех своих сервисах. Именно для этого и нужна если не документация, то хотя бы минимальное описание, как с этим работать. Нужно просто предложить определенный алгоритм с этого дня: есть такие-то требования и проект может быть такого-то характера. А еще существует вероятность того, что этот проект изначально не был подготовлен для микросервисов.

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

Больше по этому поводу мне нечего сказать. Наверное, это вопрос ко все участникам разработки.

Андрей Булов: О, я тебя заразил здравым смыслом!

Тестирование.

Мой любимый вопрос на Lead Test Engineer или Test Manager. Я рисую такую картинку и говорю:

Это система, которая работает с деньгами пусть будет продажа машин. Если мы там что-то потеряем, человек не получит машину, а компания не получит деньги, плюс ее ждут репутационные издержки и т.д. Вопрос: как нам релизиться раз в спринт, не падать в проде и не попасть на штрафы? Напиши мне такой процесс тестирования, и я смогу убедить разработчиков написать тест. Но только напиши мне так, чтобы я был уверен хотя бы на 85%, что я в проде не упаду.

На этот вопрос, к сожалению, пока мало, кто ответил. Все почему-то говорят про модульные тесты, про то, что нам нужно окружение, еще одно окружение, еще одно окружение.

Конечно, правильно было бы иметь какой-то хороший пре-прод, в котором мы все это тестируем. Но это не всегда возможно. В классической разработке с классическими программистами, тест-лидами, менеджерами и т.д., мы имеем все эти dev-test, int, какое-нибудь staging-окружение, куда мы релизимся по определенному процессу. И мы должны понимать, что у нас все это будет протестировано.

Ни технически, ни организационно идеальных практик пока, к сожалению, нет. В общем, тяжело это работает. С монолитом проще: взяли Selenium, все протестировалось, смоками покрыли, выкатываемся в прод все работает. Мы красавцы, мы восхитительны!

Алексей Шарапов: А как же без проблем, Андрей? Может быть, в том, что касается тестирования, я с тобой согласен. Я не то чтобы заразился здравым смыслом. Просто не так глубоко погружался в проблемы тестирования.

И я еще раз призываю прекратить думать о микросервисе, как о монолите. Мы привыкли тестить так, чтобы было красиво, но теперь условия изменились. Мы, например, во время тестирования очень активно используем testcontainers. И это решает часть проблем.

Я все время говорю о том, что нужно иметь достаточное количество стендов. Я хожу в свои команды и напоминаю: Ребят, поднимите нормальное количество стендов, прекратите страдать на одном, который упал, после чего все сломалось, и вы мучаетесь. Распределите запросы, и страдания закончатся. Человек, который у вас близко работает с инфраструктурой, как мне кажется, должен взаимодействовать и с и с девелопмент командой. Хотя бы для того, чтобы подойти и сказать им: Поднимите стенды, все пробросьте к себе на машину, используйте testcontainers, прекратите тестить это, как монолит, и все будет хорошо.

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

Частично, Андрей, я с тобой согласен, но и монолит не отменяет множества стендов. Я не могу себе представить отчаянных людей, которые запустили монолит на одной машине, чтобы сэкономить свои ресурсы, и сказали: Все классно! Мы никогда не падали, а во время деплоя там огромный downtime.

Андрей Булов: Уел!

Хочу рассказать про каждому разработчику по своему Куберу. CI/CD моя любимая тема.

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

  • Мы пересобираем все сервисы каждый коммит?

  • Сколько нужно слейвов на сборку?

Приходит бизнес и говорит:

А сколько нам нужно заплатить за сборку? Сколько-сколько? Нет, вон там стоит под столом сервер, давайте его использовать.

  • А почему все так медленно работает?

У меня пять разработчиков сделали коммиты, и пять раз подряд пересобирается весь этот зоопарк.

Помимо очень мощного окружения нужен очень мощный CI/CD.

  • Можем ли мы считать, что у нас работает система, когда собралось 60 микросервисов, и 61, который мы не релизим, упал?

У меня вопрос: можем мы зарелизиться, или нет?

Тот сервис, конечно, релизить не будем, остальные зарелизим. Какая радость от того, что мы в проде упадем?

А нужно ли вообще смотреть, что с этим микросервисом? Мы его уже 100 лет не трогали, что-то упало.

Ну, не знаю. Может быть, сам заработает.

С continuous delivery отдельная песня, когда нам нужно заделиверить что-то. Мы деливерим, деливерим, деливерим это в прод бах! падает какая-нибудь джоба, нам это нужно пересобирать все по новой, и т.д. В общем, это гораздо больнее, чем собрать один Maven clean install, прогнать все тесты все работает, мы великолепны.

Алексей Шарапов: А как жить без CI/CD? Попробую описать, что я имею в виду.

Мне кажется, что CI и CD необходимы для любого проекта. Ты используешь CI в проекте с монолитом, с микросервисами. Почему появляется необходимость на каждый коммит пересобирать все-все-все микросервисы? Здесь стоит опять задуматься о независимости. Возможно, разговор тут идет не про инструменты. Однако, предположим, какой-нибудь GitLab CI с его Docker runners сильно сэкономили бы тебе ресурсы. Мы не говорим про этот страшный Jenkins, который перегружен, огромную Java-машину. Мы можем использовать что-то более легковесное.

Может быть, каждый CI/CD должен заканчиваться на том моменте, где это на самом деле необходимо. Если речь идет об огромном монолите, который работает в нашем энтерпрайзе, скажу честно, CD у нас поскольку постольку, просто потому что есть такие условия. Однако же мы предоставляем и такой инструмент. И мы не берем jenkins , как мы привыкли, а находим необходимый инструмент легковесный, удобный. Именно с его помощью мы что-то делаем, и это классно работает.

Я просто не могу себе представить, как можно жить без CI/CD. У нас микросервисы это огромный проект, все они собирались отдельно. Был микросервис, который жил с самой первой версии, никогда не менялся, мы его не пересобирали, однако же он всегда работал. Вот она независимость.

Андрей Булов: О, вот это мой любимый вопрос на собеседовании отдельные DevOps команды.

Допустим, у нас есть вполне себе микросервисный ландшафт с базами под каждый микросервис. Все это в consistency состоянии находится, все прямо по матчасти. Приходит заказчик и говорит: Пожалуйста, перед выкаткой сделайте бэкап прода. И сделайте нормально, чтобы транзакции загасились, мы все забэкапили, сохранили и дальше накатывали, потому что деньги, заказы страшно.

Мой любимый вопрос DevOpsам: как написать такую чудесную синюю кнопку, которую жмешь, все базы в один момент с каким-то снепшотом бэкапятся. А еще все это можно потом либо восстановить одной зеленой кнопкой, либо слить разработчикам на дев-окружение. Причем мне нужно не ощущение: Ну, в принципе, нормально! Вроде, все закончилось, а что-то более доказательное. Если бизнес говорит: Ребята, это какая-то фигня, что мы ему можем возразить в ответ? Что, по нашим ощущениям, все должно работать?

Как останавливать кучу баз в один момент в микросервисах это хороший вопрос. Сможешь ли ты на него ответить?

Алексей Шарапов: Нет, потому что это один из самых сложных вопросов касательно микросервисов.

Есть разные подходы на данный момент. Предположим, что существует сложная система с балансировкой через Patroni. Мы в наших реалиях никому не можем передать имеющиеся snapshot базы, просто потому что это невозможно.

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

То есть нужно постараться максимально избегать ситуации, когда все это придется в огне восстанавливать, и это уже решит часть твоих проблем. Я обычно делаю ставку именно на это. Но, на самом деле, подходов много. Когда приходишь, а тебе говорят: Мы сделали одну базу, она крутится, все к ней обращаются. А у нас микросервисы, что теперь делать?, бывает страшно. Об это можно открыть отдельную дискуссию.

Андрей Булов:

Микросервисы просто математически дольше создавать, чем монолит. Нужно написать исходящий интерфейс, входящий интерфейс, обработку ошибок на обеих сторонах, и это все должно как-то вместе срастись. В продакшен какие-то PoC MVP быстрее писать в одной кодовой базе, в одном гите, и не гонять ресты.

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

Получается, все то, про что я говорил: все выливается в эти проблемы. Используйте паттерн мудро и только там, где это необходимо. Аминь.

Алексей Шарапов: Абсолютно согласен не нужно применять микросервисы там, где этого не требуется. Я хочу привести пример того, как я это представляю. Мы не можем запустить проект в продакшен, пока не будет написано большое количество бизнес-логики. Но мы можем посмотреть на это с другой стороны: у нас есть простой бизнес. Предположим, я сейчас делаю автоматическое создание ресурсов внутри нашей сети.

Крошечный скейтбордик это первый маленький микросервис, который дергает по REST какой-нибудь AWX и запускает создание первой машины: класс, продукт уже есть, и я могу пользоваться этим каждый день. Потом я хочу сделать самокат. Прикручиваю туда базу данных, чтобы ходить в стейты. Дальше велосипед, мотоцикл, в конце машина это уже AWX плюс Terraform, Cloud, которые взаимодействуют между собой через разные микросервисы, Kafka. Я могу создавать какие-то вещи уже с первой улыбающейся рожицы, которая на меня смотрит (LIKE THIS).

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

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

Профессиональная конференция по интеграции процессов разработки, тестирования и эксплуатации DevOpsConf 2021 пройдет 30 и 31 мая 2021. Но билеты на нее вы можете приобрести уже сейчас, успев сделать это до повышения цены.

А еще вы можете сами стать героями конференции, подав доклад.

Хотите бесплатно получить материалы предыдущей конференции по DevOps? Подписывайтесь на рассылку.

Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru