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

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

До свидания .. Связанная CMS

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

Герой без головы

Безголовая CMS - это внутренняя CMS, построенная как репозиторий контента, который делает контент доступным или, скорее, действует как поставщик контента через RESTful API для отображения контента на любом устройстве. Таким образом, концепция отрубания «головы» (внешнего интерфейса, то есть веб-сайта или мобильного приложения) от «тела» (серверной части, то есть поставщика контента).

Безголовая CMS не заботится о том, как и где отображается ваш контент. Он ориентирован на хранение и доставку структурированного контента.

Сказки о безголовом герое

К 2025 году в наших домах, транспорте и офисах будет установлено более 40 миллионов устройств Интернета вещей. Все, от Alexa на кухонных столешницах до Apple Watch на запястьях и киосков с рекламой на экране в местном торговом центре. Обслуживая все эти устройства, бизнес должен без труда идти по омниканальному пути.

Разработка с использованием этого подхода без головы помогла предприятиям,

  • Готовность к многоканальному использованию: готовность обслуживать несколько каналов, включая веб-сайт, мобильное приложение, цифрового помощника, виртуальную реальность, умные часы и т. д.
  • Снижение накладных расходов. Установка, обновление и настройка стали дешевле, так как мы перешли на бессерверный подход.
  • Повышение гибкости. Проекты завершались быстрее, поскольку менеджеры по содержанию и разработчики работали одновременно.
  • Включение программирования на полиглотах: для доставки контента по нескольким каналам используется несколько парадигм программирования, что позволяет нам извлекать выгоду из последних разработок в языковых фреймворках, продвигая архитектуру микросервисов.
  • Масштабируемое облако: API-интерфейсы без сохранения состояния безголовых CMS обеспечивают высокую масштабируемость, особенно потому, что архитектура полностью использует эластичность облачной платформы.
  • Безопасность системы. Поскольку контент обычно предоставляется через высокопроизводительную службу CDN, снижается риск распределенных атак типа «отказ в обслуживании» (DDOS).

Использование нашего развития с этим подходом

Наша стратегия преодоления медленной разработки заключалась в создании платформы с n-уровневой архитектурой микросервисов с помощью NodeJS. Наша цель состояла в том, чтобы построить архитектуру, которая могла бы обслуживать любое устройство с помощью одной серверной части. Будь то веб-сайт, мобильное приложение, устройство виртуальной реальности, цифровой помощник, удаленно подключенное устройство IoT или Apple Watch.

Давайте поговорим обо всех слоях этой n-слойной микросервисной архитектуры,

  1. База данных: вы можете выбрать любую базу данных SQL или NoSQL для этого уровня в зависимости от масштабируемости вашего бизнеса, сообщества и структуры данных.
  2. Библиотека драйверов базы данных. Это зависит от базы данных, которую вы собираетесь использовать на первом уровне.
  3. Диспетчер схемы базы данных: здесь определяется определение схемы вашей архитектуры данных / информации. Определения схем помогают определять структуры данных и многократно используемые функции объектов в системе.
  4. Диспетчер операций с базой данных: на этом уровне мы определяем такие операции, как вставка записи, чтение, обновление, удаление, пакетные операции CRUD, загрузка файлов, шифрование данных, шифрование файлов и индексация данных.
  5. Контроллер API: этот уровень определяет все маршруты к различным операциям с базой данных, а также параметры маршрутизации и ссылки.
  6. По промежуточного слоя для авторизации API: промежуточное ПО для авторизации обрабатывает протокол Oauth 2.0 для авторизации веб-сайтов, приложений и других внешних сервисов, прежде чем предоставлять ограниченный доступ поставщикам контента и данных.
  7. По промежуточного слоя для ограничения скорости API: этот уровень поддерживает скорость, с которой служба API обслуживает HTTP-запросы. Если какое-либо устройство или услуга выходит за пределы ограничения скорости, они немедленно задерживаются до следующего слота для выполнения запросов.
  8. API Logger: регистрирует все HTTP-запросы со всех устройств и служб для мониторинга, автоматизации тестирования и обслуживания API.
  9. Маршрутизатор API: этот уровень фокусируется на условиях маршрутизации API для различных устройств и менеджеров контента.
  10. Служба CDN. Правильно настроенная сеть CDN помогает защитить веб-сайты от некоторых распространенных вредоносных атак. Посетители ощущают более быстрое время отклика API и меньшую задержку. Поскольку пользователи более склонны переходить с медленно загружающегося сайта или более медленного приложения, либо с ошибкой Alexa Skill, CDN может снизить показатель отказов и увеличить количество времени, которое люди проводят на устройстве с вашим приложением.

Спрос на это решение без подключения к Интернету не является чем-то новым, поскольку компании стремятся доставлять контент в места за пределами стандартного веб-браузера. Стартапы, малые предприятия и предприятия могут с уверенностью совершить решительный шаг с некоторыми готовыми решениями CMS без головы, такими как Butter CMS, Contentful, dotCMS, GraphQL CMS, Strapi и т. Д. Если вы ищете индивидуальное решение и можете инвестировать время и усилия , терпение в создании чего-то, что вы собираетесь повторно использовать в следующем десятилетии, настраиваемая n-уровневая архитектура микросервисов - это модульный масштабируемый подход.

Заключение

Есть какие-нибудь личные советы, которыми можно поделиться? Не стесняйтесь и комментируйте. Если у вас остались вопросы по деталям архитектуры? Пожалуйста, положите его сюда, и я постараюсь ответить.

Большое спасибо за чтение, удачного дня!