Алексей Рагозин — Блеск и нищета распределённых кэшей

Часть 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, предоставляющий возможности выполнять часть скрипта удалённо (опять же, без развёртывания и агентов).

  1. Алексей Рагозин
    Специализируется на разработке высоконагруженных распределённых систем на платформе Java. За более чем 10 лет в индустрии он собрал опыт разработки информационных систем в таких вертикалях как финансы, телеком, e-commerce и здравоохранение. С 2009 по 2011 возглавлял практику внедрения in-memory data grid решений в компании GridDynamics. В октябре 2011 года перешёл в Deustche Bank, где является ведущим специалистом в области технологий распределённого кэширования. Активный участник российских конференций, посвящённых разработке программного обеспечения и высокопроизводительных информационным системам.
Tags from the story
, ,