Показаны сообщения с ярлыком ландшафт. Показать все сообщения
Показаны сообщения с ярлыком ландшафт. Показать все сообщения

27 ноября 2017 г.

Тестовая система в SAP ландшафте

Не так давно в посте "Почему SAP рекомендует 3-х системный ландшафт?" я описывал односистемный, двухсистемный и трёхсистемные ландшафты. В посте я показал, что трёхсистемный ландшафт является минимально достаточным для организации корректной разработки и контроля качества в SAP системе.

Таким образом, типовой SAP ландшафт (рис. 1) состоит из 3-х систем:
  • система разработки и настройки (DEV),
  • тестовая система или система контроля качества (QAS),
  • продуктивная система или система промышленной эксплуатации (PRD).

Рис. 1. Трёхсистемный ландшафт.

Остановимся на тестовой системе.

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

Назначение тестовой системы подразумевает содержание большого объема мастер-данных. В идеале, всех данных продуктивной системы. Следовательно, при проектировании тестовой системы необходимо проработать план обновления этих данных из продуктивной системы с достаточной периодичностью. Частота обновления зависит от требований проекта, но ориентироваться можно на 1 раз в квартал.

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

Перед обсуждением способов обновления данных остановлюсь еще на одном моменте. В идеальном мире архитектура серверов продуктивной и тестовой систем должна быть идентичной. Если бы это требование выполнялось в реальной жизни, то мой пост был бы в 2 раза короче. Но, к сожалению, в реальной жизни встречаются разные ситуации. При разной архитектуре продуктивной и тестовой систем тоже можно обеспечить приемлемое качество проекта. Протестировать разработки, перенос запросов, обучить пользователей и так далее. То есть процентов 80 запросов система покрывает. Но в данном случае обновление данных в тестовой системе имеет свои ограничения. Об этом сейчас и поговорим.

Итак, при создании тестовой системы смотрим на архитектуру оборудования, которое выделено под эти цели. Если архитектура отличается от продуктивной системы, то при создании тестовой системы придётся использовать процедуру гетерогенного копирования систем. Процедура длительная: требуется останов продуктивной системы и создание экспорта базы данных. Также в такой тестовой системе ограничен набор сценариев тестирования. Если в тестовой системе будет использоваться другая база данных, то тестирование разработок, в которых используется NativeSQL, вызывает большой вопрос. Тест производительности так же будет носить очень отдалённый характер, в силу больших различий со средой промышленной эксплуатации.

Если же архитектура идентична, то вопрос создания тестовой системы решается через гомогенное копирование. В качестве источника данных в данном случае отлично подойдёт существующая резервная копия продуктивной базы данных (offline или online + redo logs).

При периодическом обновлении мастер-данных в тестовой системе всё так же упирается в архитектуры продуктивной и тестовой систем. Если архитектуры разные, то можно использовать только следующие процедуры:
  • копирование содержимого отдельных таблиц: позволяет обновить только один функциональный модуль или его часть. Очень медленный способ. Перенос данных выполняется через транспортный запрос. Как включить содержимое таблицы в транспортный запрос я описывал в этом посте. При повторном переносе можно воспользоваться советом из поста "Саповские секретики - III (секретик 2)" и, создавать новый запрос через копию содержимого старого запроса. Процедура возможна только в крайнем случае и только при контроле и управлении со стороны опытного функционального консультанта. Результат не всегда гарантирован. Но в практике иногда применяется.
  • копирование манданта системы: возможно использование процедуры удаленного копирования манданта или экспорта/импорта манданта. Все способы описаны в этом посте. Процедура очень сильно нагружает обе системы (продуктивную и тестовую), работа в продуктивной системе должна быть минимальна, иначе высока вероятность возникновения проблем с целостностью данных. 
  • гетерогенное копирование системы - фактически полное удаление и установка тестовой системы по новой. Требует останова продуктивной системы на момент создания экспорта данных. Длительные временные затраты на создание копии в целом.

Если архитектура идентична, то проблем, конечно же, меньше. В данном случае можно использовать первые два способа, описанные выше: перенос содержимого списка таблиц и копирование манданта. Но оптимально будет использовать процедуру гомогенного копирования системы. Причем, её укороченный вариант. Только обновление данных базы данных.

Здесь я хочу плавно подвести к тому, что оптимальным вариантом при проектировании тестовой системы является выбор той же архитектуры, что и на системе промышленной эксплуатации. Хочу отметить, что я говорю про идентичность архитектуры и платформы, а не про идентичность в плане производительности. Нагрузка на тестовую систему гораздо ниже, чем на продуктивную. Следовательно, оборудование может быть "слабее". Какие плюсы мы получаем:
  • возможность полного тестирования любых функциональностей и разработок в среде, максимально приближенной к продуктивной,
  • тестовую среду, позволяющую проводить нагрузочное тестирование с выявлением узких мест в производительности разработок,
  • несложную процедуру обновления данных с получением почти 100 % идентичной продуктивной среды,
  • периодическое тестирование процедуры восстановления из резервной копии продуктивной системы с высчитыванием интервалов необходимых на процедуру восстановления для прогнозирования временных затрат в случае сбоя среды промышленной эксплуатации.

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

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


Автор: Шиболов Вячеслав Анатольевич

 

2 октября 2017 г.

Почему SAP рекомендует 3-х системный ландшафт?

Вот вы говорите: "Ландшафт, ландшафт... " А что такое ландшафт?

Давайте остановимся на этом понятии поподробнее.

Итак, в посте "Копирование манданта SAP системы" я приводил структуру данных SAP системы (рис. 1).

Рис. 1. Структура данных в SAP системе.

В ABAP части SAP системы выделяют автономные единицы для работы и хранения данных предприятия. Данные единицы носят название - мандант. Мандант содержит основные данные (Master Data), записи пользователей с полномочиями и манданто-зависимые настройки. Манданты идентифицируется троичным номером и их в системе может быть несколько. Теоретически 1000 штук.

Помимо манданта, в системе есть общие для всех мандантов данные: манданто-независимые настройки и репозитарий SAP системы. Репозитарий это прежде всего ABAP-программы (reports, функциональные модули, экраны и т.п.). К репозитарию так же относится и ABAP-словарь, про который я писал в посте "Транзакция SE14 : утилита базы данных".

Ландшафт, как я уже упоминал ранее, это объединение нескольких систем одного назначения/версии для настройки/обеспечения контроля качества/поддержки того или иного решения компании SAP. Например, SAP ERP 6.0 EHP7 (кстати, самая распространенная версия по опросам) или SAP SRM 7.0 EHP3.

Ландшафты SAP систем могут быть:
  • односистемными,
  • двухсистемными,
  • трёхсистемными.

Рассмотрим первый вариант - ландшафт SAP системы, состоящий из одной системы. Допустим, в одном манданте системы разработчики и консультанты производят настройки и пишут/изменяют ABAP-программы. А второй мандант системы выделен для работы пользователей (рис. 2).

Рис. 2. Односистемный SAP ландшафт.

В плане разграничения доступа - всё хорошо. Пользователи в разных мандантах разные. И консультанты и разработчики не имеют доступ к основным данным предприятия (например, заработной плате), так как работают в отдельном манданте. Но представьте, что будет, если разработчик активирует новую версию программы при работающих с ней пользователях? Будет несколько дампов (равных количеству работающим с программой пользователей) и все результаты работы пользователей будут потеряны. Так как, еще раз повторюсь, репозитарий для нескольких мандантов одной системы только один, он общий (рис. 2). 

Я в своей практике встречался с таким ландшафтом. Это был пилотный проект в одном, отдельно взятом, подразделении крупного транспортного предприятия. В день, когда на проект приходил разработчик, пользователи в системе не работали. :) То есть получалась система с разграничением времени работы: либо пользователи, либо ABAP-программист.


Второй вариант: в ландшафте SAP системы уже 2 системы. Одна играет роль системы разработки и настройки, вторая для продуктивной работы пользователей. Системы объединены транспортной системой (рис. 3). 

Рис. 3. Двухсистемный SAP ландшафт.

Здесь ситуация лучше: программисты разрабатывают программы в отдельной системе и, по мере готовности, переносят их в продуктивную систему. Программисты отделены от пользователей и не мешают их работе. Но, на самом деле, ситуация далека от идеальной. Такой ландшафт не может обеспечить хороший уровень контроля качества настроек и разработок системы. Тут проблемы возникают с тестированием решений. Где проводить тестирование? На стороне системы разработки? Тогда встает вопрос с безопасностью (основные данные предприятия в системе, где работают консультанты и разработчики) и с обновлением данных. Про тестирование на стороне системы промышленной эксплуатации вообще говорить не приходится. Даже если выделить отдельный мандант в этой системе, репозитарий общий и дампы при переносе никуда не денутся.

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


Поэтому переходим к последнему варианту - трёхсистемный ландшафт. Три системы (DEV, QAS, PRD) работают в связке, объединенные, корректно настроенной, транспортной системой. Такая связка обеспечивает независимость разработки и настройки в первой системе, тестирование разработанного решения и переноса транспортного запроса во второй и безопасный перенос готового, оттестированного решения в систему промышленной эксплуатации (рис. 4).

Рис. 4. Трёх системный SAP ландшафт.

В данном варианте разработчик создаёт новую версию объектов репозитария (программы, экраны, таблицы словаря, элементы данных и т.п.) в системе разработки (DEV). После этого, деблокировав транспортный запрос, содержащий необходимые объекты, переносит его в систему контроля качества (QAS). В тестовой системе производятся все виды тестирования: функциональное и нагрузочное на больших объёмах данных, решаются возникающие проблемы интеграции с другими разработками и модулями. Все доработки производятся в системе разработки (DEV) и переносятся новыми транспортными запросами в систему QAS. После того, как разработка подтверждается как завершённая, принимается решение о переносе её в продуктивную систему. И тогда производится перенос всей очереди сформированных запросов в рамках данной разработки. Запомните! Всей очереди, а не только последних запросов. Только так можно гарантировать, что во время переноса вы не получите что-то другое в системе промышленной эксплуатации. Все ваши запросы в систему QAS - это проверенная очередь, при переносе которой в новую систему вы ничего не потеряете и не забудете.

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

А чтобы было меньше дампов у пользователей при переносе, осуществлять его лучше во время минимальной активности в системе. Вечер пятницы вроде бы идеально подходит, но иногда чреват незапланированной работой в выходные. :) Поэтому лучше вечер четверга.

Стоит еще отметить: систем в ландшафте может быть больше. Например, 2 тестовые системы, с разным срезом продуктивных данных. 2 продуктивные системы, которые поддерживаются одной парой разработка-тест.

Так же и мандантов внутри систем может быть больше. В системе разработки часто, кроме манданта для настройки и разработки (который в идеале не содержит основных данных), создают мандант первичного тестирования. В нём есть небольшой объем данных для первичного теста. Так же часто можно увидеть мандант-песочницу, в котором консультанты могут "побаловаться" с настройками. Главное, чтобы все изменения (мусор, песок) в этом манданте не включались в транспортные запросы и никуда не импортировались.
В тестовой системе часто создают отдельный мандант для обучения сотрудников. Так как для реальных примеров во время обучения нужен объем данных, а в продуктивной системе обучать новых людей нельзя по очевидным причинам.
В продуктивной системе могут быть несколько промышленных мандантов для работы отдельных предприятий в рамках одной системы.

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

P.S. Всё что здесь описано, касается только AS ABAP, при разработке в AS JAVA требования к ландшафту несколько другие. Подробности можно найти в курсах SAP ADM325 и SAP ADM800.