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

  • Какие правки были внесены?
  • Когда был изменен контент?
  • Кто внес изменения?
  • В чем разница между предыдущим и обновленным контентом?

Управление версиями контента отвечает на все эти вопросы, чтобы сделать повседневные операции эффективными и бесперебойными. Лучший пример для понимания управления версиями контента - это Документы Google. Вы можете без проблем просматривать историю версий, изменения в реальном времени и вернуться к любой версии документа.

Так как мы стремительно масштабируемся онлайн-платформой для предоставления высшего образования, наш веб-сайт upGrad.com требует постоянных изменений. Еще пару лет назад редактирование контента на веб-сайте все еще производилось технологической командой. Сюда входила информация о наших программах и о том, как они повышают ценность карьеры человека. Несмотря на то, что большая часть этих данных была в форме JSON, для обновления веб-сайта требовалось постоянное изменение кода. Чтобы решить эту проблему, мы создали Apollo, нашу внутреннюю систему управления контентом (CMS). Apollo позволил нам добавлять, изменять и удалять контент на лету. За эти два года редактирование контента упростилось, и теперь отдельные владельцы программ владеют своим соответствующим контентом. Но так же верно и в отношении разработки программного обеспечения: вы никогда не решаете проблему полностью, вы становитесь достаточно зрелым, чтобы решать более серьезные. Помимо огромной гибкости, Apollo также привнес некоторые сложности, которые в конечном итоге привели к необходимости введения управления версиями.

Почему

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

Раньше у нас были отдельные коллекции компонентов, макетов и страниц на Apollo. CMS поддерживается сервером Nodejs, использующим базу данных MongoDB. Первоначальный дизайн был больше похож на реляционную БД. Чтобы представить данные страницы, мы включили ссылки на компоненты в макеты, а затем ссылки макетов на страницу. Это привело к топологии ячеистой сети, в которой каждый документ был связан с несколькими компонентами, макетами и страницами из.

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

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

Как

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

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

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

Плавный переход к управлению версиями контента

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

+----------------+------------------+----------+-------------+
| Global Version | Internal Version                          |
+----------------+------------------+----------+-------------+
| 1              | Page             | Layout   | Component   |
+----------------+------------------+----------+-------------+
| 2              | Page             | Layout   | Component 1 |
+----------------+------------------+----------+-------------+
| 3              | Page             | Layout   | Component 2 |
+----------------+------------------+----------+-------------+
| 4              | Page             | Layout 1 | Component 2 |
+----------------+------------------+----------+-------------+
| 5              | Page             | Layout 1 | Component 3 |
+----------------+------------------+----------+-------------+
| 6              | Page             | Layout 2 | Component 3 |
+----------------+------------------+----------+-------------+
| 7              | Page             | Layout 2 | Component 4 |
+----------------+------------------+----------+-------------+
| 8              | Page             | Layout 2 | Component 5 |
+----------------+------------------+----------+-------------+

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

Как нам помогло управление версиями CMS?

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

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

Повышенная производительность: скорость и общая производительность веб-сайта были улучшены. Например, для навигации по странице с 3 макетами и 15 компонентами программа должна была выполнить 1 x 3 x 15 = 45 запросов, чтобы предоставить результаты в виде каждой коллекции сохраненных ссылок на экземпляры. Но теперь, с управлением версиями, поскольку все находится в одной коллекции, программе нужно выполнить только один запрос для получения вывода. Это привело к повышению производительности.

Эффективное управление контентом. Управление версиями позволило нашим внутренним программистам, менеджерам контента и администраторам эффективно управлять всем сайтом. Все, начиная с добавления, обновления, изменения, возврата и удаления контента на веб-сайте, стало проще и проще.

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

Посетите upGrad.com, чтобы ознакомиться с нашими программами, которые полностью онлайн!

Авторы: Джавад Соналкар