Над каким проектом вы работали на предыдущем месте?

Ответ

На предыдущем месте я разрабатывал микросервисную систему для обработки платежей в финтех-стартапе.

Основной стек технологий:

  • Бэкенд: Spring Boot
  • Межсервисная асинхронная коммуникация: Apache Kafka
  • База данных: PostgreSQL

Ключевые обязанности и достижения:

  1. Интеграция: Реализовал взаимодействие с внешними платежными шлюзами (например, Stripe, PayPal).
  2. Оптимизация: Улучшил производительность запросов к базе данных, используя индексы и оптимизированные JPA-запросы.
  3. Мониторинг: Настроил сбор метрик с помощью Prometheus и визуализацию в Grafana для отслеживания здоровья сервисов.

Пример кода (REST-контроллер на Spring Boot):

@RestController
@RequestMapping("/api/v1/payments")
public class PaymentController {

    @Autowired
    private PaymentService paymentService;

    @PostMapping
    public ResponseEntity<PaymentResponse> createPayment(
            @Valid @RequestBody PaymentRequest request) {
        PaymentResponse response = paymentService.process(request);
        return ResponseEntity.status(HttpStatus.CREATED).body(response);
    }
}

Ответ 18+ 🔞

А, ну расскажу, как я на прошлой работе в этой финтех-конторе микросервисы пилил для платежей. Картина маслом, блядь: куча денег крутится, а система иногда так тормозила, что хоть святых выноси.

На чём, спрашивается, работали:

  • Основной движок: Spring Boot, без него нихуя.
  • Чтобы сервисы друг с другом общались: Apache Kafka — чтоб сообщения летели асинхронно, а не как дурацкие синхронные вызовы, которые всё кладут.
  • Хранилище: PostgreSQL, куда ж без неё.

Чем конкретно занимался, пока мозги не вытекли:

  1. Интеграция с внешним миром: Пришлось подружиться с этими платежными шлюзами — Stripe, PayPal и прочими. А там, блядь, у каждого своя хитрая жопа: API разные, документы на триста страниц, а ответы приходят такие, что волнение ебать. Но прикрутил, сука, сделал так, чтобы деньги туда-сюда ходили, а не терялись в пути.
  2. Оптимизация, ёпта: База начала тупить так, что терпения ноль ебать. Запрос на историю платежей выполнялся дольше, чем я завариваю кофе. Полез смотреть — а там запросы через JPA такие кривые, что мама не горюй. Настроил индексы, переписал запросы, выкинул лишние JOIN'ы. После этого всё полетело — овердохуища быстрее.
  3. Наблюдалово: Чтобы не гадать, почему всё легло, поставил Prometheus для сбора метрик и Grafana для красивых графиков. Теперь видно, если какой сервис начинает бздеть или нагрузка зашкаливает. Красота, а не жизнь.

Вот, глянь, кусочек кода, как это примерно выглядело. Контроллер для приёма платежей, ничего сложного:

@RestController
@RequestMapping("/api/v1/payments")
public class PaymentController {

    @Autowired
    private PaymentService paymentService;

    @PostMapping
    public ResponseEntity<PaymentResponse> createPayment(
            @Valid @RequestBody PaymentRequest request) {
        PaymentResponse response = paymentService.process(request);
        return ResponseEntity.status(HttpStatus.CREATED).body(response);
    }
}

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