Ответ
Последний значимый проект – разработка высоконагруженного REST API для финтех-сервиса.
Стек: Java 11, Spring Boot, Hibernate, PostgreSQL, Redis, Docker.
Основные задачи и оптимизации:
- Оптимизация работы с БД: Решил проблему N+1 в JPA, использовал
@EntityGraphи проекции DTO. - Внедрение кэширования: Добавил двухуровневое кэширование ответов API для часто запрашиваемых данных.
- Асинхронная обработка: Вынес фоновые задачи (логирование, нотификации) с помощью
@AsyncиThreadPoolTaskExecutor.
Пример реализации кэширования с Spring Cache:
@Service
public class UserServiceImpl implements UserService {
@Override
@Cacheable(value = "users", key = "#id", unless = "#result == null")
public UserDto getById(Long id) {
// Запрос выполняется только при промахе кэша
return userRepository.findProjectedById(id);
}
}
Архитектурные изменения: Участвовал в миграции с монолита на микросервисную архитектуру. Мы выделили три независимых сервиса (пользователи, платежи, отчеты), которые обменивались событиями через Apache Kafka, что повысило отказоустойчивость и масштабируемость системы.