Какой стек технологий вы используете в разработке?

Ответ

Основной стек:

  • Язык и платформа: Java 8+
  • Фреймворки: Spring (Boot, MVC, Data, Security)
  • ORM: Hibernate/JPA
  • Базы данных: PostgreSQL, MySQL
  • Инструменты сборки: Maven, Gradle

Дополнительные технологии и инструменты:

  • Архитектура и инфраструктура: Микросервисы (Spring Cloud), Docker, Kubernetes
  • Тестирование: JUnit, Mockito, Testcontainers
  • Асинхронная обработка: Очереди сообщений (Kafka, RabbitMQ)
  • Мониторинг: Prometheus, Grafana

Практический пример (Spring Boot REST-контроллер):

@RestController
@RequestMapping("/api/users")
public class UserController {

    @Autowired
    private UserService userService;

    @GetMapping("/{id}")
    public ResponseEntity<User> getUser(@PathVariable Long id) {
        User user = userService.findById(id);
        return ResponseEntity.ok(user);
    }
}

Ответ 18+ 🔞

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

Основной костяк, без которого нихуя не работает:

  • На чём пишем: Java, восьмая или выше. Если восьмая — уже хорошо, а если семнадцатая — вообще красота, но потом вспоминаешь, что половина либ на ней нихуя не поднимается, и волнение ебать.
  • Чем обвязываем: Spring, мать его. Boot, чтобы не ебаться с конфигами, MVC для веб-дрочки, Data для баз и Security, чтобы всякие левые пидарасы не налетели.
  • Как с базой общаемся: Hibernate, он же JPA. Пишешь @Entity, а он тебе сам SQL генерит, красота. Правда, иногда такой запрос сгенерит, что волосы дыбом — хуй с горы, а не запрос.
  • Базы данных: Ну, PostgreSQL — солидно, надёжно. MySQL — тоже пойдёт, если проект не очень. Главное — не MongoDB в чистом виде для финансового ядра, а то будет пиздец, чувак.
  • Как собираем: Maven или Gradle. Maven — старый добрый, но XML такой многословный, блядь. Gradle — поприкольнее, на Kotlin DSL, но если скрипт написан криво, разбираться — терпения ноль ебать.

А это уже для понтов и сложных систем, чтобы совсем мозг вынести:

  • Архитектура: Микросервисы на Spring Cloud. Разбил монолит на десять сервисов, а теперь нихуя не понимаешь, где какой лог искать. Docker, Kubernetes — чтобы этот зоопарк в контейнерах запускать. Красота, аж охуенно.
  • Тестирование: JUnit, Mockito — святое дело. Testcontainers — вообще вещь, поднимает настоящую базу в докере для тестов. Раньше бывало тесты падают, потому что локальная база кривая, а теперь — чих-пых, и всё как у взрослых.
  • Асинхронщина: Kafka, RabbitMQ. Кинул сообщение в очередь и пошёл дальше пить кофе. А потом получаешь алерт, что очередь нахуй сломалась и сообщения потерялись. Вот тут-то и начинается веселье, ёпта.
  • Мониторинг: Prometheus метрики собирает, Grafana красивые графики рисует. Сидишь, смотришь на график нагрузки и думаешь: «Нихуя себе, а кто это в три часа ночи наш апи дербанит?».

Ну и примерчик, для ясности, как это выглядит в коде. Блок не трогаю, он святой:

@RestController
@RequestMapping("/api/users")
public class UserController {

    @Autowired
    private UserService userService; // Заинжектили сервис, магия Spring, блядь

    @GetMapping("/{id}")
    public ResponseEntity<User> getUser(@PathVariable Long id) {
        User user = userService.findById(id); // Нашли юзера
        return ResponseEntity.ok(user); // Вернули его, всё просто
    }
}

Вот и весь стек, ёперный театр. С одной стороны — инструментов дохуя, с другой — если знать, за какой хвост тянуть, то можно и норм систему слепить. Главное — не пытаться впихнуть всё и сразу, а то получится не архитектура, а пиздопроебибна какая-то.