{"id":14291,"url":"\/distributions\/14291\/click?bit=1&hash=257d5375fbb462be671b713a7a4184bd5d4f9c6ce46e0d204104db0e88eadadd","title":"\u0420\u0435\u043a\u043b\u0430\u043c\u0430 \u043d\u0430 Ozon \u0434\u043b\u044f \u0442\u0435\u0445, \u043a\u0442\u043e \u043d\u0438\u0447\u0435\u0433\u043e \u0442\u0430\u043c \u043d\u0435 \u043f\u0440\u043e\u0434\u0430\u0451\u0442","buttonText":"","imageUuid":""}

Технологический стек Magento

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

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

Magento написана на PHP и использует элементы архитектурного шаблона MVC (model-view-controller). Она имеет модульную структуру и помимо PHР, опирается на несколько технологий с открытым исходным кодом:

  • Веб-серверы: Apache, Nginx;
  • Бэкенд: PHP, Composer;
  • База данных: MySQL, PerconaDB;
  • Фронтенд: jQuery, RequireJS, Knockout.js, HTML5, CSS3/Less, React;
  • Поиск: Elasticsearch;
  • HTTP-ускоритель: Varnish;
  • Хранилище кэша: Redis;
  • Дополнительные компоненты: RabbitMQ;
  • Доступные API: REST, GraphQL.

История развития Magento на PHP

Разработка Magento началась в 2007 году в условиях ограниченного выбора PHP-фреймворков. В то время наиболее значимыми среди них были CakePHP, CodeIgniter, Zend Framework и Symfony 1.

CakePHP и CodeIgniter ограничивались быстрой разработкой простых приложений. Symfony 1 был на стадии начального развития и не обладал такой высокой функциональностью, как сегодня.

Zend Framework стал выбором для разработки корпоративных приложений. Разрабатываемый той же командой, что и PHP, Zend Framework отвечал всем основным требованиям идеального фреймворка, таким как безопасность, производительность и расширяемость. Поэтому его выбрали для разработки Magento 1. Стоит отметить, что Magento 1 использовала компоненты Zend Framework, но не была полностью построена на его основе.

Даже когда началась разработка Magento 2 в ноябре 2011 года, Zend Framework 1 оставался наиболее стабильным и востребованным фреймворком на рынке.

Первая стабильная версия Zend Framework 2 была выпущена только в 2012 году, когда разработка Magento 2 уже шла полным ходом. Поэтому Magento 2 включила в себя как компоненты Zend 1, так и Zend 2, а также некоторые элементы фреймворков Laminas и Symfony.

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

Фреймворк Magento

Не следует путать Magento Framework с Zend Framework. Magento Framework — это, в основном, программный компонент, написанный на PHP, который определяет взаимодействие компонентов приложения, таких как маршрутизация, индексация, кэширование, обработка исключений и поток запросов. Он структурирован в логические группы, называемые слоями (architectural layers), и уменьшает сложность создания расширений, содержащих бизнес-логику, что позволяет снизить зависимости и сделать код Magento более модульным.

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

Именно поэтому Adobe не рекомендует разработчикам вносить изменения в файлы фреймворка. Вместо этого им следует обращаться к библиотекам ядра для наследования классов и интерфейсов, определённых во фреймворке, при создании расширений Magento и кастомной логики.

Расширяемость в Magento

Команда разработчиков Magento всегда уделяла особое внимание обеспечению расширяемости на всех этапах развития платформы. Основные функциональные возможности платформы собраны в отдельные модули, что позволяет осуществлять настройку без замены ядра кода (decoupled architecture).

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

Magento использует хорошо известные архитектурные и программные паттерны/структуры на PHP для обеспечения расширяемости функционала. Это позволило Magento создать разнообразную экосистему продуктов, которая объединяет разработчиков и продавцов со всего мира.

Adobe Commerce Marketplace предлагает более 9500 сторонних тем и расширений, и это лишь небольшая часть обширной экосистемы.

Стандарты кода

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

Стандарты кода Magento охватывают следующие аспекты контроля:

  • Использование небезопасных функций.
  • Синтаксис PHP-кода.
  • Соблюдение рекомендаций по стандартам PHP (PSR).
  • Обработка исключений.
  • Корректное использование паттернов программирования
  • Несанкционированный вывод данных.
  • Использование устаревших функций PHP.
  • Счётчик уровней вложенностей логики.
  • Пустые блоки кода и множество других аспектов, связанных с PHP и кодом Magento.

Глубокое понимание структуры, стандартов кода и PHP позволяет разработчикам максимально раскрыть потенциал платформы для управления магазином электронной коммерцией.

Какую базу данных использует Magento?

Magento использует базу данных MySQL (а также поддерживает её форки, к примеру PerconaDB, MariaDb) с моделью хранения Entity–attribute–value (EAV) для основных данных, что позволяет их структурировать. С версии 2.4 Magento поддерживает MySQL 8, который работает в два раза быстрее, чем предыдущая поддерживаемая версия 5.7.

Технологии, используемые в Magento

Фронтенд

Во внешних интерфейсах Magento опирается на несколько компонентов с открытым исходным кодом, таких как HTML, CSS, JavaScript, React и PHP. Adobe предоставляет ряд методов для стилизации внешнего вида магазина Magento — используя CSS для простых изменений, а также LESS и XML для более сложных корректировок дизайна веб-сайта, не затрагивая его структуру. Также HTML- контент, генерируемый сайтом, может быть настроен путём изменения PHTML-файлов.

Поисковый движок

Для версий Magento 2.3.x и более ранних, разработчики использовали встроенный поисковый движок на основе MySQL. Однако начиная с версии 2.4, все магазины Magento должны использовать Elasticsearch в качестве поискового движка по умолчанию. В случае использования других поисковых движков вместо Elasticsearch, рекомендуется проверить их на совместимость с платформой перед использованием.

Elasticsearch — это мощный и масштабируемый поисковый движок, который предоставляет расширенную функциональность поиска для магазинов на базе Magento, без ущерба общей производительности. Он обрабатывает и индексирует огромные объёмы данных, отображает результаты в реальном времени, а также предоставляет возможность использования подсказок и рекомендации.

HTTP-ускоритель

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

Кэширование

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

Magento — это симбиоз технологий с открытым исходным кодом.

В её основе лежат программные продукты известные и востребованные во всем мире, такие как MySQL, PHP, Require JS, Varnish, Redis и React, что позволяет создать надёжную, гибкую, масштабируемую и производительную платформу для электронной коммерции.

0
Комментарии
-3 комментариев
Раскрывать всегда