Улучшаем DevOps процессы с помощью Java

Как повысить эффективность DevOps с помощью Java


Январь 28, 2022


Успешная DevOps стратегия основана на особом подходе к разработке продукта, который заключается в непрерывной поставке качественного, безопасного и полезного ПО конечным пользователям. Но DevOps — это еще и технологии, которые помогают претворить надлежащие практики CI/CD в жизнь. Например, сканеры безопасности обеспечивают мониторинг безопасности на протяжении всего CI/CD пайплайна. Docker помогает разработчикам оптимизировать процесс упаковки, развертывания, копирования и перемещения контейнеров. Kubernetes обеспечивает автоматическое управление контейнерными приложениями.

Помимо этого, в основе любых разработок на Java лежит среда исполнения. Рантайм — важнейший компонент, влияющий на безопасность и производительность приложения и даже на эффективность процессов DevOps в вашей компании. Как? Давайте узнаем!

В данной статье мы обсудим, как организовать надежный CD пайплайн с помощью Java Development Kit (JDK), который наилучшим образом соответствует вашим методологиям DevOps. Вы также узнаете, что самый простой способ установки рантайма — далеко не лучший, и может таить в в себе неочевидные риски. Наконец, мы расскажем о новом инструменте, обеспечивающем управление рантаймами во всем парке ПК на базе Windows через одно приложение.

Вы также можете связаться с нашими инженерами и из первых рук узнать, как повысить эффективность процессов Java DevOps с помощью первоклассного дистрибутива JDK и современных инструментов.

  1. Дистрибутив JDK, отвечающий требованиям DevOps
  2. Установка JDK: методы и ловушки
    1. Просто скачать не так-то просто
    2. Установка пакета
    3. Использование сайта разработчика
    4. Контейнеры
    5. API
  3. DevOps и инструменты автоматического мониторинга рантаймов Java
  4. Заключение

Дистрибутив JDK, отвечающий требованиям DevOps

Когда в 2019 году был изменен релизный календарь и лицензия на самый распространенный дистрибутив Java SE 8 от Oracle для коммерческого использования, треть компаний приступила к поиску альтернативного поставщика JDK. К счастью, Java уже давно развивается в рамках проекта с открытым исходным кодом, что позволило компаниям-разработчикам OpenJDK заполнить потребность в альтернативном дистрибутиве JDK и разработать несколько качественных дистрибутивов. Вопрос только в том, как выбрать дистрибутив, наиболее подходящий для вашей компании?

Хороший дистрибутив Java Development Kit способствует процессам DevOps, а не мешает им. Поэтому он должен отвечать следующим требованиям:

  • Вы будете неприятно удивлены, если после миграции ваши программы начнут работать ненадлежащим образом. Это значит, что дистрибутив не соответствует стандартам. TCK-верификация гарантирует соответствие спецификациям Java SE, поэтому миграцию можно осуществить без проблем.
  • Своевременные обновления обеспечивают безопасность рантайма в любой момент времени. Обновления необходимо устанавливать без промедлений, чтобы предотвратить атаки нулевого дня. Цикл релизов хорошего дистрибутива Java Development Kit соответствует циклу релизов Oracle и включает в себя ежеквартальные критические обновления безопасности (CPU) с исправлениями известных уязвимостей и багов. Кроме того, использование разных дистрибутивов для ПК, серверов и облака чревато временными и финансовыми затратами, потому что компании в таком случае приходится контролировать и обновлять каждый рантайм по отдельности. Унифицированный рантайм с широким диапазоном поддерживаемых платформ значительно упрощает процесс тестирования, обновления, внедрения патчей безопасности и развертывания.
  • Процессы DevOps в разработках на Java должны протекать плавно и непрерывно. Любая проблема может стать помехой в работе, особенно если ее решения приходиться ждать днями или неделями. Высококачественная техподдержка рантайма позволяет получить быстрый ответ на запрос на основе SLA и гарантирует отсутствие посредников. Вспомните о недавно обнаруженной критической уязвимости в библиотеке Java Log4j — вам бы не хотелось подвергать такому риску свои приложения, не так ли? Хотя эта библиотека не входит в состав Liberica JDK / Liberica JDK Pro / Liberica JDK Certified, мы все равно можем помочь нашим клиентам, устранив эту проблему, так как их безопасность — наш приоритет.
  • Также важны удобные условия предоставления поддержки. Некоторые компании предлагают тарифы, основанные на количестве виртуальных ядер (vCores). В результате при замене оборудования придется вносить изменения в договор, что требует времени и денег. Техподдержка с оплатой per-instance позволяет избежать этой проблемы. Кроме того, такой тариф выгоднее, потому что количество CPU и класс процессора не влияют на цену.
  • Долгосрочная поддержка будет выгодна компаниям с парком ПК, состоящим из тысяч машин, ведь обновление версии дистрибутива каждые два года значительно замедляет процесс разработки. Таким образом, дистрибутив с LTS релизами, поддерживаемыми в течение минимум восьми лет, позволяет разработчикам сосредоточиться на создании качественного продукта вместо того, чтобы бесконечно переписывать код.
  • Время и размер = деньги, если речь идет об облачных разработках. Чем меньше ваши контейнеры, тем быстрее происходит развертывание и тем меньше ресурсов потребляется. Идеальный дистрибутив JDK позволяет создавать маленькие контейнеры и тем самым подходит для облачных разработок. Дополнительные Java инструменты для DevOps будут преимуществом. Например, Liberica JDK Pro поставляется с Liberica Native Image Pro, который ускоряет запуск и сводит к минимуму потребление ресурсов.
  • В рамках курса на импортозамещение компаниям необходимо в ближайшие годы перейти на преимущественное использование отечественного ПО. Соответственно, при выборе поставщика JDK нужно ориентироваться на совместимость с отечественными архитектурами и ОС, а также на выполнение требований ФСТЭК. Liberica JDK Certified — единственный Java дистрибутив, включенный в реестр отечественного ПО, прошедший сертификацию ФСТЭК и совместимый с ведущими российскими платформами, что позволяет компаниям создавать сквозные программно-аппаратные решения на основе стека Java технологий.

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

Все еще не уверены, стоит ли переходить с Oracle JDK на OpenJDK? Скачайте технический документ с подробным описанием преимуществ миграции на OpenJDK.

Установка JDK: методы и ловушки

DevOps на основе технологий Java — звучит соблазнительно. Но перед тем, как вы сможете оценить все преимущества выбранного JDK и сопутствующих инструментов, его нужно установить. Это не так просто, как кажется.

Просто скачать не так-то просто

OpenJDK — это реализация Java SE с открытым исходным кодом, т.е. все компоненты находятся в свободном доступе. Все, что нужно сделать, это проанализировать имеющиеся дистрибутивы OpenJDK, выбрать подходящий и скачать необходимые файлы. Впоследствии можно обновлять JDK, загружая и интегрируя патчи безопасности и обновления. Кажется, процесс довольно прост, но на самом деле придется учесть много переменных. Во-первых, нужно знать, какая версия у вас уже установлена и насколько она совместима с загруженными файлами. Затем нужно убедиться в наличии TCK-верификации у выбранного дистрибутива, что подтверждает его соответствие стандартам Java SE. Также следует выполнить собственные тесты, чтобы убедиться, что JDK работает с вашим приложением и удовлетворяет вашим нуждам.

Установка пакета

Можно установить пакет JDK через диспетчер пакетов — инструмент для автоматической установки/удаления и обновления рантайма. Это более продвинутый подход, чем предыдущий. На рынке присутствует широкий диапазон диспетчеров пакетов: для конкретной ОС (YUM или APT для Linux, Homebrew для macOS) или кросс-платформенные, такие как SDKMAN!. Но у этого метода тоже есть недостатки.

Во-первых, диспетчер должен быть установлен на каждую машину; соответственно, JDK будут обновляться независимо на каждом десктопе. Во-вторых, у вас нет полного контроля над циклом обновлений, потому что график обновлений определяется поставщиком дистрибутива. OpenJDK выпускает патчи безопасности четыре раза в год, и каждый поставщик использует их в своих сборках. Но сборки не всегда выходят вовремя, поэтому существует риск того, что вы установите дистрибутив без последних исправлений безопасности, и ваше приложение будет уязвимым для атак.

Использование сайта разработчика

Если вы выбрали поставщика JDK, отвечающего вашим требованиям и требованиям к безопасному и производительному рантайму, можете загрузить пакет непосредственно на сайте разработчика. Но здесь тоже нужно учесть несколько моментов. Например, дистрибутив может поставляться в разных комплектах. В случае с Liberica JDK / Liberica JDK Pro / Liberica JDK Certified можно загрузить Full, Standard или Lite версию, каждая из которых предназначена для определенных целей. Затем потребуется выбрать метод установки: через программу установки или командную строку. Важно отметить, что программа установки должна быть нотаризованной и также подходить для удаления JDK, так как процесс удаления может быть сложнее при использовании командной строки.

Контейнеры

Контейнеры — последний тренд в IT отрасли. Их использование положительно сказывается на Java DevOps разработке, так как они позволяют создавать эффективные микросервисы и увеличивают гибкость и скорость развертывания и обновлений. Процесс упаковки и доставки контейнеров можно стандартизировать и унифицировать во всех средах.

Но контейнер контейнеру рознь. Они отличаются размером, зависящим от ОС и компонентов, что значительно влияет на pull-время и потребление памяти.

Возьмем, например, контейнер на основе CentOS. Он весит 319 MB, поэтому загрузка займет 28 секунд! Если для вас это слишком долго, выберите контейнер меньшего размера. Например, Alpine Linux — это легковесная ОС, идеально подходящая для облачного развертывания и контейнерных приложений. Попробуйте образ BellSoft Liberica JDK Pro на основе Alpine musl, который занимает всего 43,5 MB — это самый маленький контейнер на рынке!

Также следует обратить внимание на базовый образ для контейнера. Иногда в нем могут отсутствовать нужные вам фичи, или он может быть основан на устаревшей версии Java. Если вы не знаете номер текущей версии JDK, есть риск скачать устаревший контейнер с известными проблемами безопасности.

API

Допустим, вы хотите ознакомиться с полным объемом данных по выбранному дистрибутиву перед его установкой. Это можно сделать с помощью Discovery API, которые содержат все метаданные по бинарным сборкам JDK. API предназначены для автоматизации уведомлений о релизах JDK и обновлениях посредством метаданных. BellSoft использует собственные технологии для написания API для Liberica JDK / Liberica JDK Pro / Liberica JDK Certified. Наши API разработаны настолько тщательно, что мы до сих пор поставляем метаданные, структурированные по версии 1.0, даже в случае новых продуктов и фич. Мы предоставляем информацию о поддерживаемых архитектурах и ОС, типах артефактов, версиях и т.д. Вы также получаете ссылку для загрузки и checksum. Кроме того, наши ссылки и API не менялись с момента выхода первой версии.

Для использования API вы можете получить полный текст с метаданными в формате JSON или сделать несколько вызовов для получения данных по частям. Ответа придется ждать гораздо дольше, если вы запросите все метаданные по всем релизам и платформам, поэтому для ускорения процесса используйте фильтры и выбирайте нужные поля.

Наконец, API играют важную роль в установке JDK для Ansible. Роль Ansible для Liberica JDK кросс-платформенная, ее можно использовать как для Windows, так и для Linux.

DevOps и инструменты автоматического мониторинга рантаймов Java

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

Одним из таких инструментов является разработанное BellSoft решение, обеспечивающее полный контроль рантаймов во всем корпоративном парке ПК из одного окна: Liberica Administration Center (LAC). LAC — это серверное приложение, которое:

  • собирает данные о всех Java рантаймах (поставщик и версия) и приложениях в парке ПК на базе Windows;
  • оповещает о проблемах безопасности или нарушениях условий лицензирования и предлагает варианты решения;
  • обновляет версию Liberica JDK / Liberica JDK Pro / Liberica JDK Certified или удаляет ненужные JDK/JRE;
  • выполняет ежедневные и ежемесячные запланированные задачи.

LAC незаменим для оптимизации Java DevOps процессов, так как он позволяет компании автоматизировать мониторинг и обновления рантаймов. Вы всегда будете работать с новейшими фичами Java и будете полностью защищены благодаря своевременной и автоматической установке патчей безопасности и обновлений. Также можно обновлять рантаймы во всем парке сразу или на каждой машине по отдельности. Таким образом, вы сэкономите время и деньги, так как разработчикам не придется контролировать рантаймы вручную, и они смогут посвятить время другим актуальным задачам. В результате процессы в CI/CD пайплайне будут протекать максимально плавно. Кроме того, LAC можно использовать как инструмент аудита для поиска не лицензированных версий, пропущенных обновлений безопасности и формирования стратегии по переводу рабочих станций на отечественные ОС.

Заключение

В этой статье мы увидели, что качество Java Development Kit непосредственно связано с эффективностью DevOps. Мы описали несколько методов установки JDK: у каждого из них свои преимущества и недостатки, поэтому выберите тот, который соответствует вашим целям. Мы также рассмотрели инструмент мониторинга и обновления рантаймов Java, который гарантирует, что рантаймы в парке ПК всегда будут обновлены и защищены.

Язык Java недаром продолжает набирать популярность. Это не просто язык, это — целая экосистема с фреймворками, инструментами и мощной поддержкой со стороны сообщества. Поэтому Java улучшается в соответствии с современными требованиями к облачной разработке, контейнеризации, автоматизации процессов и непрерывной поставке ПО. Используйте Java, чтобы повысить эффективность DevOps в вашей компании, и вы не будете разочарованы!

Author image

Дмитрий Чуйко

Старший инженер по производительности БЕЛЛСОФТ

 Twitter

ООО БЕЛЛСОФТ info@axiomjdk.ru ООО БЕЛЛСОФТ logo Axiom Committed to Freedom 199 Obvodnogo Kanala Emb. 190020 St. Petersburg RU +7 812-336-35-67 ООО БЕЛЛСОФТ 199 Obvodnogo Kanala Emb. 190020 St. Petersburg RU +7 812-336-35-67 ООО БЕЛЛСОФТ 111 North Market Street, Suite 300 CA 95113 San Jose US +1 702 213-59-59