Как я в 2010 году работал в Meta

Это не та Meta, которая Фейсбук, это наша, украинская народная.

Моя первая работа в настоящем IT. Я был джуном, практически, умеющим только в PHP. Наняли писать новый вебмейл. До этого у них уже был вебмейл на Squirrelmail (собственно, до сих пор он там и живёт). Тогда не разделяли особо бекендщиков и фронтэндщиков, люди просто писали код. И я считаю это наиболее правильным подходом, который с годами, увы, перестали практиковать по двум причинам.

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

В Мете я стал изучать Javascript и Perl. JS я знал и раньше, но понял, что знаний этих не хватит, и стал изучать его тонкости по статьям Дмитрия Котерова на dklab.ru. Перл — уж не помню где изучал, но мне дико зашло и то, и другое.

Цель была — написать полностью новую инфраструктуру обработки почты, которая бы занималась и хранением, и разбором и отображением. Меня приставили к опытному синьору (который сейчас работает в Prozorro, а то и вовсе ударился в политику). Обозначим его буквой Ф. Этот чувак закончил МГУ, кажется, проработал в Яндексе некоторое время, в общем, был крутым. Он учил меня архитектуре, оптимизации кода и SQL баз данных, и переиодически давал мозголомные задачки по математике. В общем, отчасти благодаря ему я стал тем, кем я есть.

Архитектура вырисовывалась следующая. Подробности плохо помню, но уж как есть.

Облачных технологий тогда толком не было. Мы решили, что у каждого юзера будет физический почтовый ящик. Исходники писем будут храниться в файлах, а метаданные — в SQLite. Один ящик — одна база. У нас был кластер фиксированного размера, и ящики шардились по нодам кластера по принципу хеша email адреса. При таком варианте загрузка серверов была бы более-менее равномерной. На каждом серваке был демон на перле, умеющий отдавать API для работы с письмами. Перед кластером стоял шлюз-балансировщик на PHP, который умел обращаться к нужному ноду и обеспечивал авторизацию.

В общем, я писал демон на перле, балансировщик на пыхе, фронт на JS. Ещё один миддл (М) писал парсер емейлов, и собственно, почтовый сервер.

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

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

Вот наш отдел и сократили.

Это потом я понял, что так базы не скейлятся. К чёрту SQLite, нужно MongoDB, и тогда кластер с базой можно делать не фиксированного размера.
Это потом я понял, что node круче, чем perl.
Это потом появился React и прочая машинерия NPM-модулей, которые бы позволили за месяц поднять такой фронтэнд, что капец.
А чуть позже понял, что Kubernetes тут бы очень помог разрулить сервисы.

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

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