Статьи

Ускорьте Java-приложения с CloudBees

Платформа CloudBees: Введение

Мир разработки Java кардинально изменился с Maven и Jenkins / Hudson. Maven изменил способ создания приложений и управления зависимостями. В то время как Jenkins стал инструментом выбора для непрерывной интеграции (CI) и непрерывной доставки (CD). Детальное изучение этих тем сегодня не стоит на повестке дня. Мы рассмотрим облачную платформу, где разработчик на основе Java / JVM был бы очень рад найти все, что ему нужно: Добро пожаловать в CloudBees. CloudBees предоставляет вам услуги от хранения вашего кода в облаке до создания и развертывания кода в облаке. Не меняя способ работы, вы можете запустить и запустить приложение, как только оно будет готово! Без дальнейших церемоний, давайте сделаем некоторые руки!

Предпосылки и сфера применения

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

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

Настройка CloudBees и репозитория кода

Создайте учетную запись CloudBees и настройте репозиторий кода, перейдите в раздел «Сервисы -> Репозитории» и «Создайте новый репозиторий кода». Я выбрал Git и назвал его CloudBeesClinic, но вы также можете выбрать SVN в качестве хранилища кода. Для целей этого урока я собираюсь придерживаться Git.

Вам также понадобится git-клиент, прежде чем мы сможем отправить код в наш репозиторий. Я использую клиент командной строки GitHub. После настройки клиента git сгенерируйте ключи SSH для связи с хранилищем кода. Если вы работаете в Windows, используйте только что установленный клиент git, а для систем на базе Linux / Unix выполните следующую команду:

  SSH-серийник 

После того, как ключи сгенерированы, скопируйте открытый ключ из id_rsa.pub (это файл по умолчанию, если вы выбрали значения по умолчанию при генерации ключа SSK) и перейдите в Учетная запись CloudBees -> SSH Keys. Добавьте открытый ключ со своего компьютера в CloudBees. Для получения дополнительной информации о том, как установить клиент Git, проверьте здесь, и чтобы сгенерировать ключи SSH, проверьте здесь

Начальная загрузка проекта

Мы создадим проект с использованием инструмента RAD: Spring Roo, и вы можете получить более подробную информацию о создании проекта в первом разделе этой статьи . Вы должны увидеть каталог src и другие файлы, такие как pom.xml. Давайте продолжим и отправим этот код в наш репозиторий git на CloudBees.

git init // Initializing the Git repo locally
git remote add origin ssh://[email protected]/<strong><em>YOUR_CLOUDBEES_ID</em></strong>/CloudBeesClinic.git
//(Abve URL is “Authenticated access” field when you created repository in cloudbees)
git add -A  // Adding all files and subdirectories to repository.
git commit -m 'Initial checkin' // Committing to local repository.
git push origin master // Pushing the committed changes to server repository.

Настройка сборки и развертывания проекта

CloudBees предоставляет Jenkins как инструмент для непрерывной интеграции и доставки. Хотя Jenkins — очень универсальный инструмент, и я могу написать над ним книгу, давайте начнем использовать ее в контексте нашего проекта, чтобы лучше понять ее. Перейдите в свою учетную запись cloudbees -> Службы -> Jenkins и создайте «Новое задание», выберите «Создать проект maven2 / 3» и укажите подходящее имя задания. Сейчас я собираюсь оставить большинство полей по умолчанию и настраивать только то, что нужно. Итак, вот наша первая минимальная работа, которая потребует следующих параметров

Развернуть сейчас по умолчанию — Проверено: Это развернет нашу сборку, как только она будет успешно построена. Управление исходным кодом: укажите URL-адрес хранилища исходного кода, в нашем случае Git. Это тот же URL, который мы указали ранее при фиксации кода.

В разделе «Триггеры сборки» я собираюсь выбрать «Периодическая сборка» и указать значение «00 0-23 * * *», синтаксис которого аналогичен синтаксису, используемому в заданиях cron. То, что он собирается сделать, это запускать 0- ю минуту каждого часа. В разделе Действия после сборки выберите «Развернуть в CloudBees» и укажите соответствующий идентификатор приложения и используемую учетную запись.

После того, как вы сохранили проект / задание (Project, как его называет Дженкинс), выполните «Build now» в левом меню. Давайте посмотрим, будет ли наш код создан и может быть развернут сразу. Пока проект строится, вы увидите мигающий синий сигнал на задании, а логи можно увидеть через «Вывод на консоль»:

Поскольку мы выбрали развертывание одним щелчком, приложение будет развернуто, как показано в конце журнала:

[cloudbees-deployer] 16 МБ
[cloudbees-deployer] 17 МБ
[cloudbees-deployer] Развертывание в приложении с идентификатором vishal-biyani / vishalbiyani-cbtest
[cloudbees-deployer] Доступ к http://vishalbiyani-cbtest.vishal-biyani.cloudbees.net.
[cloudbees-deployer] Записанное развертывание в записи отпечатков пальцев
Закончено: УСПЕХ
Ура!! Приложение в прямом эфире: зоомагазин для управления домашними животными и врачами и приемами. Это крошечное приложение, но оно достаточно для тестирования основных вещей. Поскольку сборка настроена на запуск каждый час, тенденция сборок можно увидеть позже. Например, на рисунке ниже, сборка № 23 не удалась, но другие сборки были исправны!

Изучение CloudBees

То, что мы рассмотрели в этом руководстве, довольно просто, но мы получили представление о том, как просто развернуть Java-проект на основе Maven на платформе CloudBees. То, что мы не рассмотрели в отношении платформы CloudBees, — это гораздо больше. Ниже приведен краткий обзор, который не является исчерпывающим:

  • Инструменты качества кода, такие как Sonar и другие плагины для покрытия кода, тестовое покрытие могут быть установлены в Jenkins, как и любая другая установка Jenkins.
  • Добавьте реляционные базы данных, такие как MySQL, или нереляционные базы данных, такие как MondoDB или CouchDB.
  • Инструменты мониторинга производительности, такие как NewRelic, служба электронной почты, такая как SendGrid и т. Д. И многое другое

Дальнейшее чтение на CI и CD

Непрерывная интеграция и поставка — большая тема, и главное различие между хорошим и не очень хорошим программным проектом заключается в том, насколько хорошо установлены и соблюдаются методы CI и CD. Ни одно обсуждение CI и CD на этой земле не будет полным без следующих трех ИМХО:

  • Статья Мартина Фаулера о непрерывной интеграции — это ускоренный курс для любого новичка: http://martinfowler.com/articles/continuousIntegration.html
  • Книга о непрерывной интеграции Пола М. Дювалла, Стива Матиаса и Эндрю Гловера
  • Книга о постоянной доставке Джеза Хамбла и Дэвида Фарли.