Найти в Дзене
Алексей Иванов

Что под капотом у Multify

Что под капотом у Multify? В голосовании выше победил пункт про техническую реализацию, поэтому начнем с нее. Хотя я планирую рассказать о каждом из аспектов построения продукта, потому что на одной реализации не уедешь — как бы вам ни хотелось 😎 Так вот, в основе проекта лежит AdonisJS, я уже упоминал про него ранее. По факту это фреймворк, который идейно пытается воссоздать Laravel в мире TypeScript А какая идея у Laravel? Минимум усилий при максимальном результате: в нем из коробки идет обработчик очередей, ORM, инструменты для создания шаблонов и отправки писем, шаблонизатор для страниц, аутентификация и авторизация, шина для отправки событий внутри приложения... Это примерно 10% того, что есть в Laravel из коробки AdonisJS менее скромный, но он уже закрывает базовые потребности: дает DI-контейнер, абстракции над кешем и файловой системой, маршрутизатор веб-запросов. В общем-то довольно много, что не нужно собирать по крупицам из отдельных библиотек Вообще, работая более пло

Что под капотом у Multify?

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

Так вот, в основе проекта лежит AdonisJS, я уже упоминал про него ранее. По факту это фреймворк, который идейно пытается воссоздать Laravel в мире TypeScript

А какая идея у Laravel? Минимум усилий при максимальном результате: в нем из коробки идет обработчик очередей, ORM, инструменты для создания шаблонов и отправки писем, шаблонизатор для страниц, аутентификация и авторизация, шина для отправки событий внутри приложения...

Это примерно 10% того, что есть в Laravel из коробки

AdonisJS менее скромный, но он уже закрывает базовые потребности: дает DI-контейнер, абстракции над кешем и файловой системой, маршрутизатор веб-запросов. В общем-то довольно много, что не нужно собирать по крупицам из отдельных библиотек

Вообще, работая более плотно с TypeScript и экосистемой NodeJS я заметил, что в ней считается нормальным переизобретать велосипед: там есть как минимум 7 разных библиотек для логирования, 5 библиотек для работы с базой данных, 8 обработчиков очередей и так далее...

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

* * *

Возвращаясь к Multify, AdonisJS позволил очень сильно ускорить процесс разработки по факту благодаря трем вещам:

1. Сервис-контейнеру — мне не нужно думать, куда и в каком виде раскладывать бизнес-логику. Авторы фреймворка решили это за меня

2. Обработчику веб-запросов — и хотя Multify является универсальным реверс-прокси (по сути, в приложении буквально задан один маршрут: router.any('*', handle)), но внутри нужно обрабатывать входящие запросы и формировать исходящие: заголовки, парсинг тела запроса, параметры запроса. Для всего этого есть удобные утилиты из коробки

3. Очень крутой multi-tier кеш Bentocache, с помощью которого Multify может отвечать практически молниеносно. Multi-tier означает то, что кеш сначала пытается прочитать из локальной памяти, а если не получается, то уже идет в хранилище. Которое, кстати, можно подключить с помощью разных драйверов: в виде файлов, redis или базы данных