Высокопроизводительная система напоминаний о платежах
Создал систему автоматизированного планирования и анализа бухгалтерских проводок, масштабируемую до миллионов записей в день
К нам обратилась финтех компания, специализирующаяся на бухгалтерских системах, с критическими проблемами их системы управления планирования и анализа бухгалтерских проводок. Основная проблема заключалась в том, что при получении некорректных или невалидных данных от бухгалтерских подразделений клиентов фоновые задачи могли неожиданно завершаться с ошибками. Компания нуждалась в разработке отказоустойчивой системы, способной перезапускать задачи с промежуточных этапов и избегать повторной обработки уже обработанных данных.
Наша команда провела комплексный анализ и выявила необходимость миграции с Ruby на Go для повышения гибкости в управлении ресурсами при сохранении обратной совместимости с существующим механизмом планирования задач. Ключевые проблемы включали: отсутствие механизмов восстановления после сбоев в обработке данных, невозможность продолжения работы с промежуточного этапа при ошибках, риск повторной обработки уже обработанных бухгалтерских записей, ограниченная гибкость в распределении вычислительных ресурсов.
Мы разработали новую систему на Go с сохранением интеграции с существующей Ruby-инфраструктурой и планировщиком задач Sidekiq. Реализовали механизмы checkpoint'ов для сохранения промежуточного состояния обработки, систему идемпотентности для предотвращения дублирования обработки данных, и адаптивное управление ресурсами. Результатом стала отказоустойчивая система управления планирования и анализа бухгалтерских проводок, способная корректно обрабатывать некачественные данные и автоматически восстанавливаться после сбоев.
Обязанности
- Спроектировал и реализовал основной движок планирования и анализа бухгалтерских проводок с системой напоминаний о платежах, обрабатывающий миллионы записей с механизмами восстановления после сбоев
- Разработал систему распределённого кеширования с Redis и Elasticsearch для быстрого доступа к бухгалтерским данным, которая обеспечила согласованность информации при высоких требованиях к производительности
- Спроектировал отказоустойчивую фоновую обработку с возможностью перезапуска задач с промежуточных этапов, которая предотвратила потерю данных при обработке некорректных бухгалтерских записей
- Возглавил миграцию системы с Ruby на Go с сохранением обратной совместимости и интеграции с существующим планировщиком задач Sidekiq для обеспечения гибкого управления ресурсами
- Наставлял младших разработчиков по принципам отказоустойчивой архитектуры и техникам предотвращения дублирования обработки данных
Ключевые достижения
- Устранил неожиданные завершения задач с ошибками при обработке некорректных бухгалтерских данных, реализовав систему checkpoint'ов и механизмов восстановления с промежуточных этапов
- Обеспечил предотвращение дублирования обработки данных благодаря внедрению системы идемпотентности, что исключило повторную обработку уже обработанных бухгалтерских записей
- Успешно осуществил миграцию с Ruby на Go с сохранением полной обратной совместимости с существующим планировщиком задач Sidekiq
- Повысил гибкость управления вычислительными ресурсами благодаря переходу на Go, что позволило системе адаптироваться к различным объемам обработки бухгалтерских проводок
- Создал отказоустойчивую архитектуру, способную корректно обрабатывать данные любого качества от бухгалтерских подразделений клиентов без потери информации

Компания
NDA
Роль
Разработчик основного функционала
Продолжительность
Часть работы с 10/2022 - 08/2024