Как мы интегрировали с банком API и превратили баг в фичу
Если вы создаете IT-продукт для корпораций, однажды вам придется интегрироваться с ними по API. Application programming interface — это способ взаимодействия одного программного кода при помощи набора собственных компонентов, со сторонним. Обычно эта технология нужна, чтобы безопасно и быстро обмениваться информацией: заявки, данные клиентов, документы, информация о продуктах и т. д.
Технически для IT-специалистов API-интеграция — достаточно простая задача, но в случае с крупными корпорациями она почти всегда превращается в нетривиальный квест. Как его пройти с минимальными потерями, рассказывает Максим Быстров, CTO IT-компании Tymy, создателя одноименной SaaS-платформы.
Содержание:
Притча про шапочки из фольги
В конце прошлого года мы настраивали инфраструктуру обмена информацией с API одного крупного банка. Несколько недель команда нашего IT-отдела работала над проектом. Сожгли некоторое количество нервных клеток в ходе переговоров и решения технических задач, все подготовили, согласовали со всех сторон, провели успешные тесты и были готовы запускать.
В «день икс» мы перерезали воображаемую красную ленточку и дернули виртуальный рычаг. Всё заработало, заявки с платформы стали уходить в банк, а система со стороны банка начала отзываться, что они туда успешно попадают. Один нюанс: банк заявки со своей стороны не видит, где-то в процессе они пропадают с радаров и никуда не приходят.
В общем, худший ночной кошмар техдиректора.
Перекопали весь API с нашей стороны — все работает, вопросов нет. Отправили мяч на сторону банка, там искали причину проблемы неделю — тоже ничего. Каждый из ответственных за получение и обработку заявок отделов и департаментов по очереди разводил руками: одни говорили, что заявку видят и отправляют дальше, другие утверждали, что к ним ничего не приходит. Все работает, но ничего не работает. Тем временем дни идут, а наш бизнес-девелопмент начинает угрожать IT-отделу расправой.
К счастью, банк был тоже заинтересован в запуске, так что апофеозом недели перекидывания горячей картошки из отдела в отдел стал конфколл на пару десятков человек. Собрались представители разных подразделений, топ-менеджмент, технические специалисты.
У меня на этом собрании была максимально нетворческая задача: когда коллеги просили, я отправлял тестовую заявку от нас, а затем все собравшиеся пытались найти ее следы и понять, куда она девается.
Это был захватывающий час. В результате нам удалось выяснить, что данные себе оставляет антивирус. При этом на тестах обнаружить это было в принципе невозможно, поскольку на тестовых запусках API антивирус был отключен.
Вишенкой на этом торте стало отсутствие на конфколле, а может быть и вообще, человека, который отвечал бы за корректную работу антивируса. Однако решение было найдено там, где не ждали: кто-то из технических специалистов банка предложил нам притвориться браузером, чтобы пройти мимо антивируса.
Если объяснить просто, то браузер, отправляя запросы, вставляет в каждый соответствующий заголовок, по которому система его идентифицирует как браузер и пропускает эти запросы как безопасные.
При интеграции по API такие заголовки не нужны, поскольку фактически для инфраструктуры мы и так «свои». Но поскольку антивирус по какой-то причине нас признавать не стал, мы надели на наши заявки шапочки из фольги с заголовком «мы браузер» и стали наконец проходить мимо антивируса.
Не баг, а обычное дело
Пример с этой интеграцией — это не какая-то уникальная ситуация, как говорится, не баг, а вполне обычная работа нашего IT-отдела.
В техническом плане процесс интеграции API действительно не уникален, и выглядит примерно одинаково: есть API банка, есть наша, и нужно сделать так, чтобы данные между ними ходили вовремя, в нужном объеме и корректно обрабатывались.
Однако спустя 10+ успешных интеграций с большими банками (на платформе Tymy сегодня работают «Альфа-банк», «Сбер», «Газпромбанк», «Райффайзен», «Банк Уралсиб», МКБ) могу точно сказать — при схожести в общих чертах, каждый процесс получается уникальным как снежинка. При этом что именно и в какой момент у этой снежинки отвалится, предположить всегда сложно.
На собственном опыте я для себя установил несколько правил, которыми мы сейчас руководствуемся, готовя каждую следующую интеграцию.
Даже если вначале задача кажется простой, надо заложить на нее несколько недель
В истории с антивирусом и необходимостью притворяться браузером мы ничего существенно не потеряли и в конце концов успешно запустились. Сейчас банк получает и обрабатывает заявки, пользователи проводят сделки через платформу. И даже решение проблемы заняло всего неделю. Но надо сказать, что в случае с корпорациями такая скорость — скорее исключение.
Согласование даже простых процессов и получение необходимой информации может занимать недели и месяцы, просто из-за особенностей работы крупных компаний: разветвленные и размноженные процессы, десятки ответственных за разные задачи и итерации на разных уровнях.
Кроме того, обычно для внешнего подрядчика весь процесс на стороне банка может быть закрытым, мы просто можем не знать, на каком этапе он находится, кто за что отвечает, и сколько времени ещё займет. Чёрный ящик, из которого однажды обязательно появится кролик, но ты никак не можешь на это повлиять и спрогнозировать сроки сложно.
Начните не с изучения документации и технических работ, а с согласования с СБ
Один из самых болезненных моментов, который я вывожу в отдельный пункт из общей среды коммуникаций с банков — урегулирование вопроса с доступом к банковскому API.
Кто проходил, тот знает: процесс максимально закрытый, у каждой службы безопасности свои сроки и понимание задач, часто на нее даже топ-менеджмент может влиять лишь опосредованно. Обычно только согласование доступа занимает не меньше месяца.
После пары кейсов, когда мы начинали не с заявки в СБ, а с технической стороны вопроса, и потом сидели неделями с готовым решением ждали, теперь мы всегда начинаем сразу с заявки на доступ, и параллельно занимаемся всем остальным.
Развивайте BaaS, а не SaaS
Это может звучать не очень логично, потому что мы беремся работать с корпорациями часто именно потому, что они большие, у них много ресурсов и инфраструктуры, здорово этим пользоваться и фокусироваться на своем нишевом продукте, который решает конкретную задачу.
Однако опыт показывает, что чем больше функций мы забираем себе — тем проще будет и процесс интеграции, и вся работа с проектом в дальнейшем. Поэтому мы сейчас с каждым новым проектом с порога выясняем, какие задачи по организации инфраструктуры мы можем оставить на своей стороне.
Мы более гибкие, так что точно сделаем все быстрей, без лишних согласований, и главный бонус — мы всегда будем точно знать, что происходит и как это работает.
В общем, я уже на второй год работы стартапа переформулировал его смысл: по сути мы SaaS (Soft as a Service) платформа, но по форме — BaaS (Business as a Service).
Чем плотней мы интегрированы в процессы и чем более полный продукт мы предлагаем, тем устойчивей наше положение, и проще наша работа. Такой вот парадокс.
Интегрировались? Не расслабляйтесь
Важно понимать, что успешно смэтчив системы и запустившись однажды, вы не решили все вопросы с корпорацией, о нет. Любая проблема способна стать неразрешимой, если вы не поддерживаете коммуникацию и не отслеживаете, что происходит.
Например, если у пользователя платформы возникает вопрос по заявке («я что-то нажала и все исчезло»), вы можете быстро проверить на своей стороне, а банк остается той же корпорацией с тысячами ответственных по разным задачам, в которой ответ можно получать неделями, если коммуникация не настроена.
Продолжайте отслеживать динамику и изучать систему, ни в коем случае не отпускайте процессы. Изучить все раз и навсегда не выйдет — у всех системы выстроены по-разному, есть свои нюансы на каждом этапе, и более того, они могут меняться. К слову, не всегда подрядчики оказываются в курсе этих изменений.
Простой пример — сертификаты безопасности. При каждой интеграции необходимо выписывать электронный сертификат, который прикладывается к нашим данным, и подтверждает, что это действительно мы. Кто-то дает его на год, кто-то на полгода, а кто-то может и вовсе не сообщить сроки действия и может возникнуть ощущение, что он будет работать всегда.
Так у нас было с одним банком: мы были уверены, что получили сертификат на год, пока он внезапно не кончился и весь обмен данными не остановился.
Чтобы получить новый, нужно оформить заявку по форме, заверить подписями-печатями, отправить курьером в головной офис на нужный адрес, там несколько человек ее проверят и наконец выпишут новый электронный сертификат. И это пока служба поддержки не слезает с телефона, потому что все пользователи стоят на ушах, ведь ничего не работает! С тех пор мы ввели правило отслеживать сертификаты, в том числе через запросы в банки, и заранее заниматься обновлением.
Вместо вывода
Минимальный срок, за который мы запускали интеграцию API с крупным банком, у нас составил около двух недель, это было очень удачное стечение обстоятельств, уже согласованный доступ и очень заинтересованные люди на стороне банка. В среднем API-интеграция занимает порядка 1,5—2 месяцев.
При этом интеграция по API – не самый сложный процесс с точки зрения IT, здесь обычно не нужны ни особенный софт, ни уникальные знания, ни специальные таланты. Изучаешь систему, с которой планируешь API, по документации, а потом буквально берёшь и делаешь. Именно поэтому стартаперы с IT-бэкграундом, которые придумывают классный софт для банков, часто недооценивают сроки реализации проектов. Надеюсь, мой опыт поможет кому-то справиться с этой задачей проще.
Фото на обложке: Gorodenkoff / Shutterstock / FOTODOM
Нашли опечатку? Выделите текст и нажмите Ctrl + Enter
Популярное
Материалы по теме
-
Пройти курс «Как управлять финансами»
- 1 Что такое автоматизированное тестирование, зачем нужно и какие проблемы могут возникнуть при внедрении Чем автоматизированное тестирование может быть полезно, а когда оно не пригодится 14 ноября 10:03
- 2 Что такое API и как с ним работать Для решения каких задач используют API 09 октября 14:15
- 3 «Сбер» сделал бесплатными все сервисы в канале Sber API Это более 400 инструментов 05 июня 17:36
- 4 «Яндекс» запустил сервис API «Яндекс Карт» в Турции Российским, местным и международным компаниям доступны три категории продуктов 29 мая 14:00