2023-04-14 20:01:46
Полгода в Убере (#айти) 1/2
Проснувшись однажды утром после беспокойного сна, Егор обнаружил, что он в Убере уже больше полугода. Самое время подвести первые итоги и поделиться впечатлениями.
Opinions are my own. Пост написан за 15 минут, лучше в белой футболке не читать.
Как я сюда попал
Вот так.
Чем я занимаюсь
Технически я занимаюсь нечтом под названием Stateful Container Orchestration Platform. Мы разрабатываем/поддерживаем систему, управляющую всей стейтфул нагрузкой в Убере: базами данных, кэшами, мапредусами, очередями, распределенными файловыми системами и всем что между ними.
Вся команда это около 20 человек, поделенных на четыре подкоманды:
* Fleet: всяческие лоу-левел извращения типо LVM, пердолинга докера и так далее.
* Capacity: оптимизация шедулинга нагрузки на хосты, всяческие расчеты и прогнозы капасити.
* Deployment: огранизация роллаутов новых версий баз, воркфлоу для выкаток и все вокруг.
* Core: "инфраструктура для инфраструктуры": модель и хранилище стейта системы, примитивы синхронизации, иерархичные конфиги и пара стейт машин.
Я в Core команде,
овню упомянутую выше модель и хранилище стейта системы, но зачастую проекты cross-team и очень поощряется
коллаборировать с коллегами из других команд.
Отдельный кайф — количество Staff+ людей в команде. Один сидит в моей команде, еще 4 разбросаны по другим командам. Не чувствовать себя самым умным в комнате просто великолепно!
Сама платформа была написана давненько, с тех пор команда сменилась на 100% уже пару раз. Полно легаси, полно мест, которые работают так, что мало кто понимает. Очень много кода. Не всегда хорошего качества. Не всегда идеально спроектированного.
Но это реальность большой компании.
Для людей, которые привыкли больше работать над чем-то одним и небольшим это проблема. Контекст большой, документации нормальной нет, все знания в основном в головах, но есть пара видео и десяток RFC, половина из которых устарела. А требования хорошие, особенно на Senior: надо уметь переключаться между проектами, уметь контрибутить во все, за что отвечает твоя команда и в целом быстро соображать и схватывать. Не всем это дается легко.
Но зато это работает хорошо для людей, которым комфортно оперировать большим скоупом и контекстом в голове: можно брать
ответственность, прыгать между командами и делать platform-wide проекты. Тебе дают полный простор для творчества: пиши RFC, бери на себя проекты, предлагай новые. Главное видеть, иметь насмотренность и понимать, где и куда можно принести пользу.
Для меня это кайф. Я не люблю сидеть в углу и пилить микрофичи и фиксить баги, я люблю брать
ответственность, большие куски работы и делать их с нуля. Тут такого полно и конца и края не видно.
Сам проект по-хорошему сложный. Не с точки зрения алгоритмов, а скорее с точки зрения большого количества движущихся частей, взаимодействий, распределенных систем и всего такого. Ну и понимание "если упадет, пизда всему" добавляет бодрости и жизненных сил!
Как мы работаем
Планируем мы работу на полгода. Условно считаем "сложность" проектов в FTE. 1 FTE — "проект скорее всего сделает 1 инженер за полгода фуллтайма". Не берем больше, чем N FTE проектов, где N количество инженеров. При этом проекты обычно в районе 0.5 FTE. То есть это мультимесячная активность, а значит полно unknown unknowns.
Звучит разумно, но при этом до недавнего времени у этого не было ретро на уровне команды. То есть что-то напланили, что-то сделали, что-то не сделали, а выводов не сделали. Но я проявил
ответственность и теперь будет ретро и даже чекапы раз в квартал. Больше митингов это так прекрасно!
Ну и конечно же, первое правило планирования -- неважно что ты напланировал на полгода, через месяц придет Senior VP и вы срочно будете делать другое. Так и тут,
но это реальность большой компании.
387 viewsedited 17:01