@ermak148

В чем смысл использования Golang как веб сервер?

Наткнулся на ютубе плейлист уроков по Go, причем 50 или 60% из них были про создание веб сервера. Возможно, немного странный вопрос, но все же. В чем смысл? А точнее где он? Просмотрев несколько тестов go vs java/c++/c#, то в большинстве из них он имел самое высокое время выполнения теста, в том же сравнении с веб сервером на spring go имеет время ответа сервера (в одинаковых условиях) до 20% большее чем у java. Я не могу понять что это за трэнд такой с использованием его для создания веб приложений. Объясните пожалуйста
  • Вопрос задан
  • 301 просмотр
Пригласить эксперта
Ответы на вопрос 3
sergey-gornostaev
@sergey-gornostaev
Седой и строгий
А теперь возьмите не синтетический тест, а реальную задачу сложнее перекладки json'ов, например, с шифрованием, дайте серьëзную длительную нагрузку и посмотрите латентность по процентилям.
Ответ написан
Комментировать
Го намного проще многих других языков, соответственно проще читать и понимать чужой код, что ценится в больших компаниях, где работает много людей. Плюсом ценится то, что довольно сложно выстрелить себе в ногу.

Тесты есть разные, Го примерно идет в ногу с Джавой и Шарпом, особенно в случае многопоточных нагруженных серверов. А если посмотреть сколько он потребляет при этом памяти, то даже выходит вперед по эффективности.

На Го очень просто писать многопоточность и асинхронность, не нужно думать об await-ах, каждая горутина имеет свой стек, что снимает с программиста много головной боли. Вся стандартная библиотека и большой набор библиотек с гитхаба из коробки поддерживают асинхронность и потоковую обработку данных, работать с этим сильно проще, чем в других языках. Соответственно, сложнее накосячить.

Но абстракций на Го очень мало, по сравнению с той же Джавой, он довольно бедно выглядит (что и дает простоту чтения кода). Это является минусом в определенных ситуациях, поэтому на Го стараются писать небольшие сервисы.

В итоге, легковесность горутин, легкость работы с ними и асинхронная модель из коробки (не создается тред на каждую рутину, а наоборот, рутины обрабатываются разными тредами по необходимости) привели к тому, что ниша Го это сервисы, которые упираются в ожидание ресурсов от каких-то внешних систем по сети. То есть, идеальный кейс для веб-сервера, который собирает под капотом инфу с БД и других сервисов. По сути такой сервис большую часть времени ждет ресурсов по сети, в Го это ожидание сделано очень эффективно.
Ответ написан
Комментировать
@calculator212
Просмотрев несколько тестов go vs java/c++/c#, то в большинстве из них он имел самое высокое время выполнения теста
В целом хотелось бы ссылки на тесты увидеть, т.к. можно абсолютно без проблем найти тесты которые будут показывать обратные результаты(что само собой не говорит об их корректности).
в том же сравнении с веб сервером на spring go имеет время ответа сервера (в одинаковых условиях) до 20% большее чем у java
А вот обратный пример, тут надо смотреть как и что меряется и в каких условиях. Но насчет спринга реально интересно посмотреть, в каких задачах нативный го будет медленнее спринга.
Я не могу понять что это за трэнд такой с использованием его для создания веб приложений.
Из плюсов то, что го удобно собирается в один бинарник со всеми зависимостями, простой в установке. Для веба имеет удобную библиотеку, которая позволяет писать на нём без доп фреймворков. В целом по моему опыту, тем кто пишет на языках типа явы он им не очень нравится, т.к. по сути людям приходится менять стиль написания кода, а нравится больше тем, кто пишет в стиле Си. В общем если вы любите использовать много абстракций и +/- сложное ООП, то го скорее всего не зайдёт, т.к. в нём придется перестраивать мышление.
Я не могу понять что это за трэнд такой с использованием его для создания веб приложений.
Ну он стал популярнее конечно чем 5 лет назад, но вакансий на нём не прям много, на текущий момент это относительно нишевый язык. Смысл в том, что людям просто нравятся разные языки, а пишут на го в основном демонов, сетевые и веб приложения, просто потому что он под них заточен
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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