Почему Дядюшка Боб обидел сервисы?

  Рет қаралды 13,361

S0ER

S0ER

2 жыл бұрын

#soer #itubeteam
Основной канал для общения и публикации новых видео - Телегарм - t.me/softwareengineervlog
Спонсорство - donate.s0er.ru
Сайт платным контентом - soer.pro
Зеркало для видео Дзен Видео - zen.yandex.ru/id/5f578bdf22e2...
GitHub - github.com/soerdev
Чат для программистов - / discord
Группа ВК - codeartblog

Пікірлер: 51
@S0ERDEVS
@S0ERDEVS 2 жыл бұрын
Моя телега t.me/softwareengineervlog
@vovasokolov768
@vovasokolov768 2 жыл бұрын
я понимаю что это подкаст но данную тему мне кажется стоит визуализировать и показывать конкретные примеры когда плохо, и когда хорошо с данными и диаграммой общения между сервисами тогда и проще, чем в голове это представлять, и выводы лучше запоминаются
@saint8283
@saint8283 2 жыл бұрын
Так все вроде просто. Если я правильно понял, то задача должна быть максимально конкретной, тогда она будет универсальной по внешним признакам. Прасинг Json файлов конкретная задача? Да. И при этом она нужна везде. Но ей грозит отдельная функция, а не сервис. Поэтому второе требование, задача должна потреблять ресурсы, чтобы ее было рентабельно выносить. Автор же привел в пример задачу хранения данных, почтовый сервис и онлайн карты. Мне приходит в голову распознавание лиц, маршрутизация, оркестрация, логирование с аналитикой. Если разбивать бизнес логику, тот тут надо прогнозировать, это уже не из области паттернов, а про аналитику. Вообще советуют начать с монолита, а потом отделять. А так принцип тот же что и везде. Что функция, что класс, что компонент должны выполнять конкретную задачу, тогда в больше всяких мест их можно будет запихнуть))) Это и есть low coupling, high cohesion.
@AlexP-jc7rz
@AlexP-jc7rz 2 жыл бұрын
По-моему, Мартин в первую очередь как раз объясняет различия между хорошей архитектурой со слабым зацеплением и сильной связностью и плохой, когда наоборот, и приводит пример, когда сервисы сильно зацеплены и соответственно при изменении данных, это изменение проходит через все сервисы - как пример как раз плохой архитектуры. Далее он объясняет принципы разбиения на компоненты, чтобы уменьшить зацепление и увеличить связность, и говорит, что компонент это может быть как либа, так и сервис. Эта основная идея и заложена в Agile principles и Clean architecture Мартина, причем вторая книга действительно довольно поверхностно проходится по проблеме (у нее и объем 200-300 страниц), возможно поэтому складывается такое впечатление что Мартин топит против SoA, но это не так. Он топит против именно кривого SoA и объясняет, что сам по себе SoA, то есть микросервисы - не панацея, и там точно также важна правильная, "чистая", архитектура. В Agile principles есть даже отдельный пример иллюстрирующий этот случай.
@ITKAMASUTRA
@ITKAMASUTRA 2 жыл бұрын
За вектор поразмыслить - лайк Соеру! Особенно за… несколько часов - прочитал 🤪 📚
@vyacheslavgvorus3883
@vyacheslavgvorus3883 2 жыл бұрын
Техника чтения накось
@grommaks
@grommaks 2 жыл бұрын
Гладко было на бумаге, но забыли про овраги Джуны пишут сервера, старички побитые опытом пишут сервисы…даже в монолите можно написать описанный сервис Написать правильно новую службу, это дорого и требует огромных навыков у руководства (лиды, архитекторы, овнеры)…реальность слишком сурова… ещё и скрам подходы часто трактуются таким образом, что спринт производит юзер стори, если юзер не пощупал в конце спринта, значит ничего не наработали…вот из-за этого много кто разрабатывает апи сервиса и сразу же его интегрирует в одном спринте, редактируя по пути версию апи и клиентский код. Да и для бизнеса требования к сервису, часто это потребности клиентского кода. В видео примеры сервисов это уже устоявшиеся службы, почтовик, БД и т.д. Где АПИ разработан десятки лет назад (SQL это АПИ) Возможно стоит прокачивать навыки создания того самого апи и думать не от потребностей клиента, например в этой книге много материалов на подумать Проектирование веб АПИ (Арно Лоре)
@romanlunin386
@romanlunin386 2 жыл бұрын
Спасибо за труд, никогда не задумывался над такими, казалось бы, незначительными семантическими деталями, но после просмотра ваших видео начинаю по другому смотреть на многие вещи в своей работе.
@user-yb5rj1or4f
@user-yb5rj1or4f 2 жыл бұрын
А теперь бы про микросервисы, и их место в сервисно-ориентированной архитектуре
@avisalon4730
@avisalon4730 2 жыл бұрын
Спасибо за видео! Хорошое объяснение. До этого момента я думал что микросервисная архитектура это модная безсмыслица.
@m19stv
@m19stv Жыл бұрын
Очень хорошую мысль извлёк из ваших слов и мнения. Спасибо вам большое!
@Gabriel-hg7fl
@Gabriel-hg7fl 2 жыл бұрын
Интересно было бы послушать про микросервисы!
@realfootball338
@realfootball338 2 жыл бұрын
Потому что их одобрил дядя Сэм 👉. Не знаю как на беке - на фронте микрофронтенды помагают увеличить объемы работы, занять по больше персонала и отмыть по больше баблишек.
@user-ur4ev7vl6c
@user-ur4ev7vl6c 2 жыл бұрын
так же и на бэке
@drovoseg
@drovoseg 2 жыл бұрын
На бэке еще хуже, там появляется необходимость распределенных транзакций и проблемы многопоточности
@user-ur4ev7vl6c
@user-ur4ev7vl6c 2 жыл бұрын
@@drovoseg Можно добавить - отсутствие архитектора
@soltaurus
@soltaurus 2 жыл бұрын
Интересно, благодарю
@edmond-dantes-1796
@edmond-dantes-1796 2 жыл бұрын
Вот бы теперь послушать чем отличаются сервисы и микросервисы
@user-mo9jb1bx1b
@user-mo9jb1bx1b 2 жыл бұрын
Спасибо за разъяснение!
@vic7871
@vic7871 2 жыл бұрын
Спасибо!
@dzeensibir2341
@dzeensibir2341 2 жыл бұрын
Сделай выпуск пожалуйста подробнее про микросервисы, почему везде в паутине твердят что Go лучший язык для них?
@bubblesort6368
@bubblesort6368 2 жыл бұрын
Ну типа сравнительно простой в изучении, довольно шустрый, нет многотонных фреймворков, собирается всего в один бинарник (можно упростить процесс деплоя). В остальном такой же яп как и все остальные...
@phat80
@phat80 Жыл бұрын
1. Быстрая компиляция - в отличие от других компилируемых языков 2. Достаточно простой синтаксис - в отличие от C++ или Rust 3. Скорость выполнения с CG - в отличие интерпретируемых языков и даже в какой-то мере по сравнению с языками, которые выполняются с помощью VM 4. Легкая и понятная многопоточность (для тяжелых сервисов это особенно важно) - в отличие от любого другого языка, который ее поддерживает 5. Статическая типизация - в отличие от JS или Python 6. Стандартная библиотека в большинстве случаев обеспечит все, что необходимо, чтобы запустить микросервис без чего бы то ни было еще. Просто запустил бинарные и сервис работает.
@basilboluk
@basilboluk 2 жыл бұрын
Спасибо, нашёл 4 книги Роберта Мартина. Прочитаю обязательно.
@ostrov11
@ostrov11 2 жыл бұрын
... пишите монолиты, когда и если придёт время нужды в "сервисах" к тому моменту вы уже должны быть в состоянии отдать на аутсорс, или начинайте писать новый монолит ))
@torburgmax
@torburgmax 2 жыл бұрын
а как субд нам может отказать в обслуживании?
@david_shiko
@david_shiko 2 жыл бұрын
Интересно, но водички много.
@skynowa2626
@skynowa2626 2 жыл бұрын
Сервисный сервис
@oeaoo
@oeaoo 2 жыл бұрын
На мой взгляд, зацепление тут не при чем. Сервис - это терминология логического (абстрактного, доменного) уровня, а сервер - это техническое (физическое) понятие. Зацепление же - мера взаимосвязи. Сервер может предоставлять разные сервисы или не предоставлять вообще (какие-нибудь крон джобы). И у сервера может быть как низкое так и высокое зацепление и у сервиса. Если утрировать, это как сказать что если у чего-то скорость низкая то оно теплое, если высокая - оно мягкое. Короче, немного бредово, как по мне.
@user-hc1hl2nx8e
@user-hc1hl2nx8e 2 жыл бұрын
Речь же про "софтварный" сервер, в контексте "клиент-серверного" взаимодействия. А "сервис" в контексте SOA и далее вся разница в видео разжевана.
@diatm1506
@diatm1506 2 жыл бұрын
Я всё думаю в бд связь one to mony albums, genres вот думаю в NestJs контролере дёргать 2 сервиса или создать 2 метода 1 сервиса или в сервисе дёргать 2 репозитория или фильтровать с помощью queryParams по году и жанру с одим сервисом, контролером и репозиторием) В angulare с сервисами проще)
@bubblesort6368
@bubblesort6368 2 жыл бұрын
Вы не про те сервисы думаете) В данном видео речь идёт о сервисе который поднимается как отдельное приложение в рамках другого процесса и общается с вашим приложением через HTTP запросы, а не сервис в виде класса в вашей приложеньке. Вы думаете о сервисах в контексте DDD, а тут этот термин используется в рамках сервисной или микросервисной архитектур, что совершенно разные вещи.
@diatm1506
@diatm1506 2 жыл бұрын
@@bubblesort6368понял спосибо у меня монолит)
@petrplotnikov4307
@petrplotnikov4307 2 жыл бұрын
я так понял, сервис это отдельное маленькое приложение, из этих мини приложений как конструктор собирается большое приложение... если нам какой-то сервис не подходит, легко заменяем его, при этом само приложение не меняется.. а что тогда приложение? это только название, обедняющее различные сервисы?
@itcloudguy
@itcloudguy Жыл бұрын
да
@AlexAlex-ms3bg
@AlexAlex-ms3bg 2 жыл бұрын
Так и не понял почему дядя Боб обидел сервисы
@konstantinchvilyov9602
@konstantinchvilyov9602 2 жыл бұрын
Думаю, что для ясного понимания необходимо точно переводить "service" и однозначно называть по-русски что подразумеваешь под словом "сервис": 1.Услуга. 2.Обслуживание. 3.Служба.
@xander-on-the-earth
@xander-on-the-earth 2 жыл бұрын
Вы затронули очень острую тему, сейчас такой хейт поднимется. А по-существу, конечно же, правильно. Причём, не только для темы данного ролика - это повсеместно. Иногда можно увидеть целые лекции, где люди пытаются объяснить что-то, хотя достаточно было бы дать точный, не синонимичный перевод. Достаточно взглянуть на инструкцию к любому лекарству в аптеке, чтобы осознать масштаб языковой катастрофы.
@madalex8223
@madalex8223 2 жыл бұрын
Что-то лайков маловато
@SlavaCh
@SlavaCh 2 жыл бұрын
Возвращение ошибки с сервера не есть отказ от выполнения обслуживания?
@itcloudguy
@itcloudguy Жыл бұрын
Да. Ошибка от СУБД означает, что "я не понял, что ты имеешь в виду и не могу выполнить запрос. Если напишешь запрос, который я пойму, то выполню". Потому что это СУБД. И она не вернёт ошибку если ресурс просто не найден.
@stanislavsh6582
@stanislavsh6582 2 жыл бұрын
Ну не знаю... Вот допустим разработчики стороннего сервиса - решил поменять свое апи, и при этом забил на обратную совместимость. Что с этим делать? Ну, типа для примера та же СУБД, вот решили разработчики - что Дата-Время без часового пояса не имеет смысла, с новым апдейтом - все ваши транзакции без пояса - отфутболиваются и настойчиво просят дату-время. Вы конечно можете перейти на другую СУБД, но у вас много своего кода, плюс плюшек куча у той СУБД и вообще, в итоге - вы скорее намутите во всех местах со врпеменем-датой какой-нибудь костыль(ну или баналный перехватчик делаете, который добавляет этот самый часовой пояс если надо), чтобы таки время-дату использовать, если хотите последнюю версию использовать. А возможно вы и хотите, ведь помимо вот таких вот ломающих изменений - там нужные вам плюшки, которых еще и ни у кого нет, еще и миллионы денег заплочены. Короче. Я к чему. К тому что видимо я что-то не понимаю.
@itcloudguy
@itcloudguy Жыл бұрын
Это какая же такая СУБД, чтоб разработчики так извращались? Само ядро любой СУБД это ее типы данных, разработанные раз и навсегда. Изменив что-то в типах можно просто выкинуть продукт на помойку. Вы о чём? О самописной может?
@stanislavsh6582
@stanislavsh6582 Жыл бұрын
​@@itcloudguy Пример был гипотетический, на основе реального провайдера pgSql для efCore в дотнете, когда в разработчики с той стороны решили, что все, мы будем кидать эксепшн если не передать таймзону для полей с временем(те что просто DateTime). Да, там дали возможность и по старому работать, но пометили это как легаси. Ну так вот, из-за этого, конкретно у нас - пришлось на время всю разработку остановить. А почему? Потому что - вот, они порешали, что не кошерно и вообще - в дотнете некрутое время, а мы - хотим круто, потому - страдайте. Весело - офигеть.
@DeceasedMinstrel
@DeceasedMinstrel 2 жыл бұрын
Использовать слова "служба" и "сервис" как имеющие разный смысл в русском языке намного проще, чем в английском.
@itcloudguy
@itcloudguy Жыл бұрын
Они не о разном смысле. Слово "сервис" - иностранное. И на русском означает "служба". Никак иначе.
@DeceasedMinstrel
@DeceasedMinstrel Жыл бұрын
@@itcloudguy Вот и я о том. Автор ролика использует эти слова как имеющие разный смысл. И очень интересно, какой англоязычный смысл он имеет в виду, говоря "служба".
@EshkinKot1980
@EshkinKot1980 5 ай бұрын
Дичь лютая! "Сервис, сильно зацепленный на логику вашего приложения, является просто вынесенной службой." А слово service как с английского переводится? Чуть ранее в качестве сервиса была упомянута СУБД. ЧЁ??? Где тут низкое зацепление? Разве приложение не содержит слой моделей, которые в точности повторяют структуру таблиц? Или, может быть, приложение продолжает работать после того, как сервер БД прилег?
@worddoc4322
@worddoc4322 2 жыл бұрын
Побуду немного душным и скажу, что вы путаете связанность с зацеплением
@AlexP-jc7rz
@AlexP-jc7rz 2 жыл бұрын
Это вы путаете, потому что связанность это и есть зацепление (coupling), вы перепутали ее со связностью (cohesion), что суть характеристика модуля, когда в нем содержатся близкие по смыслу концепции (это хорошо). Зацепление - это плохо, это количество внешних зависимостей модуля, чем их больше, тем меньше связность модуля и тем хуже.
@worddoc4322
@worddoc4322 2 жыл бұрын
@@AlexP-jc7rz Оу, благодарю, буду внимательнее
JWT как строить архитектуру
28:36
S0ER
Рет қаралды 28 М.
THEY made a RAINBOW M&M 🤩😳 LeoNata family #shorts
00:49
LeoNata Family
Рет қаралды 34 МЛН
KINDNESS ALWAYS COME BACK
00:59
dednahype
Рет қаралды 139 МЛН
3M❤️ #thankyou #shorts
00:16
ウエスP -Mr Uekusa- Wes-P
Рет қаралды 14 МЛН
How Many Balloons Does It Take To Fly?
00:18
MrBeast
Рет қаралды 47 МЛН
Проектирую архитектуру чата
16:28
Куда пойти ИТишнику  (Локомотивы в ИТ часть 2)
2:41
истории и it от Кирилла
Рет қаралды 129
Разбираюсь в API крутых команд
28:01
Дофаминовая яма. Как мы губим свой мозг
27:24
Андрей Курпатов
Рет қаралды 4,2 МЛН
THEY made a RAINBOW M&M 🤩😳 LeoNata family #shorts
00:49
LeoNata Family
Рет қаралды 34 МЛН