Как не платить за Java хостинг или быстрый старт с Google App Engine

Все мы хоть когда-нибудь писали приложения, облегчающие жизнь. Не на заказ, а просто для себя. Записные книжки, программки учета финансов, набор карточек для изучения иностранного языка — да мало ли в жизни хороших идей? И вот было бы здорово, иметь доступ к этой программке не только со своего компьютера, но и с рабочего! А то и поделиться с друзьями своей замечательной программкой!


Все отлично, если вы, скажем, PHP программист — дешевых и даже бесплатных хостингов море.


А что если вы программист Java? Готовые Tomcat хостинги недешевы, а если у вас еще и несколько таких программок, то желание поделиться ими с друзьями выльется в копеечку.


Примерные цены на JVM хостинг

Что же делать?


Google нам поможет...


Для следующего рецепта нам понадобится:

  • IntelliJ Idea — 1 шт (можно использовать и Eclipse, но на работе наша команда работает с Idea, и мне Idea как-то уже привычнее)
  • Аккаунт в Google — скажем, ваша gmail почта
  • Доступ к интернету — для скачивания Cloud Code плагина и загрузки вашего приложения на облако
  • Имя, адрес, телефон, номер кредитной или дебетовой карточки. Но не волнуйтесь, ни копейки с этой карточки списано не будет
  • Примерно 15 минут времени


Итак, поехали!


Запускаем Idea, выбираем Ctrl-Alt-S > Plugins. Ищем Cloud Code by Google Cloud


image

Устанавливаем, переоткрываем Idea


Если проект у вас новый, то просто при создании проекта выбираем поддержку Google App Engine Standard (почему стандард? Потому что есть еще flexible, но его бесплатного не бывает, и в целом он дороже).


image

Если же программка у вас уже написана, то идем в Tools > Cloud Code > App Engine > Add App Engine support > Google App Engine Standard.


Далее мы хотели бы протестировать приложение на нашем компьютере.


Для этого нужно скачать и установить Google Cloud SDK. Вообще-то Idea может сама управлять Google Cloud SDK — скачивать и устанавливать последнюю версию, прописывать все системные переменные, и т.д. Для этого в Settings > Other Settings > Cloud Code > Cloud SDK нужно выбрать «Allow the plugin to manage and install the Cloud SDK». Но мой выбор был скачать и установить вручную.


Затем нам нужно выбрать, что именно будет заливаться на облако (или отлаживаться локально). То есть создать артифакт. Идем Ctrl-Alt-Shift-S > Artifacts > + > Web Application Exploded и выбираем какие именно модули пойдут в наше приложение


Продолжаем с настройкой отладки на localhost.


Добавляем новую Run-Debug Configuration. Шаблон выбираем Google App Engine Standard Local Server. И единственную настройку, которую нужно поменять, это Artifact to deploy — выбрать артифакт, созданный на предыдущем шаге. Если выпадающий список пустой, то либо вы забыли создать артифакт для вашего приложения, либо его тип не Web Application Exploded, а какой-то другой. Еще можно поменять порт. Если у вас другие приложения крутятся на 8080, то cloud приложения можно отлаживать, скажем, на 8888.


image

Сохраняем, запускаем. Приложение появится в вашем браузере по ссылке localhost:8080 (или 8888). Если программа наткнется на breakpoint, то Idea сама активизируется и вылезет поверх всех остальных окон.


Кстати, breakpoint-ы можно ставить не только на ваших Java классах (сервлетах и прочей серверной части), но и на jsp страницах. Тогда отладка остановится каждый раз, когда браузер запрашивает эту страницу


Отлично! Локально все работает, пора заливать на сервер!


Заходим в наш Google аккаунт, и переходим на Google Cloud Console. Сверху окна появится предложение активировать триал и получить $300 для использования различных облачных сервисов. Эти $300 действительны ровно год, если за год вы их не израсходовали (а скорее всего, не израсходуете. Для примера, приложение с 60 постоянными активными пользователями, каждый из которых имеет отдельный namespace в DataStore с десятком таблиц в каждом — все это тратит примерно $4 в месяц). Так вот, если вы не используете эти $300, то через год они исчезнут.

image

При активации триала, Google попросит о вас все данные — имя, адрес, телефон и номер кредитной или дебетовой карточки. Причем в информационном окошке они заверяют, что ни копейки с карточки не снимут, если только вы сами вручную не подпишетесь на платный аккаунт. Объясняют это проверкой, что вы не робот. На самом деле это сделано, чтобы вам легче было потом подписаться на платные услуги. Если вы решили купить услугу, а тут Google просит ввести номер кредитной карты, вы три раза подумаете: «А нужна ли мне эта услуга?». А если данные кредитной карты уже есть, то и покупка проходит легче — нажал кнопку, подтвердил — и вот, ты уже подписан!


Но это все лирика. Далее нам нужно создать GCP проект. Проект — это не обязательно отдельная программка. Вы можете раздавать сотни программок с одного и того же проекта. Проект в GCP — это скорее направление, сфера работы. На картинке выше проект называется API Project


Возвращаемся в Idea. Снова идем в Run/Debug Configurations, но на этот раз шаблон выбираем Google App Engine Deployment. Здесь настроек вообще по-минимуму. Нужно выбрать только артифакт в строке Deployment и созданный на предыдущем шаге GCP проект. Если вы делаете это в первый раз, то Idea пропросит вас зайти в ваш Google аккаунт.


Казалось бы все? А вот и нет. Дело в том, что App Engine ассоциирует ваше приложение с виртуальным сервером. И этот сервер должен находиться на том или ином физическом сервере Google — так называемой зоне. Всего у Google 20 регионов и 61 зона. Обычно лучше всего выбирать зону, наиболее близкую к вашим клиентам — ссылки внутри зоны открываются гораздо быстрее, чем ссылки между зонами


image

После того, как все настроено, можно запускать заливку приложения на сервер. Формально, нам нужно бы еще создать файл app.yaml с параметрами для App Engine. По факту же плагин Cloud Tools облегчает нам эту задачу, и генерирует страндартный app.yaml автоматически.


Когда мы заливаем приложение на облако в первый раз, это может занять продолжительное время, ведь Idea загружает все нужные файлы на сервер. Впоследствии же она будет загружать только измененные файлы, и все будет годаздо быстрее.


image

Когда же весь процесс завершен, ваш проект будет доступен всему миру по автоматически сгенерированной ссылке, заканчивающейся на .appspot.com.


Поздравляем! Вы онлайн!

AdBlock похитил этот баннер, но баннеры не зубы — отрастут

Подробнее
Реклама

Комментарии 12

    +2

    Только Google Cloud не работает с физиками в РФ (как минимум триал не дает начать, хотя данные ип никак не проверяет).

      0

      Добавлю: раньше им можно было пользоваться в рамках бесплатных квот (которых вполне хватало для домашних проектов) без подключения billing, однако после 30 ноября 2019 года эта возможность пропала из-за введения обязательного использования Google Cloud Build, который в свою очередь обязательно требует billing. То есть чисто технически App Engine можно использовать как физическое лицо бесплатно, но задеплоить новую версию кода уже нельзя.

        0

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

      • НЛО прилетело и опубликовало эту надпись здесь
          +2
          брать обычный VPS (5$ на digitalocean) и самому ставить nginx, tomcat, СУБД и прочее.

          apt-get update && apt-get -y install docker.io nginx software-properties-common certbot wget git openjdk-8-jdk
          

          и хватит.
          остальное — контейнерами и компоузом
            0
            Насколько использование докера ощутимо нагружает систему на vps? Преимущества перевешивают недостатки?
              0
              ну, у меня в контейнерах прокси живут. если не озабочиваться host networking mode, то из 100 Mbps вытаскивается максимум 40 при полностью загруженных ядрах.
              А так — с чего ему нагружаться, вычислительный оверхед у докера мизерный.
              0
              да и nginx в докере поднять)
              0
              Если EE не надо, то помимо tomcat есть еще куча вариантов, caucho resin например. К тому же, статику он не сильно хуже nginx отдавать умеет.

              Статья очень удивительная, такое ощущение, что автор только вчера открыл дверь с табличкой «java»

              вспомнил: AWS t2.micro целый год бесплатен, и образы с томкатом там уже есть готовые.
              +3
              Еще можно вспомнить, что есть embedded tomcat и jetty, чтобы деплой заканчивался на команде «java -jar app.jar» или через systemd
                0
                Наша комманда для «поиграться» со Spring Boot приложениями пользовалась Heroku
                  0
                  можно на амазоне поднять свое приложение, там тоже будет бесплатно(особенно, если мало людей посещают). там еще и дополнительные плюшки будут))

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

                  Самое читаемое