Как правильно считать деньги в базе данных? Базы данных, системы хранения
Тезисы
Любой веб-сервис, занимающийся извлечением коммерческой прибыли, ведет учет заработанных денег в собственных хранилищах данных, которые зачастую создаются "с нуля". Однако подавляющее большинство программистов, занимающихся разработкой, не имеют понятия о том, как правильно работать с деньгами в базе. Работа с финансами - удел экономистов и бухгалтеров, а не инженеров, и основам бухучета "технарей" никто не обучает. Ни один здравомыслящий человек по собственной воле не возьмет в руки учебник по бухучету.
Отсутствие подготовки приводит к неприятностям. Каждый новый проект имеет свою уникальную систему ведения приходов и расходов по счетам. Не зная простейших принципов бухучета, разработчики начинают изобретать свои вариации двойной записи, порой добавляя для уверенности тройную или четверную. На свет появляются биллинги, функционирование которых основывается на несокрушимой вере в то, что ответственный менеджер успеет нажать специальную кнопку и свести балансы пользователей до начала следующего расчетного периода.
Довольно часто к незнанию финансовой матчасти добавляется некомпетентность инженеров в работе с базой данных в принципе. Для денег выбираются неправильные типы данных, и одновременно используется 5 разных типов. Транзакции придумали трусы, а о резервировании "специалисты" задумываются после первого падения базы.
В рамках данного доклада я поделюсь с вами уникальным опытом работы с большим количеством разнообразных биллингов и систем учета денег. Этот опыт я получил в проектах нашей компании, участие в которых я принимал или продолжаю принимать. Проекты самые разные - начиная от классических партнерских программ и заканчивая соцсетями и собственной in-house системой учета финансов - разнообразие представленных видов крайне широко, и один не похож на другой.
Мы поговорим о типичных ошибках проектирования и реализации, которые допускают программисты. В понятных инженеру терминах рассмотрим устройство простой и расширяемой системы учета финансов, которая конформирует с классическими принципами и устоями и прошла проверку временем. Отдельное и пристальное внимание будет уделено вредным советам: тому, чего делать категорически нельзя. Обсудим такие смежные вопросы, как работа биллинга при большом объеме данных и высокой онлайн-нагрузки, интеграция со сторонними платежными сервисами, техническое обслуживание и другие классические проблемы, которые могут возникнуть в системе, круглосуточно считающей деньги.