Size: a a a

2020 June 14

SS

Stanislav Sagan in Go-go!
t := time.Date(2009, time.November, 10, 23, 0, 0, 0, time.UTC)
источник

МП

Мимо Проходящий... in Go-go!
Farhad Kocharli
Добрый день

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

хочу поднять проект с микросервиснов архитектурой на Golang подобный на tripadvisor.
Первый вопрос заключается в том что какие микросервисы сделать REST или gRPC? или оба в зависимости от самого микросервиса?
Второй вопрос помочь подобрать либы для БД? использоавать ли ORM? хотелось бы узнать про ваш опыт про GORM?
Третий вопрос связан с выбором фреймворка. Прошу помочь с выбором одного из ниже указанных или посоветовать что то другое.
1) написать все самому и использовать только нативные библиотеки языка
2) снова написать все самому но только для роутера использовать Gorilla/Mux.
3) выбрать какой нибудь фреймворк. какой посоветуете? что думаете про Gin или Go Kit?

п.с хотелось бы получить обширный ответ который основанный в личном опыте и будет включать в себя drawback-и с которым сталкивались.
Для веба swagger - пром стандарт.
Для остального - grpc или thrift
Орм не нужна, но если очень хочется - ent. Gorm не нужно, это адово нетипизированое говно.
Gorilla mux и проч http маршрутизаторы - не нужны, вся валидация и транспорт http делается сваггером, а не вручную.
источник

МП

Мимо Проходящий... in Go-go!
Farhad Kocharli
Добрый день

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

хочу поднять проект с микросервиснов архитектурой на Golang подобный на tripadvisor.
Первый вопрос заключается в том что какие микросервисы сделать REST или gRPC? или оба в зависимости от самого микросервиса?
Второй вопрос помочь подобрать либы для БД? использоавать ли ORM? хотелось бы узнать про ваш опыт про GORM?
Третий вопрос связан с выбором фреймворка. Прошу помочь с выбором одного из ниже указанных или посоветовать что то другое.
1) написать все самому и использовать только нативные библиотеки языка
2) снова написать все самому но только для роутера использовать Gorilla/Mux.
3) выбрать какой нибудь фреймворк. какой посоветуете? что думаете про Gin или Go Kit?

п.с хотелось бы получить обширный ответ который основанный в личном опыте и будет включать в себя drawback-и с которым сталкивались.
== либы для бд

Sqlx более чем достаточно, Squirrel для динамических запросов
источник

IK

Ivan Kozlov in Go-go!
Мимо Проходящий
== либы для бд

Sqlx более чем достаточно, Squirrel для динамических запросов
а что такое sql динамические запросы?
источник

МП

Мимо Проходящий... in Go-go!
Локоть Анатолий
Grpc удобен, ТК там можно сделать персистент соединения и через него гонять сообщения туда обратно.
На rest такое невозможно, и там вы скорее всего будете использовать вебсокет - это несколько устаревший вариант того же grpc постоянного соединения.

В качестве либы для веба я бы рекомендовал echo, у нее хорошая документация, в которой освещены различные кейсы.

Правда, если вы начнёте использовать grpc, то скорее всего выбор веб-либы станет неактуален, тк у вас будет автогенеренный сервер из protobuf спецификации.

Gorm хорош и очень ускоряет работу на стадии создания прототипа, то на более позднем этапе, когда сущностей в системе очень много, с гормом будет чувствоваться уже неудобство. Хотя самое плохое что с ним может быть это откат до raw запросов, которые вам скорее всего порекомендуют противники orm.
Говорят, что есть другие orm на go, якобы лишенные его недостатков, но я не с ними не работал.
А напомните плиз в чём проблема с sql запросами? Я часто слышу подобные утверждения но сути не улавливаю? Нежелание/неумение в sql?
источник

МП

Мимо Проходящий... in Go-go!
Ivan Kozlov
а что такое sql динамические запросы?
К примеру фильтр по разным комбинациям полей в зависимости от реквеста
источник

C

Calculon in Go-go!
Ivan Kozlov
а что такое sql динамические запросы?
Когда нужно строить запрос учитывая входные параметры
источник

MW

Mr. Wh🦠er in Go-go!
я сдаюсь, что должно лежать в options.Input?
источник

IK

Ivan Kozlov in Go-go!
Мимо Проходящий
К примеру фильтр по разным комбинациям полей в зависимости от реквеста
спасибо.  всегда обходился ифами
источник

MW

Mr. Wh🦠er in Go-go!
я  думал там io.Reader будет. это go-flags
источник

C

Calculon in Go-go!
Mr. Wh🦠er
я сдаюсь, что должно лежать в options.Input?
что такое flags.Filename?
источник

C

Calculon in Go-go!
Если это путь до файла
источник

C

Calculon in Go-go!
Открой его, и пуляй в bufio new reader
источник

MW

Mr. Wh🦠er in Go-go!
источник

ЛА

Локоть Анатолий... in Go-go!
Мимо Проходящий
А напомните плиз в чём проблема с sql запросами? Я часто слышу подобные утверждения но сути не улавливаю? Нежелание/неумение в sql?
Устранение повторяющегося кода, который берет на себя orm. Да, sql не придется писать почти вообще. Только фрагменты условий where. Это очень ускоряет разработку на начальном этапе.
Заводим сущности и описываем связи между ними, и все , у нас готов полный CRUD по каждой сущности из коробки.
источник

C

Calculon in Go-go!
зачем тебе эта непонятная либа для флагов
источник

C

Calculon in Go-go!
Юзай стандартные
источник

C

Calculon in Go-go!
Или лучше urfave/cli
источник

MW

Mr. Wh🦠er in Go-go!
в ней нет многих вещей, например, списка строк и тд
источник

MW

Mr. Wh🦠er in Go-go!
хитро
источник