Стек технологий, используемый в работе с Java Virtual Machine

Обложка: Стек технологий, используемый в работе с Java Virtual Machine

Подборку подготовил Дмитрий Плужников, директор департамента прикладных разработок Arenadata 

Мы — IT-вендор, разрабатывающий собственные продукты на базе Open Source проектов (Greenplum, Hadoop, Apache Kafka, Apache NiFi, ClickHouse и др.). В этом кратком обзоре речь пойдёт об инструментах и технологиях, которые используются в нашей компании для создания утилит и интеграционных решений на Java/Scala.

Технологический ландшафт

  • Apache ZooKeeper — сервер для высоконадёжной распределённой координации приложений;
  • Apache Spark — фреймворк с открытым исходным кодом для реализации распределённой обработки неструктурированных и слабоструктурированных данных, входящий в экосистему проектов Hadoop;
  • Apache Kafka — распределённый программный брокер сообщений;
  • Apache NiFi — ETL-инструмент с открытым исходным кодом;
  • ClickHouse — колоночная аналитическая СУБД (Яндекс);
  • Tarantool — система управления in-memory БД (база данных) с неблокирующим сервером (Mail.ru Group);
  • Greenplum — массивно-параллельная СУБД для хранилищ данных на основе PostgreSQL.

Инструменты

  • YourKit Java Profiler — для профилирования процессора и памяти Java;
  • SonarQube — для анализа качества программного кода;
  • Git — система управления версиями;
  • SBT — система автоматической сборки для Java и Scala;
  • Apache Maven и Gradle — для автоматизации сборки проектов;
  • Jenkins — для обеспечения процесса непрерывной интеграции программного обеспечения;
  • Portainer — для управления Docker-контейнерами;
  • Docker — программа для автоматизации развёртывания и управления приложениями и контейнеризации приложений;
  • Docker Compose — для запуска и управления Docker-контейнерами.

Библиотеки и фреймворки

  • Spring Framework — универсальный фреймворк как основа для наших Java-приложений;
  • Lombok — проект по добавлению дополнительной функциональности в Java c помощью изменения исходного кода перед компиляцией;
  • Vert.x — фреймворк для реализаций реактивных сервисов;
  • Apache Calcite — фреймворк для синтаксического анализа и построения SQL-выражений, а также для планирования запросов;
  • JUnit — фреймворк для написания юнит-тестов;
  • Akka, Akka HTTP, Akka Streams — набор инструментов для создания параллельных, распределённых и отказоустойчивых приложений для Java и Scala;
  • Finagle — расширяемая RPC-система от компании Twitter для построения высоконагруженных систем;
  • ScalikeJDBC — библиотека для доступа к БД с помощью JDBC;
  • ScalaTest, TestContainers — для написания unit и интеграционных тестов;
  • Spark (Core, Streaming, SQL) — для реализации коннекторов к различным источникам данных.

Для работы с фреймворком Spring также может быть полезен Spring Boot. Это проект, который упрощает создание приложений на основе Spring. У нас есть статья, которая знакомит со Spring Boot на примере разработки простого веб-приложения.