diff --git a/karamushko_maxim_lab_8/README.md b/karamushko_maxim_lab_8/README.md new file mode 100644 index 0000000..f215ef1 --- /dev/null +++ b/karamushko_maxim_lab_8/README.md @@ -0,0 +1,38 @@ +# Лабораторная работа №8 - Устройство распределенных систем +## ПИбд-42 || Карамушко Максим + +### Задание: +Написать небольшое эссе (буквально несколько абзацев) своими словами. + +1. Зачем сложные системы (например, социальная сеть ВКонтакте) пишутся в "распределенном" стиле, где каждое отдельное +приложение (или сервис) функционально выполняет только ограниченный спектр задач? +2. Для чего были созданы системы оркестрации приложений? Каким образом они упрощают / усложняют разработку и сопровождение +распределенных систем? +3. Для чего нужны очереди обработки сообщений и что может подразумеваться под сообщениями? +4. Какие преимущества и недостатки распределенных приложений существуют на Ваш взгляд? +5. Целесообразно ли в сложную распределенную систему внедрять параллельные вычисления? Приведите примеры, когда это +действительно нужно, а когда нет. + + +### Эссе на тему: "Про устройство распределенных систем" + +Распределенные системы представляют собой сложный, но крайне важный подход в разработке современных приложений. Такие проекты, как мессенджер Мессенджер, требуют высокой производительности, надежности и возможности масштабирования. Эти задачи особенно актуальны в условиях растущей нагрузки, и именно распределенная архитектура помогает их решать. Каждый компонент такой системы выполняет строго определенную функцию: например, аутентификация пользователей, рекомендации контента или управление медиафайлами. Ключевым преимуществом этого подхода является то, что сбой одного из сервисов не приводит к полной остановке всей системы — остальные модули продолжают работать в штатном режиме. + +Одним из инструментов, которые существенно облегчают управление распределенными системами, являются системы оркестрации приложений. Эти технологии позволяют эффективно координировать взаимодействие между отдельными сервисами, а также автоматизировать процессы их развертывания, обновления и масштабирования. Среди самых популярных инструментов можно выделить Kubernetes и Docker Swarm. Однако внедрение таких систем требует высокого уровня подготовки команды разработчиков, поскольку усложняет общую структуру проекта. + +Важной частью распределенных систем являются очереди обработки сообщений. Они обеспечивают асинхронное взаимодействие между сервисами, передавая данные и запросы в удобной форме. Использование очередей позволяет разгрузить основные сервисы, оптимизировать управление потоком данных и избежать перегрузки системы. Наиболее известными инструментами для реализации очередей являются RabbitMQ и Apache Kafka. + +#### Преимущества распределенных систем: +- Отказоустойчивость. Система продолжает работать, даже если отдельные компоненты выходят из строя. +- Масштабируемость. Добавление новых ресурсов позволяет легко увеличивать производительность. +- Балансировка нагрузки. Данные и запросы распределяются между несколькими серверами или узлами, что улучшает общую эффективность. + +#### Недостатки распределенных систем: +- Сложность разработки. Проектирование и реализация распределенной системы требуют больше времени и ресурсов, чем создание монолитной системы. +- Задержки взаимодействия. Монолитные системы имеют преимущество в скорости передачи данных между компонентами, так как всё происходит в рамках одного процесса. +- Высокие организационные затраты. Разработка, тестирование и поддержка распределенных систем требуют дополнительных усилий и инвестиций. + +Особое место в распределенных системах занимает применение параллельных вычислений. Этот подход может быть эффективным, если задачи независимы друг от друга и требуют высокой производительности, например, в обработке больших данных или сложных математических расчетах. Однако для небольших задач или операций, требующих строгой последовательности, таких как рекурсивное вычисление факториала, параллельные вычисления могут стать источником проблем и замедления. + +#### Вывод +Распределенные системы являются неотъемлемой частью современной ИТ-инфраструктуры. Они обеспечивают высокую производительность и надежность, что делает их оптимальным выбором для многих приложений. Однако успех их внедрения напрямую зависит от грамотного проектирования. Важно учитывать как преимущества, так и недостатки, чтобы выбрать подходящую архитектуру для конкретного проекта. Этот выбор становится залогом создания качественного продукта, способного выдерживать высокие нагрузки и обеспечивать стабильную работу даже в условиях сложных вызовов. \ No newline at end of file