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

JavaGoogle App EngineGoogle Cloud Platform
Из песочницы

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


Все отлично, если вы, скажем, 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.


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

Теги:javagoogle app enginegoogle cloud platform
Хабы: Java Google App Engine Google Cloud Platform
+17
8,6k 93
Комментарии 12

Похожие публикации

Факультет Java-разработки
23 января 2021180 000 ₽GeekBrains
Профессия Java-разработчик
2 февраля 202182 500 ₽SkillFactory
Cloud Solution Architecture
25 февраля 202144 000 ₽OTUS
Java Junior Developer
17 февраля 202123 990 ₽Level UP

Лучшие публикации за сутки