Какой типичный технологический стек (tech stack) используется в современной enterprise-разработке на Java?

«Какой типичный технологический стек (tech stack) используется в современной enterprise-разработке на Java?» — вопрос из категории Архитектура, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Современный Java-стек для enterprise-приложений представляет собой набор проверенных технологий:

Базовый стек (Backend):

  • Язык: Java 11/17 LTS (долгосрочная поддержка), Kotlin.
  • Фреймворк: Spring (Boot, MVC, Data JPA, Security, Cloud) как де-факто стандарт.
  • ORM / Работа с БД: Hibernate (JPA-реализация), Spring Data JPA, QueryDSL.
  • Базы данных: Реляционные (PostgreSQL, MySQL, Oracle), NoSQL (MongoDB, Redis для кэша).
  • Сборка и управление зависимостями: Maven или Gradle.

Инфраструктура и DevOps:

  • Контейнеризация: Docker.
  • Оркестрация: Kubernetes (K8s).
  • CI/CD: GitLab CI, Jenkins, GitHub Actions.
  • Мониторинг и логи: Prometheus + Grafana, ELK Stack (Elasticsearch, Logstash, Kibana).

Коммуникация и интеграция:

  • Межсервисное взаимодействие: REST API, gRPC, асинхронные сообщения через Apache Kafka или RabbitMQ.
  • Клиент: Для монолита — Thymeleaf, для SPA — отдельный фронтенд (React, Angular).

Тестирование:

  • Модульные тесты: JUnit 5, Mockito.
  • Интеграционные тесты: Spring Boot Test, Testcontainers.

Пример минимального Spring Boot приложения:

@SpringBootApplication // Объединяет @Configuration, @EnableAutoConfiguration, @ComponentScan
@RestController
public class DemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args); // Запуск встроенного сервера
    }

    @GetMapping("/health")
    public ResponseEntity<String> healthCheck() {
        return ResponseEntity.ok("Service is UP");
    }
}

Дополнительно для облачных микросервисов: Spring Cloud (Config, Gateway, Netflix OSS/Resilience4j), сервисы облачных провайдеров (AWS S3, SQS; Azure Service Bus).