Разрабатывали ли вы и разворачивали свой микросервис с нуля?

Ответ

Да, разрабатывал и разворачивал микросервис для управления заказами на Spring Boot.

Стек технологий:

  • Бэкенд: Spring Boot, Spring Web (REST), Spring Data JPA, Spring Security.
  • База данных: PostgreSQL.
  • Деплой: Docker, AWS EC2.
  • Инфраструктура: Nginx (reverse proxy, SSL), GitHub Actions (CI/CD).

Пример ключевого REST-эндпоинта:

@RestController
@RequestMapping("/api/orders")
@RequiredArgsConstructor // Lombok для инъекции зависимости
public class OrderController {
    private final OrderService orderService;

    @PostMapping
    @ResponseStatus(HttpStatus.CREATED)
    public OrderDto createOrder(@Valid @RequestBody CreateOrderRequest request) {
        return orderService.create(request);
    }

    @GetMapping("/{id}")
    public OrderDto getOrder(@PathVariable Long id) {
        return orderService.findById(id);
    }
}

Конвейер развертывания (CI/CD):

  1. Пуш в ветку main → запуск GitHub Actions.
  2. Сборка JAR-файла (Maven) и Docker-образа.
  3. Пуш образа в Docker Hub/Amazon ECR.
  4. SSH-подключение к EC2, обновление контейнера через docker-compose pull && docker-compose up -d.

Итог: Полный цикл от кода до работающего в облаке сервиса с автоматическим деплоем.

Ответ 18+ 🔞

А, ну это я, блядь, делал — микросервис для заказов на Spring Boot. Полная песня, от кода до облака, чтобы всё само ехало, как по маслу, только успевай фиксить баги, которые сам же и написал, ёпта.

Чем, сука, колдовал:

  • Всё основное: Spring Boot, его Web-часть для REST, Data JPA для баз данных и Security, чтобы не всякий левый мудак мог зайти.
  • База: PostgreSQL, надёжная, как швейцарские часы, если их не ронять.
  • Куда всё это пихали: В Docker-контейнеры и на виртуалку AWS EC2.
  • Окружение: Nginx спереди как привратник — и проксирует, и SSL накручивает, а GitHub Actions — это мой личный раб, который всё собирает и разворачивает.

Вот, смотри, кусок кода, как я заказы создаю и достаю. Ничего трогать не надо, тут всё правильно:

@RestController
@RequestMapping("/api/orders")
@RequiredArgsConstructor // Эта аннотация от Lombok сама засунит нужный сервис, красота
public class OrderController {
    private final OrderService orderService; // Вот он, работяга

    @PostMapping
    @ResponseStatus(HttpStatus.CREATED)
    public OrderDto createOrder(@Valid @RequestBody CreateOrderRequest request) {
        return orderService.create(request); // Пошёл создавай, сука
    }

    @GetMapping("/{id}")
    public OrderDto getOrder(@PathVariable Long id) {
        return orderService.findById(id); // Найди мне этот заказ, а не то пизда
    }
}

А вот как это всё, блядь, в продакшн уезжало (CI/CD):

  1. Заливаю код в main на GitHub — и тут же, сука, просыпается GitHub Actions, как пёс на кость.
  2. Он берёт Maven, собирает JAR, потом лепит из него Docker-образ — красота в банке.
  3. Эту банку — в репозиторий (Docker Hub или ECR).
  4. Дальше по SSH на сервер EC2 залетает, команду швыряет: docker-compose pull && docker-compose up -d. Старый контейнер — нахуй, новый — в бой.

И что в сухом остатке? Полный цикл, ёбана. Написал фичу, запушил — и через пятнадцать минут она уже в облаке болтается, работает. Автоматизация, блядь, волшебство. Главное — не накосячить так, чтобы этот конвейер начал в проде хуйню разворачивать, а то потом искать виноватого — овердохуища времени убьёшь.