Привет, Хабр! На связи Т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:
Масштабируемость: Oracle способен обрабатывать большие объемы данных и поддерживать высокую производительность даже при большом количестве одновременных пользователей.
Надежность: Oracle обеспечивает высокую степень отказоустойчивости и защиты данных.
Богатый набор функций: Oracle предлагает множество расширенных функций, таких как поддержка транзакций, резервное копирование и восстановление данных, шифрование и другие.
Качественная техническая поддержка, к которой можно обратиться при возникновении проблем.
Что насчет PostgreSQL? Это тоже реляционная система управления базами данных, но с открытым исходным кодом. Она разрабатывается международным сообществом разработчиков PostgreSQL Global Development Group.
Характеристики PostgreSQL включают:
Масштабируемость: PostgreSQL умеет работать с большими объемами данных, поддерживать сложные запросы, объединять десятки таблиц. Подключаться к БД можно одновременно с многих устройств благодаря MVCC.
Поддержка JSON: PostgreSQL имеет встроенную поддержку для работы с данными в формате JSON, что делает его удобным для работы с современными веб-приложениями.
Надежность: PostgreSQL поддерживает ACID и предоставляет различные методы репликации данных, что позволяет создавать отказоустойчивые и масштабируемые системы.
Расширяемость — важная особенность 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 может быть выполнен следующий алгоритм:
Воспользоваться автоматизированными утилитами для миграции, например, для Oracle — это ora2pg.
Найти все несовместимости и устранить их, переписать необходимые функции и процедуры.
Уделить много времени тестированию и профилированию запросов
Разработать функциональное и нагрузочное тестирование.
Не торопиться отключать исходную систему после миграции.
Чтобы провести миграции максимально эффективно, требуется понимание, как работает новый инструмент. Специалистам, которые хотят перенести данные с 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)
NIKEtoS1989
30.08.2023 06:27PosgreSQL это конечно хорошо, опенсорс все дела... но когда мне надо сделать DATEDIFF - становится больно(
breninsul
30.08.2023 06:27Эээ... почему? Ва нужна разница? Тогда просто -. Нужно сколько минут/дней/недель/.*?
select extract(day from ts1-ts2).
Если вам так нужна именно функция с 3мя аргументами - просто создайте ее сами
NIKEtoS1989
30.08.2023 06:27Да понятное дело, что это ни нерешаемая проблема, просто Оракле и МайСКЛ оператор работает, а тут нет)
Acidosulus
30.08.2023 06:27Неплохо так использовали 31го специалиста, им хоть доплатили, за лидерские качества и агитацию за светлое будущее ?
Xexa
"по данным опроса TAdviser, 81% российских компаний использовали СУБД Oracle и только 51% — PostgreSQL"
Глубина этого "использования" не понятна. То, что где-то стоит сервис и работает тихонько с постгрей для хранения временных/локальных данных, не значит всё же, что "работает". С таким подходом sqllite используют все. И Ораклом аналогично.
Странный отчёт и странное упоминание о нём.