Задать вопрос
@leston

Слышал, что go не очень подходит для написания сервисов с большим количеством бизнес логики, какое мнение у вас?

Очень хочется услышать развернутый ответ, почему go не подходит/подходит в данной ситуации.
  • Вопрос задан
  • 453 просмотра
Подписаться 2 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 7
Потому что go довольно низкоуровневый язык с минимумом абстракций и отсутствием дженериков.
Ответ написан
firedragon
@firedragon
Не джун-мидл-сеньор, а трус-балбес-бывалый.
Может быть
Ответ написан
@dimuska139
Backend developer
Вообще начать стоит с того, что понятие "с большим количеством бизнес логики" довольно растяжимое. Если говорить о микросервисах, то в них обычно много бизнес-логики и не получается. Потому что если такое начинает происходить, то стоит задуматься, а точно ли в микросервисе нет лишней ответственности? Возможно, стоит этот сервис поделить на более мелкие?
Немного из личного опыта и не совсем по теме вопроса, мало ли пригодится. Я писал микросервисы на go и заметил следующие недостатки (лично для меня):
  1. В большинстве микросервисов бывают довольно простые запросы к базе данных и удобно было бы использовать что-то вроде Doctrine или SQLalchemy. В go, к сожалению, инструментов такого уровня нет. Gorm лично мне не понравился совершенно.
  2. Недавно была необходимость запилить сервис, взаимодействующий со Sphinx, но нормальных библиотек для Go для этой задачи внезапно не оказалось. Есть вот такая, но она устарела (еще не позволяет ее нормально юзать в несколько потоков). Неустаревшей и нормальной библиотеки вообще нет. Либо я плохо искал.
  3. Сложно сделать нормальную структуру проекта, чтобы не было циклических зависимостей. По крайней мере, вскоре начинает не покидать ощущение, что пишешь какой-то код низкого качества. Хотя может это субъективно или проходит с опытом.
  4. Если не запилить что-то типа контейнера зависимостей, то покрывать тестами проект становится неудобно, т.к. тесты при запуске в параллель начинают юзать одни и те же глобальные переменные. Опять-таки может и это субъективно.
  5. Во фреймворке gin/gonic сложно запилить нормальную валидацию для json. Если в структуре, на которую маппишь, поле типа int, а ты передал в json число в кавычках (строку вместо числа по сути), то поймать такую ошибку и выдать нормальную ошибку валидации невозможно, т.к. валидация там (в этом фреймворке) запускается после маппинга.

Плюсы:
  1. Строгая типизация
  2. Результат компиляции - один бинарь
  3. Довольно интересный проброс ошибок (многим не нравится, мне понравился)
  4. Высокая скорость
  5. Низкое потребление памяти
  6. Есть потоки
Ответ написан
@rustler2000
погромист сикраш
uvelichitel
@uvelichitel Куратор тега Go
habrahabr.ru/users/uvelichitel
Так больше Go ни для чего не подходит.
Ответ написан
Комментировать
Всё зависит от разработчика. Можно использовать Go, при этом большую часть бизнес логики реализовать в SQL запросах например.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы