Продолжаю обзор видов компьютерных, вычислительных облаков. Как мы уже говорили, облачные решения бывают разные; они могут быть как широкой, так и узкой, специализированной направленности. Смысл их в предоставлении удалённого IT-ресурса по сервисной модели. Обо всём этом я писал на своём канале, ссылки по теме будут по ходу статьи.
Сегодня мы поговорим об облаках, которые пригодятся в первую очередь разработчикам компьютерных программ, а также прочим IT-специалистам. Существуют решения, которые больше заточены на команды, но есть и те, которые вполне подойдут одиноким стрелкам-программистам.
FAAS - Function as a service: Функция как услуга
Этот случай интереснее других облаков. Мы в этот раз рассмотрим два примера применения.
Коротко, по классике, программы строятся на основе серверов, клиентов, а также общения между двумя этими звеньями. Есть конечно программы, построенные не по такой модели, но если предполагается разделение ответственности, то как правило работали по модели клиент-сервер.
Теперь представьте, что вы написали программу для клиентских устройств, например, смартфонов, сервер для которой нужен раз в пятилетку. Мы не можем предположить, сколько будет клиентов, устройств - значит, если действовать по науке, мы не можем заложить расходы на сервер. В некоторых случаях это и не нужно. IAAS стоить будет тоже дорого, да и и издержек требует: пока запустится "по требованию", пока развернётся - время пройдёт, а у нас клиенты нервные, ждать не хотят. Например, моя программа для смартфона занимается диагностикой устройства. Ей в принципе не нужен сервер. Однако там есть модуль "обратиться в техническую поддержку", отправляющий сообщение технической поддержке программы о проблемах. Лишь для одного этого сервер вообще дорого содержать, особенно если сообщение простое, но требующее применения логики. В таком случае используется технология бессерверного программирования.
Как выглядит бессерверное программирование? Осуществляется вызов удалённой функции. Функция - это составной кусок компьютерной программы - в нашем случае она запускается на стороне облака. Можете считать функцию, если плохо знакомы с программированием, как микропрограммку. Сразу, как она выполнилась, облако завершает сеанс и отпускает используемые ресурсы на своей стороне для других своих клиентов. Техподдержка получила сообщение, на стороне клиента всё выполнилось очень быстро. О том, что у нас сервера нет, знаем только мы.
Когда это выгодно и полезно? Я не просто так заговорил про устройства. Существует так называемый интернет вещей (IoT - internet of things). В основном, устройства передают телеметрию, либо запрашивают какие-то небольшие данные, конкретные для каждого случая, для каждого уникального устройства. Особенность вещей - их может быть очень много, они выпускаются тиражами. Особенность же передаваемых от них данных - они не требуют длинных сеансов связи, но могут делать это всё часто. Выделенный сервер здесь часто не нужен, да и концепция его использования (если его всё же задействовать) может создать больше проблем из-за технических издержек, чем преимуществ. Кстати, многие провайдеры для производителей таких вещей, работающих по схеме IoT, предлагают специальные услуги на основе FAAS.
Второй случай будет понятен программистам, но я постараюсь объяснить на примере, пусть и высосанном из пальца, но так, чтобы было понятно всем.
Представьте список учеников некоего класса. Обычно это человек 25-30, хотя в некоторых наших регионах бывает и больше. Наша программа в качестве входящих параметров берёт ФИО ученика, а на выходе формирует файл с досье на человека: с кем общается, с кем дружит, кого ненавидит, какие сайты посещает, с кем живёт дома, чем интересуется, как учился все годы. При этом, там должна быть не только информация историческая, но и текущие, самые свежие сведения на ученика. Вот прямо за сегодня, самое позднее за вчера. Да, интересная подборка из серии "Мир и госбезопасность во всём мире". Факт, что сбор таких данных - затратная операция для программы. Для 25-30 человек программа отрабатывает чуть больше суток, что вписывается в наши требования, однако иногда директору школы нужно видеть досье на учеников всех классов (классов, как мы знаем, больше десяти может быть).
Что делать? Ждать десять суток? Не получится, поскольку некоторые данные устаревают очень быстро. В таком случае, мы можем воспользоваться FAAS: нужные куски нашего программного кода устроят разделение задачи, так чтобы создалось 250-300 (количество учеников в классе умноженное на количество классов) параллельных веток нашей программы на арендованном облаке. В таком случае время выполнения программы займёт час-два, результат мы получим, все будут довольны. Да, придётся заплатить, но оно будет того стоить, если рассчитать правильно нагрузки и причины их возникновения. В наши дни ведь важна не серверная мощь в мегагерцах, а то, насколько легко и просто задачу распараллелить, разделив на кусочки, каждый из которых можно запустить параллельно с другими.
Таким образом, FAAS можно считать частным случаем IAAS и, частично, PAAS. Нас мало заботит то, что происходит на стороне провайдера. Провайдер берёт все эти заботы на себя. Мы же получаем свой результат.
DbAAS - Database as a service: База данных как услуга
Базы данных активно используются бизнесом. Правда, с ними имеют дело в первую очередь разработчики, IT-специалисты. О том, что такое базы данных и какими они бывают, мы обязательно поговорим подробно в будущих материалах, но как всегда коротко я постараюсь рассказать так, чтобы было понятно всем. Помните, у меня была статья о том, чем отличаются данные от информации, а также о том, что такое знания. Так вот, данные должны где-то собираться, храниться, обрабатываться. Должна быть у нас возможность эти данные получать, причём только те, что нужны по задаче. Самое же главное - они должны храниться упорядоченно, по какой-то логике. Как мы помним, в случае, если к данным можно применить структуру и логику, речь идёт об информации. Данные становятся информацией при наличии структуры, логики, правил. Во многом это обеспечивают базы данных, а точнее, системы управления баз данных (СУБД). Это специализированное программное обеспечение, берущее на себя все эти вопросы.
СУБД существует множество. Они могут работать по разным принципам, иметь разные технические свойства и качества. СУБД могут быть платными и бесплатными, лёгкими в эксплуатации, либо сложными. Очень часто может возникать такая история, что в начале пути для нас сошло бы решение попроще, но в перспективе оно потребует очень хорошей и надёжной системы, с морем функций и возможностей. Беда в том, что так легко и просто не перейти с одной СУБД на другую. Потребуются всякие доработки, лишние трудозатраты на миграцию с одного решения на другое. Не самое простое это дело. Да и архитектура решения, когда разрабатывается, предполагает масштабируемость, но не смену программ, компонентов и т. д. Иными словами, если говорить попроще, то лучше если уж брать что-то, то лучше сразу нужное. Беда в том, что в отдельных случаях решение может получиться неоправданно дорогим.
Ещё одна дилемма, с которой приходится сталкиваться - необходимость разворачивания СУБД, а также её дальнейшая поддержка. Обслуживанием таких систем занимаются специальные администраторы. Разработчики, в принципе, тоже могут, но одно дело, заниматься этим на ежедневной основе много лет, а совсем другое - что-то пытаться настроить специально сейчас, хотя раньше мог с такой программой ни разу не столкнуться. Да и времени это потребует порядочно, а время разработчиков - дорого.
Есть ли выход из обеих проблем? Конечно есть. Называется это Database as a service (DbAAS - база данных как услуга). Коротко, это особый случай PAAS. Нам предлагается сайт, в котором можно задать требования к будущей базе данных, настроить всё довольно быстро. Нам дадут ссылку, через которую наш софт будет работать с данными в СУБД. Самое же главное это то, что оплата будет, скорее всего, динамическая. Иными словами, она будет зависеть от потребляемых ресурсов. Никаких админов в штате иметь не нужно. За администрирование платформы, а также за физическое и программное обслуживание сервера, на котором СУБД развёрнута, отвечает облачный провайдер. Как правило, если разобраться и посчитать, то можно увидеть, что экономия возможна огромная. Единственный минус тут в том, что в случае стартапа, когда мы в самом начале пути, возможна некоторая переплата, так как мы получим скорее всего больше ресурсов, чем нам реально нужно. Есть ещё пара условных минусов: данные хранятся в облаке; облако должно быть часто в той стране, где ведётся бизнес (из-за разных законов о персональных данных; во многих более-менее серьёзных странах существуют законы, регулирующие этот вопрос). То, что данные хранятся в облаке может быть минусом, если у нас имеются очень чувствительные данные, а провайдер не относится к надёжным. Иначе говоря, мы не знаем, может ли кто-нибудь из недобросовестных сотрудников облачного провайдера. Как правило, технически это сложно сделать. Порой невозможно. Но это в том случае, если провайдер прошёл аудит у независимых экспертов, если все проверки пройдены и т. д. Чаще всего, провайдеры имеют все нужные лицензии, системы защиты и т. д.
Говоря же о персональных данных, нужно читать законы страны, в которой происходит дело. Чаще всего, требуют хранения локальной копии данных пользователей в стране, в которой ведётся бизнес. В некоторых странах может быть запрещена передача данных через границы. Может быть очень много аспектов, но это уже ответственность пользователя услуги DbAAS.
Мы рассмотрели два примера облачных решений для разработчиков. Разумеется, их гораздо больше. Поскольку статья нерезиновая, предлагаю продолжить обзор облачных инструментов в следующих материалах. Если есть вопросы - задавайте. Также, буду очень рад вашим комментариям!