Руководство по запуску Serverless-приложений

В конце прошлого года мы запустили в бета-тестирование нашу Serverless-услугу Облачные функции. В этом коротком руководстве на примере Flask-приложения расскажем, как начать использовать новый сервис.

Это сервис бессерверных вычислений, который позволяет создавать приложения, не заботясь о поддержке инфраструктуры. То есть вам не нужно настраивать сервер — нужно просто писать код.

Новый сервис отлично справится с автоматизацией фоновых задач (отправкой писем, генерацией скриншотов или работой с API), вычислениями на статичных сайтах, ETL-процессами и бэкендом для API и мобильных приложений.

Подготовка окружения

Все нижеперечисленные команды нужно выполнять на виртуальной машине.

Подготовьте виртуальную машину с CouchDB и тестовым приложением в контейнере, используя Docker.

Готовим виртуальную машину

Установка и запуск Docker

Обновите репозитории:

sudo apt-get update

Удалите пакеты Docker, установленные по умолчанию:

sudo apt-get remove docker docker-engine docker.io

Инсталлируйте Docker:

sudo apt install docker.io

Запустите Docker в качестве демона:

sudo systemctl start docker

Установка образа

Скачайте Docker образ CouchDB:

docker pull couchdb

Скачайте наш пример Flask-приложения:

docker pull selectel/shiny-flask-app

Запустите контейнер с CouchDB:

docker run -e COUCHDB_USER=user -e COUCHDB_PASSWORD=password -p0.0.0.0:5984:5984/tcp -d couchdb

Запустите контейнер с shiny-flask-app:

docker -v run --rm -e server_url=XXX.XXX.XXX.XXX:5984  -e admin_username=user -e admin_password=password -p0.0.0.0:2020:2020/tcp -d selectel/shiny-flask-app

Где server_url — это Floating IP вашей виртуальной машины и порт, на котором слушает CouchDB, а admin_username и admin_password эквиваленты COUCHDB_USER и COUCHDB_PASSWORD соответственно.

Готовим базу данных

Создайте в CouchDB новую базу данных под названием Products, для чего используйте следующую команду:

curl -u user:password -X PUT http://<couchdb_ip>:5984/products

Где couchdb_ip — Floating IP виртуальной машины, на которой запущены контейнеры.

Используя API приложения создайте в CouchDB запись:

curl -v -X POST -d '{"_id": "xxxx", "name": "product1"}' -H "Content-Type: application/json" -u user:password XXX.XXX.XXX.XXX:2020/v1.0/products/createProduct

Где XXX.XXX.XXX.XXX — IP адрес виртуальной машины, на которой поднят Docker контейнер.

Проверить, что запись в базе создана, можно используя этот запрос:

curl -v -H "Content-Type: application/json" XXX.XXX.XXX.XXX:2020/v1.0/products/xxxx

Работа с проектом

Создайте новый проект в Облачной платформе или используйте существующий.

Назовите проект.

Перейдите в созданный проект.

Перейдите на вкладку Функции.

Нажмите Создать функцию.

Укажите имя функции и нажмите Создать функцию.

Нажмите Редактировать, чтобы загрузить код и настроить функцию.

Скачайте репозиторий с кодом.

Создайте архив с кодом функции, находясь в корневой директории репозитория:

tar -cvf shiny_flask_app.tar

Загрузите архив с кодом приложения из нескольких файлов или файл с кодом функции.

Укажите путь к файлу с кодом в архиве: /shiny_flask_app/api/products.py

Укажите название вызываемой функции.

Добавьте переменные окружения с помощью кнопки Добавить.

Первая переменная, которая нам необходима, admin_username. Присвойте ей значение user.

Таким же образом присвойте еще две необходимые переменные: admin_password и server_url со значениями password и XXX.XXX.XXX.XXX:5984 соответственно.

Остановимся подробнее на server_url — это IP-адрес виртуального сервера с запущенным CouchDB и порт, на котором CouchDB слушает запросы.

Далее сохраните введенную информацию и разверните функцию с помощью кнопки Сохранить и развернуть.

Чтобы вызвать функцию с помощью HTTP-запроса, сделайте ее публичной.

Скопируйте URL.

Вызовите функцию, добавив к запросу URL из панели.

curl -k -X POST --data '{"args": ["xxxx"], "kwargs": {}}' -H "Content-Type: application/json" URL

Где хххх такой же, как в запросе в начале руководства, а URL взят из настроек функции.

Готово, вы запустили свое первое Serverless-приложение!

Что еще почитать по теме

T-Rex 21 сентября 2022

Гипервизор VMware ESXi: функции и отличия от ESX

В статье рассказываем о работе с гипервизором ESXi, его отличиях от ESX и vSphere.
T-Rex 21 сентября 2022
Андрей Салита 14 сентября 2022

Отличия TCP- и UDP-протоколов — определяем разницу на примерах

Рассматриваем два самых популярных протокола транспортного уровня — протоколы TCP и UDP — и сравниваем их.
Андрей Салита 14 сентября 2022
Владимир Туров 7 сентября 2022

Bat-файлы — их создание и команды

Рассмотрим мощный инструмент автоматизации рутинных задач в семействе операционных систем Windows.
Владимир Туров 7 сентября 2022

Новое в блоге

Михаил Фомин 24 июня 2022

Docker Swarm VS Kubernetes — как бизнес выбирает оркестраторы

Рассказываем, для каких задач бизнесу больше подойдет Docker Swarm, а когда следует выбрать Kubernetes.
Михаил Фомин 24 июня 2022
Ульяна Малышева 30 сентября 2022

«Нулевой» локальный диск. Как мы запустили облако только с сетевыми дисками и приручили Ceph

Чем хороши сетевые диски и почему именно Ceph, рассказал директор по развитию ядра облачной платформы Иван Романько.
Ульяна Малышева 30 сентября 2022
Валентин Тимофеев 30 сентября 2022

Как проходит онбординг сотрудников ИТО? Что нужно, чтобы выйти на смену в дата-центр

Рассказываем, как обучаем новых сотрудников, какие задачи и испытания проходят инженеры прежде, чем выйти на свою первую смену.
Валентин Тимофеев 30 сентября 2022
T-Rex 28 сентября 2022

Книги по SQL: что почитать новичкам и специалистам

Собрали 6 книг, которые помогут на старте изучения SQL и при углублении в тему.
T-Rex 28 сентября 2022