Опубликовано

Вышла книга: “Инжиниринг платформ: техническое и управленческое руководство”

Инжиниринг платформ

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

Для специалистов DevOps, системных администраторов, руководителей команд

Инжиниринг платформ — это командная игра. Перед вами правила игры.

Келси Хайтауэр, заслуженный инженер Google, соавтор книги «Kubernetes: Up & Running» (O’Reilly)

Техническое и управленческое руководство

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

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

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

Это практическое руководство подробно рассказывает об инжиниринге платформ – новом направлении в индустрии DevOps —  и помогает разработчикам, менеджерам и руководителям внедрить в организации те изменения, которые позволят развивать продукт как платформу. Вы узнаете, что входит и не входит в понятие «инжиниринг платформ» и почему эта парадигма становится необходимой.

Книга поможет:

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

Иэн Ноуленд — ветеран индустрии программного обеспечения с 25-летним стажем, занимавший пост старшего вице-президента в компании Datadog. С 2008 по 2016 год работал в компании AWS, где руководил проектами Amazon EMR и EC2 Nitro. В настоящее время является соучредителем стартапа.

 

 

Camille Fournier

Фурнье Камиль занимала должность руководителя в компаниях от зарождающихся стартапов до корпораций из рейтинга Fortune 50. Была в числе основателей Комитета по техническому надзору CNCF, в настоящее время входит в совет директоров журнала ACM Queue. Автор книги «The Manager’s Path» издательства O’Reilly.

Книгу “Инжиниринг платформ: техническое и управленческое руководство” можно купить в нашем интенет-магазине.

Отзывы на книгу “Инжиниринг платформ”. 13

Предисловие. 15

Введение. 17

От Камиль Фурнье. 17

Для кого предназначена эта книга. 18

Как читать эту книгу. 19

Онлайн-обучение O’Reilly. 20

Наши контакты.. 20

Благодарности. 21

От Камиль. 21

От Иэна. 21

От нас обоих. 22

ЧАСТЬ I. Что такое инжиниринг платформ и для чего он нужен. 23

Глава 1. Почему инжиниринг платформ приобретает такую важность. 25

Определение платформы и другие важные термины.. 26

Наше общее болото. 27

Как мы увязли в этом болоте. 30

Изменение № 1. Расширение возможностей выбора. 30

Изменение № 2. Более высокие операционные потребности. 33

Результат: вы тонете в болоте. 35

Как разработка платформ помогает выбраться из болота. 36

Ограничение использования примитивов при минимизации накладных расходов  36

Сокращение количества клея для каждого приложения. 37

Централизация затрат на миграцию.. 39

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

Позвольте командам сосредоточиться на создании платформ.. 41

Резюме. 44

Глава 2. Основы инжиниринга платформ.. 45

Кураторский подход к продукту. 46

Разработка абстракций на основе программного обеспечения. 48

Основные абстракции: платформенный сервис и его API-интерфейсы.. 49

“Толстые” клиенты.. 50

Настройки OSS. 51

Интеграция реестров метаданных. 52

Обслуживание широкого круга разработчиков приложений. 54

Платформа в качестве фундамента. 56

Ответственность за всю платформу. 57

Поддержка платформы.. 58

Операционная дисциплина. 59

Резюме. 61

ЧАСТЬ II. Практика инжиниринга платформ.. 63

Глава 3. Как и когда начинать. 69

Содействие сотрудничеству при создании платформ на ранних стадиях. 69

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

Соответствуют ли преимущества централизации владения понесенным затратам?  77

Осознайте, что коллективная динамика исчезла. 78

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

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

Не спешите нанимать менеджеров по продуктам (и избегайте менеджеров проектов) 80

Дополнительные проблемы для платформ интеграции и совместного использования сервисов  81

Трансформация традиционной инфраструктуры организации. 84

Вся ваша инженерная культура должна измениться. 84

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

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

Измените способ поддержки своих продуктов. 86

Обновите свой процесс собеседования. 86

Обновите свои системы признания и вознаграждения. 87

Не нужно нанимать слишком много менеджеров проектов. 87

Согласитесь с тем, что ваша команда будет тратить больше времени
на общение с клиентами и меньше — на написание кода. 88

Проведите необходимую реструктуризацию.. 88

И пусть это будет весело! 89

Резюме. 89

Глава 4. Создание отличных платформенных команд. 91

Риски, связанные с командами, работающими с платформами. 92

Слишком много внимания уделяется системам.. 92

Слишком много внимания уделяется разработке. 94

Различные роли платформенных инженеров. 95

Инженеры-программисты.. 96

Системные инженеры.. 98

Инженеры по надежности. 99

Специалисты по системам.. 100

Подбор и утверждение инженеров на все должности. 101

Разрешите специфические названия должностей. 103

Избегайте создания новой матрицы уровней инженеров-программистов. 103

Используйте, по возможности, одноуровневую матрицу для системных
ролей. 104

При необходимости создайте новый процесс собеседования при найме инженеров-программистов  105

Для разных системных ролей интервью не должно сильно меняться. 107

Интервью для выявления эмпатии к клиентам.. 108

Из кого получаются инженеры-менеджеры по разработке отличных
платформ?. 109

Опыт работы с платформами. 109

Опыт работы в крупных долгосрочных проектах. 110

Внимание к деталям.. 111

Другие роли в команде разработчиков платформы.. 111

Менеджеры по продуктам.. 111

Владельцы продуктов. 113

Менеджеры проектов / технические менеджеры программ.. 113

Девелопер-адвокаты, технические писатели и инженеры службы поддержки. 114

Формирование культуры команды разработчиков платформы.. 115

Разделение ответственности между командой разработчиков
и командой SRE. 115

Сильные и слабые стороны команды разработчиков. 115

Объединение команд и добавление управления продуктами. 116

Внедрение культуры разработки платформ.. 117

Резюме. 118

Глава 5. Платформа как продукт. 119

Культура продукта, ориентированная на потребителя. 120

Характеристики внутренних клиентов. 121

Взаимодействие с внутренними клиентами. 123

Эмпатия к клиентам.. 125

Как избежать ловушки магазина функций, чтобы обеспечить более широкое обслуживание клиентов  128

Поиск новых продуктов и анализ рынка. 130

Определение потенциальных платформенных продуктов. 131

Развитие существующих предложений: сглаживание граней или переосмысление проблемы   134

Маркетинговые исследования: обоснование новых инвестиций. 136

Метрики продукта. 141

Успешная реализация продукта: составление дорожной карты.. 146

Видение. Долгосрочное. 147

Стратегия. Среднесрочная перспектива. 147

Цели и метрики. Планы на год. 148

Контрольные точки. Ежеквартально. 148

Спецификация функций. 149

Практика делает всё более совершенным.. 149

Типы сбоев в разработке продукта. 151

Недооценка стоимости миграции. 152

Завышение бюджета на изменения в работе пользователей. 152

Переоценка новых функций при низкой стабильности. 153

Слишком много менеджеров по продуктам для инженерной команды.. 154

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

Резюме. 155

Глава 6. Эксплуатация платформ.. 157

Практика работы по вызову. 158

Почему важно обслуживание по вызову в режиме 24´7. 159

Зачем объединять DevOps?. 159

Переход к устойчивой нагрузке по вызовам.. 161

Методы поддержки. 164

Почему инженеры-разработчики платформы должны выполнять работу
по поддержке. 165

Этап 1. Формализуйте уровни поддержки. 166

Этап 2. Отделите некритическую поддержку от поддержки по вызову. 168

Этап 3. Наймите специалиста по поддержке. 169

Этап 4. Масштабирование с помощью организации технической
поддержки. 171

Практика оперативной обратной связи. 173

SLO и SLA необходимы. Бюджеты ошибок не обязательны.. 174

Управление изменениями. 176

Синтетический мониторинг. 178

Операционные обзоры.. 180

Резюме. 182

Глава 7. Планирование и поставка. 183

Планирование долгосрочных проектов. 184

Уточнение целей и требований в документе-предложении. 184

Переход от предложения к плану действий. 186

Не затягивайте работу. 188

Планирование дорожной карты “снизу вверх”. 192

Работа по принципу “Не выключай свет” (KTLO) 193

Приказы.. 194

Усовершенствования системы.. 195

Повышение эффективности и производительности. 197

Повышение безопасности и соответствия требованиям.. 199

Сводим всё это воедино. 200

Сообщайте о победах и трудностях раз в две недели. 204

Основы.. 205

Зачем? В чем ценность?. 205

Что? Cтруктурирование побед и трудностей. 206

Не забывайте о проблемах! 207

Научите свою команду писать о победах и трудностях. 208

Резюме. 210

Глава 8. Реорганизация платформ.. 213

Почему преобразование архитектуры предпочтительнее, чем создание
версии 2. 214

Разное инженерное мышление. 216

Архитектура определяет требования к типу мышления. 217

Почему сложно создавать платформы версии 2 и предпочтительнее
перестроить архитектуру. 219

Решение проблем безопасности с помощью архитектуры.. 222

Ограничения реорганизации архитектуры.. 228

Совместимость. 228

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

Более низкие требования к средам.. 229

Транши, медленное внедрение и отставание в версии. 230

Планирование реорганизации архитектуры.. 230

Шаг 1. Масштабно продумайте конечные цели реорганизации
архитектуры.. 232

Шаг 2. Учитывайте затраты на миграцию.. 235

Шаг 3. Определите основные достижения за следующие 12 месяцев. 236

Шаг 4. Заручитесь поддержкой руководства и будьте готовы ждать. 237

Резюме. 238

Глава 9. Миграция и закат платформ.. 241

Антипаттерны миграции. 242

Инженерия упрощенной миграции. 243

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

Создавайте архитектуру, предусматривающую прозрачную миграцию.. 245

Отслеживание метаданных об использовании. 247

Разрабатывайте автоматизацию, чтобы избежать использования
буферов обмена. 249

Документооборот для плавной миграции. 250

Координация плавных миграций. 252

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

Предоставляйте информацию заблаговременно и публично. 254

Пройдите последние 20 % пути. 255

Продуманное использование приказов. 256

Закат платформ.. 258

Принятие решения о прекращении использования (закате) платформы.. 258

Координация заката. 261

Не бойтесь сворачивать работу, когда в этом есть смысл. 262

Резюме. 262

Глава 10. Управление взаимоотношениями с заинтересованными сторонами  265

Составление карты заинтересованных сторон: матрица “власть-интерес”. 267

Общение с надлежащей прозрачностью.. 271

Остерегайтесь чрезмерного распространения деталей. 271

Разумно используйте регулярное общение в формате 1:1. 273

Следите за ожиданиями и обязательствами. 274

Расширяйте масштаб с помощью совместных совещаний и консультативных советов по работе с клиентами  275

Увеличивайте объем коммуникации в сложных ситуациях. 275

Поиск приемлемых компромиссов. 276

Четко представляйте последствия для бизнеса. 277

Иногда говорите “Да, но с компромиссами”. 278

Говорите “Нет”, не разрушая отношений. 279

Компромисс на теневых платформах. 282

Финансовые проблемы: управление затратами и бюджетом.. 285

Шаг 1. Определите, кто получит выгоду завтра. 286

Шаг 2. Распределите работу по группам (но не поручайте отдельным исполнителям) 287

Шаг 3. Предложите, что сократить, и выскажите твердое мнение о том,
что оставить. 288

Резюме. 289

ЧАСТЬ III. Как выглядит успех?. 291

Глава 11. Ваши платформы согласованы.. 293

Соответствие цели. 295

Приведение команд в соответствие с поставленной целью с помощью правильного подбора сотрудников  296

Приведение культуры в соответствие с целями и общепринятыми
методами работы.. 297

Приведение культуры в соответствие с целями при помощи
сотрудничества команд. 297

Согласование стратегии продукта. 298

Развивайте кросс-платформенное мышление с помощью независимого управления продуктами  298

Поддерживайте кросс-платформенную архитектуру с помощью независимых индивидуальных контрибьюторов. 299

Ищите обратную связь в комментариях к опросам клиентов платформы.. 300

Разумно устраняйте несогласованность с помощью реструктуризации. 301

Согласование планов. 302

Согласовывайте только крупные проекты, а не каждую деталь. 302

Будьте честны в борьбе с несогласованностью.. 303

Окончательное согласование зависит от принципиального лидерства. 304

Объединение усилий: приведение организации к согласованию.. 304

Резюме. 307

Глава 12. Вашим платформам доверяют. 309

Доверие к стилю вашей работы.. 311

Укрепляйте доверие, расширяя возможности опытных руководителей. 312

Оптимизируйте рост доверия, упорядочивая варианты использования. 313

Верьте в свои крупные инвестиции. 314

Заручитесь поддержкой технических заинтересованных сторон,
чтобы получить доверие к перестройке архитектуры.. 315

Для завоевания доверия к новым продуктам ищите спонсорскую
поддержку со стороны руководства. 315

Поддерживайте старые системы, чтобы сохранить доверие. 316

Завоевание доверия требует гибкости в отношении того, что является “правильным”  316

Доверие для определения приоритетности поставки. 317

Создайте культуру скорости поставки. 318

Расставляйте приоритеты в проектах, чтобы высвободить потенциал команды   319

Оспаривайте предположения о сфере применения продукта. 320

Объединяем всё воедино: случай с перегруженной платформой. 322

Резюме. 324

Глава 13. Ваши платформы справляются со сложностями. 327

Управление случайной сложностью, связанной с координацией
действий людей. 330

Управление сложностью, связанной с теневыми платформами. 332

Управление сложностями, возникающими при неконтролируемом росте. 335

Управление сложностью с помощью поиска нового продукта. 337

Объединение усилий: баланс между внутренней и внешней сложностями. 338

Неудачи при использовании OSS. 339

Безуспешная попытка изменить правила игры.. 339

Теневые платформы вынуждают к перезагрузке. 340

Запуск после перезагрузки. 341

Резюме. 342

Глава 14. Ваши платформы любят. 343

Любовь работает. 346

Любовь может выглядеть как хитрость. 347

Любовь может быть очевидной. 349

Соединяем всё вместе: любовь делает ваших пользователей классными. 350

В заключение. Что такое любовь? Детка, не делай мне больно. 352

Заключительные замечания. 353

Предметный указатель. 357

Об авторах. 366

Об изображении на обложке. 367