Как стать автором
Обновить

Комментарии 27

Look at my horse, my horse is amazing! :D

а как же авторизация?
Для авторизации как раз-таки стоит сделать отдельный микросервис
Это клево. Наверное. Если б хоть чего-нибудь понял — обязательно был бы более уверен!

Автор! Нет бы хоть в общих чертах объяснить, для проходящих мимо. И примерчиков бы приложил пару штук! Не тут, так хоть в доках или на гитхабе.

Иначе в массы не пойдет!
ЗЫ. А вот роутер интересный, попробую на досуге, thanks.
mgremlin, дело в том, что описанная библиотека, она сразу же и пример. Т.е. если вы запустите её, то по адресу localhost увидите классический hello world.

За хороший отзыв о роутере спасибо!
Статья слишком сумбурна, чтобы применять ее в продакшене
да и вообще «микросервис» здесь только в названии статьи. В самом коде нет ничего, что бы отличало его от простой заготовки веб-приложения.
Микросервис и должен быть прост, или Вы считаете иначе?

Сам микросервис можно организовать как угодно, лишь бы давал правильные ответы, а я всего лишь предлагаю вариант. И если у Вас есть большой опыт создания микросервисов, то думаю, Вам не составит труда привести примеры и своё видение внутреннего строения микросервиса?
Микросервис и должен быть прост, или Вы считаете иначе?
изначально он должен обладать единичной зоной ответственности

Вам не составит труда привести примеры и своё видение внутреннего строения микросервиса

я говорю, что в вашем «микросервисе» нет ничего, чтобы отличало его от любой заготовки любого веб-приложения. И я против, чтобы все, что создается на go и смотрящим в веб автоматически называлось микросервисом. Строго говоря, микросервис может быть веб-приложением, но может и не быть. Так же справедливо и обратное: не каждое веб-приложение — микросервис. Соответственно и создали вы болванку того, что может быть микросервисом, а может и не быть — каких-то отличительных особенностей в коде нет.
Добавьте сервис дискавери, сервисы по работе с апи/апи-шлюзом, балансировку, (g)rpc-клиент/сервер.
Фреймворки для создания микросервиса на го уже существуют — можете ознакомиться с фичами.
Добавьте сервис дискавери, сервисы по работе с апи/апи-шлюзом, балансировку, (g)rpc-клиент/сервер.

Вы описываете микросервисную архитектуру, а не микросервис.
нет, я описываю фичи, которыми может и часто обладает единичный микросервис.
zelenin, если у вас всё это содержится в микросервисе, то он сам фактически содержит микросервисы. Обратите внимание, Вы сами пишете слово `сервисы` во множественном числе.
я использую слово «сервисы» в другом контексте. Апи-клиент или клиент для сервис-дискавери являются сервисами приложения.
Если сравнивать Ваше и моё видение микросервиса, то похоже, что Вы делаете микросервисы более «жирными». В принципе, если их ответственность при этом мала и неделима, это тоже вполне рабочий вариант. Мне кажется, я понимаю Вашу точку зрения. Если не затруднит, поглядите сделанный мной для фана ММОА.
все не так. я лишь сказал, что вы сделали не заготовку под микросервис, а заготовку под веб-приложение. Оно может быть как приложением, отдающим данные по api, так и блогом. Но вы почему-то назвали это модным словом «микросервис», хотя для такой более узкой специализации у болванки нет никаких специализированных фич (не факт что они все и нужны в конкретном микросервисе).
Обсуждение исчерпало себя.
Удивительно непонятное описание продукта, просто исключительно странное. Даже мое понимание области в которой автор копает, не вносит ясности. Термины используется так, как я нигде не видел. Видимо очередь это не очередь а конвейер? И что за storage, для чего, куда и почему его основное достоинство это авто–дополнение в IDE? Хотя, похоже и storage это не то, что все под этим понимают, т.к. в нем автор предлагает хранить (?) middleware про которое я тоже уже не уверен, что это такое у автора и зачем его там хранить.

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

Я не для придирок или прочих издевательств, но в попытке понять о чем это было вообще и как оно относится к микросервисам в частности.

Видимо очередь это не очередь а конвейер?

Наверно для меня эти термины близки. Какую Вы принципиальную разницу вкладываете в эти два термина?

middleware про которое я тоже уже не уверен, что это такое у автора и зачем его там хранить

В моём понимании это промежуточное программное обеспечение. В библиотеке для примера это метрики, которые находятся «снаружи» микросервиса.

И что за storage, для чего...

Это простое хранилище объектов, оно только для удобства, чтобы инициализировать миддлваре объекты в одном месте.

авто–дополнение в IDE

Ну… это просто удобно, по крайней мере мне.

но на иностранном языке, который немного похож на английский, но точно не он.

Тут не в бровь, а в глаз, ибо учил я немецкий вперемежку с французским, так что транслятор, это наше всё… :(

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

Для термина middleware в го мире есть довольно четкое соглашение, что это такое, и что люди под этим подразумевают, особенно в контексте http обработок. Например вот это https://github.com/pressly/chi/tree/master/middleware

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

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

Для термина middleware в го мире есть довольно четкое соглашение

Если Вам не трудно, сформулируйте здесь (не только для меня), и тогда уж… то, что я называю миддлваре, как в принципе это назвали бы Вы?

То, что там читать трудно, а понять — невозможно

Скорей всего сокращу до простых предложений, которые и транслятор сможет осилить (надеюсь).
насколько я вижу, у тебя это тоже типа middlware, но с нестандартной сигнатурой func(http.ResponseWriter, *http.Request) (http.ResponseWriter, *http.Request). Если поменять на func(h http.Handler) http.Handler то станет как у всех, и самое главное — ты сможешь использовать все подобные, готовые middlware без всяких модификаций.

Общее замечание: в принципе, идея создания фреймоврка такого рода мнe кажется делом сомнительным. Во первых, есть неплохие и проверенные боем библиотеки, которые это уже делают основнию часть, например chi. Во вторых — идея добавления туда и конфигурации и еще чего мне не кажется полезной. Да, я понимаю, что при создании сервиса хочется упростить начальные телодвижения, однако лично я пошел по другому пути и написал простой кодо-генератор, который делает рабочий скелет приложения с chi, набором middlware для него (у меня в каждом сервисе надо определенный набор, например JWT), логгером, main с флагами и env (github.com/jessevdk/go-flag) перехватчик сигналов и еще по мелочи. Кроме того, оно генерит не только исходный текст, но и все, что надо для сборки и деплоя (Dockerfile, CI yml, ansible yml)

А планируете ли вы выкладывать этот инструмент на гитхаб?

назвать это гордо «интрументом» я бы не решиился. Там весь код это 50-60 строк определяющие структуру параметров, заворачивающие «templates» со всем, что человек туда положил в bindata и делающее по всем файлам в нем filepath.Walk с ExecuteTemplate. Могу, конечно, выложить, просто мне казалось это тривиальным.

Выкладывайте, пожалуйста. Мне бы очень подошло, поскольку я только начал читать литературу по Golang :)

Присоединяюсь, очень интересно для новичков.
С учётом критики в комментах подправил библиотечку, в результате чего очереди и хранилище отвалились за ненадобностью, хотя сами мидлваре я всё же прикручиваю немного по другому.

написал простой кодо-генератор, который делает рабочий скелет приложения

Как-то не приходилось сталкиваться с кодогенерацией, насколько удобным Вам показался этот инструмент?

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации