Инфраструктура в java-проекте
TRANSCRIPT
Инфраструктурав Java-проекте
Игнатов ЮрийExpress 42
О чем доклад?Continuous delivery с Java-спецификойОб инструментах для
– контроля качества кода– хранения артефактов– деплоя– сбора метрик
Надежные решения для сложной инфраструктуры
Continuous delivery
Надежные решения для сложной инфраструктуры
Develop Build & Test Deploy
Continuous delivery
Надежные решения для сложной инфраструктуры
Develop Build & Test Deploy
Не только.
Continuous delivery
Автоматизация на всех этапахОбратная связь на всех этапах
Надежные решения для сложной инфраструктуры
Continuous delivery
Надежные решения для сложной инфраструктуры
Develop Build & Test Deploy
Обратная связь
Жизненный циклJava-сервисаСреда разработчика CI-системаКонтроль качестваРепозиторий бинарных артефактовДеплойЭксплуатацияИногда добавляется отладка и хотфиксы
Надежные решения для сложной инфраструктуры
Обратная связьТестирование кодаТестирование инфраструктурыАнализ кода и тестовИзменения поведения и потребления ресурсов от релиза к релизу
Надежные решения для сложной инфраструктуры
SonarQubeНепрерывный контроль качества кодаПоддеживает распространненые языкиПроверка стандартов оформления, покрытие тестами, потенциальные багиИнтегрируется с Jenkins, Bamboo, Jira, …CWE (сommon weakness enumeration)
Надежные решения для сложной инфраструктуры
АртефактыGAV (Group, Artifact, Version)– org.example.corp:email-svc:ear:1.0.1
Имеют большой размер (например, >50МБ)Содержимое артефакта может изменится
Надежные решения для сложной инфраструктуры
Репозиторий бинарных артефактовПростая задача: принять-хранить-отдатьПопулярные: Nexus, Artifactory, Archiva
Интеграция, плагины
Надежные решения для сложной инфраструктуры
ArtifactoryЕсть бесплатная и платные версииВ платной версии умеет
PyPI, RubyGems, NPMDocker Registry API и Docker Hub APIDebian repo & yum repo
Надежные решения для сложной инфраструктуры
NexusЕсть бесплатная и платные версииГибкая система управления правамиБольшое количество плагинов
Надежные решения для сложной инфраструктуры
ArchivaЕсть проблемы с интерфейсомApache License
Надежные решения для сложной инфраструктуры
Repository proxy
Надежные решения для сложной инфраструктуры
QA QA QA
Vagrant Vagrant Vagrant
Office Productionproxy
Stagingproxy
VM VM VM
VM VM VM VM
VM
ДеплойВ терминах GAVС кнопки, деплоить может каждый!Каждая выкатка должна быть зафиксирована.
Надежные решения для сложной инфраструктуры
Метаданные
Надежные решения для сложной инфраструктуры
<artifact-resolution> <data>
<groupId>org.example.corp</groupId> <artifactId>email-svc</artifactId> <version>1.0.1-20150408.180542-39</version> <baseVersion>1.0.1-SNAPSHOT</baseVersion> <extension>ear</extension> <snapshot>true</snapshot> <snapshotBuildNumber>39</snapshotBuildNumber> <snapshotTimeStamp>1428516342000</snapshotTimeStamp> <sha1>cdd3fac8d72b1de5256d6c7ef1f18ea453ed4e0f</sha1> </data>
</artifact-resolution>
Rundeck“… the human interface to your operations.”
Сервис автоматизации и планировщик задачУправление доступом на основанное на роляхИнтеграция с репозиторием бинарных артефактовCallback о результатах деплоя
Надежные решения для сложной инфраструктуры
Мониторинг приложенияБазовые проверкиЗапущен ли процесс?Слушается ли порт?
Более продвинутые проверки следят за сбоями
Надежные решения для сложной инфраструктуры
JMXJMX - API для взаимодействия с Java-приложением
Работает из коробки в системах мониторингаПростота добавления новых метрик
Надежные решения для сложной инфраструктуры
JMXJVM: статистика GC, heap.Container: статистика запросов и исключенийPools: статистика по использованию ресурсов
Бизнес метрики
Надежные решения для сложной инфраструктуры
JMXДля эксплуатации:
Остановить приложение при деплоеИзменить конфигурацию работающего сервисаЗапустить внутренний процессHealthcheck
Надежные решения для сложной инфраструктуры
GraylogЦентрализованное хранилище логовОбработка входящего потока сообщенийПоискАлерты
Надежные решения для сложной инфраструктуры
Подарок
Контакты• github.com/express42-cookbooks• devopsdeflope.ru• devopsru.com• @express42_ru
Вопросы?• github.com/express42-cookbooks• devopsdeflope.ru• devopsru.com• @express42_ru