Size: a a a

Обсуждения техдирские

2018 May 27

AK

Aleksandr Komlev in Обсуждения техдирские
по идее для микросервисов должен работать закон Амдала, с адаптацией, конечно.
в любом проекте есть некоторое количество микросервисов до которого этот подход имеет эффективность и как минимум не ухудшает ситуацию
источник

AK

Aleksandr Komlev in Обсуждения техдирские
эмпирически можно предположить, что для проектов среднего размера это до 10, для крупного до 100. проектам ниже среднего микросервисы скорее не нужны вообще.
источник

DS

Dmitry Simonov in Обсуждения техдирские
Aleksandr Komlev
эмпирически можно предположить, что для проектов среднего размера это до 10, для крупного до 100. проектам ниже среднего микросервисы скорее не нужны вообще.
Саш! Закон Амдала - это про ограничение на рост производительности при распараллеливании вычислений: «В случае, когда задача разделяется на несколько частей, суммарное время её выполнения на параллельной системе не может быть меньше времени выполнения самого длинного фрагмента».

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

ML

Maksim Lapshin in Обсуждения техдирские
Мне кажется, что за микросервисы оголтело топят те, кто никогда не отлаживал в сложной системе рейс сложного графа http вызовов
источник

ML

Maksim Lapshin in Обсуждения техдирские
Ну или отлаживал, но хочет что бы другие тоже пострадали
источник

DS

Dmitry Simonov in Обсуждения техдирские
Maksim Lapshin
Мне кажется, что за микросервисы оголтело топят те, кто никогда не отлаживал в сложной системе рейс сложного графа http вызовов
Не всегда. Я видел несколько огромных монолитов из-за которых разработка стала раком.
источник

ML

Maksim Lapshin in Обсуждения техдирские
Там, где в монолите простой синхронный вызов метода в коде, который весь синхронно выкатился на прод, в микросервисной архитектуре каждый вызов метода это сложнейшая конструкция по дискавери сервиса, авторизации, постановке запроса в очередь, отправке запроса и самое зубодробительное: интерпретация неуспешного результата
источник

ML

Maksim Lapshin in Обсуждения техдирские
Надо делать повтор или нет
источник

DS

Dmitry Simonov in Обсуждения техдирские
Вот про это как раз Ваня Фролов писал!
источник

DS

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

ML

Maksim Lapshin in Обсуждения техдирские
Ведь на пути к микросервисам надо сталкиваться с ситуацией, когда в цепочке из10 сервисов сбоит последний
источник

ML

Maksim Lapshin in Обсуждения техдирские
А чего стоит выставление таймаутов: везде поставили по минуте и длинная цепочка начинает отказывать одновременно!
источник

DS

Dmitry Simonov in Обсуждения техдирские
Dmitry Simonov
https://www.youtube.com/watch?v=FZEmZiMsm-0

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

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

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

2. Это позволяет делать сложную многоступенчатую асинхронную обработку различных бизнес-задач. Уже приводился пример с отправкой почты, но он достаточно примитивен. Более подробно см. Сети Петри (1)

3. Реализация такого функционала очень удобна для организации  сколько-нибудь сложных бизнес-процессов.

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

5. Более подробно можно посмотреть книжку Enterprise Integration Patterns (3) Книжка большая и несколько водянистая (так было принято писать в нулевые, что уж тут поделаешь)

6. Примеры реализации: Apache Camel, Spring Integrsation, Spring JMS, MDB из JEE. Различные реализации BPMN - jBPM, Activiti, Camunda... (интересно, что эти реализации используют СУБД, а не системы передачи сообщений). Отчасти DBMS_SCHEDULER из Oracle, pgpro_scheduler и много чего еще. Есть что-то для C#, но тут я точно не могу сказать.

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


[1] https://ru.wikipedia.org/wiki/Сети_Петри
[2] https://en.wikipedia.org/wiki/Two-phase_commit_protocol
[3] http://www.enterpriseintegrationpatterns.com/

(c) fb.com/vpupken
Вот это сообщение, @maxlapshin ! У Тебя оно видно в истории?
источник

ML

Maksim Lapshin in Обсуждения техдирские
Ага, видео надо посмотреть
источник

DS

Dmitry Simonov in Обсуждения техдирские
Не, на видео просто отрывок из фильма "Американские боги". Читай текст и ссылки.
источник

ML

Maksim Lapshin in Обсуждения техдирские
Ага, спасибо
источник

DS

Dmitry Simonov in Обсуждения техдирские
@IvanFrolkov бесценен именно в том, что всегда может дать справку о том, как вроде бы новая проблема, если поскрести ногтем, оказывается старыми фамильными граблями, - на них ещё наш дедушка наступал!
источник

AK

Aleksandr Komlev in Обсуждения техдирские
Dmitry Simonov
Саш! Закон Амдала - это про ограничение на рост производительности при распараллеливании вычислений: «В случае, когда задача разделяется на несколько частей, суммарное время её выполнения на параллельной системе не может быть меньше времени выполнения самого длинного фрагмента».

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

DS

Dmitry Simonov in Обсуждения техдирские
Aleksandr Komlev
я знаю про что закон, я же написал, что аналогия его. у вычислений эффективность распараллеливания зависит от доли последовательных операций, у микросервисов эффективность и в конечном счете надежность от доли операций в service mesh в нем.
Распараллеливание разработки упрётся скорее в бабло и нехватку кадров. Но мысль интересная!
источник

DS

Dmitry Simonov in Обсуждения техдирские
Aleksandr Komlev
я знаю про что закон, я же написал, что аналогия его. у вычислений эффективность распараллеливания зависит от доли последовательных операций, у микросервисов эффективность и в конечном счете надежность от доли операций в service mesh в нем.
Хм... Ну не знаю... Я по опыту разработки рекламных сервисов rtb предпочитаю делить сервис на интерфейсную часть, архивную и крутилку-скорострелку.

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