Начало работы с Heroku на языке Java

Начало работы с Heroku на языке Java

Heroku – очень крутая штука! Тебе не нужно заморачиваться с настройкой железа, балансирования, маршрутизации и прочими радостями воздвижения нового сервиса, т. к. все за тебя сделали (и будут делать) разработчики. Тебе дается уже готовый сервак – бери и ваяй свое приложение.

Это руководство поможет развернуть Java-приложение за считанные минуты.

Предполагается, что у тебя уже:

  • есть бесплатный аккаунт Heroku;
  • установлена Java 8;
  • установлен Maven 3.

Если ты больше любишь Gradle, то тебе в раздел официального хелпа.

Для Heroku CLI требуется система контроля версий Git. Если она у тебя еще не установлена, выполни следующие действия:

  • установка Git; .

CLI используется для управления и масштабирования приложений, подготовки модулей, просмотра журналов и т. д.

Загрузи и запусти нужный установщик: Mac, Win32, Win64, Linux ( sudo snap install heroku –classic ).

После установки уже можно вводить команды с помощью директивы heroku в любимом терминале.

Используй команду heroku login для входа в Heroku CLI (может ругнуться фаервол – все разрешаем):

Эта команда откроет страницу Heroku – нажми там кнопку Войти .

Аутентификация требуется для правильной связки heroku и git .

Начало работы с Heroku на языке Java

Чтобы создать локальную копию приложения, которую можно развернуть в Heroku, выполни следующие команды в терминале:

Теперь у тебя есть рабочий репозиторий. Приложение включает в себя файл pom.xml, используемый менеджером Maven.

На этом шаге ты развернешь приложение в Heroku.

Первым делом подготовим Heroku к получению исходного кода:

На этом шаге создается удаленный репозиторий (с именем heroku) и связывается с локальным.

По дефолту Heroku генерирует случайное имя для приложения, но можно указать и свое.

Теперь давай развернем код:

Готово. Убедись, что хотя бы один экземпляр приложения запущен:

Теперь перейди в приложение по ссылке, созданной из его имени, или поступи следующим образом:

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

Чтобы посмотреть логи запущенного приложения, воспользуйся командой heroku logs –tail :

Heroku использует специальный текстовый файл Procfile (мини-конфиг) для явного указания директив запуска приложения.

Procfile в развернутом приложении выглядит примерно так:

Здесь объявляется тип процесса web и команда, необходимая для его запуска. Web указывает на то, что этот тип процесса будет прикреплен к стеку маршрутизации Heroku для получения трафика.

Начало работы с Heroku на языке Java

Сейчас приложение работает на одном dyno-процессе. Dyno – это легковесный контейнер Linux, запускаемый по команде из Procfile.

Проверить, сколько dyno сейчас запущено, можно так:

По умолчанию приложение деплоится в свободном dyno. Свободными они становятся (засыпают) после тридцати минут бездействия (т. е. если они не получают никакого трафика). Это поведение вызывает задержку в несколько секунд при первом запросе “пробуждения”. Последующие запросы будут выполняться нормально.

Чтобы избежать спящего режима dyno, можно обновить тип dyno на хобби или профи. Например, если ты мигрируешь свое приложение на профи уровень, можно легко масштабировать его, попросив Heroku подготовить определенное количество dyno.

Масштабирование приложения в Heroku эквивалентно изменению количества запущенных dyno.

Установить ненулевое количество веб dyno можно так:

Heroku автоматически определяет Java-приложение, если оно содержит файлик pom.xml в корневом каталоге. Ты можешь создать pom.xml для других приложений с помощью команды mvn archetype: create .

В развернутой демке приложения уже имеется pom.xml с такой начинкой:

В этом файлике указаны зависимости, требуемые для работы приложения. При развертывании Heroku прочитает файл и все установит, запустив mvn clean install .

В папке есть еще один файл, system.properties , указывающий на версию Java. Содержимое этого необязательного файла ниже:

Запусти mvn clean install в локальном каталоге, чтобы установить зависимости и подготовить систему к локальному запуску приложения. Обрати внимание, что приложению требуется Java 8, но ты можешь запушить другие приложения с поддержкой другой версии Java.

Если Maven не установлен или появляется ошибка, например, mvn is not recognized as an internal or external command , используй команду-обертку: запустив mvnw clean install на Windows или ./ mvnw clean install на Mac и Linux. Это одновременно устанавливает и запускает Maven.

Процесс Maven скомпилит и создаст JAR с зависимостями, помещая его в корневой каталог приложения. Этим процессом рулит spring-boot-maven-plugin из pom.xml.

Если ты не юзаешь Spring в pom.xml, можно указать иной плагин:

Запусти приложение с помощью команды heroku :

Открой в браузере http://localhost:5000 – ты должен увидеть свое приложение.

Для остановки приложения вернись в окно терминала и нажми CTRL+C .

На этом шаге ты узнаешь, как внести локальные изменения и развернуть их в Heroku. В качестве примера мы добавим зависимость и некоторый код.

Измени pom.xml, добавив зависимости для jscience в блок dependencies :

В 28 строке добавь:

Теперь добавь следующие объекты в 19 строку файла src/main/java/com/example/Main.java :

Добавь метод hello в 59 строку src/main/java/com/example/Main.java :

Создай src/main/resources/templates/hello.html с таким содержимым:

По адресу http://localhost:5000/hello ты должен увидеть следующее:

Heroku предоставляет поддержку Postgres, Redis, MongoDB и MySQL.

На этом шаге ты узнаешь о дополнении Heroku Postgres , поставляемом при развертывании всех приложений Java.

Heroku Postgres сама по себе является надстройкой, поэтому для обзора БД можно использовать команду heroku addons :