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

Ответ

Текущий проект построен на Java-экосистеме с использованием микросервисной архитектуры.

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

  • Язык и платформа: Java 17, Spring Boot 2.7
  • Фреймворки Spring:
    • Spring Web MVC — REST API.
    • Spring Data JPA (Hibernate) — доступ к данным.
    • Spring Security — аутентификация и авторизация (OAuth2/JWT).
    • Spring Cloud — конфигурация, discovery (Eureka).
  • База данных: PostgreSQL 14.
  • Сборка и управление зависимостями: Maven.
  • Инфраструктура и DevOps:
    • Docker для контейнеризации.
    • Kubernetes (K8s) для оркестрации.
    • GitLab CI/CD для автоматизации пайплайнов.
  • Вспомогательные библиотеки: Lombok, MapStruct, Swagger/OpenAPI 3.

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

@SpringBootApplication
@EnableJpaRepositories
@EnableDiscoveryClient // Для регистрации в Eureka
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

Пример application.yml для профиля dev:

spring:
  datasource:
    url: jdbc:postgresql://localhost:5432/mydb
    username: user
    password: pass
  jpa:
    hibernate:
      ddl-auto: validate
    show-sql: true

server:
  port: 8080

Ответ 18+ 🔞

Да ты посмотри, на чём этот зоопарк держится! Всё на Java, блядь, и на микросервисах, которые друг другу мозги ебут через сеть.

Вот наша основная кухня, так сказать:

  • На чём пишем и где бегает: Java 17, Spring Boot 2.7. Стабильно, чё.
  • Вся эта весенняя хуйня (Spring):
    • Spring Web MVC — чтобы REST-API городить.
    • Spring Data JPA (это ж Hibernate под капотом) — чтобы в базу данных не сырыми SQL-ами лезть, а красиво.
    • Spring Security — чтобы всякие левые пидорасы не ломились в систему (OAuth2 и JWT там, всякое).
    • Spring Cloud — чтобы сервисы друг друга находили и конфиги не с потолка брали.
  • База данных: PostgreSQL 14. Надёжная, как швейцарские часы, если, конечно, не наебнуться с миграциями.
  • Сборка: Maven. Старый, добрый, местами ебаный в сраку, но свой.
  • Инфраструктура, ёпта:
    • Docker — всё в контейнеры, как селёдка в бочку.
    • Kubernetes (K8s) — чтобы эти бочки по кластеру катать и оркестрировать.
    • GitLab CI/CD — чтобы при каждом пуше в main у всех волосы дыбом вставали, пока пайплайн не пройдёт.
  • Всякие вспомогательные плюшки: Lombok (чтобы меньше boilerplate-кода писать), MapStruct (чтобы ентити в DTO превращать), Swagger (чтобы фронтендеры не доебывались с вопросами "а какой эндпоинт?").

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

@SpringBootApplication
@EnableJpaRepositories
@EnableDiscoveryClient // Чтоб в Eureka засветиться, как шлюха на районе
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

А это конфиг для разработки (application.yml), когда всё локально и по-быстрому:

spring:
  datasource:
    url: jdbc:postgresql://localhost:5432/mydb
    username: user
    password: pass
  jpa:
    hibernate:
      ddl-auto: validate # Не `create`, а то нахуй всю схему снесёт!
    show-sql: true

server:
  port: 8080

Вот такая, блядь, конструкция. Вроде всё по канону, а как сойдутся звёзды неправильно — пиши пропало, дебага овердохуища.