Платёжный шлюз для финтех-платформы
Высоконагруженный платёжный шлюз на Laravel и Go: обработка платежей с гарантией идемпотентности и аптаймом 99,98%.
- PHP
- Laravel
- Go
- PostgreSQL
- +2
Технология
Основная реляционная СУБД: сложные запросы, индексы, транзакции, JSONB и оптимизация под нагрузкой.
PostgreSQL — моя основная реляционная база данных уже девять лет, и я отношусь к ней как к полноценному инструменту инженерии данных, а не просто хранилищу. Я начинаю с проектирования схемы: нормализую данные там, где это уместно, выбираю корректные типы столбцов, расставляю ограничения целостности (NOT NULL, UNIQUE, CHECK, внешние ключи с продуманными правилами каскадирования) и закладываю первичные ключи, отражающие бизнес-смысл. Для денег и точных величин я никогда не использую числа с плавающей точкой — только numeric/decimal с явной точностью или целые в минимальных единицах. Сильная сторона PostgreSQL — богатый SQL: я свободно работаю с оконными функциями, CTE и рекурсивными запросами, агрегатами, LATERAL-соединениями и фильтрами FILTER, что позволяет решать аналитические задачи прямо в базе без выгрузки данных в приложение. Производительность — отдельная дисциплина: я читаю планы запросов через EXPLAIN ANALYZE, подбираю подходящие индексы (B-tree, GIN, GiST, частичные и покрывающие), слежу за раздуванием таблиц, настраиваю autovacuum и анализирую статистику планировщика. Понимание уровней изоляции транзакций, блокировок и MVCC помогает мне избегать дедлоков и аномалий при конкурентной записи. Для полуструктурированных данных я применяю JSONB с GIN-индексами, для полнотекстового поиска — встроенный движок с tsvector, для геоданных — расширения. Я аккуратно провожу миграции: на больших таблицах учитываю риск долгих блокировок при ALTER, использую неблокирующие стратегии создания индексов и планирую окна обслуживания. Надёжность обеспечиваю через продуманную стратегию резервного копирования, point-in-time recovery, потоковую репликацию и реплики для распределения нагрузки на чтение. В связке с приложением я слежу за пулом соединений (PgBouncer), борюсь с проблемой N+1 на уровне ORM и кэширую горячие выборки. Опыт научил меня, что грамотно спроектированная база — это половина успеха всей системы: она задаёт ограничения целостности, предотвращает рассогласование данных и масштабируется вместе с продуктом, оставаясь предсказуемой под реальной нагрузкой.
Высоконагруженный платёжный шлюз на Laravel и Go: обработка платежей с гарантией идемпотентности и аптаймом 99,98%.
Единый API поверх десятка курьерских служб: расчёт стоимости, создание заказов и трекинг в реальном времени.
Сбор и обработка потока событий с дашбордами реального времени на Go, PostgreSQL и Redis.
Подписки, тарифы и автоматические списания с точным учётом денег и идемпотентными задачами.
Двусторонний маркетплейс исполнителей и заказчиков с поиском, заказами и безопасными сделками.
Поэтапное выделение микросервисов из монолита без простоя: границы доменов, события и оркестрация в Kubernetes.