Как реализовать ограниченный развертывание функции (язык агностика) для ваших пользователей?

StackOverflow https://stackoverflow.com/questions/4649250

Вопрос

Я хотел бы узнать некоторые общие или лучшие практики выкатывания новой функции веб-сайта в группу выбора userbase.

Пользователи могут быть, например, основаны исключительно в процентах от общей пользовательской базы (10%). Выдвижение должно быть настраиваемым (настраиваемым) и поддерживает любое количество функций. Было бы также полезно связать развертывания для конкретных пользовательских ролей или привилегий (ACL).

Итак, по сути, какова архитектура, которая масштабировалась бы разумно?

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

Ссылки на любые примеры или учебники приветствуются.

Это было полезно?

Решение

Моя рекомендация будет то, что для людей, которые получают новую функцию, сайт, на котором они должны быть как можно ближе к сайту, на который каждый будет включен, однажды функция является публичной.

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

Как только развертывание будет завершено, ветвь объединяется, и все видно новую функцию.

Таким образом, вам не нужно беспокоиться о том, что кодовая база CodeBase Public Beta пользователи, видят различные (каким-то образом, который может что-то сломать) из возможной базы выпуска.

Другие советы

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

Балансировщик нагрузки настроить файл cookie, идентифицируя номер пересмотра экземпляра, который пользователь использует. Если этот файл cookie уже присутствовал, балансировщик нагрузки только что будет отправлять этот запрос на рабочий экземпляр с соответствующей ревизией. Когда мы развернули новую ревизию, балансировщик нагрузки продолжал отправлять трафик с существующим ревизионным cookie к их первоначальному пересмотру до тех пор, пока не будет работать редакция, либо пользователь закрыл свой браузер. Новый трафик будет отправлен в недавно развернутую ревизию. Это позволило нам немного тестировать изменения, пока наши существующие пользователи продолжали работать по старой ревизии. Мы также могли бы вручную установить это cookie, чтобы проверить новый Rev внутри страны в производственной среде, прежде чем превратить новый трафик на него. Когда нам было удобно, что новая ревизия не имела серьезных проблем, мы могли бы снять старую ревизию, и весь трафик начнет пойти на последнюю версию.

Эта настройка не поддерживает несовместимые изменения несовместимой базы данных. Там в ближайшее время не может сделать это, где вы можете иметь часть своих пользователей на одной схеме БД и часть на другой, и иметь возможность принимать писем на обоих, а затем как-то объединить эти пишеты вместе после того, как вы решили, что новый REV все в порядке Отказ Я имею в виду, это возможно, но это действительно зависит от того, что именно изменяется схемы и как они влияют на ваше приложение, так что вы не можете сделать это в надежном, агностическом способе развертывания. Для нас мы просто вообще старались не делать несовместимые изменения схемы. Если нам действительно нужно было, мы попытаемся отложить разрушительную часть (бросьте столбец или таблицу) до более позднего пересмотра, где мы могли бы перенести схему и иметь обе версии без побочных эффектов на текущих пользователей.

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

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

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

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

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

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

Я надеюсь, что это полезно для вас ... Удачи с вашим тестированием.

Оптимизатор сайта Google кажется, что именно вы ищете.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top