В крупных компаниях с развитой ИТ-инфраструктурой нередко есть отдельная роль DBA — администратора или архитектора баз данных. Таким компаниям бывает выгоднее держать базы данных у себя и администрировать ресурсы своими силами.   В компаниях поменьше случается, что зона компетенций DBA остается “ничьей землей”: в лучшем случае эту роль могут отдать в нагрузку кому-то из смежных специалистов. В дальнейшем это грозит проблемами, если инфраструктура резко вырастет или усложнится. И тут как раз поможет внешний DBA: независимый консультант по базам данных или специалист в рамках облачного сервиса управляемых БД, если компании нужны еще и ресурсы в облаке.  В этой статье проанализируем, какие задачи компании решают при обращении к сервису Managed DBaaS и какие нюансы возникают при аутсорсинге обслуживания БД. В конце предложим чек-лист, по которому можно оценить такой сервис и его специалистов.  По нашему опыту, внешний аудит и сопровождение БД полезны для таких случаев:  Запланированная разовая или пиковая нагрузка. Бывает, что ресурсы БД нужны временно, под проект, или на период повышенной нагрузки сервиса. Например, у компании-ритейлера грядет “черная пятница” или планируется разовое мероприятие c большим количеством регистраций на сайте.  Если такая ситуация наблюдается один месяц из 12, нанимать еще одного DBA излишне. К тому же может оказаться, что для ограниченного по времени проекта нужны технологии, в которых у штатных специалистов меньше экспертизы. Например, основной штат специалистов использует Microsoft SQL, а для разового проекта нужны хорошие возможности полнотекстового поиска, как в Elasticsearch.  В этой ситуации внешний DBA подберет инструменты под конкретный проект, возьмет на себя сопровождение дополнительной базы данных, поможет найти узкие места в процессе работы. К его помощи можно прибегать по запросу, только когда дополнительная нагрузка появляется.  Стихийное развитие системы. Здорово, если рост нагрузки на базу удается спрогнозировать: тогда “запас прочности” можно предусмотреть в архитектуре заранее. Но в реальной жизни всплески нагрузки часто происходят внезапно, например: проект неожиданно выстреливает и привлекает в разы больше пользователей.  Бывает и так, что в изначальном проекте планировалась одна бизнес-логика, а потом базу данных стали использовать не совсем по назначению. Например, мы встречали кейсы, когда база данных Microsoft SQL применялась для обработки текстовых файлов. Систему разработали давно, поддерживали и развивали без привлечения DBA и в какой-то момент столкнулись с медленной работой, но не смогли локализовать причину без специалиста. В таких случаях внешний DBA не всегда сможет сам исправить бизнес-логику, но покажет проблемные зоны в архитектуре системы.  Соблюдение требований безопасности. Если служба ИБ приходит с особыми требованиями к базам данных, не каждая компания может реализовать их самостоятельно и быстро.  Яркий пример — хранение персональных данных и соблюдение 152-ФЗ. Когда компания становится оператором персданных, нужно собрать внушительный пакет документов и подобрать соответствующие задачам средства защиты (мы уже писали об этом тут). Облачный провайдер помогает ускорить процесс и обеспечивает соответствие 152-ФЗ на уровне своей инфраструктуры: у него уже есть аттестованные сегменты облака для таких задач. Компании-клиенту остается соблюсти требования закона на уровне базы данных и приложения (некоторые провайдеры могут помочь и с этим).  Менее очевидный пример — необходимость проводить аудиты ИБ для баз с ценной информацией. Допустим, служба ИБ захотела следить за всеми операциями в CRM-системе и поручила разработчикам создать для этого отдельные таблицы аудита. Если решать эту задачу без глубоких знаний БД, можно легко замедлить работу всей базы. В такой ситуации грамотный DBA также поможет найти баланс между производительностью и безопасностью.  Рутина или внутренние проекты. Даже если в компании есть свои DBA, их рабочего времени не всегда хватает на все задачи — приходится расставлять приоритеты. На последнем месте в списке часто оказываются внутренние проекты. Например, это могут быть сервисы для сотрудников, которые сложно оценить в терминах экономической эффективности для бизнеса, в отличие от приложений для клиентов. В этом случае компании может быть выгоднее привлекать собственных высококвалифицированных DBA на внешние проекты, а внутренние отдать аутсорсерам. Также приоритизация проектов может быть инструментом удержания таких высококвалифицированных специалистов, которым неинтересно заниматься рутинной работой с базами данных: обновлением, настройкой бэкапов. В этом случае рутину тоже можно переложить на внешний сервис Managed DBaaS.    Не сформирован технологический стек решения. Когда компания собирается внедрять новый ИТ-продукт, она может не знать заранее его архитектурные особенности. Например, компания ищет CRM-систему и одновременно выбирает среди продуктов на основе реляционных баз данных и на основе NoSQL-хранилищ. Поддержка выбранного решения может стать проблемой, если в штате нет специалиста по конкретной базе данных. И здесь опять же могут помочь аутсорсеры.  Как видим, во всех этих случаях с помощью внешнего DBA компания решает минимум одну из трех задач:  усиление компетенций; добавление дефицитных вычислительных ресурсов;  обеспечение требований безопасности. Если актуальна первая задача, достаточно привлечь независимого специалиста-аутсорсера. А вот вторую и третью задачи часто решает именно облачный провайдер: для поиска ресурсов независимый DBA может выступить только посредником. Качество ресурсов в облаке сильно зависит от уровня обслуживания, который гарантируется в SLA. Поэтому для оценки SLA и его вариантов важно понять, что обычно входит в зону компетенций DBA в сервисе управляемых баз данных.    Схематично поддержку баз данных в облаке можно разделить на такие сегменты:   Для каждого из уровней нужно обеспечить бесперебойное функционирование. Вот какие работы оно включает:  мониторинг ключевых показателей, для каждого уровня своих; регулярное обновление и поддержание актуального состояния элементов; обеспечение высокой доступности и других метрик по SLA; обеспечение информационной безопасности. Пройдемся по уровням, начнем сверху. Бизнес-логика. С зоной ответственности на самом верхнем уровне все более-менее понятно: бизнес-логика системы находится на стыке ИТ и бизнеса и требует глубокого знания процессов компании. Поэтому правильная реализация бизнес-логики — компетенция, скорее, бизнес-аналитика. От DBA чаще всего не требуют решения вопросов на этом уровне, хотя опытный специалист может подсказать, где именно искать проблемы. При этом реализацию бизнес-логики тоже можно аутсорсить, просто в рамках более комплексной услуги, чем Managed DBaaS.  Зона от СУБД до “физики”. Работы на этом уровне обычно полностью отдаются на откуп сервис-провайдеру. Риски могут быть чуть выше, если облачный провайдер арендует физические ресурсы в дата-центре у кого-то еще. В этом случае ответственность за конечную услугу DBaaS зависит от слаженной коммуникации между арендатором и владельцем ресурсов. Но у клиента в любом случае есть одна точка входа, которая берет на себя ответственность за результат. С ответственностью провайдера на уровне managed DBaaS иногда может возникнуть обратная ситуация: клиенту бывает сложно отказаться от обязательных услуг в рамках сервиса. Нам рассказывали историю, как компания столкнулась с проблемами медленной работы базы после очередного обновления СУБД в облачном сервисе. При этом откатиться назад и исключить клиента из плана обновлений не удалось, так как все обновления провайдер делал централизованно.    База данных. А вот с обслуживанием самих баз данных все не так просто: разные провайдеры услуги DBaaS могут включать в администрирование разное количество работ на уровне БД. Какие это могут быть работы: резервное копирование БД; постановка на мониторинг и настройка уведомлений клиенту по выбранным событиям; активный мониторинг ключевых метрик провайдером и реагирование на инциденты в соответствии с приоритетами; настройка индивидуального расписания резервного копирования; настройка плана послеаварийного восстановления (DRP). Как видим, мониторинг базы данных может быть устроен по-разному. При анализе SLA важно понимать, за какие именно метрики отвечает провайдер, а за какие — сам клиент. Вот основные группы показателей (для разных баз конкретные метрики отличаются):  доступность: в общем случае в SLA она указывается в процентах в месяц (например, 99,98%). Но помимо этого есть частные метрики, которые влияют на доступность, например, метрики работы службы кластеров HA;    производительность и все что на нее влияет, например: как часто выполняются запросы, по которым не хватает индексов, или задержки при обращении к файлам данных на дисках, размер журнала транзакций и процент его заполненности (для Microsoft SQL);  безопасность: например, результаты проверки паролей администраторов по словарю; конфигурация: как именно настроена база данных. При минимальном варианте сопровождения БД контролируются метрики только из первой группы. При этом провайдер реагирует на самые критичные изменения, из-за которых может нарушиться показатель доступности в SLA. А изменения остальных метрик просто отправляет клиенту уведомлением. Рассчитывать на контроль и корректировку метрик из всех четырех групп можно, только если это входит в условия обслуживания (у многих провайдеров это уже premium-уровень).  Итак, первым делом в соглашении по сервису важно проверить:  за какие именно метрики отвечает провайдер; какую ответственность несет за невыполнение; как именно реагирует на разные нештатные ситуации: что исправляет сам, кого и каким образом уведомляет, в какой срок. Теперь посмотрим, какие риски могут возникнуть в зависимости от нашей задачи: ищем ли мы дополнительные компетенции, ресурсы или безопасность. И расскажем, как проверить сервис управляемых баз с точки зрения этих рисков.  Проверка компетенций. Чаще всего клиенты спрашивают у DBA портфолио кейсов по выбранной базе данных. Но важно проверять не только опыт в продукте, но и опыт решения конкретных задач с выбранной БД. Вот на что советуем обратить внимание: работа с базами данных определенного объема и под определенной нагрузкой. Объем и нагрузка напрямую влияют на подход к администрированию. Например, объем БД в несколько терабайт накладывает ограничения на резервное копирование и восстановление базы. Если у DBA мало опыта с такими БД и при этом он привык решать все проблемы перезагрузкой, то на больших объемах есть риск столкнуться с неожиданно длительными простоями.   навыки работы с кластерными решениями и/или DRP. Здесь важно знать, насколько хорошо DBA понимает разницу между обеспечением высокой доступности и катастрофоустойчивостью и знаком ли он с инструментами, которые актуальнее для клиента.  Скажем, если компании нужно восстановить базы после массового сбоя на уровне всей площадки, то DBA должен владеть инструментами для обеспечения нужного RPO и RTO. А если нужно обеспечить высокую доступность реляционных баз данных, то лучше сделать это на уровне СУБД. В этом сценарии приветствуется хорошее знание ее ролевой модели. Правильная настройка ролевой модели помогает распределить транзакции перед переключением на реплику БД: какие-то транзакции закоммитить, какие-то откатить.     плюсом будет наличие профильных сертификатов у специалистов. Проверка ресурсов. Тут помогут тесты, которые можно провести в пробной базе сервис-провайдера: превышение порога допустимых значений — за какое время отрабатывает тот или иной запрос к базе; проверка отказоустойчивости; тесты производительности: TPC-H, TPC-B, TPC-C; тест Гилева, если это 1С. Уровень подключения DBA к проверке ресурсов будет сильно отличаться для двух групп клиентов: опытных компаний, которые отдают аутсорсеру знакомую задачу. Здесь клиенту уже известны метрики, к которым хочется стремиться, и есть возможность провести аналогичные тесты на своих ресурсах. От DBA требуется лишь слегка скорректировать задачи тестирования при необходимости. компаний, которые решают новую задачу при обращении к DBaaS. Здесь важен опыт DBA в решении аналогичных задач и его компетенции архитектора. Если клиент — это стартап и прогнозировать проблемы сложно, то компании все равно потребуется указать планируемую загрузку. Звучать это может так: на начальном этапе планируем не больше 1000 подключений в секунду, через полгода ожидаем не больше 10 000 подключений в секунду.   Проверка безопасности. Здесь для проверки будет несколько направлений.  Во-первых, удостовериться в защищенности данных можно по формальным и неформальным признакам:   провайдеров формально можно проверить по сертификатам безопасности: смотрим сертификаты соответствия системы управления ИБ требованиям ISO/IEC 27001:2013, результаты аудитов по PCI DSS, аттестаты по 152-ФЗ для хранения персональных данных и так далее. Также на формальном уровне клиента защищают соглашения о неразглашении (NDA). Здесь стоит внимательно проверить, какую именно ответственность и за что несет провайдер по договору.   неформально провайдера и отдельного специалиста можно проверить по используемым инструментам безопасности. Например, что применяется для логирования, мониторинга событий, какая информация будет предоставлена клиенту в случае инцидента. Как минимум, у клиента должна быть возможность просмотреть логи на разных уровнях системы. Как максимум, это могут быть записи сессий привилегированных пользователей с помощью систем класса PAM или других подобных решений.    Во-вторых, клиенту стоит интересоваться используемыми в облачном сервисе инструментами ИБ в зависимости от актуальной модели угроз: внешние угрозы безопасности — это вредоносное ПО, боты, DDoS-атаки, направленные атаки. Здесь стоит обратить внимание на наличие в рамках DBaaS решений анти-DDoS, NGFW, IPS.  внутренние угрозы безопасности — это риски утечки данных, несанкционированного доступа, превышения полномочий пользователями. Помимо логирования и мониторинга здесь важно обратить внимание на возможности настройки прав доступа и на инструменты защиты от специалистов с повышенными правами. Какие схемы защиты тут могут быть: 1) Модель шифрования данных на стороне SQL — all is encrypted. У компании-клиента хранится сертификат, к которому не имеет доступа даже провайдер. Приложение осуществляет запросы к базе с помощью этого сертификата. Даже если кто-то на стороне сервис-провайдера попытается скопировать данные из базы, то зашифрованные поля все равно будут недоступны.  2) TDE-шифрование для бэкапов, которые хранятся отдельно от базы: восстановить по ним базу не получится, так как сертификаты хранятся отдельно от бэкапов.  Ответственность DBA в договоре подряда или соглашении об уровне обслуживания (SLA): за что именно отвечает, что произойдет в случае нарушения. Наличие в портфолио кейсов с базами нужного объема и под выбранной нагрузкой. Опыт решения задач по обеспечению высокой доступности или DR — в зависимости от того, что актуальнее компании. Возможность проведения тестов в облаке, если помимо аудита и сопровождения базы клиент арендует ресурсы. Наличие сертификатов безопасности для облака. Уровень ответственности в NDA, если нужно защитить конфиденциальную информацию. Наличие инструментов логирования и контроля привилегированных пользователей. Наличие инструментов ограничения прав доступа к конфиденциальной информации.