
Микросервисы часто начинают внедрять на ранних этапах проекта, чтобы «подготовиться к масштабированию», но на практике это нередко создаёт больше проблем, чем решает. В этой статье я рассказываю реальную историю из стартапа, где мы начали дробить Django-монолит на микросервисы ещё до выхода продукта в продакшен. Архитектура, которая сначала выглядела аккуратной, довольно быстро превратилась в распределённый монолит с размытыми границами и дублирующейся логикой. Я разбираю, как мы к этому пришли, какие проблемы это вызвало и что потребовалось, чтобы постепенно привести систему к более понятным границам сервисов.
Недавно я ловил баг в функции расчёта PNL. Из-за неправильного использования типов ошибка в расчетах накапливалась сначала в виде погрешности, а потом переросло в серьезную ошибку для пользователя. Для решения нужно было просто использовать правильный тип данных для финансовых расчетов. За этим багом скрывается целый мир подводных камней, о которых я давно не вспоминал и хочу рассказать.

Мы в компании постепенно переходим на Go, и одна из первых задач — переписать самые узки места, узлы, где качество решения влияет на всю систему целиком.
Если вы используете GitHub и у вас есть личный и рабочий аккаунты, то быстро появляется боль: Git не понимает, какой SSH-ключ подставить, и начинает всё ломаться — от доступа к репо до установки зависимостей.

Периодически всплывают задачи, для которых необходим постоянно запущенное приложение, но по тем или иным причинам тебе не хочется использовать для этого VDSки. Например, он должно потреблять ничтожно мало процессорного времени и при этом периодически что-то выполнять раз в N часов: бэкапы, боты и т. д.

Вы навреняка видели в приложениях брокеров баннеры типа "Автоследование. Подключите готовую стратегию от профи и зарабатывайте". И конечно же хочется посмотреть, что там за подключение такое, что можно вот так взять и зарабатывать.

После опубликации предыдущей статьи получил комментарий: "Я удивлён, что есть тесты, на которые нужно разворачивать докер для имитации сторонних сервисов". И тут я задумался, что возможно стоит немножко рассказать про тесты в целом в экосистеме Python.

Недавно на работе столкнулся с интересным багом связанным с асинхронностью во время написания тестов. Мне нужно было залогиниться в сервисе несколько раз с неправильными данными, чтобы получить блокировку аккаунта (собственно механизм блокировки я и тестировал).

Недавно я вновь вышел на рынок труда и активно прохожу собеседования в различные компании. Практически все компании проводят этап алгоритмических собеседований или лайвкодинга с задачками.