Интеграция 18 банков и 9 торговых площадок друг с другом за месяц — особая разновидность рабочего ада

uctr1ffsuwth3-19t7dyxpbhcv0.jpeg

1 октября 2018 г. многие из нас ждали апокалипсиса. Но он не случился. Не знаю, как у остальных, а у меня точно была мотивация: если закупка не пройдёт, то больница не купит лекарств, детям в школах не купят творога и учебников. Я хотел сделать что-то работающее хотя бы на уровне основных функций, а потом докручивать. Но получилось лучше. Да, мы уснули после сдачи прямо у компьютеров. Да, наши семьи немного сошли с ума за эти три недели. Но мы взяли этот проект.

Дело был в том, что все площадки для закупок работали себе и работали, пока в один день правительство не решило внедрить спецсчета для участников торгов. Сильно упрощая: до этого у площадки был один банковский счёт, и сумма на нём состояла из балансов тех, кто торгуется на площадке (разделение сумм и биллинг были на самой площадке).

А потом каждого участника законодательно обязали открывать свой счёт в одном из банков из списка и работать с площадкой через него.

Банки, как и площадки, до последнего не верили, что это всё взлетит. Объём работ планировался такой, что никто даже подумать не мог, что кто-то дёрнет рубильник и назначит срок. Причём очень даже обозримый. Но это случилось.

Что это было в целом


Когда стало понятно, что пути назад нет, надо было что-то решать. Если началось всё дружелюбно и понятно, то потом вдруг банки стали въезжать в то, что от них требуется на интеграциях, и выдвигать каждый свои требования. Потому что список изменений вызывал панику у безопасников.

В итоге мы собрались по два человека от каждого банка и от каждой площадки в одном помещении и начали вырабатывать общий стандарт для чего-то вроде шины обмена. Раньше мне представлялось, что выработка нового стандарта — это несколько просветлённых мужей в тогах, рассуждающих о великом.

Практика оказалась куда более прозаичной и кровавой.

Что нужно было сделать


Законодатель принял требования, что это должно быть. Но не написал, как это нужно сделать. Каждый из участников со стороны площадок полагал, что все напишут API, а банки как-то примостятся. А банки тоже так думали, только со своей стороны. Что площадки примостятся.

Процесс обмена с банками вообще не был задокументирован. Были особенности вроде того, что даётся час на блокировку средств: это площадке и банку. При этом средняя операция блокировки у банка занимает 12 минут. У них происходит внутри далеко не мгновенный процесс, и только тогда средства блокируются. У нас от этого плыла вся бизнес-логика.

Закон приняли в декабре 2017-го. Потом приняли поправку. Потом полгода мы писали письма в разные ведомства за разъяснениями, как эта поправка про спецсчета работает. Например, спецсчёт — это счёт с иммунитетом и ограничениями или расчётный? Откуда списывать плату площадки? Какой статус у банка с точки зрения закона? Кто регулирует процесс обмена?

Люди пишут закон, его потом надо исполнять. Участников процесса не всегда спрашивают, можно ли такое реализовать в принципе и насколько эффективно это будет работать. Много времени ушло на то, чтобы понять, что такое спецсчёт и как он будет жить с нами, то есть на переговоры и бумажную работу.

В середине лета появился список из 18 банков, уполномоченных на открытие и ведение спецсчетов, сразу за ними появился список из 9 отобранных электронных площадок, имеющих право проводить государственные торги.

Нужно было обеспечить работу со счетами и деньгами по некоторому API. Причём требования к срокам операций пришли законодательно, в частности, по максимальной длительности разных действий. Операций там немного: открыть счёт, заблокировать (или разблокировать) сумму, перевести сумму и т. п. Проблема была в обмене и сложных случаях вроде того, что компания кому-то задолжала и приставы могут забирать части разблокированных сумм, а деньги необходимо перевести в бюджет.

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

Именно тогда было принято общее решение: либо все работаем в команде и делаем одно решение для всех, либо ничего не успеваем.

18 банков, 9 площадок — у каждого своя безопасность, своё видение.

Срок сжатый, потому что большинству участников к тому же нужно закупать иностранное оборудование. Надо было искать решение, которое удовлетворит большинство. TLS-каналы сделали программно, все сообщения, передаваемые участниками обмена, подписываются готовым сертификатом. Это решение закрывало требования Центробанка о защищённых данных. Нужно это было потому, что мы обмениваемся номерами спецсчетов — они попадают в федеральный закон о банковской деятельности.

Далее начали думать, какие пакеты нужны. По сути, это только блокировка и разблокировка денежных средств, где оператор (площадка) выступает инициатором. На каждый ответ есть свои статусы, коды, подтверждения. Самое главное в информационном обмене — регламентированное время. Блокировка должна быть установлена в течение часа, разблокировка — тоже в течение часа. Перевод средств в бюджет или плата оператору — в течение суток. Есть требования по всему.

tfnooem8oejvky6iuzwlur9ju_g.jpeg

begvk3bbb7rqxwleszy-mpl1goo.jpeg

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

Были площадки (например, наша), у которых учредители — банки, они могли двигаться в тестах быстрее всего. Банки давали очень много результатов тестов. Мы описывали кейсы, риски: мы как площадки — со своей стороны, они как банки — со своей стороны. Документировали в протокол (бумажный), потом обновляли roadmap проекта.

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

Естественно, первые релизы были примерно в конце августа, но это были даже не беты, а пре-альфы.

vqglh6ydauicym9u-x9lxrxhoxy.jpeg

Сложности


Некоторые банки вообще не работали с госзаказом и не знали, как это пишется. Для них 44-ФЗ — ни о чём. ВТБ и Сбербанк понимали, что такое госзаказ, они первыми сделали прототип и требования.

Мы объясняли бизнес-процессы, банки рассказывали нам про работу АБС. Я был приятно удивлён, что есть банки (не топовые), которые невероятно оперативно взаимодействовали и находили правильные решения. Большие банки в некоторых моментах неповоротливые. Хотя все 18 банков из списка — огромные компании.

Самое запоминающееся — безопасники. Кибербезопасность, физическая безопасность, техническая безопасность. Было не столько сложно придумать информационный обмен, сколько согласовать добавление IP-адресов, открытие портов, доступов и так далее. Хотя у всех был зелёный свет от акционеров, работа всё равно двигалась плохо. Безопасники считали, что «быстро выделить порт, почти мгновенно», — это две недели. Кажется, это норма в банковском секторе, хотя максимальный срок, какой я слышал, был один месяц!

Пока договаривались, каждый в свою сторону топил. Были кейсы, где, к примеру, оператор направляет блокировку банку. И банк отказывает в блокировке. Почему? Поставщик заявляет, что деньги есть (он только что закинул), а выясняется, что у поставщика были проблемы с налогами, и налоговая безакцептно списала средства. Блокировка установлена. Сверху падает приоритетная блокировка налоговой. Наша блокировка какая по счету в очереди? Мне как оператору важно, чтобы она была наверху, а банку важно выполнить предписания Центробанка. Это запросы в ЦБ, Минфин, а там не все знали ответы. Все рассчитывали, что счета будут обладать иммунитетом. После очередного запроса миф про иммунитет был развеян.

За несвоевременное исполнение закона площадка несёт административную ответственность в виде штрафа. Из того часа, что нужен был на блокировку, мы договорились, что нам уходит 10 минут, банкам — 50.

Или вот: если банк отвечает в нерегламентированное время — пришло к тому, что ответы принимаем, но игнорируем. Мы отправили блокировку, банк долго делал, отвечает позже, принимаем ответ, говорим, что он поздний, заявка участника отозвана по причине тайм-аута банка. Все кейсы разбирались, у каждого было своё видение. Банк хотел себя обезопасить, площадки — себя.

Но при этом все понимали, что надо договориться очень быстро. Поэтому все были здравомыслящие, никто вразрез не шёл. Все в одной упряжке: если у кого-то не выйдет — пострадают все. Была очень большая мотивация поддерживать одно решение вместо 9×18 решений. Надо было искать компромиссы.

Получилось почти всё. Мы познакомили банки с многопоточностью, количество транзакций — пиковые нагрузки в несколько минут до 3 тысяч транзакций на блокировку средств. 3 тысячи пакетов. Для некоторых это было просто дико.

И ещё одно. До того как договориться, каждый пробовал свои прототипы. И так получилось, что почти у всех они совпали. Потому что в итоге мы пришли к самому простому случаю — обмену XML за короткое время.

j7cm0tmagezfy54uznghyxc7i1w.jpeg

Есть две точки. Точки-шлюзы и есть гарантированная доставка до шлюза. И есть мониторинг (какая очередь, какие ответы, какие ошибки). То есть оперативные решения по этим штукам.

Все пакеты подписываются электронной подписью. Помимо шифрования канала.

Финишная прямая


Очень весёлая у нас была команда. Мы знали, что большой группой этого делать нельзя, потому что потеряем время ещё и на внутренних согласованиях. Поэтому работали ровно втроём (против сотен людей в разработке других компаний). Правда, три недели ночевали в офисе. За эти три недели, когда были готовы все требования, сделали 100% продукта, полностью написанный шлюз. Запилили интеграцию, изменили логику на торговой площадке и прошли все стадии согласования.

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

Потом начались приколы. Создали общий чат, стали быстро обсуждать все детали реализации. Было, например, что банк (!) приложил нам открытый и закрытый ключи в архиве на всех. Мы посмотрели, оказалось — от тестового. Написали: «Ждём от боевого».

Или вот ещё прикол. У кого-то из банков правила не позволяют отправлять файлы отдельно в письме. Обязательно нужно паковать их в архив с длиной пароля не меньше 12 символов. Нам так и отправляли. Причём название архива — это всегда пароль от него. В какие-то моменты я переживал за секьюрность. Было комично консультировать банки о принципах работы электронной подписи и её валидации. В некоторые моменты было реально страшно.

Для меня спецсчета — проект интеграции. Почти обычный. Просто много работы. Втроём мы работали очень быстро, потому что могли быстро развернуться, быстро свернуться и быстро всё поменять. Если надо было — лезли прямо в пакет и переотправляли его вручную. И так далее. Банки себе такое позволить не могли, у них всё делалось большим штатом и медленно.

С каждым банком замутили чатик. Лично моя жена на второй или третий день потребовала разблокировать телефон, чтобы узнать, кто мне пишет в час ночи. А там — сообщения от банковских команд.

Первое время банки не понимали, почему критичны оперативные ответы. Потом начали звонить поставщики и кричать в трубку, что их заявка отозвана, их внутренние стандарты как-то поменялись. Возможно, дело в том, что они звонили совсем даже не в колл-центр. Потому что закупки у нас проводятся не самые маленькие.

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

Ссылки:


  1. Экосистема цифрового мира закупок (чтобы воровали меньше)
  2. Электронная подпись для участия в закупках
  3. Для чего нужны закупки, и как это выглядит с точки зрения ИТ
  4. Модель атак: где в основном злоупотребляют на конкурсных закупках и как с этим борются
  5. Какие бывают процедуры закупок (простыми словами)
  6. Краткая история электронных госзакупок на Руси
  7. Как мы открывали офисы разработки
  8. DoS-атака, от которой нельзя закрыться: в закупках своя атмосфера

© Habrahabr.ru