На какие технологии вы перешли при модернизации последнего проекта?

«На какие технологии вы перешли при модернизации последнего проекта?» — вопрос из категории Софт-скиллы, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый пример ответа, который можно адаптировать под свой опыт.

Ответ

Основные изменения:

  1. Фреймворк: Переход на Spring Boot 3.0 для микросервисов.
  2. Парадигма: Внедрение реактивного программирования через Spring WebFlux и R2DBC для асинхронной работы с PostgreSQL.
  3. Коммуникация: Использование Apache Kafka для асинхронного обмена событиями между сервисами.
  4. Оркестрация: Миграция с Docker Compose на Kubernetes с управлением развертыванием через Helm-чарты.
  5. Мониторинг: Переход с Prometheus на OpenTelemetry для более гибкой телеметрии.

Пример конфигурации реактивного продюсера Kafka:

@Configuration
public class KafkaConfig {
    @Bean
    public ReactiveKafkaProducerTemplate<String, Event> producerTemplate() {
        return new ReactiveKafkaProducerTemplate<>(senderOptions());
    }
}

Тестирование: Для интеграционных тестов начали использовать Testcontainers, что позволяет запускать тесты с реальными базами данных и брокерами в изолированных контейнерах.