Опишите технологический стек вашего последнего проекта

Ответ

Стек последнего проекта (микросервисная платформа):

Категория Технологии
Бэкенд (основное) Java 17, Spring Boot 3.1, Spring MVC, Spring Data JPA
Базы данных PostgreSQL (основная, реляционная), Redis (кеш и сессии)
ORM Hibernate 6.2
API & Коммуникация REST (JSON), OpenAPI 3.0 (Swagger), gRPC (для межсервисного взаимодействия), Apache Kafka (асинхронные события)
Безопасность Keycloak (OAuth2/OpenID Connect для аутентификации и авторизации)
Сборка & Зависимости Gradle, Maven-репозиторий (Artifactory)
Тестирование JUnit 5, Mockito, Testcontainers
Мониторинг & Логи Prometheus (метрики), Grafana (дашборды), ELK-стек (логи)
Инфраструктура Docker, Kubernetes (оркестрация), Helm (чарты), GitLab CI/CD (пайплайны)

Пример конфигурации Spring Boot приложения:

@SpringBootApplication
@EnableCaching
@EnableJpaRepositories
public class OrderServiceApplication {
    public static void main(String[] args) {
        SpringApplication.run(OrderServiceApplication.class, args);
    }
}

Обоснование выбора:

  • Spring Boot — стандарт для enterprise Java, предоставляет готовые решения для большинства задач.
  • PostgreSQL — надежная, функциональная реляционная БД с поддержкой JSON.
  • Kubernetes + Docker — стандарт для контейнеризации и оркестрации микросервисов.
  • Kafka — надежный брокер для асинхронной, отказоустойчивой коммуникации между сервисами.

Ответ 18+ 🔞

А, ну это же классика, блядь! Смотри, какой у нас тут стек собрали, прямо как в хорошем борще — всего намешали, но вроде бы съедобно.

Вот смотри, на чём эту песочницу строили:

Задница приложения (бэкенд, сука): Ну, куда же без Java 17 и Spring Boot 3.1, ёпта. Это как база — без неё нихуя не взлетит. Всё завязано на Spring MVC и Spring Data JPA. Стандартная порнография для энтерпрайза.

Конюшни для данных (базы): Основная кобыла — PostgreSQL. Надёжная, проверенная, с кучей функций. А для того, чтобы всё не еб*лось от каждой мелочи, взяли Redis — чтобы кешировать и сессии хранить. Без него — пиздец и тормоза.

Разговор между коробками (API): REST на JSON — это как «здравствуйте» по-английски. Для красивой документации — OpenAPI (Swagger), чтобы не гадать, что куда тыкать. А для серьёзных, быстрых разговоров между своими — gRPC. Ну и Apache Kafka на подхвате, чтобы события асинхронно гонять, если один сервис обоср*лся, чтобы остальные не ждали.

Охрана (безопасность): Поставили Keycloak. Пусть он мучается с OAuth2 и OpenID Connect, выдаёт токены, проверяет, кто есть кто. Нам-то что? Подключились и забыли.

Стройка (сборка): Gradle рулит, зависимости качаем из своего Maven-репозитория (Artifactory). Всё аккуратно, как в аптеке.

Проверка на вшивость (тесты): JUnit 5 и Mockito — святая троица любого джависта. А для интеграционных — Testcontainers, чтобы поднимать настоящие базы в докере и тестировать, как в бою.

Подглядывание в замочную скважину (мониторинг): Prometheus собирает метрики (сколько раз упало, сколько запросов), Grafana рисует красивые графики, чтобы начальство радовалось. А логи — в ELK-стек, чтобы когда всё еб*нется, можно было найти, кто виноват.

Фундамент (инфраструктура): Всё запаковано в Docker-контейнеры, как в консервные банки. Крутит этим цирком Kubernetes с помощью Helm-чартов. А выпускает новую хрень в мир GitLab CI/CD — написал код, запушил, и через полчаса оно уже где-то там работает. Магия, блядь!

Вот, например, как выглядит главный класс сервиса заказов — проще пареной репы:

@SpringBootApplication
@EnableCaching
@EnableJpaRepositories
public class OrderServiceApplication {
    public static void main(String[] args) {
        SpringApplication.run(OrderServiceApplication.class, args);
    }
}

А почему именно так, спросишь? Да всё просто, как три копейки:

  • Spring Boot — это де-факто стандарт. Зачем изобретать велосипед, если можно взять готовый танк?
  • PostgreSQL — потому что «мама не учила с Mongo дружить» для серьёзных транзакций. Надёжно и функционально.
  • Kubernetes + Docker — сейчас без этого вообще никуда. Все так живут.
  • Kafka — потому что когда сервисов больше двух, они начинают друг другу мешать. Кафка — это как надежный почтальон между ними: отнёс сообщение, даже если получатель временно в отключке, и всё, свободен.

Вот такая, блядь, кухня. Сложно, да. Но когда работает — красота, ёпта!