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

Приветствую, Хабравчане!

Немного о себе. Я скромный богобоязненный разработчик на С#. В основном моя работа связана с бэкендом, оптимизацией SQL запросов, разработка архитектур баз данных и сервисов для обеспечения высоких нагрузок. В разработке около 10-ти лет. За это время я видел такое, что вам, людям не программистам, и не снилось. Атакующие сервер пользователи, пылающие сервера за стенкой; Указатели Си и ошибки с ними связанные, разрезающие человека на пополам. Все эти мгновения затеряются во времени, как... байты на 8 тб жестком диске... Пришло время рассказать...

Предлагаю вам погрузиться в чарующий мир, рукожопия и всратости. Вы готовы? Погружаемся!

1. Примеры в программировании

В наш просвещенный век, с гигабитным подключением в каждый дом. Юниту планеты земля доступны тонны информации о всех возможных достижениях науки, исследованиях, книг и учебных материалов. Конечно же еще и смешные котики:) С развитием ютуба, все доступно в видео и аудио версиях. Немного отвлекся, я о чем? А я о том, что если какой нибудь джун типа меня, захочет войти в айти погрузиться в паттерны и практики хорошего кода, он незамедлительно столкнется с учебными примерами и вам скажу так, есть вещи всратее в этом мире, и примеры одни из них.

Особенно лидируют примеры объясняющие принципы S.O.L.I.D. А давайте создадим зоопарк, и будем наследовать ни в чем невиновного пингвина от слона! А для объяснения интерфейсов мы создадим интерфейс плавать и ходить.

Ещё адовый вариант был найден на ютубе. Автор показывал примеры паттернов на примере создания гамбургеров. Гамбургеров, Карл! Создаем фабрику гамбургеров и понеслась. И знаете, что я об этом думаю. Таки да, это всрато.

Я не понимаю, авторов данных эпосов. Вы думаете, что приходя на работу мы тут гамбургеры с пингвинами наследуем и строим иерархии млекопитающих? Почему нельзя дать нормальные жизненные кейсы? К примеру работу с отчетами. Отчеты это вообще отдельная культура программирования. Это и работа с разными форматами хранения и визуализации, это и способы хранить сжимать и пересылать данные. Отчеты бывают в pdf, html, excel, word(прости господи) и т.д Переложить кейс вывода и создания отчетов на S.O.L.I.D. было бы идеальным примером.

Примеры с реализацией бизнес процессов клиент->заказ->оплата->выдача. Примеры связанные с очередями, пересылкой сообщений и т.д

Но нет, у нас пингвины и гамбургеры.

2. Удобство софта и сайтов

Это бесконечная тема для фикалирования Но, что меня больше огорчает это фронтенд сайтов. Уверен многие сталкивались и сталкиваются с сайтами, где постоянно что то всплывает, вылазит с боку, оповещает пользователя о каких то левых событиях, а я лишь просто зашёл на сайт заказать корм для котика.

Бесит эта непродуманность и явное забивание на удобство со сторонны пользователя. Заходишь на сайт всплывает какой то там помощник, на мобилке тыкаешь закрыть окно, оно раскрывается ещё больше. Заходишь в онлайн банк, и тебе сразу экран рекламы, а так как ты на автомате уже тынкул пальцем она загружается, а закрытие в левом верхнем углу. Ох как бесит же. Всплывающие уведомления когда я нахожусь в приложении, не надо так делать, если мне интересно просто увеличте количество цифр на звоночке и всё, если мне интересно я сам зайду и посмотрю. Но не нужно мне пихать лишнюю не нужную мне и 99% пользователям информацию.

Здесь должна была быть картинка пользователя заходящего на сайт и отбивющегося от роя летающих членов:)

То кнопки на пол экрана, то маленькие и при нажатии происходит всё, что угодо но не как не закрытие всплывающего окна.

Покупаешь смартфон с большим экраном, фронтендеры просто адаптируют свои свистелки, что бы их больше влезало на экран.

В мире написано 100500 книг по юзер френдли дизайну сайтов. Проводятся конференции, многочасовые доклады. Но нет, наши ребята кладут свой никому не нужный и разражающий функционал, на каждый экран мобильного телефона съедая от экрана драгоценные пиксели.

Что же ребята с вами не так?

Назад к основам? Сорь вот правильный Джоэль.

Если вы читали Джоэля Спольски, он не об этом говорил.

История о Яндексе

Вы думаете, что всратее уже не сделать? Теперь и вы не угадали и даже не рядом. Все возможно:)

Мою жену не устраивает делать покупки на своём 15.6 ноутбуке с ryzen 5. На моём рабочем ПК с монитором 32 дюйма это и правда делать удобно. По многочисленным ее просьбам, что бы при открытии новой вкладки загружался по умолчанию поиск яндекс, стал искать расширения к хрому. Окей думаю я. У меня как у С# разработчика нет предубеждений в интернет поисковике:). Мне как C# разработчику хватает одного сайта. Скачал расширение: Поиск и стартовая — Яндекс, установил. Теперь при открытии новой вкладки по умолчанию загружается поисковик Яндекс. Что может пойти не так? Опережаю событие, всё. Я выключаю на ночь пк. Утром при загрузке хрома, я вижу одну отрытую вкладку яндкса, все мои 93 открытые вкладки не сохранились.

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

Эти ребята по закону разработки 666, применив паттерн чик чик и в прод. Свояли вот такое расширение поделие.

Дорогие вы мои разработчики из яндекса, как такой функционал пришел к вам в голову? Мы живем в одном социокультурном обществе, вы смотрели в дестве теже мультики, фильмы, что и я. Мы пели одни песни в школе. Но что с вами не так? Человечество прошло через миллионы лет эволюции, покорила огонь, атом, космос, засрала планету и мозги. Развитие микроэлектроники позволило автоматизировать тысячи производств и вручить каждому человеку удобное универсальное устройство поиска информации и не только. Что бы, что, создать недо расширение, с неожиданным сайд эффектом?

История третья, пдфная - драмматическая

Нечасто у меня возникает потребность объединить несколько сканов в один pdf. Использовать онлайн редакторы, такое себе конечно. Начал искать программу для оффлайн редактирования на ПК. Нашел неплохую программу pdf24.

Претензий к функционалу нет. Ну весит установщик 200 мб, после установки 700 мб, всего лишь установочный образ Windows XP. Удивительно, что не больше:) Комбайн, что тут скажешь.

Первый запуск я мужественно прошел. Тыкая в 100500 кнопок:)

Признаться к такому я был не готов, от слова совсем:)

Но есть раздражающий фактор.

Программа прописывается в авто запуск и висит в трее. После возни со сканами и переводом в pdf. Я решил закрыть программу из трея. Как это было...

Смеркалось, JordanCpp допивал свое вечернее кофе со сгущенкой. Стоял ноябрь, снег как любящая мать накрыла своим белым одеялом, землю. Еще оставались желтые листья приподнявшиеся сквозь белое полотно. Природа передавала спокойствие и умиротворение. Ещё раз, он окинул взглядом вид из окна и быстрым движениями подошел к столу, и сел. Ничего не предвещало неожиданного, загрузив браузер, перешел по нескольким вкладкам и увидел программу в трее. Его раздражала иконка овцы в трее, быстрым порывом руки и касанием пальца по правой кнопке мыши, вызвал меню программы. Он почувствовал свое превосходство и власть, над жалким пиксельным созданием. Ему хотелось быстрей покончить с ним. В этот же миг, появилось меню с вариантом "Закрыть PDF24"? но здесь произошло то, чего он не мог ожидать...

У наблюдательного зрителя сразу возникнет вопрос. Отвечаю.

  • Да, я до сих пор пользуюсь DAEMON Tools Lite, в конце 2023 года:)

Это программа явно считает человека обезьяной, которая нечаянно совершила механические действия с мышкой, напрягла 20 мышц кликнув на трей. Что это за рукожопие, в конце концов. Мне вообще безразлично на PDF24 Creator принтер я до использования программы вообще о нём не знал. Я лишь хочу закрыть программу и всё. Мне не нужны дополнительные диалоги, я хочу что бы софт работал ожидаемо. Спасибо завели.

В копилку добавлю программу msi afterburner. При закрытии из трея, спрашивает вы точно хотите закрыть прогу. Но это ладно. Главный цветочек в том, что при загрузке системы, если программа находит новую версию она спрашивает, хотите ли вы обновить версию. Я утвердительно отвечаю, нет. Но думаете разработчики этого поделия озаботились, где соханить моё пожелание. Конечно же, нет. При каждой загрузке Windows, msi afterburner снова спрашивает об обновлении. Как то так.

3. Что там у Microsoft'а

Не могу обойти данную компанию стороной:) Для своего проекта юзаю Visual Studio Community 2022. Кстати о нём я писал в данной статье. И как то в один из дней пришла идея скачать офлайн версию студии. Начал разбираться, что да как. Оказывается, что официального установщика для офлайн установки у майков нет. Хотя казалось бы. Переходим в инструкцию. Некоторые выдкржки:

Ни слова больше.

Ну окей ребята. Идем в инструкцию макета.

Короче там портянка из текста, шеловских скриптов и какой то там матери. Linux style edition. Хотя опять же, казалось бы. Да, да Microsoft ты предлагаешь мне заняться пердолингом. Спасибо, но я пас. История закончилась, тем что я нашел торрент сделанный кулибиным. Где нет привязки к локальному компьютеру. Майки вы движетесь явно не в том направлении. Вас любят, за юзер френдли инструменты, простоту и доступность. Но в 21 веке настолько усложнять процесс скачивания и установки дистра студии, это уже Gentoo Эребор:)

 4. Что там по языкам программирования. Конечно же С++

Что можно сказать про С++. Он есть, каждые три года эволюционирует с учётом обратной совместимости. Становятся ли он проще с каждой версии, ну уж нет. Но программирование на нем, перекладывание идей в код, однозначно становится проще. Уже нет крутых поворотов на тропу диких указателей Си. Голые указатели "заменили" умными. Многословность упразднена auto.

Главная особенность С++ это совместимость с С кодом и библиотеками написанными на нём. Просто оборачиваем в extern "C" и тащим в проект. На старте языка, это дало очень сильный буст.

Программиста на С++ новые стандарты освободили от гнёта низкоуровневого кода. Теперь, он может творить "почти" как на C#. Что бы это не значило:) И не нужно учить 2000 страниц стандарта языка. Берем вам нужные фичи и используем. Код становится чуть надёжнее и проще. Вангую, что никто не знает полностью язык С++, даже сам создатель языка.

Но, что может пойти не так?

Оказывается со стороны не С++ программистов, много критики. Язык сложен, старый, многословен, нет единого пакетного менеджера, по умолчанию всё не const, мало функциональщины, нет сборщика мусора, Страуструп уже не тот... Ну вы поняли.

А тем временем С++ программисты продолжают писать код.

С++ программисты всегда ругали язык, но программировали. Все, что нас окружает это С/С++ в разных пропорциях. Си код собираемый С++ компилятором, местами С с классами для совместимости. Собственно о чём я, конечно же о Rust. Такое складывается ощущение, что утята дорвались до интернета.

А тем временем С++ программисты продолжают писать код.

Rust не плохой язык, свежие идеи по безопасности воплощенные в языке, стандартный пакетный менеджер. Сложность терпимая. Но, почему за ним идёт шлейф сектантства?

Особо ретивые ученики, уже отпраздновали кончину С++. Весь код в мире переписан на Rust. Но вот скажите мне, почему в Rust'е осилили безопасность, парсинг 100500 разных видов скобочек, но не осилили впилить исключения и нормальный ООП к которому все привыкли за 40+ лет. Это не безопасно?

Вы серьезно считаете, что ломание всего API с возвратом кодов ошибок и принуждением прокидывания их в каждом методе, избавляет программиста от ошибок? Нет вы не угадали. Это не безопасность, а пердолинг по правилам языка. Нет выбора, отсутствуют удобные механизмы обработки ошибок и это только одна из сторон языка.

Но нельзя сказать, что Rust это всего лишь, попытка. Rust решил одну проблему. Проблему lifetime'ов.

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

То есть вы не сможете выделить память и просто забыть её освободить, тем самым вызвать утечку памяти. Когда программа, съела всю память и ОС ушла в свап. Компилятор Rust включит все эвристики и будет мучить вас до тех пор пока вы не гарантируете средствами языка, корректную и безопасную работу с памятью.

Но есть и другой вид ошибок, который не может решить не один промышленный язык.

А это:

  1. Логические ошибки.

  2. Численные переполнения.

  3. Переполнение стека.

  4. Проблемы с выравниваниями.

  5. Сложные проблемы многопоточности.

А тем временем С++ программисты продолжают писать код.

Следущим на подходе это Carbon от Google. Что сказать, полно денег, может себе позволить:) Синтаксис как у Rust, ох и любят они эти ваши fn ->[i](чего то там). Даже пугают обратной совместимостью с С++, типа unsafe как в Rust только Cpp{ужасный код состоящий полностью из UB, разврата, похоти, всякого непотребства и крови девственниц}.

Как я реагирую на создание очередного языка, рекламирующего стать убийцей С/С++. Опять?

Насколько я помню, в начале была Java написанная на С++, так как иначе будет тормозить ещё больше:) Rust это LLVM написанный на.. Сами догадайтесь:)

Если подытожить, компиляторы и требования к экосистеме стали настолько сложными в реализации, что уже неважен синтаксис, главное экосистема и наработки. У С++ они есть, у других...

Возможно когда-нибудь С++ станет безопаснее и вберет дельные идеи и наработки из других безопасных языков, в том числе и Rust. Бремя совместимости с С и экзо килотонны кода, накладывает свои ограничения, на скорость и качество эволюции языка.

  1. Что там происходит в современном софте? Всё в говне сэр!

Вы знали, что раньше весь софт который вам был нужен, умещался на одном CD диске + операционка? Это не шутка.

А если серьёзно, софт стал сложным, тормозным и не удобным. О windows даже вспоминать уже не хочу. Windows 11 не может нормально работать без ssd диска. Раньше сервера с базами данных читали и записывали информацию на hdd, обрабатывая десятки тысяч запросов, винда видите ли не может. Ей нужно передавать гигабайты телеметрии о пользователе. После установки она занимает 40 гб. Вы думаете в комплекте какие то вам нужные программы? Нет. Максимум сможете посмотреть фильм через медиаплеер и запустит калькулятор.

Что бы не быть голословным. Возьмём мой любимый дистрибьютив Lubuntu. Использую его лет 10. В основном использую LTS версии. Установлена на 2 ноутбука и 2 ПК.

Версия 16.04 LTS после установки съедает 300 мб RAM и содержит 100500 полезного софта. Редкаторы графики, документов. Просмоторщики картинок, браузер, и просто графические утилиты. Последняя актуальня версия 22.04 LTS уже съедает 500 мб ОЗУ. Но между выпусками прошло 6 лет. И за это время системные требования изменились на 200 дополнительных мб и дропнули поддержку 32 битных процессоров.

А что произошло с Windows 11?

Требования к оборудованию

  • Процессор: 1 гигагерц (ГГц) или быстрее с двумя или более ядрами на совместимом 64-разрядном процессоре или системе на микросхеме (SoC).

  • Память: 4 гигабайта (ГБ) или больше.

  • Хранилище: 64 ГБ или больше свободного места на диске.

Android 13

Компания Google повысила минимальные требования к устройствам, которые будут работать под управлением операционной системы Android 13.

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

И тенденция только растет, с каждым годом старые 4, 8, 16 ядерные процессоры устаревают и каждый год маркетологи выдавливают из себя презентацию с графиками производительности в районе 1-2%. Убеждая нас о прорывах и рывках.

Но может мы получили сверх быстрый софт? Нет, нет и ещё раз нет. Каждая новая версия программы, операционной системы требует больше системных ресурсов.

Веб превратился в чёрную дыру системных ресурсов, она поглощает всё. Загружает процессоры, выжирает ОЗУ, браузер всё время, что то сохраняет на ssd. Сайты не пишут на js и html, их пишут на фреймворках разной паршивости и прожорливости. И по всему миру процессоры, мобильных устройств, домашних ПК просто греют воздух выполняя миллиарды лишних инструкций.

Просто оставлю эту картинку здесь!

  1. Что у нас там по микросервисам?

Все мы знаем как на Хабре любят делиться историями по распилу монолита.

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

Как работает монолит, есть БД + пару слейвов. Все запросы работают в едином адресном пространстве. Транзакция либо отработала, либо нет. Других вариантов просто не может быть. В проекте одна моно репа, что позволяет обновлять библитотеки и быть уверенным, что сервис использует именно эту версию библиотеки. Простое развертывание и тестирование. В основном используется реляционная БД + redis для кеширования. Простое профилирование, так как весь запрос как на ладони, требуется только использовать встроенные средства БД. Единая точка логов, что позволяет написать инструмент для визуализации и мониторинга.

Что у микросервисов? Полный набор болячек. Транзакций нет, теперь появились распределенные штуки. Запрос по сети должен обратиться к другим сервисам, "дождаться" ответа, собрать информацию, валидировать, убедиться, что все сервисы ответили, И только потом после всех этих действий, транзакция считается исполненной, это прям мега упрощение. Просто распилив монолит, на ровном месте приобретается проблема распределенных транзакций, конечно же она решается, за счёт дополнительного кода, дополнительных инструментов, дополнительных лагов сети, синхронизации и т.д Количество микросервисов растет, рассинхронизация по API между сервисами тоже. Как развернуть для тестирования и отладки, тоже непонятно. Как обновлять используемые библиотеки и быть уверенным, что они одной версии, вообще считаю неподъемной задачей, все равно приходится заводить некую монорепу для библиотек и тягать их в микросервисы. Абсолютно все стороны проекта при распиле или переходе на микросервисную архитектуру усложняются. Когнитивная нагрузкка возрастает. И срочно ищется >= 1 девопса ибо без него оно всё просто не взлетит.

Есть только один якобы довод. Каждый микросервис становится независимым и небольшим. И да я абсолютно согласен, только, что мешает из легаси монолита, сделать модульный монолит. Объеденив преимущества монолита и микросервисов, без микросервисов:)

А самое безумное, что микро сервисы не нужны 95% процентам компаний. Высокая производительность достигается на современном среднем сервере, без терабайт ОЗУ. Простым модульным монолитом. Просто время от времени, требуется обращать внимание на производительность и анализировать замедление. Если вы к примеру грамотно настроили конфиг того же Postgresql, это половина успеха.

Уверен, что данный тренд идёт на спад. И многие компании, опять возвращаются к монолитным решениям.

  1. И что в итоге?

    Вернуться к основам:)

    У меня нет ответа. Менеджеры и бизнес, хотят быстрого выкатывания фич и самого продукта. Это влияет на прибыли. Капиталистический корабль айти, уже даёт течи и когда нибудь обязательно перевернется, но явно не в ближайшие годы. Поэтому у разработчиков нет никаких шансов, что то изменить. Прибыль будет всегда стоять во главе угла и сметёт всех и вся. Поэтому если вы читаете меня, вы и есть сопротивление:)

    Но душа у меня болит за быстрый софт. Меня привлекает концепция имея малое, получить большее. И поэтому вне рабочего времени разрабатываю библиотеку LDL, это аналог заменитель библиотеки SDL. Но написана на С с классами и имеет единое API, для всех поддерживаемых систем, DOS, Linux, Windows.

    Возможно, что не так уж и плохо в современном айти. Мы получили более современные инструменты, ускорили разработку. Получили очень мощное железо. Но часто, при очередном лаге на сайте или в программе, понимаешь, что оно не должно лагать, явно причина во фреймворках или библиотеках. Что элементарные задачи стали исполняться не пропорционально долго, обрабатываемому количеству данных. По простому, нечему тормозить. А когда представляешь, что миллиарды устройств по всему миру, без полезной нагрузки исполняют миллиарды инструкций, которые являются платой за некую простоту, то понимаешь, а какова цена. И на сколько ещё она увеличится со временем, есть ли этому предел.

Спасибо за внимание.

Комментарии (210)


  1. IvanGanev
    04.04.2024 23:03
    +1

    Хотите писать код за любую оптимизацию которого вас будут носить на руках? Пишите смартконтракты.


    1. JordanCpp Автор
      04.04.2024 23:03
      +3

      Больше обращать внимания на общую оптимизацию, приложения, сайта. Так как полное игнорирование приводит и привела к текущей ситуации. Просто откройте посещаемый сайт и нажмите f12, вкладка performance.


      1. Kelbon
        04.04.2024 23:03
        +2

        Решение простое, для кода который исполняется не у тебя(приложения, браузерный жс) ввести некий налог для компаний, чтобы они оплачивали электричество которое я трачу для просмотра их херни

        Появится стимул думать


        1. janvarev
          04.04.2024 23:03
          +5

          "Добро пожаловать, на сайт, это компания Гос*****. После входа через ***** вам будет выставлен счет для оплаты налога на ваше электричество, пожалуйста, оплатите его до 22 числа".

          ...а независимые разработчики свалят, т.к. им не интересно делать сайт, мало который юзеры не оплачивают, так еще и за который надо налог платить...


          1. Kelbon
            04.04.2024 23:03

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


            1. janvarev
              04.04.2024 23:03
              +3

              ...использовать другой банк, нет?

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

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


              1. Kelbon
                04.04.2024 23:03
                +1

                поддержкой конкуренции 

                именно конкуренция завела айти туда где оно есть. Конкуренция форсит заработать больше денег с меньшими затратами и игнорировать качество продукта.

                Регулирование вносит коррективы в то, по каким критериям бизнес считает что-то оправданным. Например сейчас популярно говорить "естественный отбор перестал работать", нет, он стал работать по другому. И общество заинтересовано отбирать не компании, которые любым способом добились успеха (например убив конкурента физически), а те которые сделали именно продукт лучше (не быстрее сделанное / лучше разрекламированное, а просто лучше)


                1. JordanCpp Автор
                  04.04.2024 23:03

                  именно конкуренция завела айти туда где оно есть.

                  Аминь.


                1. janvarev
                  04.04.2024 23:03
                  +1

                  [не] игнорировать качество продукта ... а просто [делать] лучше

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

                  Если такого не будет - у вас будут ученые, журналисты и пр. на финансировании корпораций, и никакого "лучше" не будет.

                  Или вы хотите, чтобы лучше определяло государство? Будет официальная система с баллами за качество импортозамещения / поддержки меньшинств софта? Вы точно хотите, чтобы эти люди определяли "что лучше"?

                  Общество - это очень абстрактно; по факту все решают конкретные представители (как правило, с громких голосом, а не большим мозгом) - и в этой ситуации я бы предпочел скорее видеть конкуренцию, как наименьшее зло.


              1. Kelbon
                04.04.2024 23:03

                .использовать другой банк, нет?

                напомните что сделать, чтобы джаваскрипт на сайте перестал быть таким медленным? Использовать другой браузер?.. Что-то не работает...


                1. janvarev
                  04.04.2024 23:03
                  +1

                  Вы про майнер говорили до этого ) очень надеюсь, что майнер не каждый банк засовывает в приложение.

                  А так... ну, зато бесплатно - затем JS и нужен, БЫСТРЕЕ поставлять решения на 100500 разных девайсов.

                  Насчет сайтов - вот не поверите, я несколько раз слышал от своих пользователей, что мой сайт-сервис (без Реакта, на HTML+немного JQuery) недостаточно МОДЕН. По моему счастью, на них приходится приблизительно столько же пользователей-инженеров, которые говорят, что "работает отлично и текст - то что надо", составляя таким образом, оппозицию. Но у большинства сервисов пользователей-инженеров сильно меньше - и угадайте, какие решения они принимают?


                  1. Aniro
                    04.04.2024 23:03
                    +1

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


                  1. Vedomir
                    04.04.2024 23:03

                    А пользователь не-инженер вообще может понять есть ли у вас там React или нет? Я вот например смену технологии комментариев Хабра заметил только по жестким тормозам нового варианта (и их последующему обсуждению). А дизайн, как рядом заметили, совсем другое дело, его и без React сделать можно.


                    1. janvarev
                      04.04.2024 23:03

                       А дизайн, как рядом заметили, совсем другое дело, его и без React сделать можно.

                      Это не совсем верно - на практике неплохие интерфейсные решения поставляются вместе с фреймворками.

                      Нет, конечно, можно всё перелопатить и написать красивый дизайн без Реакта - но денег это будет стоить имхо очень много.

                      Предыдущему комментатору не стал отвечать именно по этой причине - прекрасно себе представлять что "кто-то" (не автор комментария конечно) возьмет и за счет своих ресурсов сделает красиво. Реальная же практика диктует жесткие условия - либо современные решения (со всеми удобствами, тормозами и необходимостью писать фронтенд), либо в меру устарелые (HTML + староватые фреймворки). Исключения, конечно, есть, но они требуют редкого высокого профессионализма в области фронта, которого у меня нет.


                      1. nin-jin
                        04.04.2024 23:03

                        $mol - решение из будущего со всеми удобствами, без тормозов и необходимости хорошо разбираться во фронте. Нужны лишь базовые знания TS и CSS, а так же умение читать доки.


                      1. Vedomir
                        04.04.2024 23:03

                        Возможно я ошибаюсь, не видя сайта, но, как мне кажется, того же Bootstrap (и может некоторых плагинов) вполне хватит для современно выглядящего интерфейса.


        1. Vedomir
          04.04.2024 23:03
          +5

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

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


      1. IvanGanev
        04.04.2024 23:03
        +2

        На что либо "обращают внимание" только когда есть стимул это делать. Если вы зашли на сайт, а он тормозит, значит никакого стимула ускорять его нет. Я вам назвал сферу, смартконтракты, где оптимизация ВСЕГДА нужна.


        1. DMGarikk
          04.04.2024 23:03
          +5

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


          1. zergon321
            04.04.2024 23:03
            +7

            Для создания финансовых пирамид


          1. IvanGanev
            04.04.2024 23:03
            +1

            Если вы про централизованные биржы, то именно там смартконтрактов и нет, на то они и централизованные.

            А так смартконтракты могут делать все что угодно, децентрализованные биржы, мосты, сбор средств, обмен токенами, есть попытки делать соц сети и мессенджеры на блокчейне - это тоже смартконтракты. Смартконтракт это программа.


      1. coresky
        04.04.2024 23:03

        Корабль, к сожалению (!), может и не рухнет через 30 лет. Придумают как подвязать ИИ к решению говнопроблем и не потонет. И почему "сопротивление"? Нет, не сопротивление. Просто реальную мглу, можно и нужно "просветить", мы же хомо-сапиенс. Мне казалось, что решение этой проблемы возможно с помощью глобального большого специального проекта. Типа параллельная реальность в программировании. Также, как когда-то windows-95 переписали с нуля в windows-xp, можно переписать с нуля всё программирование, с учетом уже имеющегося опыта. Почему я написал "к сожалению"? Потому, что хотелось бы, что такой проект всё-таки был на планете Земля.


        1. Vedomir
          04.04.2024 23:03
          +1

          Так дел не в том, что проблемы не решаемы. Дело в том, что нет экономического стимула к их решению.


  1. Nipheris
    04.04.2024 23:03

    только, что мешает из легаси монолита, сделать модульный монолит

    Так а в чём разница между модульным монолитом и набором микросервисов? Микросервисы - это точно не то же самое, что и "модульный монолит"?


    1. qrKot
      04.04.2024 23:03
      +4

      нет

      "Модуль" и "сервис" ортогональны. Модуль - единица организации логики/кода, сервис - единица организации деплоя/запуска.

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


      1. SpiderEkb
        04.04.2024 23:03

        Нет.

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

        Вообще здесь (на этой платформе) все равно где у тебя расположен кусок кода - функция в этой же программе, функция в сервисной (аналоги динамической библиотеки) программе или в виде отдельной программы. Разница лишь в описании прототипа - просто прототип, прототип с модификатором extproc и ссылкой на имя в сервисной программе или прототип с модификатором extpgm с именем программы.

        Все три способа вызова абсолютно равнозначны. Я могу написать одну большую программу из 100500 функций или 100500 маленьких с одной функцией в каждой.

        Если мне надо вызвать программу асинхронно, я просто вызову ее через spawn (или системную команду sbmjob) и она запустится в отдельном фоновом задании (batch job).

        Но, повторюсь, ни про какие "микросервисы" тут не слышали. Скорее все ближе к модели акторов которая была придумана еще когда подавляющего большинства "микросервисовщиков" еще и в проекте не было.


        1. kasiopei
          04.04.2024 23:03

          Вызов функции в отдельной программе не создает накладные расходы?


          1. SpiderEkb
            04.04.2024 23:03

            В принципе, создает. Но крайне незначительные на этой [достаточно специфической] платформе. Если речь идет о синхронном вызове, то тут не создается нового процесса (со всеми вытекающими) - вызов идет в рамках того же задания (job), той же памяти и той же (хотя это регулируется параметрами самой программы) группы активации (activation group). Если имя программы в прототипе функции задано явно, то вызов ее будет мало чем отличаться от вызова функции из сервисной программы (аналог динамической библиотеки).

            Хуже когда в прототипе в exppgm указано не имя программы, а переменная в которой в рантайме будет записано это имя. Там да - потребуются некоторые дополнительные действия (определение т.н. "системного указателя" на объект типа *pgm - программа - с указанным именем). Но мы таких ситуаций стараемся избегать посильно, а где не удается - есть свои наработки для минимизации накладных расходов с этим связанных.


      1. Nipheris
        04.04.2024 23:03

        Модули же про то, как организован код.

        Я не думаю, что автор использовал понятие "модуль" в том смысле, в каком оно понимается в организации кода (а-ля unit-ы в Паскале или ES-модули в JS/TS). Очевидно, автор говорит о каком-то подходе к декомпозиции сервиса, только непонятно, о каком. Код любого нормального монолита разбит на модули/единицы компиляции/что-там-ещё-придумано-в-конкретном-языке, никто не пишет исходники в файлах длиной по 10 мегабайт. Поэтому непонятно, какой смысл в вашем комментарии, вы описали очевидную вещь.


        1. MiyuHogosha
          04.04.2024 23:03
          +2

          смотрит в навязанную работодателем кодовую базу, где есть С++ файлы на 25к строк. "Ну да, пошел я отсюда..."


        1. SkywardFire
          04.04.2024 23:03

          видимо, мне одному очевидно, что чел изначально имел ввиду модули в том смысле, в каком модули существуют в линукс-ядре)


  1. mapnik
    04.04.2024 23:03
    +4

    О программистском судить не буду, а вот с точки зрения пользовательского опыта история с яндекс-аддоном очевидным образом решается даже на Windows: каждому отдельный аккаунт, плюс понимание того, что вкладки браузера — это не замена закладкам браузера, они даже называются по-разному, хотя и похоже (по-русски).

    Что касается объединения сканов в PDF, да тем более когда у вас есть убунту — convert image1.png image2.jpg image3.gif doc1.pdf


    1. MountainGoat
      04.04.2024 23:03
      +2

      winget install ImageMagick.ImageMagick
      magick convert image1.jpg doc1.pdf

      Хотя я терпеть не могу PDF из картинок. Он потом так и будет гулять, в итоге попадёт к кому нибудь в базу документов, которые нужно парсить и обеспечить полнотекстовый поиск. Или просто захочешь почитать на бегу с мобильника...


      1. PrinceKorwin
        04.04.2024 23:03
        +1

        Мне как-то попался сценарий когда один из государственных сайтов Индии потребовал скан документа в PDF, 2 страницы.

        При этом сам документ электронный и присылается пользователю другим департаментов в электронном виде в качестве двух JPEG.

        И вот приходится склеивать эти картинки в PDF. Хорошо у меня под рукой есть ImageMagick + руки. А вот местным приходится печатать, потом искать сканер который в PDF умеет.

        Да. Чуть не забыл. На размер PDF тоже есть ограничение поэтому там всё ещё больнее чем на первый взгляд.


    1. lgorSL
      04.04.2024 23:03
      +2

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

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

      Примерно так же я могу закрыть ide, открыть снова и она откроет проект и файлы, над которыми я работал до закрытия.


      1. mapnik
        04.04.2024 23:03

        Софт существует для человека, а не наоборот.

        Если посмотреть по косвенным признакам, то нет:
        мы ведём себя с софтом так, как он требует от нас, а не наоборот;
        мы часто оплачиваем его существование в виде лицензионных платежей;
        и т.д.


  1. pyrk2142
    04.04.2024 23:03
    +9

    Поэтому у разработчиков нет никаких шансов, что то изменить.

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

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

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


    1. asdfddsa
      04.04.2024 23:03
      +8

      Между жестокими менеджерами и капиталистами, еще есть прослойка жестоких айтишников, у которых вагон гонора, свое видение и административный ресурс.

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


      1. Ivan22
        04.04.2024 23:03

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


  1. Drucocu
    04.04.2024 23:03
    +16

    А тем временем С++ программисты продолжают писать код.

    И, конечно же, С++ программисты пишут только хороший и правильный код, не раздувают почём зря кодовую базу, не совершают глупых ошибок, не ленятся оптимизировать производительность. Ведь как только ты написал "Hello, world" на C++, тебе открылись все тайные знания Вселенной. А вот если ты, Страуструп упаси, сел за Rust/Go/Java/Python и т.д. - то у тебя автоматически отсыхают руки, прикасавшиеся к святому C++, и вырастают новые из жопы.

    А если ты, ко всему прочему, задумался о микросервисах, то уже и программистом называться не можешь, ты, цитируя автора, становишься одной из ">= 1 девочек", притом вне зависимости от своего биологического пола. Потому что над микросерсивами работают только девочки. Мужчины пишут монолиты.

    Я правильно понял смысл статьи?


    1. JordanCpp Автор
      04.04.2024 23:03
      +8

      А если ты, ко всему прочему, задумался о микросервисах, то уже и программистом называться не можешь, ты, цитируя автора, становишься одной из ">= 1 девочек", притом вне зависимости от своего биологического пола. Потому что над микросерсивами работают только девочки. Мужчины пишут монолиты.

      Я правильно понял смысл статьи?

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


      1. SpiderEkb
        04.04.2024 23:03
        +8

        Одна из проблем - лишние уровни абстракции в угоду "концептуальности".

        Условно, если нам нужны классы "котики" и "песики", мы городим 100500 уровней абстракций, отражающих весь процесс зарождения жизни и эволюции (даже не от одноклеточных, а от таблицы Менделеева).

        А дальше... Кто-то зачем-то вносит изменения на каком-то из начальных уровней абстракций и... с приветом вам - котики и песики везде превратились в рептилоидов и разъехалось вообще все...

        Второй момент - тот же ООП пытаются натянуть даже там, где он избыточен или вообще неудобен. Но... "Концептуально"! А что при этом вместо создания некой структуры и инициализации ее на этапе компиляции в рантайме будет вызываться конструктор (и не просто конструктор, а 3-5-10 конструкторов по всей линии наследования), который фактически делает все тоже самое, но более концептуально - это все фигня на палке.

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

        Hidden text

        Стоят верблюд-сын и верблюд-отец. Сын спрашивает:
        — Папа, а зачем нам на спине нужен горб?
        — В горбу, сынок мы накапливаем воду. Когда мы идём по пустыне, нас не мучает жажда.
        — Папа, а зачем нам такие копыта?
        — Это чтобы в пустыне ноги не проваливались в песок.
        — А зачем нам такие большие и жёсткие губы?
        — Это чтобы в пустыне можно было есть колючки.
        — Тогда, папа, объясни мне, на кой чёрт нам весь этот тюнинг в Саратовском зоопарке?..


      1. MaNaXname
        04.04.2024 23:03

        Может вы видите одну сторону медали но не хотите воспринимать другую? Микросервисы же решают определенную задачу. Не просто же так набирают больше людей и команд чтобы просто им платить деньги.


        1. SpiderEkb
          04.04.2024 23:03
          +2

          Чтобы что-то воспринять, надо быть или религиозным фанатиком, или понимать причину почему так, а не иначе. Или просто очень ограниченным человеком.

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

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

          Чем больше живу и узнаю, тем больше вижу сколько еще непознанного и понимаю что мой кругозор достаточно ограничен тем, с чем приходилось работать на практике. И всегда рад тому, когда жизнь ставит перед необходимостью этот кругозор как-то расширить.


  1. engine9
    04.04.2024 23:03
    +41

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

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

    Естественно, эти технологии полное дерьмо. Человечество несётся вперёд вообще не отдавая себе отчёт о происходящем и подгоняемое мотивами, которые были выработаны для условий стаи приматов, живущих в пещере. За срок, соизмеримый с жизнью одного человека, мы умудрились перейти от граммпластинок и ламповых телевизоров к созданию интернета до его цензурирования и фактического распада, попутно разваливая баланс климата планеты и процессы в экосистемах.

    Поднимите голову и увидьте за нагромождением кнопочек и распухшим софтом глобальный неконтролируемый технологический взрыв.


    1. MountainGoat
      04.04.2024 23:03

      За срок, соизмеримый с жизнью одного человека

      Природный срок жизни копателя белок в саванне - 20 лет. (Хотя долгожители были всегда)


      1. engine9
        04.04.2024 23:03
        +17

        Гренландская акула живёт по 400 лет не написав ни одной строчки на питоне. Шах и мат.


      1. blind_oracle
        04.04.2024 23:03
        +2

        Зачем их, бедных, копать?...


        1. MiyuHogosha
          04.04.2024 23:03

          криптобелки используются на черном рынке


    1. M_AJ
      04.04.2024 23:03
      +5

      И вчерашние ковырятели корешков палкой, которые не против полакомиться
      сырым мясом пойманной белки, за секунду (по эволюционным меркам) создают
      мир в котором Эйфелева башня, коптящие углём пароходы, сверхзвуковые
      конкорды, глобальная информационная сеть, и техногенные нейросети
      создают за три секунды картину.

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

      Естественно, эти технологии полное дерьмо.

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


      1. engine9
        04.04.2024 23:03
        +7

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

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

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


    1. MANAB
      04.04.2024 23:03
      +1

      Мой вывод - мы выкатываем фичи, а с техдолгом потом разберемся)


      1. Ivan22
        04.04.2024 23:03

        ну это уже много сотен лет так


      1. nin-jin
        04.04.2024 23:03

        С возвратно-гортанным нервом уже разобрались? А с пересечением дыхательных и глотательных путей? Ну ли хотя бы хвост при инициализации уже выпилили?


  1. rinace
    04.04.2024 23:03

    1) про "микросервисы" в точку ! Плакат "мы перешли на микросервисы" носился разрабами и показывался намеаждом конфколле. Как они перешли на "микроснрвисы" если СУБД как была одна так и осталась - загадка .

    2) Это еще тема - что пишет современные разрабы для СУБД - не раскрыта .


    1. SpiderEkb
      04.04.2024 23:03
      +5

      Ну как одна...

      Сначала мы героически пилим монолит на микросервисы. И каждый микросервис (дабы работать в своем контейнере и не мешать другим - это так концептуально) работает со своей репликой БД. Потом мы еще более героически решаем проблему синхронизаций реплик БД...


    1. Gorthauer87
      04.04.2024 23:03
      +1

      Типичный cargo cult. На самом деле граница между микросервисом и монолитом проходит не по размеру последнего, а по принципу единственной ответственности.

      Микросервис просто штучка, которая за одну задачу отвечает, если она сложная, то и он будет сложный и большой.

      А вот монолит отвечает за все вообще задачи


      1. SpiderEkb
        04.04.2024 23:03

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

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

        И вызов функции (объекта) может осуществляться из 100500 других таких же объектов.


        1. nv13
          04.04.2024 23:03
          +1

          Работал с софтом, который состоял из десятка программ, запускаемых как процессы и контроллируемых через heartbit. Взаимодействие осуществлялось через rpc лайк api через сокеты. Любой процесс перезапускался при потере пинга, если модификация не требовала изменения api её можно было накатывать на ходу. Работало как на одном узле, так и на нескольких. Слышал, что потом это утащили куда то в клауд и засовывали в контейнеры под каждого клиента.


        1. MiyuHogosha
          04.04.2024 23:03

          Звучит как у вас можен не быть единственной ответствеености (при изменение одного интерфейся придется менять многие). Если же есть - это и есть микросервис, пусть и пещерный. В некоторых случаях микросервисы реализовались как субпроцессы одного и того же образа (через вызов fork()). Как работал старый inetd...


          1. SpiderEkb
            04.04.2024 23:03

            Контракты модулей нельзя менять без сохранения обратной совместимости. Это приведет к нарушению интеграции.

            Внутренняя логика может меняться (например, в сторону оптимизации или если изменилась логика бизнеса).

            Понятие "процесс" тут не используется. Вместо него - "задание" (job). Своего рода изолированный контейнер со своей памятью, окружением и т.п. В этом плане тут как "больших машинах" все. В рамках одного задания все вызовы синхронны - вызов одного модуля из другого ничем не отличается от вызова функции внутри модуля или функции из динамической библиотеки.

            Асинхронные вызовы - с созданием нового фонового задания - spawn (или sbmjob - системная команда submit job со строкой запуска программы в параметре). И да, бывает запуск нескольких копий одного модуля в разных заданиях - это для параллельной обработки используется.

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

            Вообще все это близко к классической модели акторов работает.


            1. MiyuHogosha
              04.04.2024 23:03

              Это наследник Silverlake, IBM i? Так это де-факто монолит. Все что доступно пользователям и программистам это SLIC-интерфейс, язык высокого уровня для машины. Все что вы пишете - это абстракция, а реальная структура и стоимости как и реализация от вас скрыта... что для этой области применения имеет преимущества.


      1. sickfar
        04.04.2024 23:03

        Я думаю, что главная задача, решаемая микросервисами - масштабирование части приложения при возрастании нагрузки на него. Ответственность вторична. То есть, например, если есть онлайн магазин с черной пятницей, то микросервисы дают возможность масштабировать не весь магазин с соответствующими затратами ресурсов, а только те его части, которые подвержены наибольшей нагрузке. В черную пятницу нет смысла сильно раздувать read-only каталог, зато возможно стоит апскейлить корзину и скидочный сервис. Экономия.

        А описываемые автором проблемы с размазанными транзакциями - пример плохого разбиения на сервисы.


        1. Gorthauer87
          04.04.2024 23:03

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

          Хотя часто даже распределённый монолит вполне себе годное решение, если там нет сложных взаимодействий между частями.


  1. rinace
    04.04.2024 23:03
    +1

    Запрос по сети должен обратиться к другим сервисам, "дождаться" ответа, собрать информацию, валидировать, убедиться, что все сервисы ответили, И только потом после всех этих действий, транзакция считается исполненной, это прям мега упрощение. 

    Как же это знакомо :-(

    И потом начинается "мы упёрлись в СУБД"


    1. Drucocu
      04.04.2024 23:03
      +1

      все сервисы ответили, И только потом после всех этих действий, транзакция считается исполненной

      За сетевые походы внутри транзакций в приличном обществе подвергают публичной порке. Вы с автором либо работаете с не самыми грамотными разработчиками, либо чего-то не понимаете.


      1. JordanCpp Автор
        04.04.2024 23:03
        +1

        За сетевые походы внутри транзакций в приличном обществе подвергают публичной порке. Вы с автором либо работаете с не самыми грамотными разработчиками, либо чего-то не понимаете.

        Я же выделил ожидание в кавычки. Я говорю о налоге на сеть. Которая в любом случае даёт накладные расходы.


      1. Batalmv
        04.04.2024 23:03

        За сетевые походы внутри транзакций

        Иногда это просто неизбежно, к сожалению


  1. rinace
    04.04.2024 23:03
    +2

    Если вы к примеру грамотно настроили конфиг того же Postgresql, это половина успеха.

    А вот с этим, по личном опыте нервах и потраченному на общении с разрабами архитекторами и манагерами времени - не согласен.

    Они напишут такой код, что никакой тюнинг PostgreSQL не поможет и будут истерить и кричать на каждом конфколле - "у нас хороший код , это СУБД тормозит". А архитектор будет генерить массу прожектов -"что бы еще такого придумать, чтобы эта СУБД все таки залетала".

    Я лично видел запрос со стоимостью плана выполнения - триллион (10^12) и долгое долгое обсуждение - почему СУБД не летает.

    Настройки СУБД к успеху проекта вообще отношения не имеют. Это как помыть руки перед едой - само собой разумеющееся. Можно мыть руки регулярно и заболеть воспалением легких.


    1. panzerfaust
      04.04.2024 23:03
      +4

      После чтения ваших постов остаются одни загадки. Получается, вы Дартаньян, а все остальные инвалиды умственного труда. Ок, что мешает вам прийти с вашим дартаньянским авторитетом и просто объяснить дурачкам лучшие практики работы с БД? Или включаться в архитектурное ревью в потенциально ресурсоемких задачах? От кодинга до выкатки в прод и факапа с БД недели проходят. Достаточно времени, чтобы улучшить продукт своей экспертизой. Получается, что или ваша экспертиза никому не интересна (интересно, почему) или вы считаете, что это не ваше дело.

      Я в жизни встречал вот ровно 2 типа ДБА. Одни видят проблемы и начинают методично бить по рукам и учить уму-разуму. Через пару месяцев все приходит в норму. Другие годами сидят и просто бухтят, какие же разрабы тупые.


  1. gmtd
    04.04.2024 23:03
    +31

    Насколько я помню, в начале была Java написанная на С++, так как иначе будет тормозить ещё больше:) Rust это LLVM написанный на.. Сами догадайтесь:)

    Непонятно, к чему это

    И вообще, все эти стенания к чему? Автор установил говнопрограмму для pdf и плачет, что установил говнопрограмму для pdf. Rust не такой как С++. Андроид требователен к ресурсам. Яндекс задолбал маркетингом (привет, темная тема). ООП объяснют на зверушках, а хочу на отчетах (школьникам понравится очень)

    В итоге что?


    1. dyadyaSerezha
      04.04.2024 23:03
      +9

      Как что? Раньше трава была зеленее, вода мокрее и вообще. А сейчас всеобщая всратость (с) и наше IT во мгле, а наш поезд в огне.


    1. JordanCpp Автор
      04.04.2024 23:03
      +4

      В итоге что?

      Айти шабаш продолжается:)


    1. MountainGoat
      04.04.2024 23:03
      +1

      В итоге куча людей утверждает, что если первые среды Python/JS/Rust были написаны на C++ - то все эти языки, значит, надстройка над с++ и никогда его нигде не заменят.


    1. Politura
      04.04.2024 23:03

      ООП объяснют на зверушках, а хочу на отчетах

      В статье не ООП, а СОЛИД :) видать писал в кураже, ошибся и не заметил. Честно не понял, что не так со зверушками. Я про ООП узнал у Страуступа в книжке по С++ где-то в начале 90-х и там, по-моему тоже были зверушки, или что-то похожее. Все было понятно и норм, про то, что существуют какие-то отчеты, html и pdf я узнал только через много лет.

      В целом, про то, что автор олд нифига не видно. Сплошная категоричность, юношеский максимализм и поверхносность. Ну и мемасики.

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


      1. MiyuHogosha
        04.04.2024 23:03

        В момент написания той книги SOLID формализованном виде еще не было. Эта парадигма появилась в начале 2000х


  1. ALexKud
    04.04.2024 23:03

    Возможно, где-то, не в нашем провинциальгом районе все эти ит компании пилят свой кусок weba и тащатся от прибыли, но даже там где в производственных компаниях с возрастом за 20 лет и наличием только excell и 1С появляются всякие писатели которые тащат туда всякие непотребства в виде php, pyton, Linux и web в локалку не потому что это необходимо, а потому что либо ничего не знают кроме того что знают, либо просто получают "опыт" и через некоторое время сваливают в какие нибудь сотовые конторы за длинным рублём. А компания остаётся с этим софтом, который периодически глючит и тормозит и новый раз раб начинает это все разгребать зачем-то, когда надо просто убить никому не нужный web интерфейс и все что с ним связано и сидеть все заново в нормальном десктопном варианте.


    1. Vasjen
      04.04.2024 23:03
      +1

      с возрастом за 20 лет и наличием только excell и 1С появляются всякие писатели которые тащат туда всякие непотребства в виде php

      За всех писателей не скажу, но вполне себе допускаю, что у многих были хорошие мотивы. И писали не потому, что лишь бы написать, а хотели решить какую-то конкретную проблему. Ничего нет плохого автоматизировать через скрипты, через 1С и формировать какие-то Excel файлы. Оно становится просто в какой-то момент больно, если один файл нужен одновременно разным людям, или, что еще хуже, туда какой-то скрипт должен ходить по расписанию и обновлять данные, например подтягивая данные из клиент-банка или от контроллера при открытии двери. А еще плохо, если данные не всегда приходят в ожидаемом формате, сеть падает, и много чего еще, что как раз и решается такими языками программирования. И очень часто бывает, что ты делаешь что-то простое, решаешь одну задачу, а потом из этого бизнес делает комбайнер, чтобы в одном месте видеть и количество выручки и температуру на удаленном складе. В итоге это в 9 из 10 случаев и скатывается в то самое кодовое месиво, программист идет в более адекватную фирму с более адекватным менджементом, где и платят ему больше. Все логично.


  1. MAXH0
    04.04.2024 23:03
    +8

    ИТ во мгле или нет?

    НЕТ! Мгла темная, а не коричневая, и ни чем не пахнет. Мгла не жидкая. Картинка с коллекторным водолазом точно поясняет ситуацию.

    Для меня первым звонком, что погружение начато, стало в MIT больше не изучают SICP. Обратите внимание: Университет отказался от годного курса, потому что он не удовлетворяет требованиям бизнеса.

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

    Никто не сказал, что для надежности кода нужно чтобы код был открыт и удовлетворял определенным стандартам. Просто закрыли курс.

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

    Процитирую Столмана:

    В случае с ПО существуют две модели развития событий: либо вы
    используете программу, либо программа использует вас. Чтобы программу
    использовали именно вы, вам нужны определенные свободы. Эти свободы по
    сути являются критериями свободного ПО. Если у пользователей их нет, они
    не могут использовать программу. Программа использует их. В последнем
    случае все равно есть кто-то, кто управляет этой программой, поэтому мы
    говорим, что он управляет и ее пользователями. Выходит, что несвободная
    программа - инструмент несправедливой власти.

    Власть денег - это несправедливая власть. Она называется олигархией. Если вы обслуживаете интересы этой власти, то поздравляю - вы во го МГЛЕ.


    1. SpiderEkb
      04.04.2024 23:03
      +3

      Процитирую Столмана

      Ну не надо его иконизировать... Столман - этакий "Ленин от IT" (ладно хоть не Троцкий). Вроде бы все мысли идеи правильные, но если возвести их в догму, получится полная ерунда.


      1. MAXH0
        04.04.2024 23:03

        GNU Manifesto не догма, а руководство к действию ;-)


      1. MiyuHogosha
        04.04.2024 23:03

        Троцкий - это Линус.


  1. jimquery
    04.04.2024 23:03
    +1

    Проблему сканирования и объединения pdf в Windows решил с помощью программы WinScan2PDF
    Ничего лишнего и весит всего 300кб.


  1. PoWeR_1986
    04.04.2024 23:03
    +2

    Если честно, все же непонятен глубинный мотив автора. Вроде про 10 лет опыта написано. Значит, 28-32. Какие-то "вкладки", daemon tools... да хоть аська. Что нужно? Продуктам по 20 лет, идёт гонка за прибылью везде, и это логично и хорошо. Претензии к среде уровня джунов не иначе.


    1. JordanCpp Автор
      04.04.2024 23:03
      +1

      Какие-то "вкладки", daemon tools... да хоть аська. Что нужно? Продуктам по 20 лет, идёт гонка за прибылью везде, и это логично и хорошо. Претензии к среде уровня джунов не иначе.

      Суть в переусложненном и тормозном софте, что в нативе, бэке, фронте. И данная ситуация усугубляется. Претензии к элементарным вещам. И призыв, нормально делай, нормально будет.


  1. nin-jin
    04.04.2024 23:03

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


    1. JordanCpp Автор
      04.04.2024 23:03
      +1

      Вы пеняете на инфантильность современных разрабов, но при этом большая часть ваших тезисов показывает вашу собственную неспособность принимать разумные взвешенные решения.

      Что именно за решения?


    1. SpiderEkb
      04.04.2024 23:03
      +6

      Так и вижу: проект на пару десятков миллионов строк кода на С/С++. Живет и активно развивается уже 5+ лет. И тут прибегает юноша пылкий со взором горящим - "я принял разумное и взвешенное решение - переводим все на BetterC". Как думаете, куда он в итоге отправится?


      1. MountainGoat
        04.04.2024 23:03

        Так и вижу: закладывают новый большой проект. Приходит большой Босс и говорит: в соседней фирме уже 40 лет разрабатывают на С, у них всё работает. Поэтому мы тоже будем на С.


        1. JordanCpp Автор
          04.04.2024 23:03
          +3

          В НАСА так и делают. Суть в инструментах. Берём простое js spa приложение. Пару мегабайт на фреймворк. Для запуска нужен браузер и т. д И простой функционал в итоге, потребляет достаточно, ощутимый ресурс на клиенте.


          1. janvarev
            04.04.2024 23:03

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

            А можно, мы как (условно) в НАСА, посадим все за 1 вариант компьютера, без разных устройств, операционок, мобилок и сборок?

            Тогда программы будет писать ну знааачительно проще.

            Весь этот цирк с HTML и JS нужен, потому что это универсальная открытая среда запуска графического интерфейса НА всем. Если бы компании не пропихивали своё видение (привет, Джобс и его отказ от Флеш, .NET и пр. - один Safari и Objective-C, привет Microsoft c бесконечной чехардой WinAPI, Silverlight, XAML, .NET 1,2,3,Core - об этом Спольки писал) - возможно, программы было бы писать проще.


            1. Vedomir
              04.04.2024 23:03

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


              1. JordanCpp Автор
                04.04.2024 23:03
                +1

                Были бы инновации. Очередная версия нового\старого js фреймворка, с увеличенным потреблением ресурсов. И данная тенденция не останавливается.


                1. MiyuHogosha
                  04.04.2024 23:03

                  потому что нуно работать


                1. Vedomir
                  04.04.2024 23:03

                  Я отвечал на комментарий, где перечислялось " (привет, Джобс и его отказ от Флеш, .NET и пр. - один Safari и Objective-C, привет Microsoft c бесконечной чехардой WinAPI, Silverlight, XAML, .NET 1,2,3,Core ".

                  Это явно не " Очередная версия нового\старого js фреймворка"

                  Что из этого нужно принять в качестве единого и обязательного использования для всех без исключения пользователей и разработчиков? Objective-C и Маки с их привязкой к одному производителю железа, полностью контролирующему распространение программ? Флеш? А может классический Net с его жесткой привязкой к виндам?


            1. SpiderEkb
              04.04.2024 23:03

              А нужен ли графический интерфейс НА ВСЕМ?


              1. janvarev
                04.04.2024 23:03

                Пользователи хотят; если вы хотите зарабатывать деньги, то вынуждены их слушать (или конкурировать с теми, кто его делает).

                Если опенсорс - как у меня - то можно себе немного позволить игнорировать желания пользователей "сделать все красиво", и делать функционально.


        1. SpiderEkb
          04.04.2024 23:03
          +7

          Есть разница между закладкой нового проекта и полным переписыванием того, что уже работает. Особенно, когда речь идет не о личном пет-проекте, а о чем-то таком, что давно и стабильно работает и приносит большие деньги.

          При закладке нового проекта вы будет учитывать множество факторов. И на основе совокупности уже делать выбор.

          И, кстати, аргумент "уже 40 лет разрабатывают на С, у них всё работает" - это тоже аргумент против "тут три студента придумали новый суперязык, правда никто еще ничего серьезного на нем не написал".


          1. nin-jin
            04.04.2024 23:03

        1. kspshnik
          04.04.2024 23:03

          А потом Вы отправите Ваших детей лететь на самолёте, ПО для которого написано на *стильном, модном, молодёжном* BetterC/whatever?

          Chaque chause a çà place, блин.


      1. nin-jin
        04.04.2024 23:03

        Вообще, забавно, когда умудрённые опытом 10-летние девочки называют тебя юношей. Первым делом я бы отправился к вашему начальнику и с числами наперевес объяснил, что 5 лет назад было принято бестолковое технологическое решение, что вылилось в пару десятков миллионов строк дырявого и протекающего говнокода, затягивание разработки, и как следствие - распухание бюджета. Прогноз на следующие 5 лет ещё более не утешительный, если не начать фоновый рефакторинг прямо сейчас. Желательно с распилом на микросервисы, чтобы многомиллионное легаси больше не было ярмом на шее при развитии проекта.


        1. SpiderEkb
          04.04.2024 23:03
          +7

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

          Примеры в истории были. с 2012 по 2017гг Банк Содружества Австралии и Океании переходил на "новый технолгический стек". 5 лет и $750млн денег это им стоило. Других энтузиастов как-то не нашлось. Почему-то.

          Все всегда упирается в деньги и ресурсы. Кто этим будет заниматься? Сколько это будет стоить? Сколько на этом заработает компания? Как быстро отобьются вложения?

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

          Совсем другое - когда проект живет и развивается много лет, приносит прибыль. Взять все и поменять в такой ситуации в 99.99% случаев неоправданно дорого.

          Да, С/С++ не идеальные языки. Но. Они многое позволяют делать достаточно эффективно. И, как любой эффективный инструмент, они требуют высокой квалификации и аккуратности в использовании.

          Но при этом это очень распространенные языки. Поддерживаемые огромным сообществом разработчиков и комитетом по стандартизации. На них написано огромное количество кода. И там гарантированно не будет ситуации, когда кто-то скажет "да скачи оно все конем, надоело" и на этом все закончится - язык "подвиснет" в непонятном состоянии.

          А языки "такие же, но лучше" появляются постоянно. Вот только "в широкие массы" они выходят крайне редко.


  1. JordanCpp Автор
    04.04.2024 23:03
    +3

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


  1. buratino
    04.04.2024 23:03

    незаслуженно забыли погромистов Озона


  1. atues
    04.04.2024 23:03
    +4

     Я скромный богобоязненный разработчик на С#

    Мне как C# разработчику хватает одного сайта

    Итого - два места, где упоминается C#. Хотя ссылка ведет на справочник по C++. По всему тексту вижу только C++. Ругаете, что все плохо, ужасно, кошмарно и не кошерно (кое в чем - справедливо). Так предложите образец аккуратности. А то, действительно, получается "ИТ во мгле"


    1. JordanCpp Автор
      04.04.2024 23:03

      В С# я пришел из веба на С++. Понимая как реализовано в С++, почти без заглядывания под капот С#, понимаешь как оно там всё устроено. Те же алгоритмы, концепции, упрощенно и более безопасно. Не то, что С++ база. Но его знание, довольно серьезно расширяет кругозор.


  1. ildarz
    04.04.2024 23:03
    +20

    Статья программиста о программировании. Плохо структурирована, написана плохим языком, перегружена кучей баянистых мемасиков (что также ни разу не облегчает восприятие), основное содержание - "Раньше трава была зеленее", конструктива практически не содержит. То есть чтобы понять то, о чем тут написано, не надо даже читать статью - достаточно просто на нее посмотреть. :) "Если ты долго смотришь в бездну..."


    1. JordanCpp Автор
      04.04.2024 23:03
      +1

       "Раньше трава была зеленее", конструктива практически не содержит. То есть чтобы понять то, о чем тут написано, не надо даже читать статью - достаточно просто на нее посмотреть. :)

      Это же прекрасно. Что просто по картинке, уже понятно, о чём речь:)

      "Раньше трава была зеленее"

      Знаете, не хочу утверждать. Но некое здравое зерно в данном утверждении есть.


    1. arheo_pterix
      04.04.2024 23:03

      к вашим аргументам о essential issue поста присовокуплю " -раньше трава была зеленее, питайтесь ей....")))


  1. garwall
    04.04.2024 23:03
    +6

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

    Меня несколько.. удивляют люди, которые рассматривают вкладки как некий род постоянного, а не эфемерного хранилища. закладки придуманы примерно вечность назад.


    1. JordanCpp Автор
      04.04.2024 23:03
      +2

      закладки придуманы примерно вечность назад

      Удобно когда всё на виду.


    1. dyadyaSerezha
      04.04.2024 23:03
      +5

      Тем не менее, таких людей большинство, включая меня. В закладки тащу то, что уже посмотрел и отобрал, как важное или переиспользуемое, а во вкладках висит то, до чего руки не дошли, но потенциально интересное. Недавно перешёл за сотню вкладок на телефоне (ему 6.5 лет), а сколько их в Хроме на компе, даже подумать страшно)


      1. SpiderEkb
        04.04.2024 23:03

        Аналогично. Закладок море, но есть десяток-другой открытых и закрепленных вкладок, которые сейчас "в работе".


      1. garwall
        04.04.2024 23:03
        +1

        я вот когда вижу больше дюжины открытых вкладок у себя в браузере , тянусь сразу к кнопке "закрыть другие"


        1. dyadyaSerezha
          04.04.2024 23:03

          Да что там к кнопке, я тянусь сразу к револьверу, но потом вспоминаю, что его у меня нет.


        1. Vedomir
          04.04.2024 23:03

          Я сначала добавлял в закладки, потом перешел на заметочные программы Evernote/Nimbus Note/"блин после санкций ни одной приличной нет" но в итоге все равно в браузере может скопиться под сотню вкладок просто потому что сейчас нет времени на их чистку и перенос ссылок в постоянно хранилище


    1. hapcode
      04.04.2024 23:03

      Вкладки легко делаются постоянными с помощью великолепного расширения SessionBudy. Удобнее чем закладки. Я теперь не представляю использование хрома без него.


  1. arheo_pterix
    04.04.2024 23:03
    +2

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


    1. eee94
      04.04.2024 23:03
      +4

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


    1. JordanCpp Автор
      04.04.2024 23:03

      Про нейронки и генерацию кода и приложений ими, мне идея нравится. От того, что мне интересна история ИТ и я стою в 1999 году, никак не меняет и не умоляет, то что мы имеем сейчас. Больших и сложных систем не так много. Условно средний портал обслуживающий некий бизнес, не требует для себя выбор в сторону микросервиса и сопутствующего усложнения архитектуры. Он никогда не будет иметь ту нагрузку и количество пользователей. Сложность ради сложности и не более.


      1. SpiderEkb
        04.04.2024 23:03
        +1

        Как пример. Есть банк. Достаточно крупный. 50млн клиентов (может и больше уже). Так вот на центральных серверах там никаких микросервисов нет. По очень скромным оценкам (сейчас всего уже может быть ощутимо больше)

        • 27 тыс. программных объектов

        • 15 тыс. таблиц и индексов базы данных

        • Более 150 программных комплексов

        • Занимает более 30 Терабайт дискового пространства

        • В день изменяется более 1,5 Терабайт информации в БД

        • За день выполняется более 100 млн. бизнес операций

        • Одновременно обслуживается более 10 тыс. процессов

        И никаких микросервисов. Да, не единый монолит как его пытаются представить любители ужастиков (в виде одного огромного бинарника), но не микросервисы.


        1. DMGarikk
          04.04.2024 23:03

          но не микросервисы.

          а просто сервисы, да

          Это тоже разновидность некого монолита, вокруг которого навешивают всякие надстройки потому что отдельные объекты слишком крупные чтобы их шатать, вместо того чтобы например добавить поддержку формирования отчетов в pdf вместо(дополнительно к) txt формату, делается второй сервис который получает на вход txt из первого и генерит pdf, потому что сервис отчётов помимо формирования отчётов еще рассчитывает кредитные рейтинги...и если поломать логику формирования текста то отваливается вообще куча других связанных сервисов, потому что код этого писался непойми когда и как

          а был бы микросервис, было бы проще.

          это вот кстати реальный пример из начала 10х годов, я помнится перетаскивал гдето сотню таких макросервисов на java 7 с 1.4 ... и писал подобные затычки чтобы хоть чтото современное поддерживать оно началО


          1. SpiderEkb
            04.04.2024 23:03

            Да нет там какого-то единого модуля, вокруг которого все навешано. Есть куча модулей, каждый из которых что-то свое делает. И если поменялась логика - просто заменяем нужный модуль и все.

            И такого чтобы какой-то сервис генерировал и рейтинги и отчеты - тут такого не бывает. Каждый модуль реализует свою атомарную логику.

            Если сценарий использования подразумевает и то и это - значит будет какой-то модуль, который запускает и то и это. Но каждое в отдельности будет реализовано отдельным модулем.

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

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

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


  1. Lazhu
    04.04.2024 23:03

    Так всякий жеж

    условно средний портал обслуживающий некий бизнес

    мнит себя Гуглом Всемогущим, которому без БИГДАТЫ ваще никак


  1. uhf
    04.04.2024 23:03
    +1

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


    1. Vedomir
      04.04.2024 23:03
      +1

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


      1. uhf
        04.04.2024 23:03
        +1

        Я ровно это и написал. Люди собираются вместе, обмениваются мнениями, ищут аналоги, договариваются не покупать медленные программы, а покупать быстрые, привлекают спонсоров для авторов быстрых программ, поддерживают их информационно.


        1. Vedomir
          04.04.2024 23:03
          +1

          Так понятней. Но, как мне кажется, такая активность никогда не выйдет на те масштабы, которые станут заметными в цифрах продаж и доходов производителей софта.

          Подавляющее большинство денег вообще идет от молчаливого большинства, которое никакие обзоры и отзывы в интернете не читает.

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


          1. janvarev
            04.04.2024 23:03

            медленно но с большим функционалом или больше экосистемой. И последние факторы для большинства важнее.

            Увы, полностью согласен.


    1. engine9
      04.04.2024 23:03
      +2

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


      1. Gryphon88
        04.04.2024 23:03

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


        1. engine9
          04.04.2024 23:03

          Может быть и так. Но мне кажется фундементальные проблемы начнутся в сфере политики\экономики\климата раньше чем в ИТ.


  1. D1abloRUS
    04.04.2024 23:03
    +2

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


    1. SpiderEkb
      04.04.2024 23:03
      +2

      Если сравнить с товарным рынком, то есть вещи надежные и качественные, но он более затратны в производстве и стоят дороже.

      А есть шлак с али - дешево, ярко, много. Но в большинстве своем одноразово.

      Такое распределение ни хорошо ни плохо. Он просто есть.


  1. Scorpy490
    04.04.2024 23:03
    +4

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

    Примерно такое же происходит в IT, ресурсов навалом, мощности и память не ограничены. Все будет катиться к тому чтобы вытворять что попало и вырождаться.

    В эволюции такие перегибы исправляются кризисами, встрясками, войнами. Примерно также будет и с программами. Хотя как это будет в реальности трудно представить, мощности никто не отберет, и не заставят писать код на 1 Мб памяти. Но какой-то кризис будет. Возможно политический, когда методы обращения с информацией станут регламентированы и цензурированы.

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


  1. Tzimie
    04.04.2024 23:03
    +4

    Андроид этот путь прошел быстрее. От 3-5 мегабайтных apk к... Сколько там сейчас Тинькофф занимает? 300? Может кстати кто нибудь объяснит, что в таких приложениях. Порно? Полный набор анимешных скринов? Вся Википедия?


    1. SalazarMAX
      04.04.2024 23:03
      +3

      Тут был дан частичный ответ на эту загадку: https://habr.com/ru/companies/vtb/articles/685608/


  1. Vedomir
    04.04.2024 23:03
    +1

    Ответ на все вопросы про переусложненность и тормознутость софта как мне кажется прост и давно известен - за простоту и скорость не платят деньги. За скорость тупо не платят, про нее любят рассуждать, но платить на практике не готовы. Или готово платить ничтожное меньшинство, деньги которого ничего не решают.

    Железо сейчас крайне дешевое, запрос на скорость/компактность софта возникнет тогда, когда начнут возникать ситуации "у меня/компании нет денег на более мощный комп/телефон, куплю более быструю программу, это обойдется дешевле". А сейчас ситуация иная "скоростной SSD на 256ГБ/512ГБ/терабайт стоит копейки, какая мне вообще разница 600 мегабайт весит ОС или 64 гигабайта" или "8-ядерный процессор на 4нм стоит дешево..." нет ситуации "у меня не хватает места на диске и покупка более компактной ОС обойдется дешевле покупки более емкого диска". Единственная сфера, где есть платежеспособный запрос на скорость софта - это высоконагруженный бэкэнд и там вполне могут переписать код с Go на Rust.

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

    С микросервисами у меня опыта мало, но в плане обоснованных причин для их внедрения очень нравится вот этот ответ на softwareengineering.stackexchange.com.


    1. fpga500
      04.04.2024 23:03
      +2

      Вообще то говоря в деньгах разница как раз есть. Ноут с 16 Гб ОЗУ и 32 ГБ ОЗУ - по ценам сильно разные. Я купил себе тот, в котором 16. На 32 гига - жаба задушила)

      И поставил 10 Винду, а не 11. Зачем мне нужна операционка, требующая больше ресурсов от железа при том же функционале?

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


      1. Vasjen
        04.04.2024 23:03
        +2

        Зачем мне нужна операционка, требующая больше ресурсов от железа при том же функционале?

        Я думаю, автор комментария о другом говорил, а вы смотрите не в той плоскости. Грубо говоря, какое мне дело, сколько занимает ОС на диске или сколько памяти оперативной ей нужно? Сейчас SSD на террабайт стоит в районе 6к рублей, что для бизнеса, что для ФЛ является вообще небольшой суммой. И мне не сильно принципиально, ОС от этого объема займет 0,04% процента или 0,002%. Тоже самое и с оперативкой.

        Грубо говоря, это все цифры, которые никак не влияют на Ваш пользовательский опыт. Рабоатя с докером, вы этот объем оприходуете очень быстро, а мериться сколько занимает места голая система после установки - такое же бессмысленное занятие, как выбирать видеокарты по синтетическим тестами или сравни FPS в играх, так как разницы между 278 кадрами или 265 для подавляющего большинства пользователей нет.


        1. SpiderEkb
          04.04.2024 23:03

          Грубо говоря, какое мне дело, сколько занимает ОС на диске или сколько памяти оперативной ей нужно?

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

          Т.о. производитель софта вынуждает вас тратиться на новое железо. Просто потому что такие сейчас подходы к разработке.


          1. Vasjen
            04.04.2024 23:03
            +1

            Но перейти на более свежую версию вы не можете потому что более свежую версию ваше желе не потянет.

            Это какой-то пример в вакууме, мне зачем-то надо перейти на новое ПО, но железо не поддерживается. Далеко ходить не надо, есть Windows 11 с TPM 2.0, но как это связано с объмом занимаемой памяти физической или оперативной?

            Т.о. производитель софта вынуждает вас тратиться на новое железо. Просто потому что такие сейчас подходы к разработке.

            Я с Вами согласен, такое бывает, когда какой-то софт просто перестается обновлятсья на старой версии ОС, требует обновления, что может потянуть за собой и потребность нового железа. Тут про другое речь, какой смысл всех этих сравнений в попугаях: сколько занимает Гб чистая система, а сколько памяти кушает, за сколько мс откроется проводник и т.д.


            1. SpiderEkb
              04.04.2024 23:03
              +2

              Ну вот смотрите, есть у меня старый ноут. Он вполне рабочий, живее всех живых. Но старый. Там двухядерный целерон В820 ну и памяти (изначально было 2Гб, сейчас 8 - благо память для него стоит копейки, а меняется просто - она под отдельной крышкой).

              Так вот. Когда он покупался, на нем стояла Win98SE. И все летало (и браузер и офис и что-то там для разработки тех времен). Потом XP - хуже, но терпимо. 7-ка уже еле дышала даже 32бит с 4Гб памяти.

              Естественно, что пришлось менять ноут чтобы как-то жить. А этот лежал без использования. Хотя 100% рабочий. Т.е., грубо говоря, меня "развели" на покупку нового железа. Не потому что старое сломалось, а просто так. Хотя с точки зрения конечного пользователя каммент суда можно с одинаковым успехом написать и из браузера под 98-й виндой - ни мощный проц, ни много памяти для этого не надо.

              Ну ладно, тут из каждого утюга кричат что линукс типа круто, ресурсов не надо, это вам не винда.

              Достал старый ноут, докинул памяти до 8Гб, поставил Минт. Ну грузится оно действительно быстрее, работает. Но. Браузер (Brave) запускается 30 секунд (!!!) - да, специально засекал. Загрузка процессора 100% при этом. Что он делает перед тем как я смогу им пользоваться? Зачем? Почему древня версия оперы на том же железе и в 4 раза меньше памяти под 98 стартовала моментально, а это под линуксом полминуты сопли жует?

              Вы всерьез считаете такие подходы к разработке нормой?


              1. Vasjen
                04.04.2024 23:03
                +1

                Вы всерьез считаете такие подходы к разработке нормой?

                Тут дело не в подходе к разработке, на мой взгляд. Так вышло, что компьютерное железо практически не изнашивается и этот процес происходит гораздо быстрее его устаревания. Возьмите те же автомобили, где столько агрегатов, которые между собой взаимодействуют. Они довольно быстро приходят в негодность и требуют обслуживания и ремонта, но по итогу, что обычная машина купленная 20 лет назад, что только сегодня из салона будет иметь сопоставимую мощность. Да, возможно будет отличаться время разгона до 100 км / ч, или расход топлива но при обычной эксплуатации разницу Вы вряд ли почувствуете. Опять же, речь про ТТХ, а не свистоперделки типа больших консолей, дисплеев и кнопок управлений на руле. Едут +- одинаково машины одного класса.

                С комьютерным железом ровно обратная картина, оно не изнашивается до такого состояния, что требует ремонта, обслуживания в таком количестве. У вас не будет дилемы с ним, скидывать может его и купить новое. Оно гораздо быстрее устарее морально и будет сильно уступать в производительности новым версиям. И это не проблема разработчиков, что вот есть физически рабочее железо 10-20 летней давности, которое тогда было ого-го, а сейчас браузер запускает со скрипом. Оно просто по хорошему должно находится в чулане или на мусорке, а мы ИТшники его храним и пытаемся его использовать, отрицая, что его вычислительные мощности слабы в текущее время.

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

                Почему раньше все летало? Да просто потому, что нельзя было выпускать конкруентный продукт на рынок с техническими требованиями, которые невозможны или слишком дороги для клиента. Поэтому были системы, программы и игры, которые как-то уживались на 32Мбайтах оперативки, ибо больше нельзя требовать - клиентов не будет, или конкуренты займут рынок. Это было требование от бизнеса, и требование не потому, что они хотят эффективный код в продукте иметь, а потому что ограничены ресурсами и возможностями пользователей рынка.

                Поэтому пока бизнес имеет возможность докупить мощностей, арендовать более мощный сервер - то все так и будет. Если вдруг случится коллапс и стоимость железа увеличиться в разы - поверьте, весь интрнет будет завален статьями как они оптимизировали инфраструктуру, как перегоняли данные в бинарном формате, как отказались от ООП, как переписали большинство алгоритмов и достигли прироста в +100500 при меньшем потреблении. И ровно наоборот, если железо станет кратно дешевле, то появятся операционки и приложения, которые будут требовать 32Гбайта из коробки, так как таких ограничений не будет, можно быстрее разворачивать приложения и быстрее выходить с MVP на рынок и не переживать, что пользоваться этим не смогут.


                1. SpiderEkb
                  04.04.2024 23:03

                  Стоп.

                  Что значит "устаревает морально"? Я как могу под 98 в опере написать сюда камент, так и сейчас могу. Как мог под 98 в ворде документ поредактировать, так и сейчас могу.

                  Что такого принципиально нового я получил за те деньги, которые потратил на новое железо? В чем именно устаревание старого?

                  Новые кнопочки в интерфейсе? Так мне и со старыми нормально было (не поверите, но я еще WinNT 3.5 помню - со своим задачами она отлично справлялась, не хуже чем Win11 сейчас).

                  Ах да, на старых браузерах тяжелые рекламные баннеры с анимацией и прочей шнягой не идут... Но мне то до этого какое дело?

                  И не надо про современные игры с супер-пупер натуральной графикой. Это отдельная ниша - кому надо, то путь покупает железо которое их тянет. А для большинства пользователей, кому комп просто инструмент, потребности не поменялись - что под 98 всего хватало, что сейчас. Только затраты на железо стали больше.

                  Беда в том, что я сам разработчик со стажем в 30+ лет и неплохо так себе представляю как все это происходит.


                  1. janvarev
                    04.04.2024 23:03

                    кому комп просто инструмент, потребности не поменялись - что под 98 всего хватало, что сейчас.

                    Проблема в том, что у большинства пользователей уже НЕТ компа. У них есть смартфон, и львиная доля его функциональности - интернет-приложения. Или комп - а в нем браузер, в котором они сидят. Или мессенджер.

                    Значительная доля пользователей вообще не пользуется компом для решения своих задач - они взаимодействуют с другими пользователям через Интернет - и вынуждены учитывать его эволюцию, вот и всё. Почти никто уже свои задачи с помощью компа, отключенного от сети, не решает :(


                  1. Vasjen
                    04.04.2024 23:03

                    Что значит "устаревает морально"? Я как могу под 98 в опере написать сюда камент, так и сейчас могу. Как мог под 98 в ворде документ поредактировать, так и сейчас могу.

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

                    Lynx

                    Что такого принципиально нового я получил за те деньги, которые потратил на новое железо? В чем именно устаревание старого?

                    Вы правда не хотите признать, что DDR5 эффективнее DDR4, и уж тем более 3 или 2? Или что разницы между свежим 6ти процессором и как-нибудь i7 2го поколения нет? "Устаревание" в том, что появляется более эффективное и более производительное решение с очень доступной стоимостью.

                    Ах да, на старых браузерах тяжелые рекламные баннеры с анимацией и прочей шнягой не идут... Но мне то до этого какое дело?

                    Я себя ощущаю адвокатом дьявола что ли, защищая вещи, которые сам не люблю типа всплывающих окон и тяжелых анимацией, или бескончных подгрузок на страницах и т.д. Шняга / не шняга - дело вкуса каждого, можете порезать функционал браузера, натыкать расширений, адблокер и все такое. Доступность вычислительных технологий предоставила развитие программных продуктов. Все эти библиотеки и фреймоврки для фронта появились в первую очередь благодря тому, что обычный пользователь не сидит за 4:3 экраном за компом 20 летней давности с 2Гб оперативки. И поэтому ему можно где-то на ютубе включить предпросмотр, где-то в потоке данные передать, можно организовать полнотекстовый поиск по всему сайту или базе, или в браузере игру увесистую запустить - и все это следствие доступности вычислительных технологий. Это не только банеры с рекламой, но и куча чего другого. Если вам это не нужно - ваше право, не смотрите фильмы в 4К онлайн, не играйте через облако в игры, каждому свое. Заблокируйте JS и HTML5, получите производительность на старом железе.

                    И мне просто не совсем понятна эта идеологоия. Вот например видео с Андреем Столяровым, очень уважаемым профессионалом и экспертом в ИТ. И вот вроде внимать его опыт и мудрость, а потом слушаешь, как он использует до сих пор Asus Eee PC 901 с 1Гб оперативки и жалуется, что современным вебом пользоваться невозможно на этом нетбуке. И винит он именно разработчиков и веб, а не то, что сейчас на дворе 2021 год (на момент видео) и самый дешевый ноут с алика будет в разы производительнее и шустрее.

                    Беда в том, что я сам разработчик со стажем в 30+ лет и неплохо так себе представляю как все это происходит.

                    Ну так тем более же. Вы за 30 лет наверное заметили, что деплой ваших проектов происходит на разных серверах с разными мощностями? У Вас по-моему финтех и очень специфичный, не удивлюсь если сть собственная мейнфрейм железка, купленная 20 лет назад за много-много денег, поэтому все деполится и крутится на ней. Но сейчас, никто в здравом уме не разворачивает приложения на процессорах 15 летней давности, не хостит на HDD и на какой-нибудь DDR2. Казалось бы, почему, ведь устаревания нет?


                  1. Vedomir
                    04.04.2024 23:03
                    +1

                    >Я как могу под 98 в опере написать сюда камент, так и сейчас могу. Как мог под 98 в ворде документ поредактировать, так и сейчас могу.

                    Справедливости ради Windows 98 был радикально менее стабильным. Даже семейство 2000/XP регулярно приходилось чистить и переустанавливать. Стабильность уровня "работает много лет, жесткий диск умирает раньше" была достигнута только с Vista/7 и 6 ядром NT. Я не эксперт в этой области и не могу обосновано сказать, что иначе стабильную ОС c равными возможностями было не сделать, но эти изменения в стабильности работы как по мне вполне стоили возросшего потребления ресурсов.


                    1. SpiderEkb
                      04.04.2024 23:03

                      Не поверите, но Win98SE была очень стабильной, если ее специально не убивать.

                      Вот чего оно не любило - это когда начинаешь постоянно что-то ставить, потом сносить, снова что-то ставить и сносить...

                      А так - мы ее на диспетчерских когда-то ставили. На дешевые компы со своим софтом. Оно там годами работало без проблем в режиме 24/7 без перезагрузок.

                      95 была неудачной. Vista, Millenium тоже. 8-ка так себе...

                      После 98 хороша была 2000-я (NT5), XP, 7-ка...


                      1. DMGarikk
                        04.04.2024 23:03
                        +3

                        Не поверите, но Win98SE была очень стабильной, если ее специально не убивать.

                        не верю!

                        я сидел на всех виндах начиная с 3.1 и пропустив только ME

                        и только 11 версия у меня стоит в дуалбуте только для случаев если мне прям там чёто свосем нужно

                        98SE была стабильна на момент своего выхода в сравнении с 95

                        но уже по сравнению с W2k она была чемто жутковатым, с NT не сравниваю потому что в NT не было адекватного pnp и тогдашний софт её плохо поддерживал

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

                        перечисление удачной-неудачной версии у вас как из фольклора, версий было больше на самом деле и к ним были применима фраза "виндой можно пользоваться после 1 сервиспака"

                        Мое распределение удачности форточек

                        Win95 rtm - кривое глюкалово как из мемов

                        Win95 osr2 (и 2.1 с USB) - уже можно жить

                        Win98 - модно молодежно, тормозит

                        Win98 SE - можно жить

                        Win98 SE+IE5 - почти современная винда с интернетом

                        Windows ME - кошмар и ужас

                        Windows 2000 (SP1,2,3,4) - нареканий вообще не было, разве что грузилась медленней всех, за играми ходили в Win98

                        Windows XP - попугайско-тормозящее поделие где надо было отключать службы, тюнить всякий QoS и т.п.

                        Windows XP SP1+SP2 - уже норм, с годами стало беспроблемно когда подтянулся софт и железо

                        Windows XP 64 - мутант из (отличной) Win2003 которую почемуто притащили к обычным юзерам

                        Vista - жуткие тормоза и перегруженность

                        Vista SP1+SP2 - уже можно жить, но явно не хватает компов тех лет

                        7 - вообще отлично

                        8 - плитки? шта? сломали UI у семерки...зощто??

                        8.1 - о норм, если привыкнуть без проблем

                        10 и далее уже не следил, сейчас везде 11 стоит но хожу туда пару раз в неделю от силы, нареканий к ним не было


                      1. SpiderEkb
                        04.04.2024 23:03

                        Ну у нас специфическое было все. Но из того что пробовали (и что не вызывало нареканий в работе) в разные годы

                        3.11
                        98SE
                        XP SP2
                        2000 SP2
                        7 SP2

                        Это то, что в разные годы ставилось на диспетчерских и стабильно там работало. Правда, туда кроме нашего софта ничего не ставилось больше. Это были чисто диспетчерские мониторы, работающие 24/7


                      1. Vedomir
                        04.04.2024 23:03

                        >Правда, туда кроме нашего софта ничего не ставилось больше. Это были чисто диспетчерские мониторы, работающие 24/7

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


                      1. SpiderEkb
                        04.04.2024 23:03

                        И что в 90-х года было из "узкоспециализированного"?

                        Мы тогда все это начинали...


                      1. Vedomir
                        04.04.2024 23:03

                        Так речь же вроде идет про текущий момент и системы вроде современных виндов которые жрут много ресурсов сейчас.


              1. Vasjen
                04.04.2024 23:03

                И дополню лишь тем, что не стоит держаться за старое железо. У меня также есть старый комп на Атлоне, где-то в гараже на селероне по 478 сокете, ноутбук есть почти 15 летней давности, который даже в FullHD не умеет, хотя имеет аж целую дискретную видеокарту на 2Гб и 6Гб оперативки и 4х ядерный i5. И по тем временам столи прилично в районе 500$. Время этих железок ушло, ими можно конечно пользоваться для каких-то своих задач, но ровняться на них и требовать, чтобы современный мир помнил, что такие железки есть - не надо.

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


                1. SpiderEkb
                  04.04.2024 23:03

                  Что конкретно в получили, "забыв" про старое железо и потратив деньги на новое. Вот конкретно в решении своих повседневных задач?

                  Вы начали делать что-то такое, на что раньше мощностей не хватало? Или что?


                  1. Vasjen
                    04.04.2024 23:03

                    Вы начали делать что-то такое, на что раньше мощностей не хватало? Или что?

                    Да, как минимум тот же Docker просит очень много опративки. До этого был ноут с 8ми, где было тяжко. Постоянно приходилось закрывать вкладки, ниспользуемые программы, кучу всего по мелочи. Открыть Rider + Docker + Chrome было нереально от слова совсем.

                    Пересел за пк, где было 16гбайт, начал интересоваться микросервисами, что это вообще такое, как разворачивать и т.д. Например, чтобы развернуть песочницу магазина от майков требовалось просто 8Гб, добавьте туда базу, инфраструткру типа прометеуса, ноды поднять - вот и вышло, что да, 16гб физически мало. Не для всех задач, а для каких-то определенных. Сходил в магазин, купил за 12 тысяч две планки оперативки по 32Гбайта и на ближайшие 10 лет закрыл проблему памяти.

                    UPD.

                    Что конкретно в получили, "забыв" про старое железо и потратив деньги на новое. Вот конкретно в решении своих повседневных задач?

                    Вот примеры за последний паур лет.

                    1. Заменил старый Honor 10 на Oneplus. Все приложения стали открываться шустрее, система не дропает неактивные приложения, что позволяет быстро переключаться между вкладками ьраузера и открытыми мессенджерами, встроенная память увеличиласть и мне не надо вычищать старые фотки и куда-то их переносить. Экран 120Гц, что очень приятно глазу. Как и качество снимков - они лучше, деталей больше, весят также больше, поэтому память оказалась очень к месту.

                    2. Купил 4К телек вместо FullHD. Картинка приятнее стала, SmartTV из коробки умеет гораздо больше, чем 15 летний LG.

                    3. Приставка XBox X пришла на смену PS4. Функция Quick Resume позволяет одновременно играть в несколько игр и хранить состояние, причем даже на разных учетках. Поскольку играю редко и какими-то небольшими налетами и не один, то слао гораздо приятнее запустить консоль и через 10 секунд уже играть, а не ждать по пол-минуты запуска, потом ждать еще пока закроется другая игра, а еще надо провертиь, а есть ли сохранение. Потом минута грузистя нужная игра, еще пару минут на загрузку уровня и всех текстур, и вот спустя почти 10 минут ты начинаешь играть, но уже пора что-то другое делать.

                    4. Про ПК написал. Докупил оперативки и накопитель, стало вообще все равно что там по памяти, лишь бы не лагало и не тормозило. А тормозит периодически именно говнокод, который никак не связан с количеством потребляемых ресурсов.

                    Вот что получил, "забыв" про старые железки. Можно конечно сидеть с первым гугл пикселем, играть в пс2, держать неттоп с XP и возмущаться производительности соврмеенных продуктов - дело лично каждого.


                    1. Gryphon88
                      04.04.2024 23:03
                      +1

                      Имхо, докер это отдельное проявление "тьмы" в ходе борьбы за безопасность и против library hell. Решение создавать песочницу с полным фаршем зависимостей на каждый чих для меня очень неочевидно)


                    1. SpiderEkb
                      04.04.2024 23:03

                      В общем и целом итог такой - количество говнокода увеличилось и бороться с ним приходится покупкой нового железа.

                      Был у меня в свое время телефон Blackberry Z30. Модель 2013-го года. С 2Гб памяти и 2-ядерным 1.7ГГц процессором.

                      Так вот там вообще никаких лагов. Все летало. Потому что там все сделано было правильно. ОС там фактически QNX (погуглите что это такое если не в курсе). Реалтаймовая операционка на микроядерной архитектуре со всеми вытекающими. Внятное управление приложениями - открыто на весь экран, свернуто в плитку (работает в фоне) или закрыто и выгружено из памяти. Никакое приложение физически неспособно завесить всю систему. Очень продуманный и удобный интерфейс.

                      Но... Все это загнулось потому что писать приложения под него сложнее. Там сложно говонокодить, приходится нормально все делать.


                      1. Vedomir
                        04.04.2024 23:03

                        >количество говнокода увеличилось и бороться с ним приходится покупкой нового железа.

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


                      1. SpiderEkb
                        04.04.2024 23:03

                        Ну попробуйте здесь и сейчас купить, к примеру, Power10 вместо тогда, чтобы оптимизировать код, работающий на имеющемся Power9...

                        Равно как и с облаками - скажет тот же Amazon "вы плохо себя ведете, посему - баста, карапузики..." и что дальше?


                      1. Vedomir
                        04.04.2024 23:03

                        А много сейчас систем на Power вообще? Могу ошибаться, но выглядит как узконишевое решение с vedor-lock. За привязку к вендору и его закрытым решениям всегда придется много и дорого платить, это надо учитывать при исходном проектирование и выборе между открытыми и закрытыми решениями.

                        В более стандартных конфигурациях поставить новое поколение процессоров где вместо 64 ядер уже 96 или 128 явно гораздо проще.

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

                        А вот на пользовательское устройство намного проще и дешевле воткнуть 16 гигов памяти вместо 8 или 8-ядерный процессор вместо 4-х ядерного. Или терабайтный SSD вместо 128 Гигабайтного.


                  1. Vedomir
                    04.04.2024 23:03

                    Думаю, ключевой вопрос здесь в том, что приобретение новых железок совсем не бьет по бюджету типичного жителя развитой страны. Стоил бы новый компьютер условные 10-20 тысяч долларов, старые бы так легко не выбрасывали и тратили бы деньги на работоспособный на них софт.


                  1. mapnik
                    04.04.2024 23:03

                    Экономию электричества.

                    Полуваттный * Pi, по производительности находящийся где-то в районе четвёртого пентиума с потребляемой мощностью ватт пятьдесят только на процессор, сильно способствует замене железа на новое, если вы находитесь не в Иркутской области в частности и не в России вообще.


              1. DMGarikk
                04.04.2024 23:03

                Там двухядерный целерон В820

                Когда он покупался, на нем стояла Win98SE

                B820 вышел в 2012 году, 98SE уже в гробу истлела и XP начали закапывать, как там могла стоять 9x винда? :))


                1. SpiderEkb
                  04.04.2024 23:03

                  Мы долго сидели на старых версиях т.к. основной софт ставился на диспетчерские с очень простыми и дешевыми компами. Ну и писать приходилось под тем, подо что пишешь. Хотя для понимания как оно будет работать "на натуре".


              1. Vedomir
                04.04.2024 23:03

                >Браузер (Brave) запускается 30 секунд (!!!) - да, специально засекал. Загрузка процессора 100% при этом. Что он делает перед тем как я смогу им пользоваться? Зачем? Почему древня версия оперы на том же железе и в 4 раза меньше памяти под 98 стартовала моментально, а это под линуксом полминуты сопли жует?

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


                1. SpiderEkb
                  04.04.2024 23:03

                  Ок. сложность выросла. А что я лично с этого получаю? Красивые рекламные баннеры? Так они мне не уперлись вообще никуда... Я вообще больше хожу по сайтам где >80% текст (доки разные и т.п.)

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


                  1. Gryphon88
                    04.04.2024 23:03

                    Мы так до полуоси, линкса и лексикона откатимся... Не, я согласен, что прирост требований непропорционален приросту ценности, но у вас сценарий использования еще менее типовой, чем у меня.


                    1. SpiderEkb
                      04.04.2024 23:03

                      Ну у меня комп - это рабочая машинка. Но пишу я под AS/400 (IBM i), так что все сборки и прочее уже на серваке. На компе только документация, IDE и гит. Ну и эмулятор IBM5250. Ну и мессенджеры всякие. А, еще есть VDI, но он под линухом на старом ноуте - фактически тот работает как отдельный VDI терминал к виртуальному рабочему месту.


                  1. Vedomir
                    04.04.2024 23:03

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

                    Просто так ради примера не нужного вам - я например на отдыхе регулярно смотрю игровые стримы на twitch (поток видео в 1080p в реальном времени, я бы и от 4К не отказался) и общаюсь со стримерами в чате. А на работе периодически надо заходить в фигму (я не дизайнер, но берем оттуда готовый дизайн). Сколько надо впихнуть в браузер технологий, чтобы все это работало? Тому что мы делаем это все, кстати нафиг не надо, там все тот же текст и немного векторных картинок.

                    Чисто теоретически можно было бы сделать отдельный браузер для вас в котором всего этого не было бы и было бы просто отображение текста. Может он даже есть? Я не искал. Но скорее всего у разработчиков нет экономического стимула его делать.


          1. fpga500
            04.04.2024 23:03
            +4

            От себя добавлю, деньги - это еще пол беды. Сам переезд на новое железо и софт - тот еще геморрой.

            Вот сейчас на моем рабочем компе вообще стоит Семерка. У меня настроен весь софт. Это несколько разных версий Квартуса, Вивадо, различные китайцы (Efinix и Pango). Причем различные версии софта нужны для работы с микросхемами разных поколений (Например последние версии Квартуса не поддерживают третьи Циклоны, которые еще вполне себе используются в промышленности). Есть Моделсим, для которого скомпилены библиотеки и весь вышеперечисленный софт умеет с ним общаться. Есть еще Матлаб и прочий мелкий различный софт. Всё это настроено и всё это работает.

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


            1. SpiderEkb
              04.04.2024 23:03
              +2

              Это вообще отдельная боль. Тоже трясет от одной мысли заново настраивать то, что годами выстроено было под комфортную работу.


            1. Vedomir
              04.04.2024 23:03

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

              Если бы они могли увеличить прибыль хоть на пару процент за счет продолжения поддержки Windows 7 они бы это сделали.


        1. JordanCpp Автор
          04.04.2024 23:03

          Я думаю, автор комментария о другом говорил, а вы смотрите не в той плоскости. Грубо говоря, какое мне дело, сколько занимает ОС на диске или сколько памяти оперативной ей нужно? Сейчас SSD на террабайт стоит в районе 6к рублей, что для бизнеса, что для ФЛ является вообще небольшой суммой. И мне не сильно принципиально, ОС от этого объема займет 0,04% процента или 0,002%. Тоже самое и с оперативкой.

          Вы правы. Я больше отталкиваюсь от фукционал\потребление ресурсов. И если смотреть в данной плоскости. То разброд и шатание.


      1. Vedomir
        04.04.2024 23:03

        Сугубо формально она конечно есть. Но она недостаточно большая, чтобы повлиять на финансовое поведение клиентов.

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

        Ситуация могла бы измениться, если бы по цене нынешнего ноута с 32 ГБ продавался ноут с 2 ГБ, а по цене 16 - с 1 ГБ памяти. В таком случае, стимул для оптимизации быстро бы появился и мы бы увидели новые, оптимизированные, версии Windows и, возможно, новые, конкурирующие ОС или рост доли Linux. Был бы такой мир лучше? Я не уверен.


  1. Vasjen
    04.04.2024 23:03
    +2

    Наброс годный, конкретных проблем вроде и нет. То что системы стали требовать больше вычислительных ресурсов? Ну логично, они стали доступнее поэтому проблема оптимизации ушла на второй план. Вместе с ними и поднялись требования пользователей к приложениям и сайтам. Уже сложно представить что-то актуальное без JS на фронте, будь то ванильный или какой-то фреймворк, а значит и ресурсов нужно больше для отрисовки всех анимаций, скролингов и спинеров.

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


  1. Svayak
    04.04.2024 23:03
    +1

    Вся наша надежда на искусственный интеллект!

    Он придет и все нахрен выбросит - и Windows, и языки программирования, и нас - программистов.

    Если, конечно, он реально интеллект и если сеть не будет слишком тормозить. :(

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


  1. iroln
    04.04.2024 23:03
    +2

    Нечасто у меня возникает потребность объединить несколько сканов в один pdf. Использовать онлайн редакторы, такое себе конечно.

    1. Open a word processor

    2. Paste your pictures

    3. Export to PDF


  1. murkin-kot
    04.04.2024 23:03
    +2

    Куча умных мыслей про проблемы, про причины, но ни одной простейшей мысли о изменении ситуации.

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

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

    И правда, если брать всё и ничего не платить - такой подход максимизирует удовольствие. И именно ему следуют все (и человекообразные и одноклеточные). А вот другой подход - объединить усилия - человекообразные забывают напрочь. И чем лучше живут, тем сильнее забывают. Всяким одноклеточным конкуренты не дают нужную химию перестать вырабатывать, а вот двуногим прямоходящим переход от пальмы с бананами к ядерному топливу дал лишь одно "улучшение" - почти полный отказ от добровольной совместной деятельности. Ну так и получите что просили - вам что-то наливают в корыто, оно даже съедобно, делать вообще ничего не надо, только челюстями двигай (мышкой шевели). Но вам мало!

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


    1. Vedomir
      04.04.2024 23:03

      Можно переформулировать иначе - двуногие скооперировались и вложили все усилия не в оптимизацию софта, а в улучшение железа.


      1. murkin-kot
        04.04.2024 23:03

        двуногие скооперировались

        Не так. Правильнее так - двуногих нагнули и они...

        Они изобретают всякую всячину не просто так. Цель, как всегда - деньги. Мелочь можно изобретать ради удовольствия, но всё крупное - дорого, а потому без денег в принципе никак.

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

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


        1. Vedomir
          04.04.2024 23:03

          >Правильнее так - двуногих нагнули

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


  1. dvim
    04.04.2024 23:03

    Программ для pdf тьма. Сотрудникам поставили ту , что меньше и не висит в трее

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


  1. Yuriy_75
    04.04.2024 23:03
    +1

    Про монолиты/микросервисы - прям за живое задело. Я много раз читал/слышал "мы пилим монолит". Я сам работаю там, где пилят монолит.

    Я не разу еще не читал/ не слышал - "Мы уже давно распилили свой монолит. Мы живем с одними микросервисами. И у нас все классно, все летает и не падает. И народа для обслуживания нам не нужно в 10 раз больше, чем было на монолите."


  1. Pardych
    04.04.2024 23:03
    +2

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

    Я бы только вас поправил. 10 лет назад на дворе был 2014 - уже пятый дроид, пятый нексус, на носу (в 15-м) аж 10-я винда и тот самый vs code и прототип флаттера. Маркетинговые отделы получали премии за наполнение 75% поверхности сайта рекламными материалами, SPA давно вошли в полную силу, клан PWA в гугле тоже расцвел. Электрон начинал победное шествие, в гибридном мобайле, покушавшемся на мультиплатформу, были свои аналоги, джава-разработчики делали первые робкие попытки внедрить в прод еще не релизнувшийся котлин (в основном мобильщики, все знают что мобильщики безумны). Там же где-то и свифт (я помню мы с коллегой айосником в 14-м году учили их одновременнно - я котлин, он свифт). Ребята из бигтеха уже начали безумную модуляризацию своих проектов, что через год-два породит волну однояйцевых докладов на конференции "как мы ускорили сборку многомодульных проектов", то есть героически решили проблему абсолютной перегрузки сборки бесконечными градл-тасками, которую сами же и создали, решив что им нужна команда в 100 тел на одно маленькое приложение чтобы родить его не за 9 а за 0,09 месяцев и стало быть их детище должно быть попилено до рождения на 1000 частей, чтобы, стало быть, каждый рожал в день по нескольку десятков его кусков. И еще инфраструктурная команда, ежедневно принимающая роды (туши свет! они на свет лезут!).

    Чуть позже, где-то году в 15-м или 16-м мне коллега скинет ровно такую же статью на том же самом хабре, только переводную. И в ней уже будет мгла. То есть вы что-то иное нежели мглу могли застать только в университете, где время, по объективным причинам, остановилось. А в жизни до работы просто не сталкивались с зоопарками, карго-культом и кадрово-ориентированным программированием (спойлер - оно всегда именно таково) и его главным постулатом: время компа уже в 90-е перестало быть дороже времени человека, что и привело к техническому взрыву.

    Но это все лирика, вы вот скажите: вас самого не коробит от подстановки рядом слов "богобоязненный" и C#? Спрашиваю как сам бывший в несколько более далеком прошлом C# разработчиком.


    1. JordanCpp Автор
      04.04.2024 23:03

      Но это все лирика, вы вот скажите: вас самого не коробит от подстановки рядом слов "богобоязненный" и C#? Спрашиваю как сам бывший в несколько более далеком прошлом C# разработчиком.

      Нет.


      1. Pardych
        04.04.2024 23:03

        Ну я вот просто не знаю как можно играться в цпп-интероп и при этом бояться чего/кого бы то ни было, даже если это Бог.


        1. JordanCpp Автор
          04.04.2024 23:03

          Ну я вот просто не знаю как можно играться в цпп-интероп и при этом бояться чего/кого бы то ни было, даже если это Бог.

          Слава богу я атеист:) Ну вы же читали статью, она полна сарказма. Это был именно сарказм.


          1. Pardych
            04.04.2024 23:03

            я ждал что вы подыграете и напишете "с божией помощью"


    1. JordanCpp Автор
      04.04.2024 23:03

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


  1. vvbob
    04.04.2024 23:03
    +5

    Микросервисы и монолиты это да..

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

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

    В общем проще разрабатывать точно не стало.


    1. JordanCpp Автор
      04.04.2024 23:03
      +1

      Автоматизировать всё это конечно можно. Но взять и поднять весь проект на локальном ПК имея 100500 микросервисов, БД и остального. Понятно, что нужно подымать, именно те микросервисы которые участвуют в тестировании определенного функционала. Но как понять, что откуда берется, что запускать и т.д


      1. vvbob
        04.04.2024 23:03
        +3

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


        1. Vedomir
          04.04.2024 23:03

          Насколько я понимаю у микросервисов два преимущества - если у вас очень высокая нагрузка (Discord, Twitter и так далее), то их легче масштабировать и если у вас очень много разработчиков и куча команд, то легче организовывать совместную работу большого количества команд. Но вот если ни первого ни второго нет, то вы получаете только недостатки.


    1. iroln
      04.04.2024 23:03
      +2

      Никто на самом деле не знает, что такое "микросервис" и насколько он должен быть микро.
      Достаточно проектировать архитектуру в виде просто сервисов, пользуясь принципом бритвы Оккама, а не плодить "микросервисы" на каждый чих, раздувая сложность разработки, сопровождения, развертывания и т. д.

      Несколько сервисов можно поднимать локально через docker compose, это не так больно.

      Но и монолит один сервис можно написать вполне себе модульно со слабым зацеплением, что работать с ним будет удобно всем разработчикам в команде.

      Просто почему-то люди в IT отрасли сильно подвержены влиянию "авторитетных мнений", бездумному следованию за модными тенденциями и зачастую скатываются в карго-культы. Иногда смотришь на всё это и думаешь: "Ну что за дурдом, зачем люди всё это делают?"


      1. vvbob
        04.04.2024 23:03
        +1

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

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


        1. SpiderEkb
          04.04.2024 23:03

          Ну вот разница между микросервисами и модулями. Если я правильно понял, микросервис надо "поднять", а потом он будет болтаться и ждать когда кому-то понадобится.

          А модуль - он просто вызывается как внешняя функция (или процедура) синхронно или асинхронно, делает свое дело и завершает работу. Он должен просто быть в системе.

          Ну там есть особенности при синхронных вызовах в том же задании - группы активации, сохранения состояния памяти и т.п., но это уже платформозависимое.

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


          1. Vedomir
            04.04.2024 23:03

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

            Если у вас на модуль очень высокая нагрузка - то микросервис проще масштабировать со своей инфраструктурой.

            Я уже приводил в пример в соседней ветке вот эту статью - как раз наглядный пример, нагрузка в десятки тысяч запросов в секунду, отдельная команда, которая вполне может переписать сервис с Go на Rust никак не затронув другие сервисы.


    1. SpiderEkb
      04.04.2024 23:03

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

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

      Все это достаточно просто автотестами оборачивается....


      1. vvbob
        04.04.2024 23:03

        Это в теории все просто. На практике..

        Что-бы дернуть API, нужна авторизация, т.е. нужен поднятый сервис авторизации, для которого тоже нужны другие работающие сервисы и настроенная БД пользователей, хотя-бы тестовая. Ладно, авторизацию в принципе можно и выпилить или предусмотреть отладочную конфигурацию в каждом сервисе, с отключенной авторизацией, что-бы не мешала разработке. (хотя это тоже не всегда выход, отключите авторизацию, отладите, а потом на реальной системе нифига не работает, потому что каким-то запросам не хватает привилегий для работы, или еще что-либо в таком духе.
        К сожалению есть и другие сервисы, обычно нужные запускаемому для работы. Даже выполняя один запрос из API, он при этом может дернуть другие сервисы. Некоторые из этих сервисов требуют другие работающие сервисы.. В общем в итоге получается что поднимать приходится почти все.

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

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

        Скажете что мы не умеем эти МС готовить? Возможно, но вот пока что сколько я с ними не сталкивался, везде было примерно похожая ситуация, локальная отладка это что-то довольно адовое.


        1. nin-jin
          04.04.2024 23:03

          Я всё забываю в каком веке сейчас нахожусь, Докер ещё не изобрели?


          1. SpiderEkb
            04.04.2024 23:03

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


        1. SpiderEkb
          04.04.2024 23:03

          Мда...

          Тяжела и неказиста
          Жизнь простого программиста

          У нас всех этих проблем нет, к счастью. Поскольку пишем под IBM i (AS/400) которая работает на серверах с процессорами PowerS (у нас сейчас Power9), то все можно поставить и запустить только на тестовом сервере. Т.е. в лайтовом варинте (если с компа есть доступ на тестовый сервер) - запускаем gradle с нашими плагинами, оно все закидывает на сервер и устанавливает. Не в лайтовом - с локального компа вгружаем в гит (через VPN), идем на виртуалку (VDI), там подтягиваем из гита и опять gradle на сервер. Я предпочитаю этот вариант - так удобнее чем постоянно работать на виртуалке (а из внешнего контура доступа к тестовому серверу нет, только небольшой виртуальный сервер, но там не все можно развернуть, это так, для личных экспериментов всяких больше).

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

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

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

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

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

          Ну вот как пример. Есть у наших клиентов такой параметр - дата актуализации. Она хранится в отдельной таблице. Причем, по требованиям бизнеса, эта таблица историческая - там хранится вся история дат актуализации. Но в большинстве случаев нужна актуальная, последняя. Т.е. каждый раз искать в этот таблице последнюю (по истории изменений) ДА. Для этого был сделан ретривер, в котором был заложен этот поиск. Таблица ДА ведется специальной опцией - там тоже логика наворочена т.к. при изменении ДА нужно еще в ряде таблиц изменения внести.

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

          Модульность, независимость - все в наличии. Но никто никогда это не называет "микросервисами". И все это существовало еще в те времена, когда в микросервисами никто так не носился. Тут оно так с испокон веков работало и еще бог знает сколько проработает.


          1. Vedomir
            04.04.2024 23:03

            Технологии и хайп вообще волнами приходят и уходят. Я еще помню как дикий хайп был вокруг языков со сборщиком мусора, байт-кодом и виртуальной машиной (Java, C# и так далее). Теперь ситуация развернулась и дикий хайп уже вокруг компилируемых языков (Go, Rust). И таких примеров можно привести массу.


          1. Vedomir
            04.04.2024 23:03

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


  1. MiyuHogosha
    04.04.2024 23:03

    Особо ретивые ученики, уже отпраздновали кончину С++. Весь код в мире переписан на Rust. Но вот скажите мне, почему в Rust'е осилили безопасность, парсинг 100500 разных видов скобочек, но не осилили впилить исключения и нормальный ООП к которому все привыкли за 40+ лет. Это не безопасно?

    И медленно, если верить Линусу. Именно за исключения и ООП он отказывается принимать С++-подобные языки как языки программирования. А разработчики раста - его секта.


    1. SpiderEkb
      04.04.2024 23:03

      Мы на своей платформе гоняли плюсовые исключения. В целом - да, как только исключение пробрасывается за граница объекта в котором оно было создано, начинаются просадки производительности.

      Но на нашей платформе есть понятие "структурированная ошибка" и механизм системных исключений, позволяющий их пробрасывать куда угодно по стеку вызова. Так что стараемся использовать их.


  1. SkywardFire
    04.04.2024 23:03
    +3

    не осилили впилить исключения и нормальный ООП к которому все привыкли за 40+ лет

    Быть может, потому, что уйти от "нормального ООП, к которому привыкли за 40 лет" и было одной из основных идей Rust?

    Но, почему за ним идёт шлейф сектантства?

    а так ли это плохо?


  1. M0r71m3r
    04.04.2024 23:03

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

    Интересно послушать мнение автора насчёт ООП vs ФП (: