Вернуться к списку проектов

Высокопроизводительная система напоминаний о платежах

Ruby
Ruby on Rails
Go
PostgreSQL
Clojure
Redis
Datomic
Sidekiq
Elasticsearch
CircleCI
Stimulus

Создал систему автоматизированного планирования и анализа бухгалтерских проводок, масштабируемую до миллионов записей в день

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

Наша команда провела комплексный анализ и выявила необходимость миграции с Ruby на Go для повышения гибкости в управлении ресурсами при сохранении обратной совместимости с существующим механизмом планирования задач. Ключевые проблемы включали: отсутствие механизмов восстановления после сбоев в обработке данных, невозможность продолжения работы с промежуточного этапа при ошибках, риск повторной обработки уже обработанных бухгалтерских записей, ограниченная гибкость в распределении вычислительных ресурсов.

Мы разработали новую систему на Go с сохранением интеграции с существующей Ruby-инфраструктурой и планировщиком задач Sidekiq. Реализовали механизмы checkpoint'ов для сохранения промежуточного состояния обработки, систему идемпотентности для предотвращения дублирования обработки данных, и адаптивное управление ресурсами. Результатом стала отказоустойчивая система управления планирования и анализа бухгалтерских проводок, способная корректно обрабатывать некачественные данные и автоматически восстанавливаться после сбоев.

Обязанности

  • Спроектировал и реализовал основной движок планирования и анализа бухгалтерских проводок с системой напоминаний о платежах, обрабатывающий миллионы записей с механизмами восстановления после сбоев
  • Разработал систему распределённого кеширования с Redis и Elasticsearch для быстрого доступа к бухгалтерским данным, которая обеспечила согласованность информации при высоких требованиях к производительности
  • Спроектировал отказоустойчивую фоновую обработку с возможностью перезапуска задач с промежуточных этапов, которая предотвратила потерю данных при обработке некорректных бухгалтерских записей
  • Возглавил миграцию системы с Ruby на Go с сохранением обратной совместимости и интеграции с существующим планировщиком задач Sidekiq для обеспечения гибкого управления ресурсами
  • Наставлял младших разработчиков по принципам отказоустойчивой архитектуры и техникам предотвращения дублирования обработки данных

Ключевые достижения

  • Устранил неожиданные завершения задач с ошибками при обработке некорректных бухгалтерских данных, реализовав систему checkpoint'ов и механизмов восстановления с промежуточных этапов
  • Обеспечил предотвращение дублирования обработки данных благодаря внедрению системы идемпотентности, что исключило повторную обработку уже обработанных бухгалтерских записей
  • Успешно осуществил миграцию с Ruby на Go с сохранением полной обратной совместимости с существующим планировщиком задач Sidekiq
  • Повысил гибкость управления вычислительными ресурсами благодаря переходу на Go, что позволило системе адаптироваться к различным объемам обработки бухгалтерских проводок
  • Создал отказоустойчивую архитектуру, способную корректно обрабатывать данные любого качества от бухгалтерских подразделений клиентов без потери информации
Высокопроизводительная система напоминаний о платежах

Компания

NDA logo

NDA

Роль

Разработчик основного функционала

Продолжительность

Часть работы с 10/2022 - 08/2024