All streams
Search
Write a publication
Pull to refresh
25
0.1
Сергей Тарасов @cross_join

Ведущий инженер R&D

Send message

не совсем понял, в вашем "реальном мире" кафка (шина сообщений) заменяет Монгу (СУБД)? А бизнесу, у которого целостность была "из коробки" с 1980-х годов, вы теперь предлагаете "целостность вам нужна в ограниченной области"?

Вопросы получились риторическими.

Проблема когерентности кэшей перпендикулярна сервисности или монолитности архитектуры, она начинается с N=2

В идеальном мире при любой архитектуре нет неявных зависимостей. Там, например, на каждый чих меняется версия API, а микробаза данных у каждого микросервиса своя. Жаль, автор не стал описывать стоимость поддержки N баз данных и распределенных транзакций.

Тесно перекликается с написанной 4 года назад "Блеск и нищета микросервисов"

Про CRUD-ошлёпство и Митрофанушек: ttps://blog.arbinada.com/ru/category/01704-crud.html

... а DDD, в свою очередь, подойдет для систем симуляции, в отличие от информационных систем, где модель 100% анемичная по определению

https://blog.arbinada.com/ru/category/01705-clean-architecture.html

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

Некрокомментарий, но со стороны своего опыта автоматизации ИС должен вас поддержать :)

https://www.linkedin.com/posts/sta_чистая-архитектура-и-domain-driven-design-activity-7110941995493122049-61iC

Если это была реплика ко мне, то цитата чужая.

Расширение темы называется флудом. Если уж расширять, так с музыкой! Возьмем SMP на 1000 ядер и запустим на каждом по строчке. Попробуйте так с циклом.

Проверьте оба варианта, если есть какие-то сомнения. Только компилируйте без оптимизации.

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

Даже первокурснику известно, что

int sum = 0;
for (int i = 0; i < 1000; ++i) {
sum += f(i);
}

выполняется медленнее, чем

int sum = 0;
sum += f(0);
sum += f(1);
...
sum += f(999);

А если функцию раскрыть, то еще быстрее.

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

Споры о накладных расходах из-за таблицы виртуальных методов велись 30 лет назад. Наверное, имеет смысл просто поднять архивы и привести выводы :)

"Смешались в кучу кони, люди..."

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

Вера в LLM несколько наивна, но объяснима: любой красиво и правильно говорящий человек априори кажется умным и понимающим суть того, что он высказывает.

На выбор:

- Design Develop Destroy (выкрасить и выбросить)

- Davai Davai Davai (Go, go, go !)

- Damn Dumb Domain (программист-бухгалтер)

В правильной организации разработчики делятся на core platform и functional modules.

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

Блеск и нищета микросервисов

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

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

Итого: в ТЗ можно обойтись одной строчкой: "Система должна удовлетворять заказчика"

"Зачем учить географию, если есть извозчики?" (с) "Недоросль"

Information

Rating
3,381-st
Registered
Activity