Вот и настал тот счастливый день, когда системный администратор сказал нам с коллегами что наш «тестовый» сервер готов, и мы можем им пользоваться на свое усмотрение…

Тестовый сервер: Преимущества и тонкости развертывания

Эта новость обещала нам следующие привилегии:

  • Разгрузка оперативной памяти продуктивного сервера от текущих разработок.
  • Минимизация риска затирания продуктивных данных в хранилище в процессе разработки.
  • Более быстрый и легкий перенос готовых приложений на продуктив (без необходимости переназначения переменных путей доступа к данным и путей сохранения в хранилище).

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

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

Соответственно, помимо стандартной установки и настройки  QlikView на тестовом сервере, перед нами встало две дополнительные задачи:

  1. Копирование структуры хранилища.
  2. Наполнение хранилища данными.

Что такое, по сути, копирование структуры? Это создание аналогичного продуктивному серверу дерева папок со всеми вложенными папками. Конечно же, вручную это делать никто из нас не хотел. Вариант скопировать папку хранилища со всем её содержимым мы отмели сразу – это очень долго, такая операция создает большую нагрузку на сеть и эффективным назвать такое действие нельзя – копировать объемное содержимое хранилища ради создания папок (о наполнении мы поговорим чуть позже).

Total Commander: Трюк автоматического создания структуры хранилища без копирования данных

Однако эффективный и простой путь, как всегда, нашелся.

Все мы знаем файловый менеджер Total Commander. Помимо всего прочего он умеет копировать папки с их содержимым, однако, его фишкой является то, что можно указывать ему файлы какого именно расширения следует копировать. В случае же, если файлы такого расширения не найдены, он просто создает папку. Это то, что нам нужно!

Создаем задачу копирования нашего хранилища и в строке параметров расширения файлов для копирования указываем расширение, которого не существует в природе:

Total Commander

И через несколько минут у нас на тестовом сервере есть модель хранилища, с аналогичной продуктивному, структурой.

Наполнение папок данными: Интеллектуальный подход и Power Shell

Далее встал вопрос его наполнения. Тут есть два пути: напролом и выборочное наполнение. Напролом – это скопировать все данные. Плюс у этого решения один – простота. НО нельзя с полной уверенностью сказать, что после ночного копирования всего хранилища, данные на момент окончания там актуальны – что-то обновляется в начале или в течение рабочего дня. Плюс ко всему в задачи тестового сервера не входит хранение всех данных, там нужны только актуальные данные, необходимые для текущих разработок.

Итак, решение выборочного копирования напрашивается само собой. Выборочное копирование – это копирование только тех данных, которые нужны разработчику для выполнения текущей задачи. Для этого решили использовать связку QlikVew + PowerShell:

  • На QlikView ложится задача анализа приложения на предмет используемых им данных.
  • На Powershell – запуск процесса QlikView и копирование необходимых данных.

Если открыть файл .qvw как XML-файл, то там можно найти список источников, которые использует этот файл для перезагрузки.

02

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

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

  1. Считать из управляющего файла анализируемое приложение.
  2. Подключиться к приложению и выгрузить используемые им источники.
  3. Преобразовать в нужный формат и сохранить в .txt список используемых источников.

Его код выглядит следующим образом:

03

И управляет всем этим PowerShell:

  1. Перезапускает QlikView для выгрузки источников.
  2. Подхватывает файл с готовым списком источников и поочередно копирует необходимые данные с продуктивного сервера на тестовый.

В итоге у нас получился следующий сценарий действий разработчика на тестовом сервере:

  1. Скопировать приложение для разработки с продуктивного сервера на тестовый.
  2. Указать в управляющем файле путь к этому приложению
  3. Запустить скрипт PowerShell для копирования источников данных в хранилище.

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

Спасибо тем, кто дочитал до конца! 😀

Скачать Пример файла PowerShell для копирования файлов