Добрый день
Я новичек в програмирование хоть с большым опытом в системном администрирование, поэтому прошу простить если мои вопросы окажуться глупыми.
хочу поднять проект с микросервиснов архитектурой на Golang подобный на tripadvisor.
Первый вопрос заключается в том что какие микросервисы сделать REST или gRPC? или оба в зависимости от самого микросервиса?
Второй вопрос помочь подобрать либы для БД? использоавать ли ORM? хотелось бы узнать про ваш опыт про GORM?
Третий вопрос связан с выбором фреймворка. Прошу помочь с выбором одного из ниже указанных или посоветовать что то другое.
1) написать все самому и использовать только нативные библиотеки языка
2) снова написать все самому но только для роутера использовать Gorilla/Mux.
3) выбрать какой нибудь фреймворк. какой посоветуете? что думаете про Gin или Go Kit?
п.с хотелось бы получить обширный ответ который основанный в личном опыте и будет включать в себя drawback-и с которым сталкивались.
Grpc удобен, ТК там можно сделать персистент соединения и через него гонять сообщения туда обратно.
На rest такое невозможно, и там вы скорее всего будете использовать вебсокет - это несколько устаревший вариант того же grpc постоянного соединения.
В качестве либы для веба я бы рекомендовал echo, у нее хорошая документация, в которой освещены различные кейсы.
Правда, если вы начнёте использовать grpc, то скорее всего выбор веб-либы станет неактуален, тк у вас будет автогенеренный сервер из protobuf спецификации.
Gorm хорош и очень ускоряет работу на стадии создания прототипа, то на более позднем этапе, когда сущностей в системе очень много, с гормом будет чувствоваться уже неудобство. Хотя самое плохое что с ним может быть это откат до raw запросов, которые вам скорее всего порекомендуют противники orm.
Говорят, что есть другие orm на go, якобы лишенные его недостатков, но я не с ними не работал.