LINUX.ORG.RU

Golang в крупных проектах возможен (back)?

 


0

6

В enterprise например, да и вообще где нужно много бизнес-логики?

Встречал мнение, что этот язык плохо для этого подходит. Хочу разобраться почему. Там нет фреймворков уровня Laravel/Spring? Скорее всего позже добавят. Отсутствие привычного ООП мешает его юзать? Нельзя обойтись текущими средствами Go?


Ответ на: комментарий от FishHook

У тебя есть опыт построения SaaS решений без оркестратора

Бро, то что там обязательно нужен оркетсратор тебе вдолбили на хабрах. Это заведомо менее конкурентное решение. Для чего оно и пропагандируется. Там где надо, сделано как надо, без этих ваших оркетсраторов. И именно так и должно быть.

slew
()
Ответ на: комментарий от FishHook

а их деды еще лучшее жили, они даже жопу вытирать не заморачивались - а что ее вытирать на пальме то сидя.

Ну или жопы они мыли, писали труды по философии, биологии, истории, астрономии, разработали геометрию и тригонометрию в виде, знакомом нам и по сей день, имели писанную конституцию, суды присяжных и респубиканизм. А потом пришли прогрессивные: сравняли музеи, сожгли библиотеки, сняли кожу с чернокнижников, сожгли ведьм, заменили следствие «божьим судом» (установление виновности по характеру ожогов от расскалённого железа) / «судебным поединком» (на кулаках или на мечах) и велели всем «подняться на пальму», погрузив человечество в многовековую тьму. Очевидно, не всё, что позднее хронологически – лучше.

Pwner
()
Ответ на: комментарий от Pwner

ты чушь пишешь. рабовладельческие «демократии», где правами обладали только рабовладельцы явно были не лучшим место для жизни, и то что варвары рим спалили, возможно, и привело к эпохе просвещения. в истории принято драматизировать и европоцентризмом увлекаться, хотя греки украли геометрию у египтян, мельницы придумали в персии, а порох и ткацкие станки в китае

rtxtxtrx ★★★
()
Ответ на: комментарий от FishHook

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

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

Единственное что - Кубернетис это монстр с какими-то непонятными мне целями и страшной терминологией. 99% проектов не нужны какие-то там кластеры. Нужен просто один bare-metal сервер с какой-то ручной виртуализацией (говорю, потому что сам делал Linux + KVM/Qemu). Да и то, можно еще и VPS-кой (одной или несколькими) обойтись. И тодга все это действительно деплоится баш скриптом без неоправданных абстракций. Но времена такие, что набацать кубернетис конфиги через ЧатГПТ моднее (и проще?) чем один раз выучить Баш. Баш это немодно, да еще и неприятно как-то, скобочки там всякие да и вакансий нет.

qount_25
()
Последнее исправление: qount_25 (всего исправлений: 1)
Ответ на: комментарий от qount_25

Единственное что - Кубернетис это монстр с какими-то непонятными мне целями и страшной терминологией.

Логично, k8s инструмент для гиганских датацентров. Есть альтернатива для проектов меньшего размера Docker Swarm.

Нужен просто один bare-metal сервер с какой-то ручной виртуализацией (говорю, потому что сам делал Linux + KVM/Qemu).

Согласен. Для среднего бизнеса не обязательно использовать bare-metal сервер; достаточно системного блока офисного компьютера, подключенного к сети. Какой объем покупателей может быть у интернет-магазина по продаже мопедов-велосипедов?

Недавно я развлекался подсчетом, сколько запросов может обработать средний офисный компьютер в секунду, и какой объем пользователей создаст такую нагрузку. Получалось, что это могут быть десятки или даже сотни тысяч пользователей в день, и компьютер бы справился с этой нагрузкой. Особенно если статику распихать по СDN.

Но времена такие, что набацать кубернетис конфиги через ЧатГПТ моднее (и проще?) чем один раз выучить Баш. Баш это немодно, да еще и неприятно как-то, скобочки там всякие да и вакансий нет.

Как же нет вакансий, если полно предложений с требованием навыков работы в Linux? Это подразумевает умение работать в командной строке, а значит, и навыки работы с Bash.

И потом, вы представляете, какое кодовое месиво можно написать на Bash? Инструменты вроде Kubernetes, Docker Swarm и systemd как минимум гарантируют читабельные конфигурации. Если работник не изучал программирование, не читал книги по чистому коду и не знает best practices, то во что превращаются его программы на Bash — легко представить. Однозначно, специализированные инструменты — это выход из сложившейся ситуации.

lbvf50txt
()
Ответ на: комментарий от qount_25

Нужен просто один bare-metal сервер с какой-то ручной виртуализацией (говорю, потому что сам делал Linux + KVM/Qemu).

При равномерном распределнии, чтоб к машине было 5 запросов в секунду, количество пользователей в час должо быть 18 тысяч. Но это конечно сильно упрощенно. В часу 3600 секунд.

5 * 3600 = 18 000

А если распределение нормальное в виде колокола, и пиковая нагрузка 5 запросов в секунду? В среднем пиковая нагрузка превышает пиковую в 3 раза. Средняя нагрузка 5/3 = 1.7 запроса в секунду.

3600секунд * 1.7запроса = 6100 пользователей

Если прикинуть, что пользователель делает по 5 запросов в среднем, то 6000/5 = 1200 пользователей в час, должно заинтересоваться воображаемым магазином мопедов-велосипедов, чтоб создать нагрузку 5 запросов в секунду.

Значит средний запрос должен обрабатываться за 200мс, что очень, очень жирно и без оптимизации.

Т.е. даже интернет магазин написанный на CRUD фреймворке и запущенный на среднем офисном компе, со средней оптимизацией с легкостью вывозит 1000 заинтересованных человек в час в товаре. (Если учитывать использование СDN для статики, и использовать сервер только для работы с базой данных и бизнес логикой.)

Это просто дофига, чтоб 1000 человек, заинтересовалась покупкой чего бы то нибыло в 1 час.

Вот для среднего бизнеса, вполне хватит сайта развернутого на обычном офисном компе.

lbvf50txt
()
Последнее исправление: lbvf50txt (всего исправлений: 1)
Ответ на: комментарий от qount_25

Баш это немодно, да еще и неприятно как-то

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

asdpm
()
Ответ на: комментарий от asdpm

Писать криво можно на чем угодно (вот я тут это говорю, как-будто бы этого все и так не знают). На Баше, в силу особеннностей языка, конечно сложнее писать хорошо организованные программы с красивым кодом. Но можно. Из причин, почему что-то удобней писать на Баше, а не на чем-то еще, я бы назвал «нативный» доступ ко всем юниксовым утилитам и фичам. Иногда сделать grep | sed | awk | tr через пайпы - это 1 строчка против 10-ти или 20-ти в каком-нибудь Го. А если еще надо при этом активно взаимодействовать с cli какой-то утилиты постоянно, потому что пишешь для нее обертку, то получается что на каком языке не пиши, все равно придется из него делать вызовы в шелл.

Так что я бы не стал так категорично про Баш. Да, я вряд ли бы начал писать сейчас что-то на Баше, но когда я три года назад активно это делал - это был интересный экспириенс как запилить что-то, в чем потом можно через несколько лет придти и разобраться, чтобы чуть отрефакторить, например. И, в прнципе, получилось.

qount_25
()
Последнее исправление: qount_25 (всего исправлений: 1)
Ответ на: комментарий от rtxtxtrx

рабовладельческие «демократии», где правами обладали только рабовладельцы явно были не лучшим место для жизни

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

Алсо, приписывать демократию как основное достижение Древней Греции - это не более, чем модный тренд, типа посмотрите какой великий дар получила партия демократов в $yourCountry. Да, у греков была демократия, но это была неограниченная власть большинства. Здесь нечем хвалиться.

то что варвары рим спалили, возможно, и привело к эпохе просвещения

То есть разрушение, особенно физическое, приводит к интеллектуальному развитию. Прям как убийство Иисуса якобы привело к моральному спасению цивилизации.

Тот факт, что ренессанс является прямым развитием классических работ, которые проникли в том числе в Христианство (через Фому Аквинского), не учитываем. Зачем, ведь это всё бледное отражение великих процессов физического уничтожения.

в истории принято … европоцентризмом увлекаться

А что ещё делать, дзен-буддизм изучать?

греки украли геометрию у египтян

Допустим, здесь слово «украл» обозначает «унаследовал». Я ещё не припомню, чтобы кто-то оскорблялся передаче знаний как таковых. Хотя у ценителей варваров, видимо, другие стандарты, они ведь привыкли, что всегда есть хищник и добыча.

Ну и что с того, что они получили геометрию от египтян? Они мало собственного вклада сделали в геометрию? Или кроме геометрии у них больше нет собственных важных достижений? И почему именно геометрия? Всё-таки философия и религия оставили самый огромный след в обоих культурах.

мельницы придумали в персии, а порох и ткацкие станки в китае

И это важно, потому что … ?

kaldeon
()
Ответ на: комментарий от qount_25

Из причин, почему что-то удобней писать на Баше, а не на чем-то еще, я бы назвал «нативный» доступ ко всем юниксовым утилитам и фичам.

тут на самом деле есть альтернативы bash (и другим sh).

Во-первых perl:

my $output = `script.sh --option`;
my $output = qx/script.sh --option/;

Но у Perl слишком вариативный синтаксис. IMHO слишком cложно и долго изучать.

Другой вариант, который мне уже гораздо больше понравился - это Tcl. Базовый синтаксис очень простой и гораздо более прозрачный, чем у Bash или Perl. Хорошая интеграция с shell командами.

Например:

proc short_date {date} {
	set result $date
	set result [exec date -d $result -u "+%Y-%m-%d %H:%MZ"]
	return $result
}

Правда из-за специфики работы со строками (строка без кавычек - это тоже строка), для написания чего-то большего чем скрипты, всё же тоже не очень годится на мой взгляд. Код сложно отлаживать и поддерживать.

MirandaUser2
()
Ответ на: комментарий от MirandaUser2

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

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

Стоит, конечно, отметить, что Tcl и Perl есть практически везде, а там где нет (например во фре, в которой и Баша тоже нет по дефолту) – они ставятся. И в этом их большой плюс. Но ведь есть еще и Го, который компилируется под все. Поэтому наверное все-таки я не буду возвращаться ни к Перлу, ни к Tcl.

qount_25
()
Ответ на: комментарий от qount_25

Из причин, почему что-то удобней писать на Баше, а не на чем-то еще, я бы назвал «нативный» доступ ко всем юниксовым утилитам и фичам.

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

Это можно объяснить тем, что юникосвые утилиты (grep, awk, sed) ограничены двумя факторами. С одной стороны, они лежат очень близко к абстракциям ОС/юникса, которые весьма скудные: чтение, запись, файл, поток. Пусть этого достаточно для ОС, но всё-таки это скудно для практических задач. ОС не даёт больше никаких контрактов или гарантий, которые утилиты могли бы однозначно с уверенностью реализовать а-ля стандарт. Например, в ОС нет SQL, поэтому работать с таблицами юниксовыми утилитами категорически невозможно. С другой стороны, все известные высокоуровневые форматы уже хорошо поддерживаются другими средствами. То есть тебе не нужно ломать голову мыслями «так, awk очень гибок, потому что абстракции юникса очень гибки, а таблицы очень строги. Как от гибкости элегантно перейти к строгости?»

А если взять высокоуровневые утилиты в контекста абстракций юникса. Например, я могу напечатать вывод запроса select * from users в терминале. И что мне это даст, кроме красивой картинки? Как по этому пройтись циклом? Ну можно JSON’чик сделать, только в чём тогда разница между джсоном промеж двух потоков и нормальным API в языке программирования и причём тут юникс?

В юникосвых утилитах был бы смысл, если бы ОС использовалась как прикладной инструмент, чем однажды она и задумывалась, по крайне мере в исследовательском контексте. Но сегодня это просто «подними сеть», «перемести файл» и «запусти программу», и awk — просто удобный аддон к этим задачам, а не мощный инструмент.


Я тут недавно накидал скрипт, который аггрегирует мои коммиты по месяцу и ID задачи. А мог бы просто накидать SQL-запрос в джире, который в десять раз короче, в сотню раз проще и портируемый.

kaldeon
()
Последнее исправление: kaldeon (всего исправлений: 4)
Ответ на: комментарий от kaldeon

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

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

Например, я могу напечатать вывод запроса select * from users в терминале. И что мне это даст, кроме красивой картинки?

Работа с ОС в стиле sql-запросов это например Windows Management Instrumentation. См. https://stackoverflow.com/a/55387641

Как по этому пройтись циклом?

два разделителя: перенос строки и tab/пробел (+экранирование разделителей в данных). Или CSV.

В юникосовых утилитах был бы смысл, если бы ОС использовалась как прикладной инструмент, чем однажды она и задумывалась, по крайне мере в исследовательском контексте.

например скрипт для перезагрузки «подвисшего» модема: отправить тестовый запрос в WWW, при отсутствии ответа подключится к модему через telnet и выполнить команду перезагрузки. Можно взять высокоуровневый язык и библиотеки для работы с http/dns/icmp, telnet и пр. Но зачем?

юникосвые утилиты (grep, awk, sed)

что-то относительно сложное с ними делать утомительно (много нюансов, особенности PCRE, неполная совместимость разных реализаций). Но для мелких скриптов и прототипирования годится.

MirandaUser2
()