Хотите верьте, хотите нет, но это актуальная тема.
В этой статье не рассказывается, что такое микрофронтенд и как спроектировать решение. Но мы раскроем некоторые мифы об этом, которые считаются само собой разумеющимися.
Основное предположение в этой статье заключается в том, что вы уже знаете, что такое решение для микрофронтенда, и, возможно, что-то о стратегиях. Если нет, вы можете начать с приведенной ниже ссылки.
В этой статье также затрагиваются некоторые концепции, которые могут показаться вам старомодными, если вы никогда не слышали о них. Но я буду простым и кратким, я надеюсь, что это не вызовет боли в ваших воспоминаниях.
Что касается микрофронтендов, есть несколько вопросов, на которые еще нет ответа:
- Как концепция, когда она родилась?
- Как конкретная (и общедоступная) реализация, когда она появилась? Кто это сделал?
Попробуем ответить на эти вопросы.
Вопрос о микрофронтендах — это тема, которая в основном интересует средние и крупные компании и проекты, и, конечно, предприятия предоставляют очень мало или совсем не дают информации о своей собственной внутренней стратегии. И это очевидно.
Поскольку их очень мало, многие стараются подняться на гору как можно быстрее, чтобы оказаться на вершине раньше всех.
Интернет полон мнений и предположений о микрофронтендах. Но верьте или нет, он подходит не для каждого проекта. Он не предназначен для использования всеми и везде. Не существует единой стратегии для ее достижения, а неправильные решения увеличивают затраты, которые перевешивают выгоды, что приводит к катастрофическим неудачам. Архитектура программного обеспечения никогда не должна быть целью, а должна быть средством достижения цели. Позвольте проблеме возникнуть, прежде чем революционизировать все без необходимости.
В последнее время я много читал об этом в книгах и сообщениях в блогах и заметил, что часто существует множество предположений, мнений и точек зрения, которые передают неверное сообщение новичкам или простым читателям.
Еще одним трендовым аспектом сегодняшнего мира является высокая доступность учебных курсов и книг, благодаря Интернету. Многие веб-сайты предлагают современные курсы, а веб-разработка очень популярна. И, конечно же, это источник дохода для обеих сторон: вы каким-то образом платите за ресурсы, чтобы узнать что-то, что позволяет вам работать в данной отрасли в качестве разработчика всего, что им нужно.
Тем не менее, это может не дать полного представления о том, что на самом деле происходит в отрасли.
Многие технологии из прошлого сегодня мертвы по многим причинам и никогда не будут представлены в этих учебных курсах. Одним из них, например, является апплет Java для веб-страниц: знаете ли вы, что какое-то время он широко использовался?
Я считаю, что это упоминается только в некоторых старых университетских курсах, и я лично желаю, чтобы никому не приходилось сталкиваться с ними, потому что они могут быть неуклюжими по сравнению с современными решениями. Конечно, это было золотое решение в то время, сейчас закончилось. Мы знаем, что нет «лучшего» решения, есть ценное решение на данный момент, основанное на ограничениях, требованиях, контексте и так далее.
Возвращаясь к микрофронтендам…
Первый вопрос:
"Как концепция, когда она родилась?"
Ответ: Oracle в 1995 году с "Java-апплетом"
(падение которого началось примерно в 2013 году и завершилось в 2017–2018 годах).
Но почему это важно? И почему вперемешку с микрофронтендами?
Апплеты Java были небольшими приложениями, написанными на языке Java, которые использовались для предоставления интерактивных функций веб-приложениям, которые не могут быть предоставлены только с помощью HTML. Но затем кто-то другой создал хорошо известную сегодня технологию JavaScript, которая со временем стала мощной. Вы знаете историю JavaScript и его влияние сегодня.
«Апплеты Java работают с очень высокой скоростью, и до 2011 года они были во много раз быстрее, чем JavaScript. В отличие от JavaScript, Java-апплеты имели доступ к аппаратному 3D-ускорению, что делало их подходящими для нетривиальных визуализаций, требующих больших вычислительных ресурсов (…).
После компиляции полученный файл .class можно поместить на веб-сервер и вызвать на HTML-странице с помощью тега «апплет» или «объект».
(Википедия)
Поэтому он использовался для создания частей веб-страниц, где очень маленькие фрагменты логики были встроены в структуру HTML.
Пример:
<applet code="HelloWorld.class"> <!-- This is where HelloWorld.class runs. --> </applet>
Этот тег `applet` напоминает веб-компонент, верно?
Итак, Oracle с Java-апплетами положили начало концепции микрофронтендов, но их технология умерла, и они так и не распространили ее вовремя, как того заслуживала тема.
Это идеально подошло бы для микрофронтендов:
- Меньшие кодовые базы
- Независимо развертываемый
- Изолированный
- Вертикальная нарезка
- …
Я остановлюсь здесь на любых других концепциях, связанных с плюсами и минусами (а может, просто минусами?) такой технологии в современном мире. Это неосуществимо, но я просто хотел развеять миф о том, «кто изобрел концепцию».
Второй вопрос:
«Как конкретная (и общедоступная) реализация, когда она появилась?
Кто это сделал?”
Ответ: Facebook, 2009 г. с BigPipe.
И снова Facebook в выигрышной позиции.
Я не удивлен, вы тоже не должны быть удивлены.
Facebook, взяв в качестве примера домашнюю страницу (или новостную ленту), настолько неоднороден, что, конечно, они подумали о «независимо от результатов, которые должны быть составлены в большее целое». Это было секретное оружие Facebook для выступлений на их собственном сайте, но, может быть, оно оказалось чем-то большим?
Современные веб-сайты стали значительно более динамичными и интерактивными, чем 10 лет назад, а традиционная модель обслуживания страниц уже не соответствует требованиям скорости современного Интернета.
(…)
Совмещая время генерации веб-сервера со временем рендеринга браузера, мы можем не только уменьшить сквозную задержку, но и сделать первоначальный ответ веб-страницы видимым для пользователя намного раньше, тем самым значительно уменьшив воспринимаемую пользователем задержку.
BigPipe был вдохновлен конвейерами микропроцессоров. Сначала BigPipe разбивает веб-страницы на несколько фрагментов, называемых «страницами», а процесс генерации страниц — на несколько этапов, некоторые из которых выполняются на стороне сервера, а другие — на стороне клиента. По первому запросу клиента сервер возвращает незакрытый HTML-документ, при этом продолжает генерацию страниц. Этот неполный документ имеет логику javascript BigPipe для управления и создания оставшейся части страницы после отправки страниц с сервера.
Хорошо, мы не знаем, какова их архитектура и стратегии интерфейса Facebook, но абсолютно точно это архитектура для микроинтерфейсов.
Под изображением старомодной домашней страницы Facebook:
Домашняя страница состоит из нескольких страниц: «страница композитора», «страница навигации», «страница ленты новостей», «страница окна запроса», «страница рекламы», «окно предложения друга» и «окно связи» и т. д. Каждый из их не зависит от каждого. Когда «страница навигации» отображается пользователю, «страница ленты новостей» все еще может генерироваться на сервере.
Ссылка на оригинальный пост в блоге Facebook: https://www.facebook.com/notes/facebook-engineering/bigpipe-pipelining-web-pages-for-high-performance/389414033919/
BigPipe сегодня имеет множество различных приложений, поэтому если вам интересно, вы найдете много интересных статей и документации.
Еще раз, я просто хотел развеять миф о том, «кто был пионером».
Выводы
В этой статье я дал непредвзятые ответы на следующие вопросы о микрофронтендах
- Как концепция, когда она родилась?
- Как конкретная (и общедоступная) реализация, когда она впервые появилась? Кто это сделал?
Интернет полон мнений и предположений о микрофронтендах. Но верьте или нет, он подходит не для каждого проекта. Он не предназначен для использования всеми и везде. Не существует единой стратегии для ее достижения, а неправильные решения увеличивают затраты, которые перевешивают выгоды, что приводит к катастрофическим неудачам. Архитектура программного обеспечения никогда не должна быть целью, а должна быть средством достижения цели. Позвольте проблеме возникнуть, прежде чем революционизировать все без необходимости.
Личное примечание: понимание проблем, стоящих за созданием нового решения, очень важно для освоения технологии.
Надеюсь, вам понравилось чтение.
Я призываю вас оставить комментарий с вашим мнением.
#микрофронтенды #мифы #раскрытые