Алексей Рагозин — Блеск и нищета распределенных кешей HD
Алексей Рагозин, Deutsche Bank — Блеск и нищета распределенных кешей Встреча JUG.ru 05.06.2014 Часть 1. Как и зачем эмулировать распределённый кластер в JVM Написание автоматических тестов для распределённых Java приложений — дело непростое. Можно ограничиться модульными тестами на отдельные компоненты, но в таком тестовом покрытии будет много белых пятен. Можно пробовать запустить сложную топологию компонентов в рамках теста, но это не всегда работает (статика, сетевая конфигурация и т.п.). На протяжении нескольких лет Алексей разрабатывал схемы для тестирования и отладки кластерных приложений на Oracle Coherence. Результатом этих усилий стала библиотека, позволяющая эмулировать несколько независимых процессов в одной JVM (с разными system properties, classpath и т.д.). Тот же подход был успешно использован для запуска стека Hadoop + Zookeeper + HBase в рамках интеграционных тестов на основе JUnit. В докладе будет рассказано о свойствах получившейся Open Source библиотеки и тех возможностях, которые она открывает для автоматического непрерывного тестирования (тесты на обратную совместимость, тесты процедур восстановления после сбоя и т.п.). Часть 2. Сеть — это большая JVM Программный интерфейс для управления «виртуальными» Java-процессами из предыдущего доклада получился довольно хорош. Настолько хорош, что захотелось использовать его для управления реальным распределённым кластером. Немного чёрной магии (JSch, репликация classpath и п.р.) и, вуаля, с помощью дюжины строчек кода можно запустить java.util.Runnable на любом доступном по SSH удалённом сервере без предварительного развёртывания, установки агентов и т.п. Чем это полезно? Две основные задачи, для решения которых мы пользуемся этим инструментом - это автоматические распределённые нагрузочные тесты и развёртывание. Для задач развёртывания так же создан ANT task, предоставляющий возможности выполнять часть скрипта удалённо (опять же, без развёртывания и агентов).