DAS_2023_1/senkin_alexander_lab_8/README.md

24 lines
5.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Лабораторная работа №8 - Как Вы поняли, что называется распределенной системой и как она устроена?
Задание: Написать небольшое эссе (буквально несколько абзацев) своими словами (пожалуйста не пользуйтесь гуглом :) ) на тему "Устройство распределенных систем". А помогут Вам в этом вопросы из списка:
- Зачем сложные системы (например, социальная сеть ВКонтакте) пишутся в "распределенном" стиле, где каждое отдельное приложение (или сервис) функционально выполняет только ограниченный спектр задач?
- Для чего были созданы системы оркестрации приложений? Каким образом они упрощают / усложняют разработку и сопровождение распределенных систем?
- Для чего нужны очереди обработки сообщений и что может подразумеваться под сообщениями?
- Какие преимущества и недостатки распределенных приложений существуют на Ваш взгляд?
- Целесообразно ли в сложную распределенную систему внедрять параллельные вычисления? Приведите примеры, когда это действительно нужно, а когда нет.
# Эссе
Распределенные системы - это такие системы, в которых программный продукт разбит на несколько сервисов, зачастую взаимодействующих друг с другом.
Распределенные системы набирают популярность, потому что приложения в наше время сильно разрастаются и их становится все труднее поддерживать, масштабировать, разобраться в старом коде. Для этого стали пользвоваться микросервисной архитектурой, которая решает эти проблемы.
Микросервисная архитектура имеет плюсы и минусы. Из плюсов опять же упрощение поддержки продукта, его масштабирования и легче прийти новому человеку на проект, за счет более читабильного кода. Также это повышенная отказоустойчивость и производительность, так как можно развернуть много экземпляров одного сервиса, можно развернуть и экземпляры монолита, но он будет съедать много ресурсов, в отличие от сервисов.
Из минусов можно выделить сложность разработки и ее дороговизна, нет смысла разрабатывать маленькое приложение или маленькой команде распределенное приложение.
Из популярных оркестраторов можно выделить kubernetes. Он отлично справляется с задачей создания, поддержания распределенного приложения за счет развертывания контейнеров. Также он удобен для поддержания работоспособности системы и распределения нагрузки, за счет его функций(не буду их описывать).
Сложно сказать, когда стоит а когда не стоит внедрять параллельные вычисления в распределенное приложение, так как все познается с опытом, и в некоторых моментах остается только с помощью практики выяснять какой способ выбрать. Зачастую нужно внедрять параллелизм при подключении клиентов на сервисы, при работе с брокерами также можно подключение вынести в отдельный поток.
При работе с микросервисной архитектурой часто приходится прибегать к использованию брокеров сообщений. Они помогают в общении сервисов друг с другом. С помощью брокеров мы можем сделать так, чтобы от одного сервиса сообщения доходили до нескольких сервисов за раз. В качестве сообщений может подрузамеваться какая-то информация, которая передается через брокер.