Компания Oracle объявила (https://blogs.oracle.com/developers/meet-the-new-application... об открытии кода платформы Fn (http://fnproject.io/) с реализацией бессерверной модели разработки приложений (serverless (https://en.wikipedia.org/wiki/Serverless_computing)). Fn предоставляет дополнительный уровень абстракции для облачных систем, позволяющий выполнять функции как сервисы (Functions as a service (https://en.wikipedia.org/wiki/Function_as_a_service), FaaS). Код написан на языке Go и поставляется (https://github.com/fnproject/fn) под лицензией Apache 2.0. Разработка выполнена командой проекта IronFunctions (https://www.iron.io/) и основана на его кодовой базе (https://github.com/iron-io/functions).
Суть метода FaaS заключается (https://github.com/fnproject/fn/blob/master/docs/serverless.md) в том, что разработчик реализует логику на уровне отдельных функций, не заботясь о создании и управлении инфраструктурой для запуска приложений, без привязки к конкретным серверным приложениям и необходимым для их работы облачным окружениям. Достаточно определить требуемые функции и загрузить их, после чего платформа Fn сама развернёт, организует управление и обеспечит масштабирование окружений, необходимых для выполнения подготовленных функций.Разработка ведётся без создания монолитных приложений, на уровне подготовки набора небольших отдельных функций, каждая их которых обеспечивает обработку определённого события и рассчитана на обособленную работу без привязки к окружению (stateless, результат не зависит от прошлого состояния и содержимого ФС). Для операторов облачных систем применение FaaS выгодно более эффективным потреблением ресурсов - функции запускаются только при возникновении необходимости и сразу после обработки события завершают свою работу, т.е. в отличие от микросервисов не требуют постоянного наличия запущенных окружений, потребляющих ресурсы на холостом ходу.
Для высоконагруженных систем предусмотрена поддержка асинхронного (https://github.com/fnproject/fn/blob/master/docs/async.md) режима работы и "горячих (https://github.com/fnproject/fn/blob/master/docs/hot-functio... постоянно запущенных функций, не требующих создания нового контейнера для каждого запроса. Масштабирование обеспечивается продвинутой системой балансировки нагрузки, осуществляющей маршрутизацию трафика до функций, которые динамически запускаются на узлах с доступными ресурсами.
В отличие от существующих коммерческих FaaS-платформ, таких как Amazon AWS Lambda, Google Cloud Functions и Microsoft Azure Functions, решение от Oracle позиционируется как избавленное от привязки к вендору. Пользователь может выбирать любых поставщиков облачных решений для запуска инфраструктуры Fn, комбинировать разные облачные системы или запустить платформу на собственном оборудовании. В том числе Fn можно запустить поверх популярных платформ оркестровки контейнеров Kubernetes, Docker Swarm и Mesosphere, внутри окружений PaaS, таких как CloudFoundry и OpenShift, или просто на локальной системе разработчика. Из зависимостей для работы Fn требуется только Docker.Разработчикам предоставляется инструментарий командной строки и графический интерфейс (https://github.com/fnproject/ui) для разработки, тестировния и развёртывания функций. Fn позволяет создавать функции на любом языке программирования благодаря простому интерфейсу взаимодействия, поддерживающему обмен данными через (https://github.com/fnproject/fn/blob/master/docs/function-fo... переменные окружения, STDIN, HTTP или JSON. Для упрощения разработки предоставляется инструментарий FDK (Function Developer Kit) для языков Java (https://github.com/fnproject/fdk-java), Ruby (https://github.com/fnproject/fdk-ruby) и Go (https://github.com/fnproject/fdk-go), а также коллекция примеров (https://github.com/fnproject/fn/tree/master/examples/tutorial) для языков go, JavaScript/node.js, java, php, python, ruby и rust. Платформой также поддерживается формат функций AWS Lambda и прямой импорт функций из сервиса AWS Lambda. Возможно создание собственных дополнений и модулей интеграции. Компонент Fn Flow позволяет определять правила оркестровки функций непосредственно в их коде.
URL: https://blogs.oracle.com/developers/announcing-fn
Новость: https://www.opennet.ru/opennews/art.shtml?num=47314
кто-нибудь может привести пример serveless-приложения? что-то в голову ничего не приходит
Явисты совсем охренели. Не могут уже даже представить себе программу без сервера. Тьфу.
Да, для любой программы нужны сервер, облако, дополненная реальность и база данных.
промазал, я пхпшник
А думаешь как явист:)
Это ты думаешь как хейтер. Человек по делу спросил, а ты отмахнулся, будто бы знающий.Звонок в класс еще не прозвонил? )
> Звонок в класс еще не прозвонил?Провод прозвонил, обрывов нет, контакты почистил. Ну как, теперь звонок ПРОЗВЕНЕЛ?
>> Звонок в класс еще не прозвонил?
> Провод прозвонил, обрывов нет, контакты почистил. Ну как, теперь звонок ПРОЗВЕНЕЛ?Т.е. ты из артеля "напрасный труд"? Сделал дело и не протестировал результат?
ну так формирование странички :) сервер БД лежит отельно (если нужен), свалка статики отдельно :)
Чистый первоначальный php :)
Продолжение идеи javascript.
Погуглите на тему AWS Lambda и Google Cloud Functions мб на гитхабе или ещё где чего найдётся.
Это проприетарные аналоги, как мне кажется.
в S3 корзину добавляется файл, триггерится скрипт который доюавляет всякие content-encoding = gzip, ACL = PublicRead и реплицирует файл во все остальные регионы.Действия куча, а серверов нет совсем.
Где-то был пример
Вот целый сервер авторизации без поднятия EC2 инстансов.
https://github.com/awslabs/aws-serverless-auth-reference-app
> в S3 корзину добавляется файл, триггерится скрипт который доюавляет всякие content-encoding
> = gzip, ACL = PublicRead и реплицирует файл во все остальные
> регионы.Тут стейт задается файлом в S3.
Из новости: "stateless, результат не зависит от прошлого состояния и содержимого ФС".
Вопрос какое приложение требует выноса логики в облако и является stateless?
Ресайз картинки/видео. Лингвистические проверки. Шифрование/сжатие.
Ну и под stateless, обычно, понимают независимость от локальных состояний, а не от внешних.
> Тут стейт задается файлом в S3.Это не стэйт, это инпут.
Если считать входные данные стэйтом, то stateless, по определению, становится константой.
А скрипт триггерится, типа, не на сервере. А хранилище S3 - это, типа, не сервер. А реплицируется он, типа, не на сервера.
все должны думать, что s3 это не сервер, а такая особая облачная магия, недоступная никому кроме б-жественнго амазона
Что вы в данном случае подразумеваете под "сервером"? В понимании обычного разработчика - это что-то, куда нужно логиниться по ссх, деплоить приложение, настраивать окружение и тп. А термин "бессерверная" означает, что ты взял зипку со своим кодом, нажал уплоад - и оно заработало. Примерно так и работает широко известная амазоновская лямбда.
> взял зипку со своим кодомА кто гарантирует, что количество телодвижений, необходимых для подготовки "зипки с кодом", пригодной для данного облачного сервиса, будет меньше, чем при подготовке, допустим, контейнера для докера?
Бессерверная(по крайней мере у амазона) значит не привязанная к серверу.
В один момент у вас 1 инстанс который спокойно справляется с нагрузкой, а спустя некоторое время у вас появилось 10 инстансов потому что нагрузка выросла. Это как пример.
Очередной маркетинговый бред.Что значит не привязанная? Если исполняется на сервере, то привязана намертво.
Автоматическое маштабирование серверов? Пожалуйста.
Динамическое распределение нагрузки? На здоровье.
Выполнение приложения в облаке? Сколько угодно.Но никак не бессерверное при росте количества серверов. Это безграмотно.
Да.
Собственно и "облако" (cloud) - такое-же маркетинговое словечко.
>> пример serveless-приложения?Обработка массивов данных.
А как ты себе представляешь свертку массивов данных по удаленным серверам? Меньше 10-50 гигабайт на такой логике действий нефиг запускать - это сколько данные просто будут сайгачить между нодами?
Есть массивы и поменьше, которых побольше.Множество «мелких» массивов обрабатываются в такой идеологии на ура.
OLE времён Windows 95.
> кто-нибудь может привести пример serveless-приложения? что-то в голову ничего не приходитHello World же :-)
Короче это видно скорее об инфраструктуре и бизнесе. Сервер вам не предоставляется. Вместо этого предоставляется возможность делать приложения... под эту платформу... и их выполнение. Таким образом сервера у вас как бы нет. (и ФС к примеру тоже значит нет. Хотя видимо какой-нибудь интерфейс к БД может быть...).
> решение от Oracle позиционируется как избавленное от привязки к вендору.Ну да, конечно.
заноси денешку куда надо, а там выбирай себе вендора какого хочешь. Когда уже корпорастам разрешат "Давайденьгиидинафик-аз-а-сервис".
Что-то я ничего не понял.
Можно пример в студию, без вот этой вот философии выше?
> Что-то я ничего не понял.
> Можно пример в студию, без вот этой вот философии выше?Где-то здесь в форуме был пример: владельцы "бисплатных" AWS-инстансов обнаруживали наутро ночи "автоматического масштабирования" четырёхзначные счета в нерублях.
Никакой философии, чиста маркетинг же. Развод кроликов.
Ну если ты ССЗБ, запилил автоскейлинг с максимумом в 99 платных машин и запостил приватный ссх ключ на инстанс в паблике вконтакте - то да, получишь четырёхзначный счёт.
Допустим, тебе нужно заполнить строку пробелами слева...
Распределенные вычисления. А в данном случае идея такая - посмотреть, как работает Вы можете у себя, а чтобы не тормозило - покупайте железо/облако у Оракла.
> у Оракла.Но, конечно, никто вас за яйца ^W руки не тянет идти именно к Ораклу, попробуйте найти другого поставщика именно с таком ПО на "сервере" (которого нет)!
Serverless, конечно, тот ещё баззворд… если отбросить весь маркетинговый буллшит, то «на пальцах» получится та же идея микросервисов, ужатая даже не до микро-, а наномасштаба.Сервис, состоящий из одной функции.
Я даже сходу не придумаю, зачем оно надо мимокрокодилу с опеннета. На ум приходят только всякие «одноразовые» endpoint'ы API, для платёжных шлюзов, или обмена токенами, или приёма метрик.
Очень специфическая и не везде применимая вещь, которую надо как можно быстрее и дешевле масштабировать горизонтально.
Задача: Отправка СМС.Нужно запустить процесс, отправить СМС и завершить процесс.
В случае PaaS (процесс как сервис) нужно было бы держать постоянно запущенный процесс, расходующий вычислительные ресурсы. В случае FaaS (функция как сервис) плата будет взыматься только за время выполнения задачи и за использованные ресурсы (процессор, память, диск, сеть, ..).
Похоже на выполнение команд в терминале, только запускаться они будут в облаке.
Другие примеры: сложные расчёты, когда передаётся объём данных. Или архивация/антивирусная проверка файлов.
> постоянно запущенный процессНе надо считать людей идиотами. Сервис, который не получает нагрузки, приостанавливается и выгружается из памяти.
Это зависит от тарифного плана, бестолочь. Если ты арендуешь сервер, то платишь независимо от выполняемых задач. Если работаешь по системе PaaS, то за время работы плюс за потреблённые ресурсы.
> Если ты арендуешь сервер, то платишь
> независимо от выполняемых задач. Если работаешь по системе PaaS, то за
> время работы плюс за потреблённые ресурсы.Ну смешно же. Будете ставить свой «счётчик ресурсов» в ЦОД к арендованным вами… э, ресурсам? И счётчик электроэнергии тоже?
> Это зависит от тарифного плана, бестолочь. Если ты арендуешь сервер, то платишь
> независимо от выполняемых задач. Если работаешь по системе PaaS, то за
> время работы плюс за потреблённые ресурсы.То, что провайдер продолжает наматывать абонплату в периоды неактивности, не означает, что арендованный тобой сервер в это время не остановлен и не выпихнут в своп.
> То, что провайдер продолжает наматывать абонплату в периоды неактивности, не означает,
> что арендованный тобой сервер в это время не остановлен и не выпихнут в своп.остановлен, но в своп не выпихнут - если внезапно ему придет пакетик, и оно не ответит немедленно, эти пользователи нас сожрут. Поэтому, увы, ресурсы оно жрет, даже остановленное. В лучшем случае за счет новых-модных технологий удается слегка подрезать занимаемую память.
> Нужно запустить процесс, отправить СМС и завершить процесс.Идея CGI, который обходится "без сервера" и продаётся "совершенно бесплатно"ТМ ?
"Бессерверная" в данном случае означает "без необходимости аренды сервера".
> Задача: Отправка СМС.
> Нужно запустить процесс, отправить СМС и завершить процесс.
> Другие примеры: сложные расчёты, когда передаётся объём данных. Или архивация/антивирусная
> проверка файлов.Для гарантированной отправки СМС нужно сохранить стейт - саму СМС. Дальше идет отправка через шлюз А, потом через Б, потом через В. При успехе завершаем доставку СМС. А может еще и нотифай обратно отсылаем об успешной или не успешной отправке.
Из новости: "stateless, результат не зависит от прошлого состояния и содержимого ФС".
Пока все задачи не являются стейтлесс - нужны файлы, или ФС, или БД.
В твоём примере FaaS задачей является "отправка через шлюз". И она не требует информации о предыдущих запусках.
> функции запускаются только при возникновении необходимости и сразу после обработки события завершают свою работу, т.е. в отличие от микросервисов не требуют постоянного наличия запущенных окружений, потребляющих ресурсы на холостом ходу.Область применения такой штуки - любые редко запускающиеся процессы, либо работающие по расписанию. Т.е. поднялся, что-то сделал, отвалился.
Примеры: синхронизация данных между системами, экспорт/импорт, архивация данных, разнообразные отчёты, отправка SMS, как уже здесь сказали, и т.п.Штука очень хорошая, вопрос в скорости поднятия этой "функции"...
Это не для редко запускающихся процессов, а для масштабирования больше. Что бы при возрастание нагрузки на некоторый функции происходил autoscale и запускались доп инстансы что бы выдержать нагрузку.
И statless имеется ввиду тот в котором внутри процесса выполнения не хранится никакого состояния, а если необходимо, то состояние вынесено в отдельную сущность. Классически - база данных.Время холодного старта это да может быть порой проблемой, но всё зависит от технологии на которой разрабатываются эти функции. Плюс от конкретной реализации платформы. Система вполне может держать подготовленные инстансы для быстрого старта. В данной новости написали что есть функционал по удержанию минимума инстансов прогретыми для быстрого включения что бы избежать лага если нагрузка исчезла на некоторое время, а потом заново пошла.
Каждый видит применение исходя из своих условий и предметной области.
То есть, вместо простого вызова функций внутри программы на каждый пук будет городиться полная стопка сетевых протоколов? А потом отлел маркетинга Оракла скажет "мы для вас придумали гениальную инновацию - теперь функции можно вызывать друг из друга прямо на сервере в рамках одного соединения".
Молодцы, чо. Корпорации такие корпорации.
Нет, нет, нет, нет и ещё раз нет.Если тебе нужно облако для выполнения некоторой задачи, но эта задача работает не постоянно, а её запуск инициирован событием, то можно перейти с тарифного плана PaaS на тарифный план FaaS и сэкономить.
Выше объяснил на примере отправки СМС.
> тарифного плана PaaS на тарифный план FaaS и сэкономить.Как бы сэкономить. По факту тут копейка, там копейка...
Оно вроде бы и новшество, но граничит с тем, что скоро мы получим какой-нибудь Variable as a Service - объяви переменную в облаке без регистрации и смс.По статье в принципе понятно, что в каких-то задачах такой уровень абстракции и будет полезен: вся архитектура состоит из отдельных функций, которые вызываются определенным образом. Но как бы не получилось так, что потом это везде будут тулить, где только можно.
> Variable as a Service - объяви переменную в облаке без регистрации и смс.Так уже, Amazon DynamoDB
Всё-таки это полноценная БД, а не хранилище переменных для скрипта.
> Oracle
> ОткрылаЧто-то тут не сходится.
шаред хостинг с пехопе переизобрели в стопятидесятый раз и продали лохам в новой обёртке
А почему до сих пор нет CaaS - Codeless as a Service ?
Есть CaaS как Container as a Service:)
> А почему до сих пор нет CaaS - Codeless as a Service ?[We] Serv{e,er,ice} less as [you] Pay more, mooooore, MOAR!
Оракл изобрёл CGI в том виде, в каком он был до эпохи FastCGI. Код лежит на диске и запускается только когда к нему есть обращение. Маркетологам Оракла - медаль, не будем уточнять из чего.
это не CGI, это так называемый "удаленный вызов процедур" - RPC
> это не CGI, это так называемый "удаленный вызов процедур" - RPCРаскрой аббревиатуру "CGI" и поразись зияющим глубинам, поспорь и с ними.
>>Из зависимостей для работы Fn требуется только Docker.Это как сказать, что для работы нашей системы доставки требуется только комплекс ЖД магистралей с вокзалами, развязками и парком служебных составов.
>>не требующих создания нового контейнера для каждого запроса.
Каждый вызов простой функции вызывает создание полного изолированного окружения? Еще и туеву кучу оберток для маршалинга между контейнерами поднимает? Те 99% времени работы функции это затраты тупо на обертки?
> ... маршрутизацию трафика до функций, которые динамически запускаются на узлах с доступными ресурсами.что за узлы такие? это они про СЕРВЕРА чтоль?
>> ... маршрутизацию трафика до функций, которые динамически запускаются на узлах с доступными ресурсами.
> что за узлы такие? это они про СЕРВЕРА чтоль?В самом лучшем случае.
Бессерверная — это когда серверами владеет кто-то другой.
> Бессерверная — это когда серверами владеет кто-то другой.Ботнет?!
я не врубился в тему.. почему нельзя просто запустить бинарь??
> я не врубился в тему.. почему нельзя просто запустить бинарь??патамучта у прадажников новые буклеты. ты им теперь должен.
Да и вообще:
Компания Oracle намерена до конца 2017 г. запустить революционную СУБД, которая практически не нуждается в управлении со стороны администратора. Само понятие работы администратора баз данных после этого изменится, считают в компании. В Oracle уверяют, что экономия при использовании автономной СУБД в сравнении с предложениями Amazon составит 50-80%.Самостоятельная база данных
В Oracle сообщили о создании полностью самоуправляемой автономной базы данных Oracle Autonomous Database Cloud, у которой, по данным компании, нет аналогов в мире. Основой для разработки послужила Oracle Database 18c. О новинке рассказал председатель совета директоров и главный технологический директор Oracle Ларри Эллисон (Larry Ellison) на конференции Oracle OpenWorld, которая проходит в Сан-Франциско в США.
> Да и вообще:
> В Oracle сообщили о создании полностью самоуправляемой автономной базы данных Oracle Autonomous
> Database Cloud, у которой, по данным компании, нет аналогов в мире.
> Основой для разработки послужила Oracle Database 18c. О новинке рассказал председатель
> совета директоров и главный технологический директор Oracle Ларри Эллисон (Larry Ellison)Гендир пообещал новый революционный хулифон?
Go становится все популярнее
Форсят, как мемы...
Для запуска функции (как сервиса) с использованием данного решения обязательно должно присутствовать описание задания на языке JCL. Подчёркивается, что хотя решение и кроссплатформенно, наибольшая эффективность исполнения функции-как-сервиса достижима при запуске её в операционной системе OS/360 MFT.
> Суть метода FaaS заключается в том, что разработчик реализует логику на уровне отдельных функций, не заботясь о создании и управлении инфраструктурой для запуска приложений, без привязки к конкретным серверным приложениям и необходимым для их работы облачным окружениям. Достаточно определить требуемые функции и загрузить их, после чего платформа Fn сама развернёт, организует управление и обеспечит масштабирование окружений, необходимых для выполнения подготовленных функций.Звучит как "администратор MediaWiki написал тонну модулей с Lua-функциями, запутался в них, и уронил всё в Ад" (не редкость)
Представим на минуточку, что в Systemd есть события, шина, сокеты, таргеты, таймеры и прочие ништяки. Если всё почитать и осилить, то там легко можно всовывать любое межпроцессное взаимодействие: DBus/IPC/RPC/сокеты/итд... но этим никто не занимается.
Конечно, проще создать ещё одну ось, платформу, сущность.