@oop_ru

Страница 458 из 785
Roman
19.01.2018
11:14:30
вот есть у меня система состоящая из 5-ти абсолютно независимых приложений, это че уже микросервисы?
Мне кажется граница того, когда твой сервис перестаёт быть «микро-сервисом» и становится просто «сервисом» сугубо в голове.

Roman
19.01.2018
11:15:15
Нет же метрик - типа до 10k sloc это микросервис, а если больше - то пиздец

Google
Sergey
19.01.2018
11:15:52
Базворд
либо ты не разбирался в вопросе))

рекомендую два видоса: https://www.youtube.com/watch?v=MjIfWe6bn40 https://www.youtube.com/watch?v=Fuac__g928E

Нет же метрик - типа до 10k sloc это микросервис, а если больше - то пиздец
если ты измеряешь "размер" строчками кода - ты уже проиграл)

SRP ты тоже так определяешь?

Roman
19.01.2018
11:37:11
а заодно расскажи что такое микросервис и что такое объект)
Микросервис и объект -- это сущность вроде компьютера в сети, которая скрывает в себе постоянный стейт и дает возможность общаться с собой только по средствам сообщений, которые описывают высокоуровневые цели.

Не могу представить их как разные сущности и дать им разные определения

Sergei
19.01.2018
11:42:45
Обьект это не только в контексте класса и создания экземпляра класса

Roman
19.01.2018
11:44:44
Утрируя, в чем отличие объекта от Вселенной?
Не обладаю должной компетенцией, чтобы ответить на этот вопрос

Sergei
19.01.2018
11:52:28
Вот например паттерн фасад, он нужен для того чтобы скрыть детали реализации какой то подсистемы, или же другими словами уменьшить coupling этой системы с другой и увеличить cohesion, подсистема это совокупность обьектов, которая в то же время сама является обьектом. Хотя вроде бы low coupling high cohesion было о классах и обьектах, но в этом случае он тоже применим.

Артур Евгеньевич
19.01.2018
12:34:18
Парни хотелось бы послушать ваше мнение. Если вкратце, считаете ли вы что для соблдения DIP нужно все классы маркирвоать интерфейсами и считаете ли вы абстракцией публичные методы класса? А вот полная версия. На работе случилась конфликтная ситуация(чувак уволился после двух недель работы) из за того что ему сделали много замечаний на код ревью по поводу избыточности интерфейсов. Он создал Интерфейс Point для точки на плоскости, и создал отдельные Интерфейсы для координаты X и Y. Ему написали что это лишнее, и вообще интерфейс тут не нужен, т.к не предполагаются иные реализации, а если вдруг когда то и понадобятся то тогда и можно будет выделить нужные мтеоды в интерфейс, а на данный момнет это преждевременная оптимизация. Также пытались аргументировать тем, что публичные методы класса, по сути и есть интерфейс, и ключевое слово interface не обязательно для завязки на абстракцию(кста у фаулера статья есть в которой он жалуется что слово interface крайне неудачное). Чел сказал что мы нарушаем принцип DIP и уменьшаем возможности для расширения и повторного исопльзования кода и уволился...что вы думаете по ситуации?

Adel
19.01.2018
12:35:10
не надо интерфейсов на сущности и VO.

Google
Adel
19.01.2018
12:35:52
я уже сталкивался с подобным.. это просто лишнее. у нас был проект где класс без интерфейса нельзя было создать. главный так хотел :) ничего кроме больших мучений это не принесло.

в С# это было. там все свойства приходилось копипастить из интерфейса.

Sergey
19.01.2018
12:40:24
Парни хотелось бы послушать ваше мнение. Если вкратце, считаете ли вы что для соблдения DIP нужно все классы маркирвоать интерфейсами и считаете ли вы абстракцией публичные методы класса? А вот полная версия. На работе случилась конфликтная ситуация(чувак уволился после двух недель работы) из за того что ему сделали много замечаний на код ревью по поводу избыточности интерфейсов. Он создал Интерфейс Point для точки на плоскости, и создал отдельные Интерфейсы для координаты X и Y. Ему написали что это лишнее, и вообще интерфейс тут не нужен, т.к не предполагаются иные реализации, а если вдруг когда то и понадобятся то тогда и можно будет выделить нужные мтеоды в интерфейс, а на данный момнет это преждевременная оптимизация. Также пытались аргументировать тем, что публичные методы класса, по сути и есть интерфейс, и ключевое слово interface не обязательно для завязки на абстракцию(кста у фаулера статья есть в которой он жалуется что слово interface крайне неудачное). Чел сказал что мы нарушаем принцип DIP и уменьшаем возможности для расширения и повторного исопльзования кода и уволился...что вы думаете по ситуации?
> Чел сказал что мы нарушаем принцип DIP он не понимает принцип DIP

основной вопрос когда ты применяешь DIP - это что и в какую сторону ты "инвертируешь"

если ты сделал модуль, в котором есть Point и PointInterface - то тут DIP и не пахнет ибо никакой инверсии модулей верхнего уровня не происходит

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

короч ты ничего не потерял, пусть оверинженерит в другом месте

Утрируя, в чем отличие объекта от Вселенной?
вселенная была бы объектом с низким кохиженом

Sergey
19.01.2018
12:47:46
ну то есть, давай так, все упирается в кохижен и каплинг)

у тебя есть объект, он должен быть кохизив а связанность должна быть снижена к максимуму (возможно путем введения новых объектов)

класс, объект в виде компьютера с приватной памытью и т.д.

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

Aleh
19.01.2018
12:49:34
ну я скорее про то, что объект это способ формальной записи некой ментальной модели. Т.е. мы можем что угодно представить объектом, в том числе и микросервис, и монаду, и вселенную

Sergey
19.01.2018
12:49:38
помимо "достать" еще может быть желание отправить эти данные)

Aleh
19.01.2018
12:49:50
то, что в некоторых языках там есть какой-то стейт и еще что-то, уже детали

Sergey
19.01.2018
12:50:19
Sergey
19.01.2018
12:50:31
в моем мозгу только такая аналогия более-менее укладывается

Aleh
19.01.2018
12:51:09
ну и поскольку мы моделируем что-то, то работают все принципы работы с моделями. Ограничение числа связей между разными моделями, увеличение связанности внутри модели это все не про объекты вообще, но работает в том числе и для объектов

Google
Sergey
19.01.2018
12:51:13
почему же?
Память в компьютере мутабельна. А мутабельный стейт в объектах чаще всего - проблема, чем решение.

Sergey
19.01.2018
12:51:30
ну и опять же...

тебя наверное слово "класс" смутило

Sergey
19.01.2018
12:52:13
тебя наверное слово "класс" смутило
Меня смутило слово "память"

Sergey
19.01.2018
12:52:26
посмотрю я на тебя как ты без стэйта будешь жить)

ну и всегда есть event sourcing

Sergey
19.01.2018
12:52:45
посмотрю я на тебя как ты без стэйта будешь жить)
А кто сказал что я буду жить без стейта?

Sergey
19.01.2018
12:52:51
ну тебя же память смущает

представь себе объект "Product Price". который представляет собой некую подсистему которая хранит стоимость продуктов. В его памяти в примитивном варианте мы можем наблюдать некую коллекцию productId => price

Sergey
19.01.2018
12:53:36
ну тебя же память смущает
Слово "память" меня смущало в определении которое вы дали классу/объекту

Sergey
19.01.2018
12:54:02
так вот, посомтри на мой пример с продукт прайсом

и попробуй уловить разницу между "объектом" и "инстансом класса"

Sergey
19.01.2018
12:54:49
Я выдрал это из какого то контекста?

класс, объект в виде компьютера с приватной памытью и т.д.

Sergey
19.01.2018
12:55:17
класс, объект в виде компьютера с приватной памытью и т.д.
я хз зачем я там слово класс написал, не передергивай

объекты - маленькие компьютеры со своей памятью

классы - это элемент структурного программирования и он вообще не причем тут

Google
Sergey
19.01.2018
12:56:09
посмотри на эрланг - там нет классов но зато есть "маленькие компьютеры со своей приватной памятью"

мы ведь не за объектами/классами гоняемся. а как снизить эффетк изменений между элементами системы

и в этом ключе аналогия с маленькими компьютерами работает хорошо

а "инстанс класса" - плохо

Admin
ERROR: S client not available

Max
19.01.2018
19:50:42
Господа, день добрый. Вопрос по микросервисам. Есть теоритическая задача - спарсить курсы валют (за n период, с сайта центробанка например), конвертировать их в csv/excel, положить на сервер в папочку (или возможно в какую бд), сервер потом отдает по soap\rest отчеты клиенту (и мб что-то от него принимает). Вопрос: на сколько микросервисов поделится эта задача? (спарсить с ресурса, преобразовать в csv\excel, положить\достать из бд или файла).

Артур Евгеньевич
19.01.2018
19:53:30
Я бы в 1 сделал

da horsie
19.01.2018
19:56:53
сколько микросервисов нужно чтобы вкрутить лампочку

Max
19.01.2018
19:57:04
Ок, спасибо, а в качестве примера, какую еще задачу в теории можно добавить, чтобы поделилось это больше чем на 1?

Артур Евгеньевич
19.01.2018
19:57:39
Ок, спасибо, а в качестве примера, какую еще задачу в теории можно добавить, чтобы поделилось это больше чем на 1?
Микросервисы это больше про инкапсулирования процесса разработки отдельных частей функционала.

da horsie
19.01.2018
20:00:18
Ок, спасибо, а в качестве примера, какую еще задачу в теории можно добавить, чтобы поделилось это больше чем на 1?
Чтобы имело смысл говорить о микросервисах/каплинге/single responsibilty и прочей хероте нужно знать, как у тебя меняются требования к системе. Нужно видеть динамику.

Нужно кино, а не одна фотография.

Adel
19.01.2018
20:02:11
нужно боооольше микросервисов! Зачем? Написать новую крутую строчку в резюме.

Max
19.01.2018
20:06:06
У меня это просто очередная классическая бессмысленная задача в универе - спарсить с центробанка курсы, оформить их в excel\csv, отдать клиенту файлик, примерно так (+ клиент еще может что-то класть сам). Хотелось попробовать сделать микросервисами, т.к. как еще учить себя чему-то новому, но раз бессмысленно - ок, благодарю за мнения.

Maksim
19.01.2018
20:08:32
полумакросервис)

там явно задача в другом стояла) разные адаптеры, разные кросс курсы и т.д.)

Google
Maksim
19.01.2018
20:09:10
ну типа проявить смекалку)

Maksim
19.01.2018
20:09:43
месье знает толк)

Sergey
19.01.2018
20:09:52
не считаю это извращением

тут хоть можно пару экторов выдумать

Maksim
19.01.2018
20:10:09
а они там нужны?)

Sergey
19.01.2018
20:10:28
нет конечно)

ну как....

у нас есть эктор который хранит курсы и эктор который парсит

по условию задачи у тебя ж источника данных два

da horsie
19.01.2018
20:11:25
ну типа проявить смекалку)
прояви смекалку и попробуй сначала написать тесты, а потом код

Страница 458 из 785