Хабрахабр

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Сложности

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ссылки:

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

Похожие статьи

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть