Какой самый сложный кейс был

«Какой самый сложный кейс был» — вопрос из категории Софт-скиллы, который задают на 23% собеседований Менеджер Проектов. Ниже — развёрнутый пример ответа, который можно адаптировать под свой опыт.

Ответ

Один из самых сложных кейсов — миграция монолитного банковского приложения на микросервисную архитектуру с нулевым даунтаймом.

Проблемы:

  • Нагрузка 24/7, нельзя просто остановить систему.
  • Сложные транзакции между модулями (например, платежи и балансы).
  • Нужно было обеспечить консистентность данных при параллельной работе старой и новой систем.

Решение:

  1. Двухфазный деплой — сначала читаем из нового сервиса, но пишем в оба (write-through).
  2. Саги для распределённых транзакций (компенсационные действия при ошибках).
  3. Постепенная миграция по функционалу, а не по модулям.

Пример кода (сага на псевдокоде):

def transfer_money(saga_id, from_acc, to_acc, amount):
    try:
        debit(from_acc, amount)  
        credit(to_acc, amount)  
        saga_log(saga_id, "COMPLETED")  
    except Exception as e:  
        refund(from_acc, amount)  # Компенсация  
        saga_log(saga_id, "FAILED", str(e))  

Итог: Миграция заняла 9 месяцев, но клиенты даже не заметили изменений.