Why Twitter needs 1,000 microservices

 

Почему Твиттеру нужны 1000 микросервисов

Habr
3 min
Core-Архитектура Twitter от Илона Маска
Core-Архитектура Twitter от Илона Маска

В последнее время техническая сторона Твиттера все больше становится достоянием общественности, а потому из каждого утюга на него льется критика из-за оверинжиниринга. Даже некоторые вполне технически подкованные люди заявляют, что Твиттер можно было бы поддерживать вообще одному - мол, "подумаешь, твиты хостить, 80% всех микросервисов ему не нужны".

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

  • процесс управления информационной безопасностью - чтобы бизнес не прикрыли из-за очередной утечки пользовательских данных

  • процесс управления инфраструктурой - на самом деле не важно, хостите вы текстовые посты, измеряемые байтами или гигабайтные видео (а в твиттах можно размещать и медиа объекты) , если ваша аудитория разбросана по континентам, а DAU измеряется миллионами - подход всегда примерно одинаковый

  • процесс управления тестированием и качеством (QA) - чтобы ежедневно не терять пользователей из-за низкого качества своего продукта

  • процесс управления релизами и выкатками (aka CI\CD) - когда у вас более 1 микросервиса, между ними появляются зависимости друг от друга, которые проще заскриптовать, чем делать вручную каждый раз

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

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

  • процесс управления рекламой - не так-то просто настроить нейронную сеть для хорошей лидогенерацией (один только подпроцесс сбора качественной телеметрии от пользователей чего только стоит - годы работы)

  • процесс борьбы с ботами (aka антиспам) - кто-то думает, что его нет, а он есть. Суммарное число забаненных ботов этой социальной сети уже в разы превышает число реальных пользователей. Представляете, что было бы, если на каждого пользователя Twitter приходилось 1-2 бота?

  • процесс предоставления API для сторонних разработчиков - чтобы хотя бы не все, кто хочет взаимодействовать с Twitter программно, плодили ботов

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

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

  • процесс совершенствования методологий разработки и правил оформления кодовой базы - чтобы через год разработчики не перестали быть способны поддерживать код своих предков

  • процесс управления документацией - чтобы на вопрос "сколько у вас микросервисов?" всегда был свежий ответ

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

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

Также нужно понимать, что разработать сервисы куда проще, чем потом поддерживать их качество на должном уровне - для этого требуются отлаженные процессы и следование им. Грубо говоря, наколбасить можно за один вечер, а вот потом собирать все недочеты и внедрять их в уже работающую систему - дело кропотливое и нервозное. Наверное, именно поэтому нанятый Илоном Маском "хакер" Geohot для исправления проблем с поиском в Twitter не хочет задерживаться в Twitter дольше 12 недель:

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

Просмотры:

Коментарі

Популярні публікації