Мы начинаем новый проект и внедряем на базе нашей корпорации облако openstack (см. Http://www.openstack.org/ ). Проект является инструментом безопасности для нашей корпорации. В настоящее время мы используем много сотен выделенных серверов для инструментов безопасности и переносим их в нашу корпорацию openstack.
Другие проекты в моей компании в настоящее время используют erlang в нескольких распределенных серверных приложениях, и другие вопросы и ответы указывают на то, что erlang используется в нескольких популярных облачных сервисах. Я пытаюсь убедить других подумать, где это может быть применимо к нашему проекту.
Каковы сильные стороны Erlang для облачного программирования? Где находятся районы, в которых особенно уместно использовать эрланг?
источник
Ответы:
Кроме того факта, что Erlang был специально разработан для одновременной / параллельной / распределенной ситуаций, две основные технологии, которые он использует, делают это возможным:
Нет побочных эффектов:
Это означает, что когда вы даете функции часть данных для выполнения, она не будет влиять, кроме как в очень строгих случаях, на что-либо другое в системном / запущенном процессе. Это означает, что если вы одновременно выполняете функцию 300 раз одновременно, ни одно из этих 300 выполнений функции не повлияет ни на одно из других.
Техника реализации, обеспечивающая отсутствие побочных эффектов, называется «неизменяемостью», что примерно означает, что ее нельзя изменять (изменять). Это означает, что как только вы создадите переменную, значение этой переменной не может быть изменено. Erlang реализует это поведение с помощью «одиночного присваивания», поэтому после того, как вы присвоите значение переменной, вы не сможете присвоить ей значение снова.
Это гарантирует, что ни один код не может случайно изменить значение X, вызывая состояние гонки, поэтому он по своей природе ориентирован на многопоточность и одновременное использование становится тривиальным. Это очень необычное поведение среди языков программного обеспечения и самый лучший способ, которым Erlang удается так хорошо подходить для одновременного выполнения.
Актерская модель:
Это особый способ моделирования, который показал, что реализация и управление параллельной обработкой очень просты для разработчиков. Прямо из Википедии (http://en.wikipedia.org/wiki/Actor_model):
источник
Erlang особенно силен в параллельных / параллельных вычислениях. На самом деле, он был разработан специально для этой цели. Он не имеет ничего общего с облаком, за исключением того, что приложения с большими объемами вычислений распараллеливаются и развертываются в «облачных» экземплярах, чтобы упростить наращивание / сокращение емкости по требованию.
Остальное - просто маркетинг.
источник
Один аспект облака, который отличается от традиционных аппаратных развертываний, - это простота, с которой вы можете раскручивать новые экземпляры при необходимости. Возможность отслеживать другие узлы и процессы на других узлах делает относительно простым создание высокодинамичных систем, которые могут добавлять или удалять виртуальные машины и управлять ими по мере необходимости.
Это особенно актуально, если вы строите свою систему с использованием OTP-среды Erlang (Open Telecom PLatform), которая предоставляет как структуру, так и механизмы (деревья супервизора) для поддержки создания довольно сложных вещей с гораздо меньшими затратами, чем вы можете себе представить. Эрланг обрабатывает все хитрости, так что вам не нужно.
источник