Magento 2 — что под капотом?

На прошедшей недавно в Киеве конференции MageConf компания Magento рассказала о возможностях следующей версии своей платформы — Magento 2. Поскольку лично поприсутствовать на докладе не получилось, мы обратились за комментариями к системному архитектору проекта Дмитрию Сороке.


Дмитрий Сорока, Magento System Architect

— Итак, какие изменения претерпела новая версия, в чём заключаются ключевые отличия от Magento 1.x?

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

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

И, разумеется одна из важных задач — улучшение производительности системы.

У системы очень много пользователей, и проблемы с производительностью весьма актуальны. Мы ведём очень интенсивную работу в этом направлении.

Хотелось бы упомянуть также и упрощение разработки под Magento. Это касается как фронт-энда (мы переходим на jQuery в качестве основной библиотеки), так и более глубоких уровней, вплоть до админки, которая также разбита на модули, для обеспечения большей гибкости для разработчиков.

— Что касается производительности — эта проблема была весьма актуальна для прошлых версий. Что изменится в новой?

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

— Какой фреймворк используется в Magento?

— Magento фактически расширяет Zend Framework. Вернее, он используется как основной источник библиотечных компонент: уровень доступа данных через Zend_Db, кэширование — через Zend_Cache, локализации — через Zend_Locale, и т. д. Мы используем много готовых компонент — они уже реализованы, зачем их реализовывать ещё раз.

Но поверх этих компонент построен Magento Framework, с которым, собственно, и имеет дело разработчик — к примеру, при создании новых тем. Модульность также реализована на уровне нашего собственного фреймворка.

— А что касается обратной совместимости плагинов для разных версий, будет ли актуальной эта проблема?

— Да, проблема будет весьма актуальной.

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

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

— Будет ли компания стимулировать каким-либо образом переквалификацию разработчиков, популяризировать новую версию системы?

— Если говорить в мировых масштабах, то у компании есть тренинг-классы (к сожалению, пока не в Украине, но этот вопрос в стадии решения и весьма приоритетен). Но мы не предполагаем, что те люди, которые долгое время работали с первой версией, в один прекрасный день будут поставлены перед фактом — вот вам вторая, и делайте что хотите. Процесс перехода будет постепенным.

Чтобы облегчить процесс обучения и миграции, мы уже сейчас выложили код Magento 2.0 в открытый доступ — люди могут следить, как он развивается и дополняется. Доступна также подробная документация — к слову, в отличие от первой версии, которая вышла совершенно без сопроводительной документации, всё создавалось уже в процессе эксплуатации.

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

— Как Magento 2 вписывается в общую стратегию развития eBay? Вопрос весьма масштабный, но можно ли обрисовать некие тенденции?

— Да, вопрос очень глобальный, попробуем его немного декомпозировать и спуститься до уровня Magento. Сама по себе компания eBay — огромнейшая корпорация, с 25 тыс. сотрудников, владеющая многими компаниями, и основные её источники дохода — это, собственно, платформа eBay, платёжная система PayPal и разработчик сайтов GSI Commerce, также в этом году купленный eBay.

«Фундаментом», на котором работают эти три подразделения, фактически и является система X.Commerce. Основной стратегией корпорации в настоящее время является введение инноваций на уровне X.Commerce, большой частью которого, собственно, и является Magento. Включая нас, в настоящее время над проектом работают порядка 800 разработчиков. В X.Commerce входят подразделения, которые занимаются разработкой инфраструктуры для сообщества.

В свою очередь, задача X.Commerce — предоставление разработчикам среды, в которой они смогут разрабатывать новые функциональные элементы, к примеру, системы управления заказами, интеграции с eBay. Но эти разработки будут вестись на стандартизированном языке. Что он собой представляет — в X.Commerce есть проект под названием Ontology. Его цель — предоставить весь мир электронной коммерции в нормализированном виде, к примеру, если существует заказ, то какими атрибутами он должен обладать и т. д., то есть, спускаясь от уровня домена, полностью раскрывать структуру, входящие в неё сущности и взаимосвязи между ними. На основе этих стандартов разработчики смогут оперировать одной и той же терминологией и понятиями.

В основе X.Commerce лежит «Фабрика» (Fabric) — шина для передачи сообщений между приложениями и некими функциональными возможностями. Явное преимущество (а также глобальное видение развития) такой системы заключается в унификации интерфейсов взаимодействия программ и функциональностей.

К примеру, у нас есть возможность проведения платежей, интегрированная в X.Commerce и поддерживающая несколько платёжных систем — PayPal, Authorize.net, CyberSource и т. д. Соответственно, у разработчика приложения есть две опции — интеграция с выбранной платёжной системой напрямую, либо посредством X.Commerce. Объём работ будет примерно сопоставим. Но интеграция с помощью X.Commerce позволяет легко подключать приложение ко всем существующим платёжным системам, в противном случае каждую платёжную опцию придётся реализовывать отдельно. Соответственно, если на рынок будут выходить новые платёжные системы, поддержка которых будет интегрироваться в X.Commerce, — соответственно будут расти и возможности приложения. Провайдерам такой расширяемой функциональности могут быть платёжные системы, marketplace, социальные сети и т. д., набор возможностей довольно большой.

Все приложения могут в стандартной поставке иметь модуль, который позволяет осуществлять как синхронные, так и асинхронные интеграции, поскольку методология PubSub не подразумевает синхронной интеграции. X.Commerce будет расширяться утилитами, дополнительными уровнями, одним из которых, к примеру, будет Bridge, позволяющий работать с «Фабрикой» в синхронном режиме.

Magento в этой архитектуре является потребителем функциональности предоставленной X.Commerce. То есть к системам платежей, интегрированным в X.Commerce, Magento обращается через интерфейс X.Commerce. Для Magento в свою очередь — это просто дополнительный модуль, построенный поверх стандартного модуля коммуникации с «Фабрикой».

В текущий момент идёт разработка модуля Multi-marketplace, реализующего интеграцию Magento-каталога с marketplace. В настоящее время модуль работает только с eBay, но X.Commerce ищет способы привлечения и других крупных игроков, таких как Amazon, и т. п. Соответственно, используя этот модуль, разработчик получает интеграцию со всеми поддерживаемыми магазинами.

— Вы рассказали о плюсах новой платформы в основном со стороны разработчика. А какие преимущества получает заказчик, пользователь продукта на Magento 2?

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

— Когда новая версия увидит свет?

— 

Финальный GA-релиз назначен на четвёртый квартал 2012 года, бета-релиз запланирован на третий квартал.

— Magento открывает собственный магазин приложений Connect, расскажите, пожалуйста, подробнее о нём?

— Частью Magento 1.x является огромный набор расширений (extensions) — дополнительных модулей-приложений и тем. Магазин приложений даёт возможность разработчику поделиться своими наработками, а владельцу магазина — расширить его функциональность.

Существует три редакции Magento, от простой к более продвинутой — Community, Professional и Enterprise, кроме того, есть облачный сервис Magento Go. Расширения, предназначенные только для старших редакций, несовместимы с младшими, но обратная совместимость присутствует. Облачный сервис фактически обладает функциональностью Enterprise-редакции.

Таким образом, глобальная стратегия магазина — дать разработчику возможность представить своё приложение на всех возможных рынках — от Community до Go.

— А как разработчику или компании можно начать продавать свои расширения посредством Magento Connect?

— На сегодняшний день, как упоминалось, у нас существуют два направления — продажа расширений для независимых редакций Magento и для Go. Для того, чтобы начать продавать свой extension на Go, нужно пройти сертификацию. Нa Magento Connect есть форма, с помощью которой разработчик может отправить запрос на сертификацию собственного расширения, этим занимается команда разработчиков Magento. Существует определённый набор требований, которым должно соответствовать приложение.

Когда расширение проходит сертификацию, оно получает «метку» Trusted Extension. После этого становится доступным его использование на Magento Go Platform и его можно продавать. Есть комиссия компании, но она минимальна. Возможности получать платежи за продажу расширений для индивидуальных редакций пока нет, но мы как раз работаем над этой функциональностью.

— Стоимость каждого приложения устанавливает автор?

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

— А о Magento Go расскажите чуть подробнее...

— C технической точки зрения это Magento 1.9 (мы в данный момент проводим процесс миграции на последнюю версию Enterprise — 1.11), с доработками, которые позволяют её масштабировать на нашем «облаке», созданном специально для хостинга Magento Go.

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

Устранить этот недостаток и призвана Magento Go Platform, разработкой которых мы сейчас занимаемся. Это инфраструктура, которая позволяет владельцу сайта заливать собственный код и расширения в Magento Go.

— Будет ли Magento Go мигрировать на вторую версию?

— Да, сейчас производится миграция на 1.11 и мы уже в компании обустроили процесс обмена кодом между командами. Соответственно в процессе миграции, Magento Gо будет уже приближена к Magento 2.0 и далее мы будем продолжать миграцию.

Процесс миграции пройдёт прозрачно для пользователя. Все trusted-расширения будут также доступны и со второй версией. Что касается кастомных — к сожалению, не знаю точных дедлайнов по Go Platform, если эти сроки совпадут с дедлайнами по Magento 2, то и вопроса такого не возникнет — вся кастомизация будет доступна уже только для второй версии.

— Спасибо!

Підписуйтеся на Telegram-канал редакції DOU, щоб не пропустити найважливіші статті.

👍НравитсяПонравилось0
В избранноеВ избранном0
Подписаться на автора
LinkedIn



Підписуйтесь: Soundcloud | Google Podcast | YouTube


43 комментария

Подписаться на комментарииОтписаться от комментариев Комментарии могут оставлять только пользователи с подтвержденными аккаунтами.
Что-то всё о тачке да о тачке ...

Ну, у архитекторов известных продуктов могут быть свои причуды — спустился по трапу яхты, сфоткался в тачке для DOU, пересел обратно на яхту.

Я о другом.

Вот, статья примерно говорит следующее. Магента увеличивается раз в 10, перестраивается и будет ещё оптимизироваться раз в 10 (а я-то думаю, куда все PHP программисты разбежались, днём с огнём ...)

Но ведь это очень рискованное предприятие. Было бы интересно услышать об организации сего процесса. Например. Как за короткое время написать столько тестов, чтобы новая версия работала так же, как и старая. Как подготовиться к потоку реквестов на поддержку. Как, вообще, можно оптимизировать продукт в 10 раз (это что, там специально тормозящие жучки, которые можно просто выключить, или просто раньше о скорости никто просто не думал ?)

Как за короткое время написать столько тестов, чтобы новая версия работала так же, как и старая.

Не писать их вообще ;)

а я-то думаю, куда все PHP программисты разбежались, днём с огнём ...

А вы предложите нормальную зарплату, и они найдутся. Я гарантирую это™.

Как, вообще, можно оптимизировать продукт в 10 раз (это что, там специально тормозящие жучки, которые можно просто выключить, или просто раньше о скорости никто просто не думал ?)

Ой, да это вообще элементарно. Убираем несколько уровней абстрактных фабрик классов, генерирующих абстрактные фабрики классов, и вуаля.

И да, раньше там о скорости не думали, зато там есть Архитектура и стремление использовать как можно больше паттернов проектирования.


А вы предложите нормальную зарплату, и они найдутся.

Вот все так говорят. Но для того, чтобы предложить — надо сначала найти кому.
Вероятно, Magenta тоже вызывает сей катаклизм.

Да причем здесь Magento, если вам нужен знаток Kohana?

Да, именно так. Тормозящие. Я бы сказал, торомзящие стержни в реакторе. Лишь одно может напугать — а если выйдут на показатель 8,3 вместо 10 — не сочтут ли провалом??

Оптимизировать и маштабировать — разные вещи. И это самый правильный подход когда масштабирование открывает возможности рефакторинга процесса.

Вообще же, интересно, в которой версии магента перестанет наконец жрать память, как не в себя. :)

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

Но специально фоткать за рулем Skoda, это же f...ing shame. Еще зеркалки в бардачке не видно что-то.

Почему сразу «специально»? Просто так получилось. Неплохая фотография, по-моему.

(Мне кажется, что это не Skoda, зеркало и форма двери не похожи.)

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

Это необязательно задумывалось именно так, но оно так вот выглядит. Это все равно, что сфоткаться в брендовом свитере с ярлыком наизнанку.

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

Именно! Именно так (и это тем более нелепо). Но обстановка фотографии, к тому же, изрядно отвлекает от содержимого статьи, что видно из других комментариев.

Я перестаю вас понимать. Получается, что appropriate — это фотографироваться на фоне белой стены в одежде без опознавательных знаков, в парандже (если загорелый — значит, много денег на поездки!), не улыбаться (если хорошие зубы — значит, есть куча денег на стоматологов!) и т.п. Детство какое-то.

да, и стать одним из сотни корпоративных клонов bit.ly/xtTy4b

Может быть белая стена, может быть рабочее место. Статья же не о том, на чем он ездит. Статья о том, что новая версия проекта назрела и вот-вот прорвет.

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

Вы передергиваете.

В общем и в целом, я не считаю, что неформальные фотографии — это плохо.

А что плохого в фотке из лаунж-бара? Раз «передергиваю»?

Состояние алкогольного опьянения и наличие в кадре других людей. Как-то так.

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

Тогда без проблем. Я одобряю. =)

при чем тут зависть? просто вид у него такой довольный, как будто только сегодня с ланоса на шкоду за $32к пересел :)

а машинка там по имени цып-цып bit.ly/zvnLuY

Разве это плохо, что у человека довольный вид? =)

(Не-а, не она это. Форма окна, ширина стойки, зеркало — не похожи. По-моему, это очевидно.)

Я ради интереса глянул фотки салона шеви корвета, как тут в ветке подсказывали — походу таки он. :)

это ж кем надо быть, чтобы по цвету кузова опредилить модель 0_о

хм, а я б вобще выгнал архитектора, что сделал икомерс систему без единого теста.

Это наверное от модели авто на фотографии
s.dou.ua/...kturunov/sorokadima_r.jpg
перешли к модели штанов.

Дочитал до ZF и стало не интересно (

Че там за тачка на фото? Порш?

Skoda Octavia RS.

Салон на фото и правда побогаче, чем в Фобии, но такой цыплячий цвет кузова я припоминал только у них, а про существование RS забыл :)

тот же первый вопрос был после статьи :)

Вообще такие статьи нужно публиковать на внутреннем портале Magento, потому как здесь 99% посетителям ни холодно ни жарко от того что там в Magento 2. ;-)

Не факт. Как я понимаю, на том же MageConf было достаточно людей, которым это интересно и которые при этом не являются сотрудниками Magento.

по фотке — что под капотом?

Юнит-тесты?!!! Автоматизированные?!!! No Way!!!

Только вручную, только хардкор!

Подписаться на комментарии