В первом квартале 2016 года был выпущен Windocks 1.0, результат первого опыта реализации открытой платформы Docker для Windows. Некоторые скептически относились к Windocks, так как компания Microsoft планировала реализовать свое решение для Windows Server 2016. Хорошо, что мы проявили терпение, так как Windocks представляет собой более полное и практичное решение для разработчиков .NET и SQL Server. WinDocks стал полнее благодаря исчерпывающей поддержке семейства операционных систем Windows, в том числе Windows 8 и Windows Server 2012, в дополнение к Windows 10 и Windows Server 2016. Важно, что Windocks поддерживает и все версии SQL Server, начиная с SQL Server 2008, и .NET, а контейнеры Microsoft ограничиваются .NET и ознакомительной версией SQL Server vNext. Признаюсь, я являюсь ведущим участником проекта WinDocks. В этой статье мы рассмотрим три раз¬личных примера использования контейнеров SQL Server для разработки и контроля качества.
Контейнеры SQL Server для увеличения производительности труда разработчиков
Недавно компания Datical опубликовала результаты опроса администраторов баз данных. Более 90% респондентов сообщили, что проблемы в формировании среды базы данных затрудняют разработку программного обеспечения. Другие опросы свидетельствуют о том, что большинство компаний обновляют среду разработки и контроля качества один раз в два месяца или реже.
Контейнеры SQL Server становятся более популярными в качестве средства автоматизированной доставки среды данных для разработки и тестирования. Такие контейнеры представляют собой экземпляры SQL Server с данными за несколько секунд. Контейнеры SQL Server предоставляют краткосрочно существующие, часто обновляемые экземпляры, необходимые группам разработчиков и контроля качества.
Пример 1. Локальные данные в контейнере для среды .NET + SQL Server
Ведущий поставщик сотовой связи работает с производственной средой SQL Server 2012, состоящей из 37 баз данных размером до 500 Гбайт каждая и общим объемом более 1 Тбайт. В ходе ежедневного резервного копирования создается базовая версия меньшего размера с очищенными данными потребителей, которая копируется в корпоративную сеть для групп разработчиков и контроля качества. Виртуальные машины создаются с помощью диспетчера Chocolatey для настройки SQL Server, и экземпляр Octopus используется для восстановления базовых версий, настройки учетных записей пользователей и их интеграции с приложением .NET.
Процесс построения виртуальных машин занимает более 30 минут, и велика вероятность ошибок, после которых часто требуется новое построение виртуальной машины. Процесс развертывания Octopus требует дополнительно 3040 минут для завершения восстановления базовой версии базы данных и настройки используемых виртуальных машин. Контейнеры SQL Server оценивались с использованием нового рабочего процесса. После того как базовая резервная копия готова, базы данных восстанавливаются, останавливаются, отсоединяются, и файлы базы данных копируются в узел контейнера Windocks. Контейнер формируется и сохраняется в виде образа, чтобы обеспечить создание идентичных, изолированных контейнеров на узле контейнера (рисунок 1). Новый процесс отличается более высокой надежностью и формирует полностью настроенные контейнеры не более чем за две мину¬ты. Вместо десятков виртуальных
машин, как раньше, теперь используется до 25 контейнеров SQL Server, подготовленных на одном восьмиядерном компьютере без операционной системы. Группа контроля качества предпочитает инструментарий на основе контейнеров, более надежный, с гораздо более высоким быстродействием и гибкой реакцией, нежели у ранее использовавшихся виртуальных машин.
Пример 2. Размещение производственных данных в среде AWS для разработки .NET + SQL Server
Глобально распределенная группа разработчиков пользовалась производственной средой .NET и SQL Server 2014, размешенной на AWS. Производственная база данных имеет размер свыше 200 Гбайт и реплицируется в резервный экземпляр на AWS с использованием NetApp ONTAP. Реплика базы данных применялась для создания базовых версий базы данных с маски
рованием данных и меньшим размером, чтобы предоставить файлы для загрузки группами разработчиков. Приложение .NET размешалось в частном репозитории Git. В целом каждой команде приходилось еженедельно посвящать несколько часов обновлению соответствующей виртуальной машины для локальной среды разработки.
Чтобы оценить использование контейнеров, группа реализовала единственную виртуальную машину для размещения полной среды разработки в контейнерах. Репликация базы данных прерывается для создания моментального снимка базы данных. Сценарий Powershell формирует клоны базы данных, подключаемые к контейнерам SQL Server. Сценарий Powershell также определяет согласованные строки подключения и учетные данные для каждого разработчика. После подключения, но перед предоставлением разработчикам выполняются сценарии SQL Server для маскировки данных (рисунок 2).
Проект был успешным, и теперь новый разработчик может без промедления включиться в работу, не теряя времени на репликацию сложной среды. В прошлом группа использовала до 16 виртуальных машин, а теперь обходится только одной; кроме того, в распоряжении разработчиков имеется полный набор производственных данных. Еженедельно они экономят несколько часов, которые ранее приходилось тратить на обслуживание локальной среды.
Пример 3. Клоны EqualLogic для среды SQL Server объемом 1 Тбайт
Поставщик данных в автомобильной отрасли работает с крупной (более 1 Тбайт) базой данных SQL Server 2014. Клоны производственной среды формируются ежедневно и доступны в массиве SAN серии EqualLogic PS. В серии EqualLogic PS клонированный том представляет собой полную копию производственной среды и рекомендуется для разработчиков и службы контроля качества.
Администратор базы данных установил WinDocks на 32ядерной виртуальной машине и использовал сценарий PowerShell для создания контейнеров с моментальными снимками томов данных, подключенных к контейнерам SQL Server через сеть 10 GbE iSCSI. При запуске также применяется маскировка данных через сценарий SQL Server (рисунок 3).
В прошлом для создания виртуальных машин для разработки требовалось более часа; теперь контейнеры SQL Server инициируются менее чем за минуту и могут быть при необходимости удалены и заменены. Разработчики получают постоянный доступ к полным производственным данным, значительно снижаются затраты на обслуживание виртуальной машины и оплату серверных лицензий.
Контейнеры SQL Server для производства
Контейнеры подходят для недолго существующих экземпляров, сформированных с целью разработки и контроля качества, где не требуется постоянство данных. Некоторые считают, что контейнеры приемлемы только для рабочих нагрузок без отслеживания состояния и не подходят для производственного использования.
Однако контейнеры Windows SQL Server представляют собой просто экземпляры SQL Server, создаваемые и управляемые с помощью команд Docker. То есть контейнеры SQL Server так же хорошо подходят для производственных целей, как и любой вручную созданный экземпляр. Как и любой экземпляр, контейнеры SQL Server поддерживают резервное копирование на основе технологии VSS и подключение томов данных как на локальных узлах, так и на запоминающих устройствах, подключаемых к сети. Хотя обнов
ление приложении на основе контейнеров не получило широкого распространения, не существует препятствий для работы с контейнерами SQL Server теми же способами, что и при исправлении и обслуживании узлов SQL Server.
Таким образом, контейнеры SQL Server могут выполняться на ноутбуке с Windows 8, или общем сервере, или в любом общедоступном «облаке» и поддерживать данные в частной файловой системе контейнера (см. пример 1) или в подключенных базах данных и клонах (примеры 2 и 3). В каждом случае контейнеры вместе с данными предоставляются в считанные секунды и могут быть так же быстро заменены. Пользователи, первыми внедрившие технологию, отмечают упрощенную доставку SQL Server в многоуровневой среде с большей скоростью и значительное уменьшение числа используемых виртуальных машин. Docker и контейнеры — новый инструмент для разработчиков и администраторов баз данных Windows и SQL Server, но эта тенденция определенно лежит в русле развития Microsoft и всей отрасли. Теперь пришло время приступить к изучению применения контейнеров SQL Server и .NET. Windocks предоставляет бесплатно загружаемую версию Community Edition по адресу: https://www.windocks.com/ communitydockerwindows.
Установка, настройка и поддержка контейнеров, консультации [email protected]