Выкладываем запись с Ozon Tech PostgreSQL Meetup. Ранее я уже описывал нашу инфраструктуру: весь PostgreSQL основан на виртуальных машинах — 2К в тестовой среде и ~8К в проде, это около 2К кластеров баз данных. Так как у нас микросервисная архитектура, мы придерживаемся принципа 1 сервис = 1 база. Нагрузка на базы может быть приличная: 2-2,5 млн транзакций в секунду, а WAL-трафик порядка 1.5 ГБ/c. 

Рассказали, как наша команда управляет всей этой инфраструктурой, как пришли к парадигме выдачи базы по кнопке и как воплотили её в жизнь.

Как это было

Я рассказал, какой раньше была инфраструктура PostgreSQL в Ozon Tech и какой стала сейчас: ресурс в виде БД по кнопке, базы заказываются через it-crowd, горизонтально масштабируем и строим планы на большую автоматизацию работы инфраструктуры вокруг PostgreSQL. 

Дима Васильев @vadv подробно рассказал, как это глубже у нас устроено: про виртуализацию и гипервизоры KVM.

Слайды

Григорий Смолкин @gsmolоб управлении бэкапами в высоконагруженной среде. Какие задачи выполняет система резервного копирования PostgreSQL и к чему мы стремимся. 

Слайды

Андрей Бородин @x4m (Yandex.Cloud) сделал краткий обзор состояния резервного копирования в разных СУБД: любопытно порефлексировать, к чему мы привыкли в PostgreSQL, и чего нет в других продуктах.

Слайды

Круглый стол с представителями Ozon Tech, Yandex.Cloud, Postgres Pro и Авито. Модерировал (за что ему спасибо) наш разработчик в группе PostgreSQL DBA Дмитрий Бабуев.

Отвечали на вопросы (как реализовано шардирование, как взаимодействовать с разработчиками) и обсудили между собой боли и проблемы при построении инфраструктуры.


Рады всем, кто присоединился и задавал вопросы, получилось интересно. До новых встреч!

Комментарии (10)


  1. chemtech
    22.03.2022 15:58

    Спасибо. Можете рассказать подробнее про hyperman? Нигде в интернете не нашел про него информацию.


    1. slysha Автор
      22.03.2022 17:49
      +1

      Пока это внутренняя разработка, но, я думаю, со временем мы сделаем ее доступной в открытом доступе


  1. maxim_ge
    22.03.2022 16:56

    2-2,5 млн транзакций в секунду

    А можно подробнее про эти транзакции? Это транзакции на запись или запросы только на чтение тоже включены сюда? Если это все вместе, каково примерно соотношение записи и чтения?


    1. slysha Автор
      22.03.2022 17:50
      +1

      Отношение пишуших транзакций к читающим у нас около 1 к 10


      1. chemtech
        23.03.2022 07:47

        С помощью JDBC у вас read only SQL транзакции идут на leader или на реплики PostgreSQL ? Можете ли выложить минимальный пример JDBC SQL read only транзакции на реплику? Заранее спасибо.


        1. slysha Автор
          23.03.2022 18:58

          На реплики. Но часть нагрузки можно и на мастера отправлять чтобы всякие микро-оптимизации срабатывал на репликах.


  1. chemtech
    23.03.2022 07:46

    Вы получаете не используете Openstack и подобные решения, а используете KVM и libvirt.


    1. slysha Автор
      23.03.2022 19:03
      +2

      Нет, упор идет именно на то чтобы быть технологически независимыми от даже OpenSource решений.
      Основной принцип почему так делаем - нам нужны фичи в продукте здесь и сейчас, простота в обслуживании, минимализм решения. Новые фичи внедряются по мере их надобности. Так же собственный продукт избавляет нас от зависимости от прихотей вендора OpenSource решения по поводу Pull Requests и всего что с этим связано


  1. chemtech
    23.03.2022 07:49

    Чем вы делаете provisioning ? Puppet? Ansible?


    1. slysha Автор
      23.03.2022 19:07
      +1

      Конфигурации для виртуалок пока еще частично доносятся ansible. Конфигурации постгреса доносятся через наш scm chiit в презентациях его упоминали.
      Основной посыл перехода на собственное решение - скорость применения/отката изменений, снижение использования ресурсов при накатке конфигураций, технологическая независимость от решений которые есть на рынке.
      сhiit компактный, быстрый и выполняет ровно те действия которые нам на текущий момент необходимы.