Переход с Heroku на Render

Время от времени я слышу слова или фразы, которые повторяются настолько часто, что в конце концов я думаю: «Хм, надо бы это проверить». Render — одно из таких слов.

В Twitter я видел различные разговоры, в которых люди хотели перейти с Heroku на другой сервис. Среди вопросов, которые люди поднимали, были следующие:

  • Стоимость
  • Отсутствие возможностей для постоянного хранения данных
  • Не подходит для размещения статических сайтов
  • Замедление разработки последних продуктов.

В некоторых из этих разговоров я видел вопрос: «А как насчет Render?».

Итак, что насчет Render? Насколько сложно перейти с Heroku на Render? Я решил выяснить это. Я начал с простого веб-приложения, которое я развернул на Heroku, и прошел через процесс его переноса на Render. В общей сложности это заняло у меня около 10 минут. В этом посте я расскажу о том, как я это сделал.

Все, что вам нужно для начала работы, — это учетная запись на GitHub.

Краткий обзор моего приложения Node.js

В настоящее время у меня есть простое приложение Node.js, работающее на Heroku. У меня также установлены Heroku Postgres и Heroku Redis в качестве дополнений для этого приложения.

Приложение простое. Когда я отправляю запрос GET на /countries, я получаю тело ответа, которое 1) сообщает мне источник данных (база данных или кэш) и 2) дает мне список стран.

Существует также конечная точка (/clear_cache), к которой я могу обратиться с запросом POST, чтобы очистить кэш Redis.

Шаг 1: Настройка нашего приложения в Render

Сначала зайдите на render.com и либо войдите в систему, либо зарегистрируйтесь на GitHub. После того как вы вошли, нажмите на кнопку New в верхней панели рядом с аватаром вашего аккаунта. Затем выберите Web Service.

Затем выберите репозиторий GitHub, который вы хотите развернуть. Дайте имя своему приложению и назначьте ему соответствующие команды запуска. В данной демонстрации — поскольку это проект Node.js — мое приложение настроено на запуск npm install и npm start.

Здесь также можно выбрать бесплатный тарифный план. Пока что этого достаточно для наших демонстрационных нужд. Вы всегда сможете повысить тарифный план по мере роста вашего приложения.

Шаг 2: Настройка Postgres на Render

Настроить Postgres на Render очень просто. Опять же, в верхней строке меню достаточно нажать на New, а затем PostgreSQL.

Затем укажите имя для вашей базы данных Postgres. Для этой демонстрации я оставил все значения по умолчанию и выбрал бесплатный тарифный план.

Затем нажмите на кнопку Создать базу данных.

Ниже вы увидите шаг «Настройка переменных среды», но мы вернемся к нему чуть позже. А пока перейдем к настройке Redis.

Шаг 3: Настройка Redis на Render

Redis — это быстрое и гибкое хранилище ключевых значений, которое мы будем использовать для кэширования в нашем демо-приложении. Постоянный запрос к базе данных может стать дорогостоящим, особенно при увеличении масштаба приложения. Когда последующие запросы возвращают один и тот же результат, имеет смысл кэшировать эти результаты, чтобы избежать ненужных обращений к базе данных. Redis позволяет нам это сделать.

До недавнего времени Render не предлагал управляемую службу Redis. Вам приходилось самостоятельно размещать Redis в другом месте. Но вот хорошие новости! После нескольких месяцев раннего доступа Render недавно выпустил свой управляемый сервис Redis, который включает в себя бесплатный уровень!

Итак, как и раньше, нажмите на New и выберите Redis из выпадающего списка. Обязательно дайте имя экземпляру Redis, выберите бесплатный тарифный план, а затем нажмите на Create Redis.

Теперь, когда Redis и Postgres установлены, мы можем перейти к настройке переменных окружения.

Шаг 4: Настройка переменных окружения

Наше веб-приложение зависит от определенных переменных окружения. В частности, мы хотели иметь возможность задавать расположение базы данных Postgres и Redis «на лету», а не жестко прописывать их в коде. Давайте рассмотрим, как указать эти переменные окружения в Render.

Перейдите на панель Dashboard и нажмите на веб-службу, созданную в первом шаге.

Нажмите на Environment в поднавигационном меню на странице.

Теперь вы можете либо создать отдельные переменные окружения, которые будут привязаны к веб-службе, либо создать группу окружения и привязать ее к веб-службе. Для нашего приложения подойдет любой из этих подходов.

Нам нужно создать три переменные окружения:

Переменные окружения для вашей веб-службы должны выглядеть следующим образом:

Тестирование нашего приложения

Установив переменные окружения, мы можем протестировать наше приложение. Я использовал команды curl для отправки запросов в приложение Render.

Сначала мы отправляем запрос GET на https://redis-postgres-demo.onrender.com/countries. В окне моего терминала команда выглядит следующим образом:

curl -X GET https://redis-postgres-demo.onrender.com/countries

Вот ответ, который я получил:

Источник описывает, откуда мы получаем данные, а данные — это просто все страны. Из приведенного выше ответа видно, что для этого первого запроса источником данных является база данных.

Далее мы отправляем второй запрос GET на ту же конечную точку. Ответ выглядит следующим образом:

Как и ожидалось, источником данных для этого второго запроса является кэш Redis, а не база данных.

Далее мы отправляем POST-запрос, чтобы очистить кэш:

curl -X POST https://redis-postgres-demo.onrender.com/clear_cache

После очистки кэша мы отправляем еще один запрос GET для получения списка стран. Как и ожидалось, поскольку кэш не используется, источником возвращаемых данных является база данных.

И с этим наше маленькое приложение плавно перешло на Render. Render делает настройку Postgres и Redis простым делом!

Заключение

Итак, у нас было приложение, работающее на Heroku и использующее Postgres и Redis. Просто подключив наш аккаунт GitHub к Render, мы смогли использовать Render для:

  • Развернуть наш веб-сервис
  • Настроить Postgres и Redis
  • Настроить переменные окружения, указывающие нашему веб-сервису на базу данных Postgres и экземпляр Redis.

Мы сделали все это несколькими щелчками мыши, примерно за то время, которое требуется, чтобы сварить кофе.

Итак, давайте вернемся к первоначальному вопросу. Если вы хотите перейти с Heroku, вы можете спросить: «А как насчет Render?». Я бы сказал, что его определенно стоит рассмотреть.

Вот видео, в котором описывается весь мой процесс:
https://youtu.be/dambnfHv6fU

Оцените статью
Procodings.ru
Добавить комментарий