Merge pull request 'alexandrov_dmitrii_lab_8 is ready' (#74) from alexandrov_dmitrii_lab_8 into main

Reviewed-on: http://student.git.athene.tech/Alexey/DAS_2023_1/pulls/74
This commit is contained in:
Alexey 2023-12-28 11:19:46 +04:00
commit e07dde810d

View File

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