Был ли у вас опыт создания отдельных (микро)сервисов с нуля?

«Был ли у вас опыт создания отдельных (микро)сервисов с нуля?» — вопрос из категории Архитектура, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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

Примеры реализованных сервисов:

  • Сервис аутентификации и авторизации: Реализация JWT, OAuth 2.0, управление ролями и правами.
  • Платежный сервис: Интеграция с внешними провайдерами (например, Stripe API), обработка транзакций, ведение истории.

Типичная архитектура и стек:

// Основной класс сервиса
@SpringBootApplication
@EnableDiscoveryClient // Для регистрации в Eureka/Consul
public class PaymentServiceApplication {
    public static void main(String[] args) {
        SpringApplication.run(PaymentServiceApplication.class, args);
    }
}

// REST-контроллер
@RestController
@RequestMapping("/api/payments")
public class PaymentController {
    @PostMapping
    public ResponseEntity<PaymentResponse> processPayment(
            @Valid @RequestBody PaymentRequest request) {
        // Логика обработки платежа
        return ResponseEntity.ok(paymentService.process(request));
    }
}

Инфраструктура: Сервисы контейнеризировались с помощью Docker, оркестрировались в Kubernetes. Для межсервисного взаимодействия использовались REST API и брокеры сообщений (RabbitMQ).