Какие инструменты и технологии использовались в вашем предыдущем проекте?

Ответ

Стек технологий проекта на основе Spring Boot:

  • Бэкенд: Java 11/17, Spring Boot (Core, MVC, Data JPA, Security), Hibernate.
  • Базы данных: PostgreSQL (основная), Redis (кэширование).
  • Тестирование: JUnit 5, Mockito, Testcontainers.
  • Сборка и управление зависимостями: Gradle (или Maven).
  • Контроль версий: Git (GitLab).
  • CI/CD: Jenkins (или GitLab CI) для сборки, тестирования и развертывания.
  • Контейнеризация и оркестрация: Docker, Kubernetes (K8s).
  • Мониторинг и логирование: Prometheus (метрики), Grafana (дашборды), ELK Stack (логи).
  • Межсервисное взаимодействие: REST API, Apache Kafka (асинхронная коммуникация).
  • Инфраструктура: Конфигурация через Spring Cloud Config, API Gateway.

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

@SpringBootApplication // Автоконфигурация, сканирование компонентов
@EnableJpaRepositories // Включение репозиториев Spring Data JPA
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args); // Запуск встроенного контейнера
    }
}

Ответ 18+ 🔞

А, ну вот, смотри, классика жанра, блядь! Подходишь к проекту, а там тебе такой стек технологий, что глаза разбегаются, ёпта. Как будто на склад запчастей зашёл, а там всё блестит, но половину назначения не понимаешь. Но разберёмся, хуле.

Стек, значит, у нас следующий, держись:

  • Бэкенд: Ну, ясное дело, Java, одиннадцатая или семнадцатая. А сверху, как толстое одеяло на алкоголике зимой, — Spring Boot со всеми своими пакетами: Core, MVC, Data JPA, Security. И, конечно, Hibernate, чтобы с базой данных общаться не как дурак руками, а через красивые объекты. Хуй с горы, но удобно.
  • Базы данных: Основная — PostgreSQL, надёжная, как швейцарские часы, только бесплатная. А для того, чтобы каждый раз в базу не лазить, если данные не сильно меняются, — Redis, чтоб кэшировать. Экономия, блядь, на запросах, чистая магия.
  • Тестирование: А как же без него? JUnit 5 и Mockito, чтобы имитировать всё, что шевелится, и не плакать потом ночами. А если совсем припёрло — Testcontainers, чтобы базу прямо в тестах поднимать. Красота, в рот меня чих-пых!
  • Сборка: Gradle (ну или Maven, если ты из прошлого века). Чтоб зависимости не вручную таскать, а он сам всё скачал, как умный пёс палку.
  • Контроль версий: Git, куда ж без него. Все изменения храним, как святую библию, в GitLab'е обычно.
  • CI/CD: Jenkins (или его младший брат GitLab CI) — этакий конвейерный робот, который берёт код, собирает, прогоняет тесты и, если всё ок, выкладывает куда надо. Автоматизация, блядь, чтоб руки не отсохли.
  • Контейнеризация: Всё пакуем в Docker-контейнеры, чтоб работало везде, где есть докер. А чтобы эти контейнеры не разбежались, как тараканы, — Kubernetes (K8s). Он ими командует, масштабирует, следит. Ёперный театр, но мощно.
  • Мониторинг: Чтобы не гадать, почему всё легло, ставим Prometheus для сбора метрик и Grafana для красивых графиков. А логи — в ELK Stack. Видишь всё, как на ладони, даже если эта ладонь в говне.
  • Общение между сервисами: REST API — это как все говорят. А для асинхронных штук, когда не надо ждать ответа, — Apache Kafka. Штука модная, чтоб сообщения друг другу кидать.
  • Инфраструктура: Конфигурацию выносим наружу, через Spring Cloud Config, чтоб не пересобирать приложение из-за смены пароля. И API Gateway, чтоб трафик грамотно по ручьям растекался.

А вот, смотри, как выглядит основа приложения, его сердце, блядь. Код не трогаю, он святой:

@SpringBootApplication // Эта хуйня всё сама настроит, компоненты найдёт, жизнь облегчит
@EnableJpaRepositories // Включаем волшебные репозитории, чтоб с базой работать в два клика
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args); // И поехали! Встроенный сервер стартует
    }
}

Вот и вся магия, на первый взгляд. А под капотом, блядь, овердохуища всего наворочено, чтоб ты только бизнес-логику писал, а не с конфигами воевал. Красота, да?