# Лабораторная работа № 8. Как Вы поняли, что называется распределенной системой и как она устроена?

**Задание**

Написать небольшое эссе (буквально несколько абзацев) своими словами (пожалуйста не пользуйтесь гуглом :) ) на тему "Устройство распределенных систем". А помогут Вам в этом вопросы из списка:

1. Зачем сложные системы (например, социальная сеть ВКонтакте) пишутся в "распределенном" стиле, где каждое отдельное приложение (или сервис) функционально выполняет только ограниченный спектр задач?
2. Для чего были созданы системы оркестрации приложений? Каким образом они упрощают / усложняют разработку и сопровождение распределенных систем?
3. Для чего нужны очереди обработки сообщений и что может подразумеваться под сообщениями?
4. Какие преимущества и недостатки распределенных приложений существуют на Ваш взгляд?
5. Целесообразно ли в сложную распределенную систему внедрять параллельные вычисления? Приведите примеры, когда это действительно нужно, а когда нет.


## 1. Зачем "распределенный" стиль?
Распределенный стиль используется для:  
- Масштабируемости.  
- Отказоустойчивости.  
- Возможности обновлять/заменять отдельные компоненты без остановки всей системы.

## 2. Системы оркестрации (Kubernetes и др.)
**Назначение:**  
- Автоматизация развертывания, масштабирования и управления контейнерами.  

**Преимущества:**  
- Упрощают DevOps-процессы.  

**Недостатки:**  
- Требуют времени на изучение и настройку.  

## 3. Очереди обработки сообщений
**Назначение:**  
- Координация взаимодействия между сервисами.  
- Обеспечение асинхронности и распределение нагрузки.  

**Пример сообщений:**  
Данные или задачи, передаваемые между компонентами системы.  

## 4. Преимущества и недостатки распределенных приложений
### Преимущества:  
- Масштабируемость.  
- Отказоустойчивость.  
- Гибкость.

### Недостатки:  
- Сложность разработки.  
- Сложность сопровождения.  
- Сложность отладки.

## 5. Параллельные вычисления в распределенных системах
**Когда нужны:**  
- Интенсивные вычисления (анализ данных, рендеринг, ML).  

**Когда не нужны:**  
- Операции с низкой нагрузкой.  
- Задачи, где асинхронность покрывает все потребности.