Javascript-форум (https://javascript.ru/forum/)
-   Node.JS (https://javascript.ru/forum/node-js-io-js/)
-   -   Выбор архитектуры для веб приложения (https://javascript.ru/forum/node-js-io-js/68930-vybor-arkhitektury-dlya-veb-prilozheniya.html)

Djekes 17.05.2017 23:23

Выбор архитектуры для веб приложения
 
Приветствую! С Node.js работаю недавно. Нужна помощь в выборе архитектуры для веб приложения.
Суть приложения такова:
Приложение обрабатывает входящие подключения webhooks (get запросы) и на основании их делает определенную логику, связанную с работой с БД, вычислениями и.т.п.

Например при запросе /node/go_logic_1 скрипт будет выполнять одни действия, а при запросе /node/go_logic_2 - другие.

На данный момент это реализовано с помощью express и представляет собой цепочку подобных блоков в коде:
app.get('/node/do_logic_1', function(req, res){
//do some logic 1
);

app.get('/node/do_logic_2', function(req, res){
//do some logic 2
);

//...


И так далее. Проект большой. Назревает около 300 таких уникальных запросов (урлов) и как-то все оставлять в таком виде для меня кажется ужасом кромешным. Редактировать это потом будет невозможно. Да и запрашивать каждый раз такой большой файл, наверняка тоже проблема.

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

Также смотрел в сторону "микросервисов". Но почитал множество постов на хабре, где говорят, что это не нужная вещь. В общем, был бы очень благодарен, если услышу ваше мнение по этому поводу.

-VenoM- 18.05.2017 08:17

Посмотри учебник переводной nodejs для чайников или как-то так. Там как раз в качестве примера разбирается хороший стиль http сервера.
Т.е. проект делится на indexjs, httpserver, router, handlers. В своём серваке (у меня более обширная задача, т.к. есть ещё tcp серв, usb, не только get, но и put) я сделал как в том примере - очень удобно. Под БД делаешь ещё один .js, который прикошачиваешь к handlers. Расширяется потом проект очень легко.

Djekes 25.05.2017 20:27

Цитата:

Сообщение от -VenoM- (Сообщение 452718)
Посмотри учебник переводной nodejs для чайников или как-то так. Там как раз в качестве примера разбирается хороший стиль http сервера.
Т.е. проект делится на indexjs, httpserver, router, handlers. В своём серваке (у меня более обширная задача, т.к. есть ещё tcp серв, usb, не только get, но и put) я сделал как в том примере - очень удобно. Под БД делаешь ещё один .js, который прикошачиваешь к handlers. Расширяется потом проект очень легко.

Видимо про этот говоришь http://nodebeginner.ru/
Спасибо) Ушел читать.

-VenoM- 28.05.2017 19:00

Угу. Там грамотно всё расписано в плане архитектуры, про асинхронность, правда, маловато (для БД кури промисы). Если нужно только "GET" handlИТЬ, считай готовый шаблон для проекта.

nerv_ 29.05.2017 09:31

Я отчасти для этих целей писал модуль под Koa -- koa-architect. Он еще сыроват, но в целом работать с ним можно :)


Часовой пояс GMT +3, время: 08:03.