Ответ
Текущий проект построен на 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
Вот такая, блядь, конструкция. Вроде всё по канону, а как сойдутся звёзды неправильно — пиши пропало, дебага овердохуища.