«Яндекс»: Переход с Oracle на открытое ПО позволяет нам самим решать возникающие проблемы

Postgres Professional
Postgres Professional
4 min readSep 19, 2016

«Яндекс.Почта» была запущена в 2000 году. По состоянию на середину 2016 года, по данным «Яндекса», сервис посещают более 10 млн пользователей в сутки.

Все данные в сервисе изначально хранились и обрабатывались в СУБД Oracle, а в 2016 году «Яндекс.Почта» переехала на открытую СУБД PostgreSQL.

Недостатки СУБД Oracle

«Яндекс» был недоволен тем, что с СУБД Oracle приходилось проводить множество ручных операций (например, «наливка» новой базы, переносы данных), были проблемы с разработческими окружениями, «не очень отзывчивая поддержка» и др. Об этом говорится в одной из презентвций системного администратора «Яндекс.Почты» Владимира Бородина, посвященной проекту миграции на PostgreSQL.

Во-первых, Oracle стоит как чугунный мост. Во-вторых, частенько мы наталкиваемся на какие-то внутренние оракловые проблемы. Единственный способ что-то сделать — это обратиться в поддержку. Они нам обещают, что когда-нибудь починят, но «когда-нибудь» — это плохо. Нам надо прямо сейчас. По этим двум причинам мы решили отказываться от Oracle, — об этом говорил Владимир Бородин, выступая на конференции PostgreSQL Meetup еще в сентябре 2014 года [1].

На конференции PGConf в феврале 2015 года он отмечал, что Oracle перестал устраивать «Яндекс» задолго до санкций и импортозамещения [2].

В 2012 году «Яндекс» принял «политическое» решение перевести «Яндекс.Почту» с СУБД Oracle на PostgreSQL

2012–2013: Старт проекта миграции на PostgreSQL и «пилот»

В 2012 году компания приняла «политическое» решение избавиться от Oracle за три года.

С июля 2013 года июнь 2014 года «Яндекс» проводил эксперимент на базе PostgreSQL со сборщиками почты. Сборщик — это «такая штука, которая ходит в другие почтовые системы по IMAP или POP3, собирает письма и кладет к вам в ящик. Нужно хранить информацию, куда и как ходить, и информацию о том, что уже собрано. Все метаданные лежали в Oracle, ровно как и все метаданные почты», рассказывал Владимир Бородин.

В результате миграции сборщиков в Postgres было перенесено 2,5 ТБ данных (около 17 млрд строк). Нагрузка системы — 40 тыс. запросов в секунду. По времени проект занял примерно полгода.

На лицензиях в результате отказа от Oracle в этом проекте, по словам Бородина, сэкономили столько, «что людям, которые этим занимаются, хватит на Бентли».

2015: Сотрудничество с Postgres Professional

По мнению Олега Бартунова, гендиректора компании «Постгрес Профессиональный», «Яндекс» всерьез заинтересовался Postgres. «За последнее время я прочитал их сотрудникам три лекции», — сообщил он TAdviser в июле 2015 года.

В проекте миграции почты «Яндекс» «сам проявил инициативу, сэкономил кучу денег, обеспечил нагрузку, отказоустойчивость», добавляет заместитель гендиректора «Постгрес Профессиональный» Иван Панченко.

Но интерес «Яндекса» в отношении Postgres, по словам Бартунова, гораздо шире, чем почтовый проект (в самом «Яндексе» это не подтверждают).

Они обратились к нам с просьбой создать в Postgres такие инструменты, чтобы им было легче проводить миграцию других систем, — рассказал TAdviser гендиректор «Постгрес Профессиональный». — Мы сделали возможность профилирования базы данных для работы в многоядерных серверах — это вещь, которая нужна всем владельцам крупных систем. Ее наличие позволит сделать Postgres еще более подходящим для крупных заказчиков.

В «Яндексе» TAdviser пояснили, что «Постгрес Профессиональный» разрабатывает для компании дополнительную функциональность, связанную с диагностикой и оптимизацией производительности: «Через некоторое время она будет доступна в бесплатной открытой сборке PostgreSQL, чтобы ей могли пользоваться и другие разработчики — это одно из условий нашего договора».

В «Постгрес Профессиональный» называют «Яндекс» одним из важнейших клиентов: «Для многих других компаний он является серьезным примером, показывающим возможности Postgres».

2016: Завершение миграции

К декабрю 2015 года сборщики почты были полностью переведены на новую СУБД, а в январе 2016 года начался основной перенос на нее почтового сервиса, следует из материалов Владимира Бородина. По итогам проекта в «Яндекс» осознали, что это далеко не последний проект с Postgres: «Нам очень понравилось. Были запущены другие проекты».

В июле 2016 года «Яндекс» завершил перевод своего почтового сервиса на PostgreSQL. Переписывание всего кода для работы с Oracle и PostgreSQL в общей сложности заняло 10 человеко-лет, приводят данные в «Яндексе».

Возникшие в процессе миграции проблемы Владимир Бородин связывает, в основном, не с PostgreSQL, а с данными: за более чем 10 лет существования «Яндекс.Почты» их накопилось очень много. Кроме того, возникали ошибки в коде переноса. В «Яндексе» заявили TAdviser, что в основном работали над ошибками в логике переноса данных.

В целом сложностей в ходе эксплуатации почты на PostgreSQL оказалось меньше, чем ожидал «Яндекс», но они, конечно, были, отметили в разговоре с TAdviser представители компании.

Развертывание почтового сервиса на базе PostgreSQL потребовало использования в три раза больше аппаратного обеспечения. Это связано с принципиальными различиями используемого «железа», с изменившейся нагрузкой на СУБД и ее производительностью, объяснили TAdviser в «Яндексе».

Мы перешли от вертикального масштабирования небольшого количества дорогих серверов к горизонтальному, когда серверов больше, но они дешевле, — заявили TAdviser в «Яндексе», добавив, что при этом изменилась только структура, производители не менялись.

Говоря о преимуществах PostgreSQL, в «Яндексе» отметили:

PostgreSQL — открытая система, поэтому мы можем сами оперативно решать возникающие проблемы. Это важно для сервиса, работающего в режиме 24/7. Кроме того, в PostgreSQL кэш библиотек не блокируется, а значит развертывание изменений (в том числе и на этапе тестирования) становится проще, — заявили TAdviser в компании.

Экономический эффект от миграции в компании предпочли не комментировать, равно как и планы по переводу с Oracle на PostgreSQL каких-либо других своих систем и сервисов. Ранее Владимир Бородин рассказывал, что PostgreSQL успешно используется в «Яндекс.Картах» — «из-за божественного PostGIS’а». В этом проекте свободная СУБД была выбрана изначально.

Примечания

  1. История небольшого успеха с PostgreSQL
  2. PostgreSQL в Яндексе: история успеха №2

Источник: www.tadviser.ru
16 сентября 2016

--

--