Node.js — удобная масштабируемая серверная платформа для работы с JavaScript. С помощью нее и различных поддерживаемых фреймворков, таких как Express, Connect или Koa, можно создавать полноценные приложения.
Если идти по пути упрощения администрирования, возникает желание загрузить приложение в Yandex Cloud Functions и вызывать его из облака. К сожалению, пока нельзя просто так взять и запустить в облаке приложение, написанное на любом популярном node.js-фреймворке. Фреймворки пишут ответ в сокет HTTP(S). Рантайм функций ожидает получить от пользовательского кода функции объект определенного содержания.
< «statusCode»: , «headers»: , «multiValueHeaders»: , «body»: «», «isBase64Encoded»: >
«Из коробки» это работать не будет, но можно научить приложение возвращать ответ в ожидаемом формате. Разберем, как это сделать, на примере приложения Express.js с двумя эндпоинтами.
Облачный гейминг на ПК Как играть в облаке бесплатно 2023
Создаем и запускаем новый проект
Создаем новую директорию и инициируем в ней новый проект:
mkdir sample-app cd sample-app npm init -y npm install express touch index.js
Далее в index.js добавляем следующий код:
const express = require(‘express’); const app = express(); app.use(express.urlencoded(< extended: true >)); app.use(express.json()); app.get(‘/api/info’, (req, res) => < res.send(< application: ‘sample-app’, version: ‘1.0’ >); >); app.post(‘/api/v1/getback’, (req, res) => < res.send(< . req.body >); >); app.listen(3000, () => console.log(`Listening on: 3000`));
Запускаем проект и проверяем, что приходят ожидаемые ответы:
$ curl ‘http://localhost:3000/api/info’
Адаптируем проект под Serverless
npm i —save serverless-http
Это универсальный враппер, он поддерживает не только Express, но и Connect, Koa, restana, а также экспериментально другие фреймворки: Sails, Hapi, Fastify, Restify, Polka и LoopBack.
Затем модифицируем наш пример. Заменяем запуск сервера на порте 3000 экспортом функции-обработчика, которая будет вызываться serverless-рантаймом облака:
const express = require(‘express’); const app = express(); const serverless = require(‘serverless-http’); app.use(express.urlencoded(< extended: true >)); app.use(express.json()); app.get(‘/api/info’, (req, res) => < res.send(< application: ‘sample-app’, version: ‘1.0’ >); >); app.post(‘/api/v1/getback’, (req, res) => < res.send(< . req.body >); >); //app.listen(3000, () => console.log(`Listening on: 3000`)); module.exports.handler = serverless(app);
Теперь наше приложение готово к запуску в облаке.
Развертываем приложение в облаке
Для того чтобы развернуть код в облаке, проще всего воспользоваться утилитой serverless. У Yandex.Cloud есть свой плагин, который позволяет деплоить функции. Из него пока нельзя развернуть еще один ключевой компонент системы — Yandex API Gateway, мы чуть позже сделаем это вручную через консоль.
Самый простой способ установки приложений в ТВ Бокс через облако. Без флешек и маркета!!!
Устанавливаем Serverless Framework и плагин к нему:
npm i -g serverless serverless-yandex-cloud
Далее создаем в проекте файл serverless.yaml с содержимым:
service: sample-app frameworkVersion: «>=1.1.0» configValidationMode: off provider: name: yandex-cloud runtime: nodejs12-preview plugins: — serverless-yandex-cloud package: exclude: — ./** include: — ./package.json — ./**/*.js functions: express: # this is formatted as . handler: index.handler memory: 128 timeout: 5
Деплоим функцию командой:
serverless deploy
Если сделать функцию публичной и вызвать ее по предложенному URL, передав путь /api/info , то в ответ мы получим следующую ошибку:
$ curl ‘https://functions.yandexcloud.net/%function-id%/api/info’
необходима настройка API Gateway.
Создание API Gateway
Спецификация должна соответствовать стандарту OpenAPI 3.0, для нашего простого API ее можно написать руками:
openapi: 3.0.0 info: title: Sample API version: 1.0.0 paths: /api/info: get: responses: ‘200’: description: Ok x-yc-apigateway-integration: type: cloud_functions function_id: %function_id% tag: $latest service_account_id: %service_account_id% /api/v1/getback: post: responses: ‘200’: description: Ok content: application/json: schema: $ref: ‘#/components/schemas/Test’ requestBody: required: false content: application/json: schema: $ref: ‘#/components/schemas/Test’ x-yc-apigateway-integration: type: cloud_functions function_id: %function_id% tag: $latest service_account_id: %service_account_id% components: schemas: Test: type: object
Не забудьте поменять %function_id% и %service_account_id% на ваши значения. У сервисного аккаунта должна быть роль serverless.functions.invoker или выше, если вы оставили функцию без публичного доступа.
В более сложных случаях можно попробовать сгенерировать спецификацию OpenAPI на основе уже имеющегося кода API. Для этого подойдет express-oas-generator.
Теперь наше приложение работает и доступно по URL.
$ curl ‘https://%api-gw-id%.apigw.yandexcloud.net/api/info’
Кстати, к API Gateway можно привязать свой домен. Как приязать домен — читайте в этом посте.
Новый параметр API Gateway
Совсем недавно в API Gateway появилась возможность указать параметр вида . В этом случае будут матчиться и вложенные пути.
paths: /api/: get: x-yc-apigateway-integration: type: cloud_functions function_id: d4e*** tag: $latest service_account_id: aje*** responses: 200: description: Ok parameters: — explode: true in: path name: proxy required: true schema: type: string style: simple
В первом параметре функции event в проперти path будет лежать значение вида /api/%7Bproxy+%7D и роутер Express.js будет ломаться.
Решения как минимум два:
- написать честный provider для Yandex.Cloud по образу того, что сейчас есть для AWS;
- пропатчить объект event, положив в path значение из url (строки 13–19 в примере ниже).
Пример готового скрипта можно скачать.
const express = require(‘express’); const serverless = require(‘serverless-http’); const app = express(); app.use(express.urlencoded(< extended: true >)); app.use(express.json()); app.get(‘/api/info’, (req, res) => < res.send(< application: ‘sample-app’, version: ‘1.0’ >); >); app.get(‘/api/pet/:name?’, (req, res) => < res.send(< . req.params >); >); module.exports.handler = (event, context) => < const patchedEvent = < . event, path: event.url, originalPath: event.path, >return serverless(app)(patchedEvent, context); >
Вы можете бесплатно попробовать запустить приложений Express.js на Yandex Cloud Functions по программе free tier: сервис не тарифицирует первый миллион вызовов функций и первые 10 ГБ×час выполнения функций. А любые вопросы о работе сервисов можно обсудить как с их пользователями, так и с их создателями в чате Yandex Serverless Ecosystem.
Источник: habr.com
Запуск виртуальной машины в облаке
Облачные решения в последние годы становятся одним из самых популярных вариантов построения ИТ-инфраструктуры. Это не удивительно, так как такие хранилища практичны и надежны, не требуют больших расходов на обслуживание и позволяют добиться высокой отказоустойчивости системы. Все чаще при использовании cloud-сервера требуется запуск виртуальной машины. И все чаще такую процедуру выполняют не системные администраторы, а простые пользователи.
Разберемся, что же такое виртуальная машина, каким образом происходит миграция и что потребуется для грамотного и быстрого выполнения этой процедуры.
Что представляет виртуальная машина
Для начала стоит разобраться в терминологии. Формально, ВМ – это два простых файла, в одном из которых содержится описание «аппаратного» компонента, а в другом – конфигурации железа. На втором диске также размещается операционная система.
Если говорить более «научным» языком, то виртуальная машина – это виртуальный компьютер, который использует часть выделенных ресурсов реального физического устройства. Ресурсы при этом хранятся в облаке, что позволяет ВМ работать в автономном режиме. То есть по сути удается создать на существующем компьютере еще одно устройство, которое функционирует изолированно.
Как правило, виртуальная машина работает как программа в отдельном окне или запускается через панель управления. За счет применения такой технологии удается расширить возможности инфраструктуры, особенно, если компания занимается разработкой и тестированием приложений.
В отличие от физического сервера виртуальная машина позволяет проще относиться к вопросу планирования ресурсов. Масштабирование ВМ более гибкое и быстрое, обходится в разы дешевле, а значит, не нуждается в детальной проработке. Если компания сталкивается с нехваткой вычислительных мощностей, то может практически сразу получить новые ресурсы. В случае с физическим оборудованием потребуется замена жесткого диска, оперативной памяти или других компонентов системы.
Кроме того, использование виртуальной машины позволяет клиенту не обслуживать оборудование собственными силами. Ремонтом и обслуживанием аппаратной части занимается облачный провайдер, а клиент – только платит ежемесячную оплату, в которую уже включены все расходы.
Какие цели и задачи решает применение ВМ:
- Использование двух и более операционных систем на одном физическом оборудовании.
- Установка и тестирование различных утилит и приложений.
- Эксперименты с программным обеспечением без риска для основного компьютера.
- Запуск программ, которые не поддерживаются основной операционкой.
- Эмуляция компьютерных сетей и сложных сред.
- Безопасный запуск программ, предположительно зараженных вирусами и т. д.
То есть использование виртуальной машины помогает значительно расширить функционал обычного компьютера. Так что не удивительно, что при построении облачной инфраструктуры многие компании все чаще прибегают к использованию нескольких ВМ. Виртуальная машина в облаке помогает решить ряд бизнес-задач, не покупая новое «железо» и не используя дополнительные серверы.
Если облака для вас
не просто теория
Широкий спектр услуг
по выделенным северам
и мультиклауд-решениям
Конфигурация VPS и бесплатный тест уже через 2 минуты
Организация вашей IT-инфраструктуры на основе мультиклауд-решения
Как осуществляется преобразование
Ситуации, в которых требуется преобразовать уже используемую физическую систему в облачную ВМ, встречаются все чаще. Это может потребоваться для тестирования приложений или экспериментов с программным обеспечением – в общем для решения возникающих перед компанией задач.
Очень многие компании используют многоуровневые и многокомпонентные инфраструктуры, а значит – может возникнуть потребность в дополнительном развертывании виртуальной машины. Однако просто скопировать информационную среду бывает недостаточно, так как технические возможности могут быть ограничены. В этом случае нередко используется вариант с переносом физического диска в облачную среду.
И многих волнует вопрос о том, можно ли как-то преобразовать «железный» диск в образ, которые будет подключен к ВМ. Такое действительно возможно, однако потребуется соблюдение ряда нюансов.
По сути процесс преобразования заключается в том, чтобы все содержимое физического диска переместить в отдельный файл. На практике этот процесс оказывается не таким простым, так как нередко можно столкнуться с рядом проблем. Например, это различные состояния диска:
- Отключен от ПК.
- Расположен в ПК, но не является системным.
- Расположен в ПК и является системным.
- Расположен в ПК, который невозможно выключить, и является системным.
В первом и втором случае потребуется подсоединить дисковое устройство к оборудованию, так как получить образ диска иным способом не получится. В том случае, если диск является системным и установлен в компьютер, то ПК можно выключить и перезагрузить с другого системного носителя. Четвертый случай – наиболее сложный и потребует выполнения ряда дополнительных действий.
Стоит понимать, что перенос системы в виртуальную машину в любом случае будет осуществляться при помощи специальных утилит. Это – программы, которые помогут провести анализ содержимого диска. Именно благодаря им удастся посекторно прочитать все файлы и записать их в нужном порядке. Однако немало проблем возникает именно при чтении системного диска: многие файлы попросту оказываются заблокированы, также из-за частого изменения данных возникает нарушение целостности уже записанного образа. Поэтому стоит максимально ответственно подойти к выбору необходимого программного обеспечения.
Чуть ниже мы поговорим о популярных приложениях для создания образа, а пока рассмотрим вопрос формата. Образ представляет собой посекторную копию диска и она в любом случае будет избыточной. Это означает, что в образ будут записаны даже пустые области диска. Для оптимизации всего процесса преобразования стоит изначально оптимизировать диск. Например, при помощи специальных программ уменьшить размер виртуальных дисков.
Что касается популярных форматов, то их достаточно много. Для каждой платформы виртуализации существует свой формат. Наиболее часто встречаются следующие:
- .vhdx – Microsoft Hyper-V;
- .vhd – Virtual PC;
- .qed – QEMU и др.
Редко упоминаются и ISO-образы. Однако в большинстве случаев такие форматы относятся к CD и DVD, а не применительно к компьютерным дискам.
Также в контексте темы нередко упоминаются такие форматы, как OVF и OVA. Изначально они разрабатывались для хранения данных ВМ, а не для образов дисков. OVF-пакет представляет собой стандарт для файлов, а не отдельный образ. OVA же является TAR-архивом.
Какие утилиты используются
Теперь подробнее расскажем о приложениях, которые помогут создать виртуальные диски. Стоит отметить, что подобные средства уже можно встретить даже в настольных версиях ОС Windows. Но мы же рассмотрим программы, позволяющие получить полную виртуальную копию регулярно используемого диска:
- Disk2vhd. Очень часто миграция в виртуальную машину осуществляется при помощи этого бесплатного инструмента. С его помощью можно создать диск с форматом .vhd. Подходит для создания образа работающего системного диска, правда сочетается только с Windows. Плюс инструмента в том, что он позволяет записать образ даже на начальный диск, но только при наличии достаточного свободного пространства. Программа является портативной, то есть ее не нужно дополнительно устанавливать и можно запустить из любого расположения на диске. Также ПО работает в режиме командной строки. Подойдет утилита для создания ВМ из 1-го или нескольких томов. Существует две версии приложения – для сервера и для изолированной виртуальной машины. Конечный образ может быть зашифрован.
- Clonezilla. Программа, которую можно использовать совершенно бесплатно. Подходит для создания образов, копирования дисков или восстановления при помощи резервной копии.
- qemu-img. Программа, которая входит в состав почти всех Линукс/Юникс-систем. Ее особенность в том, что она позволяет создать побайтный образ облачной виртуальной машины. Но стоит понимать, что в виде виртуального диска полученный образ может использоваться только после преобразования.
- VirtualBox. Этот инструмент подходит для конвертации Windows в образы ВМ. Однако есть некоторые трудности с применением программы, так как создать нужный формат можно только при клонировании ранее созданного VHD.
Для развертывания полученного образа подойдет любая облачная платформа. Единственное условие – характеристики виртуального сервера должны соответствовать имеющимся системным требованиям.
Многие облачные серверы предоставляют уже существующие образы с предустановленными операционными системами. Вы можете воспользоваться таким вариантом в том случае, если не имеете возможности создать собственный образ диска и вам подойдет виртуальная машина «с нуля».
Выводы
Возможность создания ВМ в облачной инфраструктуре появилась достаточно давно, однако многие потенциальные пользователи до сих пор отказываются от такой возможности. И чаще всего это связано со сложностями запуска виртуальной машины на облачном сервере.
С современными инструментами этот процесс становится достаточно простым, поэтому его можно выполнить даже без помощи системного администратора. Но, конечно, стоит помнить о том, что потребуется учесть ряд особенностей переносимого диска и подобрать необходимый инструмент для его виртуализации. Но в целом современные средства и методы миграции в виртуальную облачную среду очень доступны, поэтому такое решение подойдет для различных компаний.
Если вы хотите запустить виртуальную машину в облаке, но не знаете, с чего начать, то специалисты нашей компании Xelent готовы помочь с решением проблемы. Оставляйте свои заявки на сайте или свяжитесь с менеджером по указанным телефонам!
Источник: www.xelent.ru
На Android можно будет запускать приложения без установки. Прямо из облака
Несмотря на то что пользователи постепенно начинают терять интерес к процессорным ядрам, гигагерцам и гигабайтам, уделяя приоритетное значение другим особенностям смартфонов, никому не хочется купить откровенно слабый аппарат. Ведь он не только не получит свежих обновлений, потому что производитель объявит его недостаточно производительным, чтобы вытянуть все нововведения, но даже не сможет запускать более или менее требовательные игры и приложения. Но думать так в эпоху облачных технологий – это, конечно, большое заблуждение.
Облачные технологию скоро могут заменить железные
Студия Canonical объявила о создании облачной платформы для запуска Android-приложений без необходимости их установки под названием Anbox Cloud. В отличие от сервиса Quick Apps, который всё-таки загружает на устройство небольшой объём данных, чтобы иметь возможность запустить фрагмент той или иной программы или игры, решение Canonical работает исключительно с облаком. По сути, оно предлагает запускать приложения и игры на удалённых серверах и ретранслировать картинку на устройство пользователя.
Можно ли запускать приложения в облаке
Возможность запуска приложений в облаке напрашивалась уже давно, но скоро может стать реальностью
По большому счёту ничего выдающегося в этой идее нет. Сегодня по такому принципу работают все потоковые игровые сервисы. Их создатели решили, что скорость беспроводного интернета сегодня достаточно высока, чтобы передавать с удалённых серверов картинку на устройства пользователей. Ведь далеко не у всех есть компьютеры, которые могли бы вытянуть последние новинки игрового мира, не говоря уже о смартфонах, на которых даже GTA V вряд ли пошла бы без лагов. Однако Canonical пошла ещё дальше и рискует произвести революцию на рынке мобильных приложений.
Подпишись на наш канал в Яндекс.Дзен, чтобы не пропустить эксклюзивные материалы, которые не попадают на сайт.
Anbox Cloud позволит разработчикам создавать мобильные игры и приложения, требующие для обеспечения своей работы даже большего объёма памяти и мощного процессора, чем сейчас. Но поскольку запускаться они всё равно будут на мощных серверах Canonical, пользоваться ими смогут даже владельцы недорогих аппаратов, у которых раньше такой возможности не было. Но почему тогда никто не догадался сделать этого раньше?
Как защитить облачные приложения
Дело в том, что облачные приложения довольно плохо защищены от стороннего вмешательства. Однако разработчикам Canonical удалось решить эту проблему. Для этого было решено взять ядро Ubuntu 18.04 LTS и систему контейнеров, которая создаёт изолированное окружение для всех приложений, работоспособность которых обеспечивает сервер. В результате нарушить эту среду так просто уже нельзя, потому что все данные, которые передаются удалённому соединению, надёжно защищены своего рода оболочкой. Но основную сложность представляет отсутствие оборудования, способного обеспечить безопасную доставку данных из облачного приложения до пользователя.
Сейчас Canonical сотрудничает с компанией Packet, поставщиком облачной инфраструктуры для разработчиков, у которой есть необходимое оборудование. Однако для широкого распространения платформы, позволяющей запускать приложения в облаке, скорее всего, мощностей Packet будет недостаточно. Тем более, что Canonical планирует реализовать этот сценарий не только для мобильных устройств, но и для компьютеров. Это, по сути, сделает совершенно бесполезным мощное железо и, очевидно, приведёт нас в новое облачное будущее.
Почему облачных приложений не будет
Пока проект Canonical, бесспорно, выглядит как утопия. Ну не могу я поверить, что вчера мы ещё тратили по тысяче долларов на флагманские смартфоны, чтобы иметь возможность запускать передовые приложения и игры, а завтра сможем купить любой бюджетник за 50 долларов и играть на нём и RDR2, GTA V, и много чего ещё. Ведь даже если эта идея и осуществима, логично предположить, что производители процессоров, памяти и других комплектующих будут выступать решительно против создания таких платформ, которые вполне могут оставить их банкротами.
Теги
- Мобильные технологии
- Операционная система Android
- Приложения для Андроид
Источник: androidinsider.ru