Why Twitter needs 1,000 microservices
Почему Твиттеру нужны 1000 микросервисов
В последнее время техническая сторона Твиттера все больше становится достоянием общественности, а потому из каждого утюга на него льется критика из-за оверинжиниринга. Даже некоторые вполне технически подкованные люди заявляют, что Твиттер можно было бы поддерживать вообще одному - мол, "подумаешь, твиты хостить, 80% всех микросервисов ему не нужны".
На самом деле Твиттер (не для кого не должно быть сюрпризом) - это далеко не только набор 140-символьных текстовых постов (для простоты можно оставить и это ограничение, которое уже давно было снято), а внезапно целая экосистема с налаженными процессами, которые волей-неволей появляются, если ваша аудитория превысила несколько миллионов пользователей:
процесс управления информационной безопасностью - чтобы бизнес не прикрыли из-за очередной утечки пользовательских данных
процесс управления инфраструктурой - на самом деле не важно, хостите вы текстовые посты, измеряемые байтами или гигабайтные видео (а в твиттах можно размещать и медиа объекты) , если ваша аудитория разбросана по континентам, а DAU измеряется миллионами - подход всегда примерно одинаковый
процесс управления тестированием и качеством (QA) - чтобы ежедневно не терять пользователей из-за низкого качества своего продукта
процесс управления релизами и выкатками (aka CI\CD) - когда у вас более 1 микросервиса, между ними появляются зависимости друг от друга, которые проще заскриптовать, чем делать вручную каждый раз
процесс сбора логов и метрик - без обратной связи со своим продуктом в продакшне далеко не уедешь, да и не поймешь, что пользователям нравится, а что не нравится
процесс технической поддержки пользователей - для тех, кто сталкивается с неизвестными багами либо не понимает, как пользоваться сетью
процесс управления рекламой - не так-то просто настроить нейронную сеть для хорошей лидогенерацией (один только подпроцесс сбора качественной телеметрии от пользователей чего только стоит - годы работы)
процесс борьбы с ботами (aka антиспам) - кто-то думает, что его нет, а он есть. Суммарное число забаненных ботов этой социальной сети уже в разы превышает число реальных пользователей. Представляете, что было бы, если на каждого пользователя Twitter приходилось 1-2 бота?
процесс предоставления API для сторонних разработчиков - чтобы хотя бы не все, кто хочет взаимодействовать с Twitter программно, плодили ботов
процесс цензурирования - ведь мало кто хочет видеть непристойный контент в своей ленте, опять пользователи разбегутся
процесс поддержки 100 OpenSource проектов в красивом состоянии, чтобы сообщество не поливало грязью, не отбивая тем самым желание новых специалистов устраиваться на работу
процесс совершенствования методологий разработки и правил оформления кодовой базы - чтобы через год разработчики не перестали быть способны поддерживать код своих предков
процесс управления документацией - чтобы на вопрос "сколько у вас микросервисов?" всегда был свежий ответ
И это я еще не начинал перечислять процессы, касающиеся непосредственно разработки кода "ядра" Твиттера (движок поиска, фронтенд и его оптимизация под разные устройства, генерация фида, постинг и хранение твитов и т.д). А что уж говорить про неайтишные процессы (HR, compliance, юристы).
На все из подобных перечисленных процессов нужны "свои микросервисы". И здесь скажу страшное: их количество благоприятно влияет на качество процессов. Например, можно отказаться от процесса "сбора логов и метрик" и полагаться на жалобы от пользователей в тех.поддержке - критические проблемы, может, и получится так устранять, но предупреждать их возникновение - едва ли - это уже совсем другой уровень качества процесса.
Также нужно понимать, что разработать сервисы куда проще, чем потом поддерживать их качество на должном уровне - для этого требуются отлаженные процессы и следование им. Грубо говоря, наколбасить можно за один вечер, а вот потом собирать все недочеты и внедрять их в уже работающую систему - дело кропотливое и нервозное. Наверное, именно поэтому нанятый Илоном Маском "хакер" Geohot для исправления проблем с поиском в Twitter не хочет задерживаться в Twitter дольше 12 недель:
Этим хочу завершить свою короткую статью, которую теперь можно использовать как аргумент в будущих спорах - почему простые, но популярные сервисы нуждаются в своих 1000 микросервисах.
Коментарі
Дописати коментар
Олег Мічман в X: «Donations and support for media resources, bloggers, projects, and individuals. https://t.co/HPKsNRd4Uo https://t.co/R6NXVPK62M» / X
https://twitter.com/olukawy/status/1703876551505309973