Комментарии 4
Взамен этому мы получаем, на мой взгляд, гораздо больше
— ага, неконсистентные данные в продуктовом хранилище и геморой по их ручной починке
Спасибо, за комментарий.
Во-первых, надо сказать что за consistency надо следить всегда, даже при использовании реляционных СУБД. И если неправильно работать с транзакциями, то "ручну починку" можно получить и в реляционной базе.
Вторе, если просто попытаться заменить базу данных (с реляции на NOSQL) без внесения изменений в архитектуру, например, оставить stateless сервисы, которые раньше работали с реляционной базой, то результат будет печальный.
По-сути я и говорю о том, что нельзя просто взять и запилить микросервисы, нужно понимать что меняются подходы к проектированию системы — это распределенные вычисления. Нужно использовать кластера, распределенные журналы событий (Apache Kafka), event sourcing и тд.
Только в этом случае выгоды будут очевидными.
P.S. Ручная починка состояния — это вообще не вариант. Мы голосуем за Self-Healing Services.
Тут возникает проблема, ведь согласно закону Амдала, не каждый алгоритм поддается распараллеливанию, определяя, таким образом, фундаментальный предел эффективности решения вычислительной задачи на суперкомпьютерах. Для преодоления этого предела используются подходы распределенных вычислений.
У вас явное противоречие в построении мысли. Закон Амдала работает вне зависимости от того, распределенные вычисления у нас или нет. Ибо «предел эффективности параллелизации» — фундаментальный, исходя из того, что за алгоритм используется. Если определенная часть алгоритма непараллелизуема — сколько распределенных ресурсов не бросай на задачу, ничего не поможет. Распределенные вычисления хороши там, где действительно можно выжать много из большого числа процессоров — а значи алгоритм сам по себе имеет хорошую параллелизуемость «по Амдалу».
Антон, доброго времени суток!
Спасибо за комментарий, это однозначно "+", так как чтобы найти эту двусмысленность надо внимательно прочесть статью. Однако, противоречия в моих мыслях нет.
Тем более, что эта часть статьи просто, ну очень краткий, экскурс в историю.
Основная мысль все же — хотите внедрять микросервисы, разберитесь с теорией распределенных вычислений.
Дело в том, что различают вычисления:
- параллельные — вычисления в рамках одного компьютера, но с несколькими ядрами (aka суперкомпьютер, если ядер максимально возможное количество)
- распределенные — вычисления с использованием нескольких компьютеров объединенных по сети.
я описываю некую последовательность в историческом контексте, чтобы подвести к появлению задачи распределенных вычислений. Логика простая.
Однопроцессорный компьютер -> Многоядерный -> Суперкомпьютер -> Распределенные вычисления. Поэтому, закон Амдала упоминаю в контексте суперкомпьютера.
… фундаментальный предел эффективности решения вычислительной задачи на суперкомпьютерах.
Но Вы правы, закон Амдала описывает предел алгоритмических задач вне зависимости на одном многоядерном компьютере мы считаем или на нескольких компьютерах, объединенных по сети.
В качестве причин появления распределенныхы вычислений можно было бы указать еще возрастающие нагрузки и описывающую эти процессы "Теорию массового обслуживания", но это отдельная большая тема.
Микросервисная архитектура = распределенные вычисления