#ibm-midrange
#ibm-средний уровень
Вопрос:
Нам было поручено найти прогрессивное развертывание программного решения. Давайте рассмотрим простое приложение с библиотеками данных и объектов, которое в настоящее время находится в версии 1. Мы хотим иметь возможность обновляться там, где только определенные пользователи используют версию 2, но при этом сохранять централизованную базу данных.
На данный момент у меня в голове есть две идеи следующего содержания: Поэтапные развертывания
В примере 1 пользователи переходили бы от указания на Существующие объекты к Обновленным, в конечном итоге Существующие больше не были бы нужны и могли быть удалены. В примере 2 пользователи переходили бы от указания на существующие объекты / базу данных к обновленным, в конечном итоге существующие больше не были бы нужны и их можно было бы удалить. Общая идея заключается в том, что развертывание программного обеспечения происходит поэтапно, что снижает риск развертывания. И при необходимости пользователи могут просто указать на существующий объект / базу данных.
Занимаются ли люди чем-то подобным? Существуют ли инструменты управления исходными кодами / доставки, которые автоматизируют это?
Ответ №1:
В IBM i, в зависимости от языка, который вы используете для доступа к данным, программы очень тесно привязаны к таблицам базы данных. Как правило, когда требуется обновление базы данных, есть пара способов сделать это (я предполагаю, что доступ на уровне записей осуществляется с использованием RPG, поскольку это наиболее распространено):
- Сначала продвигайте обновление базы данных, затем программ
При таком способе придется компилировать программы для продвижения дважды!
- Продвигайте обновления базы данных вместе с обновлениями программ
В этом методе вам нужно будет скомпилировать программы для продвижения только один раз.
Первый способ
Это хороший способ сделать что-то, если у вас большие перемены. В этом методе вы бы внесли все изменения в свою базу данных одновременно и перекомпилировали все программы, которые касаются измененных файлов. Эта перекомпиляция выполняется без внесения каких-либо изменений в программы. Если вы только добавили новые поля в файлы, это может быть очень легко сделать. Приложение должно работать так же, как и раньше, но база данных готова начать вносить изменения для заполнения и обновления новых полей.
Следующий шаг — внести необходимые обновления в программы. Теперь от этого можно отказаться небольшими порциями, поскольку изменения в базе данных уже внесены. И вы можете активировать эти изменения только для определенных пользователей, используя разные списки библиотек для разных наборов пользователей, хотя это может сделать базу данных немного непоследовательной. Если поэтапное внедрение предназначено для тестирования, то для тестирования лучше использовать третью среду контроля качества. Если вы пытаетесь снизить риск, просто вносите небольшие изменения, но распространяйте каждое изменение на всех одновременно. Если у вас есть CMS, она должна архивировать ваши изменения, чтобы вы могли отменить изменения, которые прошли неудачно.
Второй способ
Это лучше всего подходит для небольших изменений, которые можно выполнить быстро. Просто внесите изменения в базу данных и программы одновременно, а затем продвигайте все вместе. Если у вас есть CMS, это может быть довольно просто, и у вас все еще есть возможность отката. Если вы все еще управляете рекламными акциями вручную, вы можете вносить только небольшие изменения таким образом из-за количества объектов, которые необходимо изменить.
ПРИМЕЧАНИЕ
В любом случае CMS облегчит вашу жизнь. Я работал в местах, которые продвигают товары вручную, и в местах, где установлено автоматизированное программное обеспечение CMS. Развертывание происходит проще, с меньшим риском в местах, где установлена надлежащая CMS. Программное обеспечение Rocket Software, Arcad, Soft Landing и другие предоставляют программное обеспечение CMS для IBM i. Это ключ к снижению риска изменений.
Комментарии:
1. Привет, это отличный подробный ответ. Прошу прощения, я должен был указать, что мы используем RPG (наряду с PFs / TABLEs), и мы используем Arcad для CMS и доставки. Они не предлагают решения для поэтапного развертывания. Я уже использовал Turnovision ранее, но у них его тоже нет (и они стали действительно дорогими!). Как вы говорите, какая-то CMS должна быть лучшим вариантом, это устраняет боль и человеческие ошибки. Я уверен, что существует решение для поэтапного развертывания с использованием CMS, поскольку я не могу представить, что некоторые крупные игроки (финансовые учреждения и т.д.) Согласились бы на установку big bang. Полагаю, мои поиски продолжаются!
2. Поэтапное развертывание, как вы думаете, не сработало бы. У вас могут возникнуть проблемы с данными, потому что некоторые пользователи будут использовать старые программы для обновления данных, а другие — новые программы для выполнения тех же обновлений. Ваша база данных станет непоследовательной, и это намного хуже. Я рассказываю вам, как это делают компании из списка Fortune 500. Мой опыт оттуда. Они разбивают изменения на управляемые фрагменты и выполняют обновления меньшего размера. Arcad действительно справляется с такими задачами.
3. Для выполнения того, что вы предлагаете, потребуется дополнительное программное обеспечение синхронизации для устранения несоответствий между двумя базами данных, иначе две группы пользователей не имели бы доступа к данным друг друга. Это добавляет много сложности и риска.
4. Спасибо, Марк. Да, небольшие фрагменты, я думаю, были бы хорошим способом сделать это. Некоторые наши клиенты не получают или не будут получать обновления регулярно (речь идет о месяцах, а в одном случае и о полном годе), что усложняет ситуацию. Возможно, нам нужно их «переобучить»! Я понимаю проблему с синхронизацией, и в этом суть вопроса. Как или фактически возможно ли синхронизировать две базы данных в режиме реального времени. Судя по всему, ответ, к сожалению, отрицательный. Спасибо за ваш вклад, я ценю его.
5. Я не говорю, что синхронизация невозможна, но она настолько хороша, насколько хороши программы, которые вы пишете. Возможно, вы сможете использовать инструмент интеграции данных. Но двусторонняя синхронизация — это проблема даже без преобразования. Не имеет значения, какую базу данных вы используете.