17

Click here to load reader

Илья Космодемьянский (PostgreSQL-Consulting.com), Роман Друзягин (404 Group)

  • Upload
    ontico

  • View
    745

  • Download
    3

Embed Size (px)

DESCRIPTION

HighLoad++ 2013

Citation preview

Page 1: Илья Космодемьянский (PostgreSQL-Consulting.com), Роман Друзягин (404 Group)

Как поставить миграцию баз данных на поток

Роман ДрузягинИлья Космодемьянский

Page 2: Илья Космодемьянский (PostgreSQL-Consulting.com), Роман Друзягин (404 Group)

Какие причины могут сделать миграцию выгоднее чем переделку старого хранилища?

Page 3: Илья Космодемьянский (PostgreSQL-Consulting.com), Роман Друзягин (404 Group)

Вы пришли на проект…

• Регулярно случается простой сервиса по причине базы• Нет бэкапа / high-available решения (почему-то)• Документация минимальна• Есть локальный гуру, который торжественно и таинственно

умеет базу чинить• Для бизнеса простой становится нормой

Page 4: Илья Космодемьянский (PostgreSQL-Consulting.com), Роман Друзягин (404 Group)

Внезапно гуру устал от мира и решил уйти…

• система жизнеобеспечения оставшегося в наследство решения устроена крайне неочевидно

• никто не имеет представления, с какой стороны можно подступиться, не поломав все напрочь

• Opex занимает не менее 80% рабочего времени техотдела • масштабирование команды не приносит должного эффекта,

соизмеримого с затратами• на Capex ресурсов практически не остается

Page 5: Илья Космодемьянский (PostgreSQL-Consulting.com), Роман Друзягин (404 Group)

Приходит понимание, что так жить нельзя...

• на данном этапе желание изменить ситуацию обычно высказывает бизнес

• если бизнес не знает (или не хочет знать) состояние дел в техничке, то надежда остается на компетентного техлида или дба

Page 6: Илья Космодемьянский (PostgreSQL-Consulting.com), Роман Друзягин (404 Group)

Планирование миграции

• выделяемое бизнесом время на проведение работ• количество человек, которые будут заниматься миграцией• будет ли параллельно вестись разработка новой

функциональности?• наличие у коллектива требуемых для осуществления

миграции компетенций• оценка объема и сложности кода, который надо будет

переработать и протестировать для миграции• оценка способностей предполагаемого storage, исходя из

нагруженности системы (крайне актуально для “highload” проектов)

Page 7: Илья Космодемьянский (PostgreSQL-Consulting.com), Роман Друзягин (404 Group)

Проработка деталей

• миграция схемы и данных• переработка кода, тщательное тестирование• отработка процедуры миграции, формализация плана (важно!)• оценка количества узлов, которые будут недоступны во время

миграции и связанных с этим рисков и потерь для бизнеса• обсуждение процесса миграции с нетехническим персоналом• закладывание времени, требуемого на проведение миграции• проработка плана Б• закладывание времени и трудовых ресурсов на

постмиграционный период

Page 8: Илья Космодемьянский (PostgreSQL-Consulting.com), Роман Друзягин (404 Group)

Что получилось в жизни

• оценка сложности и выполнимости миграции много времени не составляет

• переработка кода всегда займет больше времени, чем планировалось

• закладываемое время можно в уме увеличивать на ⅓• будьте готовы не взлететь с первого раза (и готовьте

бизнес)

Page 9: Илья Космодемьянский (PostgreSQL-Consulting.com), Роман Друзягин (404 Group)

Выбор технологии

• должен основываться на объективных критериях работоспособности, а не личных желаниях и потребностях

• технология должна иметь проверенную накопленную базу знаний, живое коммьюнити, учебные материалы и т.д.

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

• бОльшая часть коллектива должна обладать навыками и знаниями, достаточными для освоения технологии в разумные сроки

Page 10: Илья Космодемьянский (PostgreSQL-Consulting.com), Роман Друзягин (404 Group)

Как освоить технологию командой?

• сильно зависит от отношений в коллективе и с техлидом• революционно-инициативная команда сама изучит• менее склонный к трудовым подвигам коллектив надо

обучать

Page 11: Илья Космодемьянский (PostgreSQL-Consulting.com), Роман Друзягин (404 Group)

Как организовать работу команды над миграцией?

• заранее проработайте все неочевидные моменты и составьте базу знаний

• четко обозначьте, “что такое хорошо, а что такое плохо”• выработанным правилам работы со старым и новым

кодом должна подчиняться вся команда, без исключения

• организуйте “горячую линию” связи с компетентным специалистом, владеющим технологией

Page 12: Илья Космодемьянский (PostgreSQL-Consulting.com), Роман Друзягин (404 Group)

Как смигрировать данные?

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

решения уникальной задачи• всеми силами избегайте переработки бизнес-логики (в

т.ч. оптимизация, рефакторинг и прочие умные слова)

Page 13: Илья Космодемьянский (PostgreSQL-Consulting.com), Роман Друзягин (404 Group)

“Best practices” по тестированию

• тестирование должно быть ручным и выполняться профессиональным тестировщиком

• новую функциональность надо сразу “мигрировать” и независимо проверять

• компоненты с нетривиальной бизнес-логикой (биллинг, парсеры, асинхронная обработка и т.п.) надо перерабатывать в первую очередь и тестировать на протяжении длительного времени

• процесс миграции данных надо тестировать как backup/recovery-решение

Page 14: Илья Космодемьянский (PostgreSQL-Consulting.com), Роман Друзягин (404 Group)

Час Ч

• все действующие лица должны быть выспавшиеся, бодрые, трезвые

• должно быть обеспечено наличие у всех нормального интернета и резервных каналов, проведена плановая проверка рабочих станций

• порядок действий от первого до последнего пункта должен быть расписан с максимальной точностью на бумаге/в документе

• “штатные” внештатные ситуации тоже должны быть запланированы и расписаны

• правильно составленный план позволяет “разыграть” миграцию словно по нотам

Page 15: Илья Космодемьянский (PostgreSQL-Consulting.com), Роман Друзягин (404 Group)

Как удостовериться, что миграция удалась?

• миграция не потребовала большого количества дополнительного времени

• вам не пришлось подпирать “костылями” ключевые компоненты системы

• вам не потребуется еще две недели простоя бизнеса на то, чтобы “зафиксить все баги”

Page 16: Илья Космодемьянский (PostgreSQL-Consulting.com), Роман Друзягин (404 Group)

Светлое будущее: наступило или нет?

l количество бизнес-"хотелок" после миграции удвоится

l до повторной миграции лучше дело (сразу) не доводить

l новую базу надо теперь уметь воспитывать

Page 17: Илья Космодемьянский (PostgreSQL-Consulting.com), Роман Друзягин (404 Group)

Вопросы?

Роман Друзягин [email protected]Илья Космодемьянский [email protected]