пятница, 13 декабря 2013 г.

[prog.os] Вынесу из комментариев: зачем и для чего нужны облачные ОС

В комментарии к предыдущей заметке написал много слов. Имхо, этот текст, в слегка модифицированном виде, вполне можно вынести в отдельную заметку для пояснения моей мысли на счет потенциальной применимости микроядерных ОС РВ для облачных нужд. Заодно просьба к читателям, которые плотно находятся в теме обслуживания серверов и софта в облаках, поправить мое видение. За что заранее благодарю.

Облако -- это куча серверов, отданных под выполнение какой-то задачи (какого-то приложения, вроде blogger-а).

Поскольку приложение не может крутиться на голом железе, на серверах (на каждом из серверов) должна быть развернута ОС. В случае традиционных ОС обозначаются две проблемы:

1) сложность администрирования и настройки. Т.е. каждый сервер должен быть правильно сконфигурирован, на него должен быть залит необходимый промежуточный софт (jvm, http-сервер, sql или nosql сервер, какой-нибудь mq). Должны быть определены юзвери, каждому из которых должны быть даны соответствующие пароли и явки имена, пароли и права доступа...

2) оверхед во время исполнения приложения. Традиционная ОС выполняет свой код в kernel space, а код приложения в user space, переключение контекстов -> лишние расходы. Плюс, запущенное в облаке приложение традиционная ОС рассматривает просто как какое-то приложение. Соответственно, какого-то специального тюнинга сервисов ОС под это приложение нет.

Облачные ОС -- это ОС, которые ставятся на сервера и устраняют две вышеуказанные проблемы. Т.е. это не традиционные универсальные ОС, которые поддерживают вытесняющую многозадачность, одновременную работу нескольких пользователей, безопасность и пр. А лишь тонкий промежуточный слой, дающий приложению возможность работать не на голом железе. Соответственно, должно упроститься развертывание образа ОС с приложением. Фактически, когда пользователь деплоит свой архив с приложением может строится образ ОС с этим приложением в виде большого бинарного файла, этот файл достаточно скормить гиппервизору и сразу получить на машине полностью готовый инстанс приложения с минимальным окружением.

Так же должны снизиться накладные расходы на работу приложения. Т.е., в облачной ОС базовые сервисы ОС работают в том же адресном пространстве, что и само приложение. При этом нет накладных расходов на переключение контекстов, не нужно поддерживать жесткую вытесняющую многозадачность, нет необходимости обеспечения безопасности (например, при каком-то "системном" вызове не нужно проверять дескрипторы безопасности, права пользователя, от которого приложение запущено, уровни привилегий и доступность ресурса для этого уровня/пользователя) и т.д. и т.п.

Так вот, вся эта кухня с объединением ядра ОС и модулей приложения в один образ уже давно была разработана и опробована на ОС РВ. Но явно пока не востребована в облаках.

Комментариев нет: