Привет, Хабр! На связи Т1 Цифровая Академия из Холдинга Т1. Сегодня хотим рассказать, как мы добились того, что 233 специалиста перешли с Oracle на PostgreSQL всего за 10 месяцев.

Почему часто лучше обучить, чем нанять

В начале 2022 года внешние условия резко поменяли картину мира и ИТ-отрасль. Во-первых, иностранные поставщики решений — Microsoft, IBM, Cisco, Adobe и не только — ушли с российского рынка, и ИТ-специалисты остались один на один с отечественными разработками и альтернативными ИТ-решениями, которые приходилось изучать по ходу работы. Во-вторых, в среднем отрасли не хватает около 1 млн ИТ-специалистов, особенно уровня middle и senior. На поиск кандидатов с опытом от 6 лет может уходить до полугода. Такое положение дел заставляет бизнес искать альтернативы найму новых сотрудников с нужными знаниями.

Как представители одного из лидеров ИТ-отрасли мы понимаем, что сейчас постоянный апгрейд знаний в ИТ — основа основ. Компаниям выгодней взрастить текущие кадры, раскрыть их сильные стороны и улучшить навыки, чем потратить от 3-х месяцев на поиск идеального кандидата в условиях нехватки кадров.

Почему переход с одной СУБД на другую — это вызов

Одна российская компания обратилась к нам за помощью — ей требовалось импортозаместить Oracle на PostgreSQL за 1 год. По оценкам команд это заняло бы минимум 1,5 года из-за отсутствия специалистов по PostgreSQL, затяжной миграции и низкой мотивации специалистов. 

Такой длительный переход мог существенно затормозить бизнес-процессы: если в процессе перехода лицензия закончится, то купить новую уже не получится; при отсутствии технической поддержки со стороны Oracle нельзя будет устранить технические ошибки, из-за которых можно остаться без функционирующих БД как у всей компании, так и у заказчиков. Сбои в работе ПО, которые работают на основе БД, могли бы повлечь и более серьезные проблемы. А потеря данных была бы вовсе критической.

Так что компании-заказчику был необходим такой инструмент, который бы ускорил миграцию баз данных и не повлек за собой экономические риски.

Oracle и PostgreSQL: в чем суть?

Oracle — это реляционная система управления базами данных (СУБД) с  широким набором инструментов и функций для хранения, управления и обработки данных. Она разработана компанией Oracle Corporation и является коммерческим продуктом. Еще в 2019 году, по данным опроса TAdviser, 81% российских компаний использовали СУБД Oracle и только 51% — PostgreSQL. 

Так как Oracle — одна из самых популярных в мире, легче найти ИТ-специалиста, который умеет с ней работать. Высокотехнологичность и управляемость системы делает ее гибкой для настройки и изучения.

Среди основных преимуществ Oracle:

  1. Масштабируемость: Oracle способен обрабатывать большие объемы данных и поддерживать высокую производительность даже при большом количестве одновременных пользователей.

  2. Надежность: Oracle обеспечивает высокую степень отказоустойчивости и защиты данных.

  3. Богатый набор функций: Oracle предлагает множество расширенных функций, таких как поддержка транзакций, резервное копирование и восстановление данных, шифрование и другие.

  4. Качественная техническая поддержка, к которой можно обратиться при возникновении проблем.

Что насчет PostgreSQL? Это тоже реляционная система управления базами данных, но с открытым исходным кодом. Она разрабатывается международным сообществом разработчиков PostgreSQL Global Development Group.

Характеристики PostgreSQL включают:

  1. Масштабируемость: PostgreSQL умеет работать с большими объемами данных, поддерживать сложные запросы, объединять десятки таблиц. Подключаться к БД можно одновременно с многих устройств благодаря MVCC.

  2. Поддержка JSON: PostgreSQL имеет встроенную поддержку для работы с данными в формате JSON, что делает его удобным для работы с современными веб-приложениями.

  3. Надежность: PostgreSQL поддерживает ACID и предоставляет различные методы репликации данных, что позволяет создавать отказоустойчивые и масштабируемые системы.

  4. Расширяемость — важная особенность PostgreSQL. В инструменте есть возможность включать и создавать extension — микропрограммы, расширяющие функционал СУБД. Можно писать функции на нескольких языках программирования, добавлять свои типы данных и новые типы индексации, разрабатывать хранимые процедуры и функции на языках PL/PgSQL и PL/SQL.

PostgreSQL стала наиболее привлекательной альтернативой Oracle и вполне может заменить эту СУБД. По словам экспертов, инструмент обладает высокой производительностью и выдерживает сервисы с большими нагрузками. Его используют такие крупные компании, как Alibaba, Sony, TripAdvisor и другие.

Открытый доступ инструмента делают его независимым от внешних условий — его не могут отключить или заблокировать. Так как PostgreSQL некоммерческий продукт, компаниям не нужно платить за лицензирование и зависеть от технической поддержки, которую не смогут оказать в России.

При миграции с Oracle на PostgreSQL стоит учитывать особенности новой СУБД. Многофункциональность PostgreSQL позволяет работать с большими данными, что влияет на скорость и требует достаточного объема памяти компьютера. Однако в зависимости от типа ситуации скорость может быть не так важна, как качество полученных данных, а PostgreSQL с этим справляется. Важно помнить, что у PostgreSQL нет такой оперативной технической поддержки, как у Oracle. При этом появляются отечественные разработки такие, как PostgreSQL Pro, где техподдержку смогут оказать российские разработчики данной СУБД.

Чтобы учесть все эти особенности, ИТ-специалистам нужно проходить дополнительное обучение — PostgreSQL требует настройки, изучения функций и понимания нюансов, чтобы исключить ошибки при переносе данных и последующей поддержки перенесенных проектов.

Как происходит миграция данных из Oracle в PostgreSQL?

Миграция данных из одной СУБД в другую может нести разные трудности. В основном это связано с несовместимостью различных параметров систем:

  • Архитектур в целом

  • Форматов кластеризации/репликации/бэкапов

  • Форматов данных

  • Форматов процедурных языков

  • Функционала

  • Поддержкой софтом новой СУБД

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

При миграции данных из Oracle в PostgreSQL может быть выполнен следующий алгоритм:

  1. Воспользоваться автоматизированными утилитами для миграции, например, для Oracle — это ora2pg.  

  2. Найти все несовместимости и устранить их, переписать необходимые функции и процедуры.

  3. Уделить много времени тестированию и профилированию запросов

  4. Разработать функциональное и нагрузочное тестирование.

  5. Не торопиться отключать исходную систему после миграции.

Чтобы провести миграции максимально эффективно, требуется понимание, как работает новый инструмент. Специалистам, которые хотят перенести данные с Oracle на PostgreSQL, нужно изучать особенности и учитывать их при миграциях. Целесообразно доверить этот процесс тем, кто в дальнейшем будет оказывать техпомощь проекту.

Как мы решали проблему импортозамещения и обучения специалистов

Наш заказчик столкнулся не только с тем, что у сотрудников не было опыта работы с PostgreSQL, но и с низкой мотивацией: только 26% сотрудников хотели перейти на новый инструмент. При этом все специалисты, которые участвуют в разработке и поддержке ПО, должны уметь работать с реляционными системами. Среди них разработчики, аналитики, тестировщики, поддержка, сопровождение, ci/cd инженеры, DE, DS. В первую очередь им нужно знать основы реляционных БД, основы операционных систем Linux, уметь работать в консоли. По данным исследования Работа.ру и Heaad, знание SQL находится в топ-3 навыках для аналитиков и разработчиков.

Поиск специалистов, которые бы умели работать в PostgreSQL, потратил бы много ресурсов клиента — рынок испытывает дефицит в аналитиках (10,4% от всех размещенных вакансий в ИТ), специалистах технической поддержки (9,7%), тестировщиках (7,7%). Так что, переобучить специалистов по Oracle было логичным и естественным решением. И мы как поставщик образовательных решений приступили к комплексной работе.

Чтобы понять уровень знаний специалистов компании-заказчика, мы провели исследование: сделали аудит текущих рабочих задач и процессов и оценили навыки сотрудников. При тестировании мы смотрели на:

  • Знание реляционных БД

  • Опыт работы в Linux

  • Опыт внедрения баз данных

  • Опыт миграции данных

  • Опыт администрирования БД

  • Опыт внедрения изменений

  • Лидерские качества

  • Опыт публичных выступлений

По итогам аудита, из 233 инженеров мы отобрали 31 специалиста с навыками, подходящими под выполнение первых самых сложных миграций. Им предстояло пройти индивидуальное обучение в течение 2 месяцев: первые команды детально разбирали проблемы на проектах и решали их при поддержке экспертов Т1. 

Инженеры, прошедшие курс, транслировали прогресс в сообщества и проводили субкультурное обучение. Лидеры в неформальной обстановке собирали коллег, чтобы поделиться своими успехами миграции и удобствах новой системы.  По сути, они стали центрами компетенций, лидерами мнений, которые могли мотивировать своим примером коллег, давать консультации и отвечать на вопросы: за 3 месяца в чатах сообществ набралось 700 человек, которые обращались за помощью к инженерам. Вместе они разбирали нестандартные случаи и сложные кейсы по темам архитектуры, кластеризации, формата данных и процедурных языков, минимизации даунтайма.

Первое обучение инженеров стало основой для составления миграционных шаблонов, примеров скриптов и списка самых распространенных ошибок, с которыми можно столкнуться при миграции в этой компании. Эксперты Т1 и лидеры изменений решали, как лучше масштабировать полученные знания на их команды, они вместе пилотировали и улучшали программу для будущих потоков. Это помогло повысить компетенции сотрудников по многим направлениям сразу:

  • Базовый инструментарий

  • Архитектура

  • Организация данных

  • Управление доступом

  • Резервное копирование и репликации

  • Выполнение запросов

  • Доступы, роли, атрибуты, привилегии

  • Статистика – границы распределения данных в таблице

  • Профилирование

  • Приемы оптимизации

  • Работа через Hibernate

  • Миграция данных

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

Чтобы внедрить обучение в жизнь компании, мы вместе с HR и лидерскими командами провели внутреннюю кампанию, в которой использовали интегрированный подход к коммуникациям: доносили информацию до сотрудников через разные каналы, например, корпоративный портал, сообщества и чаты, раскручивали сарафанное радио или лично направляли инженеров с навыками миграции данных пройти первое обучение.

Еще мы создали систему оперативного консультирования: от инженеров -> к лидерским командам компании -> до экспертов Т1. Сотрудники могли ознакомиться с FAQ или задать собственный вопрос в чатах, проекте в Jira или на регулярных встречах. Мы также создали экспертный совет по автоматизации миграции и разработке шаблонов, результаты работы которого упростили рабочие процессы многим командам. В общем, у сотрудников были все ресурсы, чтобы быстро найти ответы на свои вопросы и обучиться новому инструменту.

Что в итоге?

  • После обучения 93% сотрудников успешно справились с практическими заданиями, 233 специалиста по Oracle перешло на задачи по PostgreSQL.

  • Процент желающих специалистов перейти на новый инструмент вырос с 26% до 73%.

  • Компания перешла на PostgreSQL за 10 месяцев вместо планируемых 1,5 лет.

Таким образом, компания смогла решить задачу перехода с Oracle на PostgreSQL быстрее, дешевле и эффективнее с помощью правильно проработанного содержания обучения и процесса его проведения.

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

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


  1. Xexa
    30.08.2023 06:27
    +1

    "по данным опроса TAdviser, 81% российских компаний использовали СУБД Oracle и только 51% — PostgreSQL"

    Глубина этого "использования" не понятна. То, что где-то стоит сервис и работает тихонько с постгрей для хранения временных/локальных данных, не значит всё же, что "работает". С таким подходом sqllite используют все. И Ораклом аналогично.

    Странный отчёт и странное упоминание о нём.


  1. NIKEtoS1989
    30.08.2023 06:27

    PosgreSQL это конечно хорошо, опенсорс все дела... но когда мне надо сделать DATEDIFF - становится больно(


    1. breninsul
      30.08.2023 06:27

      Эээ... почему? Ва нужна разница? Тогда просто -. Нужно сколько минут/дней/недель/.*?

      select extract(day from ts1-ts2).

      Если вам так нужна именно функция с 3мя аргументами - просто создайте ее сами


      1. NIKEtoS1989
        30.08.2023 06:27

        Да понятное дело, что это ни нерешаемая проблема, просто Оракле и МайСКЛ оператор работает, а тут нет)


  1. Acidosulus
    30.08.2023 06:27

    Неплохо так использовали 31го специалиста, им хоть доплатили, за лидерские качества и агитацию за светлое будущее ?