Наверное, ни одно связанное с онлайн-банкингом событие за последние годы не было так ощутимо для рядовых российских пользователей, как появление Системы быстрых платежей (СБП) Банка России. А этим летом на нашей Java-конференции партнёром стала компания НСПК, которая выступает операционным платёжным и клиринговым центром СБП, а также отвечает за обработку всех внутрироссийских платежей по банковским картам. То есть для России её задачи уникальные — поэтому интересно задать вопросы о разработке в такой компании. Мы и задали. Вопросы получились из трёх частей: — Правильно ли понимаем, что у НСПК три главных направления деятельности: обработка внутрироссийских платежей по всем картам, карта «Мир» и Система быстрых платежей? — Да, всё верно. Изначально, в 2014 году, НСПК создавалась для того, чтобы перевести в Россию обработку межбанковских операций по картам международных платежных систем. Параллельно с этим велась работа над созданием российской платежной системы «Мир», которая заработала в 2015 году и операции по картам которой тоже обрабатывает НСПК. И, наконец, в начале 2019 года Банк России запустил Систему быстрых платежей, для которой НСПК стала процессинговым и клиринговым центром. — Если читать про вашу деятельность, сразу натыкаешься на кучу терминов вроде «клиринг», и человеку не из финтеха требуется отдельно гуглить каждый из них. А можете ли объяснить простыми словами, как вообще выглядит «обработка платежей по картам», чтобы гуглить ничего не пришлось? Представим, что человек на кассе магазина для оплаты приложил карту Visa или Mastercard. Что в этот момент происходит: по какому маршруту отправляются данные, где на нём встречается НСПК, и какие именно задачи выполняет? — НСПК вовлечена в процесс обработки межбанковских операций, т.е. когда ваша карта была выпущена одним банком, а торговая точка обслуживается другим. В этом случае обработка транзакции происходит так: сначала происходит «диалог» карты с POS-терминалом через микропроцессор (он же чип), они обмениваются информацией. Затем POS-терминал устанавливает связь с банком, который его обслуживает (банк-эквайером). Банк-эквайер передает в НСПК базовые данные о транзакции, там операционный центр (ОПКЦ) определяет, в какой банк нужно направить запрос.  Кроме этой основной задачи, которая называется маршрутизацией, НСПК выполняет несколько дополнительных задач, в том числе связанных с безопасностью операции. В итоге НСПК обогащает информацию о транзакции, добавляет ей номер и ряд других атрибутов – и передает в банк, выпустивший вашу карту (банк-эмитент).  Получив запрос, банк-эмитент проверяет, есть ли у него карта с такими данными, что был введен правильный PIN, что нет подозрений в мошенничестве. Когда эмитент убеждается, что операция валидна, он смотрит, есть ли у вас на счету достаточные денежные средства и, если есть, подтверждает, что готов перевести деньги в банк-эквайер, и тем же путем через НСПК отправляет подтверждение в POS-терминал торговой точки. И с момента касания вашей картой терминала до появления чека с одобрением вашей покупки всего за несколько секунд проходят все эти технически сложные операции. В настоящее время в инфраструктуре НСПК ежедневно обрабатывается в среднем около 48 млн межбанковских операций по картам всех платежных систем. — Если вместо Visa/Mastercard приложить карту «Мир», которую вы же и создали, то что поменяется для вас с точки зрения обработки платежа? — В целом по «Миру» процесс происходит точно так же, как и по картам МПС. Единственное принципиальное отличие в том, что мы не предоставляем сами себе отчётность по платежной системе «Мир».  — А как выглядела обработка внутрироссийских платежей по картам до появления НСПК? — Раньше один из этапов этой схемы происходил за границей – международные платежные системы (МПС) обрабатывали внутрибанковские транзакции в своих ОПКЦ за пределами нашей страны. Целью создания НСПК как раз было перевести весь этот трафик в Россию, чтобы обеспечить безопасность и бесперебойность проведения внутрироссийских транзакций по банковским картам. — Хочется понять про бесперебойность, взяв в качестве гипотетического примера самый радикальный сценарий: что произошло бы, если бы внезапно завтра российские карты перестали обслуживаться зарубежными компаниями? — Этот сценарий, хочется верить, очень маловероятен. Но если рассуждать гипотетически – если бы такое вдруг произошло, то внутри России все карты продолжили бы работать так же, как сейчас. С весны 2015 года все внутрироссийские операции по картам международных платежных систем уже обрабатываются НСПК внутри страны. Вся наша техническая и коммуникационная инфраструктура полностью самостоятельна и самодостаточна, и операции по картам проходят без сбоев.  — Спасибо, про обработку платежей ясно. А можете такими же простыми словами рассказать про схему действия СБП? — СБП для инициирования платежей использует не карту, а мобильное приложение банка. Перевод в этой системе производится не с карты на карту, а со счёта на счёт. СБП ориентирована на то, чтобы перевод денег между самими банками проходил менее чем за 15 секунд. Для отправителя и получателя денег перевод средств со счета на счет и вовсе происходит практически моментально — по статистике, операция занимает в среднем 3 секунды от нажатия кнопки «Отправить деньги» до зачисления их на счет получателя. Как только вы нажимаете кнопку «отправить деньги через СБП», банк отправителя и НСПК получают подтверждение от банка получателя, что он готов принять перевод. Банк отправителя в этот момент направляет в НСПК и Банк России распоряжение на перевод денег между счетами банков, а затем операция принимается в обработку. ОПКЦ дает распоряжение списать деньги со счета отправителя и зачислить их на счет получателя. Оба банка моментально дают ответ, что это произошло. 
Ответил Владимир Трояновский (ИТ-директор компании) — Для начала хочется понять масштабы: например, сколько у вас айтишников? И какие именно IT-специалисты у вас работают? — IT-департамент — самый крупный в компании, в нём около 500 сотрудников (а общая численность подбирается к тысяче). Представлены все традиционные направления IT: разработчики в самом широком смысле этого слова, инфраструктура, люди, которые занимаются процессами, IT-архитекторы. В общем, весь набор, который есть в других компаниях, присутствует и у нас.  Недавно мы даже ввели специальный саббренд, Mir Plat.Form, который объединяет в себе все технологические направления работы НСПК: обработку операций международных платёжных систем, платежной системы «Мир» и СБП, а также другие проекты. Mir Plat.Form – это все IT-инструменты и сервисы НСПК, а также команда, которая стоит за каждым из этих проектов. — НСПК — единственная российская компания в своём роде. Создаёт ли это сильную специфику, влияющую на IT? Есть ли нестандартные IT-должности, которые в «среднестатистической» компании не встретишь? — Конечно, некоторая специфика есть, но без драматических отличий. Поэтому предметную область можно освоить уже в процессе, приходящий к нам кандидат не обязан её знать. А из нетипичных ролей — у нас есть, например, сертификационные инженеры. Это люди, которые сертифицируют банки или другие компании, когда они подключаются к платежной системе «Мир». Также очень активно на самом старте мы сертифицировали компании НСПК, когда мы выступали в роли третьего процессора международных платежных систем, там много чего было. И решения от вендоров, именно банковские, которые коллеги ставили в банки, и потом уже банки сертифицировали, что они правильно интегрировали в себя те решения, которые им представили производители процессинговых центров. Да, это некая наша особенность. Но это не основная роль. Если мы говорим про инфраструктуру, то там вообще никакой разницы нет, потому что там работают на другом уровне. Новый человек, попадая к нам в компанию, не ощущает особой разницы по сравнению с работой в банках или в телекоме. В телекоме раньше были курсы GSM, где людям популярно объясняли, как работает сотовая связь. Мы тоже подробно в картинках объясняем, как работает пластиковая карта, какие компании участвуют в информационном обмене. У нас такой курс есть, и его проходят все сотрудники, вновь прибывшие в компанию.  — Понятно, что ещё часть вашей специфики — это требования к надёжности, доступности и безопасности. А какие они, и как это сказывается на IT? — Да, у нас не может быть такой ситуации, чтобы НСПК не работала — ни падений, ни технологических «окон», мы должны работать 24/7. В отношении доступности наш KPI — «пять девяток», и его мы соблюдаем на протяжении всей деятельности компании. У нас очень много правил и архитектурных решений для такой доступности. Например, многократное резервирование основных элементов. Кроме того, НСПК изначально строилась с трёхкратным запасом роста: если вдруг завтра россияне внезапно начнут совершать гораздо больше транзакций по картам, мы выдержим такое резкое увеличение платёжного потока. Если говорить о проверке кода на его безопасность, то этот процесс встроен в конвейер создания программного продукта: до каждого релиза наших продуктов мы анализируем код как статическим анализатором, так и специальной blue team, проверяющей правильность написания кода и устойчивость ко взлому. При всём этом мы не сторонники применения каких-то сложных информационных систем. У нас нет никакого сложного железа. НСПК работает на x86, все сервера стандартной архитектуры. Мы придерживаемся принципа «чем проще, тем лучше»: чтобы было меньше элементов, которые могут выходить из строя.  — Нередко можно услышать, что в западной финтех-индустрии много консервативности, вызванной большой историей: грубо говоря, там может быть запущен мейнфрейм с софтом, который написали полвека назад, а теперь боятся трогать. Поскольку НСПК существует меньше 10 лет, оказываетесь ли вы в выигрышном положении, когда при решении аналогичных задач не обременены грузом легаси? Насколько современные технологии вы используете? — Абсолютно правильный вопрос. Когда мы строили компанию, я придерживался принципа «максимально просто и современно», и прелесть в том, что у нас нет какого-то легаси, которое мы были вынуждены поддерживать или учитывать. Мы всё строили с чистого листа с теми современными технологиями, которые были нам доступны на тот момент. При этом мы не рвались к совсем новому и неизведанному, потому что для нас в первую очередь важна доступность и стабильность. Поэтому мы в своём ландшафте применяем только средства, про которые уверены, что они работают. Мы не строим IT ради самого IT, мы строим IT для поддержания стабильности платежного рынка в России и для решения бизнес-задач НСПК и партнеров, поэтому применяем те новые технологии, которые объективно принесут пользу компании. 
Ответила Наталья Петушкова (руководитель центра программных решений, petno). — Если разработчик перейдёт в НСПК из какой-то совсем другой компании, с какими отличиями он столкнётся? — Прежде всего, со спецификой платежных систем. Придётся погрузиться в финтех-сектор, познакомиться с терминологией, понять кто такие эмитент и эквайер, отправитель и получатель, где здесь мы как операционно-клиринговый центр. Первые пару недель потребуется для осознания, куда ты пришёл и какой у тебя продукт. Дело даже не в специфике: каждый раз, когда приходишь на новую работу, сначала разбираешься, что же она собой представляет. Да, везде Java, у всех почти один и тот же технологический стек, но всё равно есть какой-то свой уклон и особенности. Есть ещё вопрос, в котором у нас нет отличия от других компаний, но многие нам его задают: «А можно ли, работая у вас, выезжать за границу?». Не знаю, откуда вопрос взялся, и он нас ставит в ступор. Ответ простой: «Да, можно». — Хочется предположить, что с «погружением в специфику» всё зависит от роли: какой-то минимум о платёжных системах у вас нужно знать всем, но дальше одним требуется забираться намного глубже, чем другим? — Действительно, в любой команде придётся знать основы, а дальше по-разному. Я бы сказала, что в зависимости от команды придётся погрузиться в специфику той или иной платёжной системы. Приведу диаметрально противоположные примеры: платежная система «Мир» и Система быстрых платежей. Казалось бы, и то, и другое — финтех-продукты, везде так или иначе задействованы банки. Но на самом деле нет: в «Мире» модель схожа с международными платежными системами, а в Системе быстрых платежей – совершенно другая бизнес-модель, другие протоколы и принципиально другой принцип работы, там нет как таковых онлайн-авторизации и клиринга. Поэтому, если ты изучил платёжную систему «Мир», это совсем не означает, что ты сразу разберешься, как работает СБП. Нужно ли где-то знакомиться с предметной областью особенно глубоко? Да, несколько команд делают сервисы, связанные с безопасностью, и там требуется хорошо разбираться в стандарте PCI DSS и не только. У нас есть очень интересные команды — в них сосредоточено несколько сервисов, связанных с эмиссией, эквайрингом, веб-сервисами, мобильными платежами, кэшбеками. И там, на мой взгляд, очень интересно, потому что можно погрузиться и в криптографию, и сертификацию, можно разобраться на детальном уровне, как живёт карта, как работает платёжное приложение, можно дойти до программирования микропроцессоров. Безусловно, такую специфику мы указываем в вакансии.  — Раз поначалу надо погружаться в предметную область, хочется узнать: как выглядит процесс онбординга? — Это отдельная большая тема, в центре разработки есть своя специфика, здесь расскажу кратко. Процесс онбоардинга делится условно на две части: адаптацию в офисе и погружение в работу команды. У каждого нового сотрудника во время онбординга есть наставник. Мы сообщаем задание на испытательный срок, кто с чем может помочь, и проверяем это задание. У нас это не просто формальная часть, проверяем по-настоящему: не всегда люди проходят испытательный срок на «отлично», кому-то действительно сложно бывает адаптироваться. Для комфортного погружения у нас есть лекции, относящиеся к работе в организации и объясняющие основы работы платежных систем. Ещё есть программа «Key people», сотрудники которой делятся знаниями, к ним всегда можно обратиться за консультацией, а к любому коллеге – за помощью. Чуть ближе познакомиться с системой обучения в компании можно в этой статье.  Коллеги из HR проводят встречи с новичками, где можно рассказать обо всём наболевшем — вплоть до того, что пожаловаться на своего руководителя. Лучше, конечно, сказать своему руководителю напрямую, мы стараемся давать обратную связь открыто. Но если с этим возникли трудности, тебе не уделяют достаточно внимания, непонятно объяснили задачу или ещё что-то, то можно об этом сказать на такой адаптационной встрече. Есть также общие встречи для новичков, где наши коллеги рассказывают о том, как устроена НСПК. Из приятных мелочей: когда ты приходишь в первый день, оборудование уже готово. Наша система так построена, что после подписания трудового договора автоматически активируется учётная запись, доступы к основным системам разработки тоже выдаются автоматически. Чат-боты помогут разобраться с большинством вопросом, если возникнет необходимость, в том числе при удаленной работе. Все движется в сторону полной автоматизации, в скором времени все доступы на многочисленные стенды будут выдаваться сразу. Человеку достаточно указать свою роль, команду, и ему в соответствии с правилами команды будут предоставлены права к стендам. Скоро мы об этом подробно расскажем в отдельной статье в нашем блоге. — Какой у вас стек (начиная с того, какие версии Java используете)? Предпочтение отдаёте общепринятым опенсорсным решениям, или активно «велосипедите»? — Сейчас у нас Java от 8-й версии и новее, но в этом году должны окончательно переехать на Java 11 (70% уже переехало). В целом разброс от 8-й до 14-й, с этого года мы исследуем на версию вперёд: одна из команд заранее опробует новую, чтобы после релиза можно было очень быстро и планомерно переехать.  Используем и опенсорсные, и неопенсорсные решения. В целом я против изобретения «велосипедов», когда есть готовые решения, иначе это ни к чему хорошему не приводит, особенно в условиях, когда безопасность и бесперебойность превыше всего. «Велосипеды» случаются, как и у всех, только когда нет подходящих готовых решений. — Насколько стек общий для всей компании, а насколько команды свободны делать свой выбор? — У нас есть принципиальный общий подход: мы используем объектно-ориентированные языки (в частности, Java). Есть также система на .NET, а какие-то средства автоматизации из сферы DevOps-практик делают на Python (понятно, что это быстрее и эффективнее, чем на Java).  Если кто-то мне аргументированно говорит, что нужно отклониться от используемых технологий, то я обеими руками «за», если это действительно нужно.  Мы исследуем новые истории, прежде чем на них пересесть. Есть интересный спор, который до сих пор открыт: Akka. У нас есть несколько решений с использованием Akka, но это довольно своеобразная вещь. Скажу честно: хотя ребята с ней возились уже очень много, когда у нас возникает новая система, где Akka подходит архитектурно, возникает много специфичных моментов. Нельзя сказать, что мы один раз выбрали Akka и теперь по жизни идем с ней. И это касается всего технологического стека и инструментов. С Kubernetes сначала был не очень удачный эксперимент, но теперь снова к нему вернулись. Потому что вечно сидеть на одних и тех же технологиях и ничего не делать — так себе вариант. Переходы из команды в команду позволяют ребятам быть более гибкими и узнавать больше про Java. Ты можешь прийти в команду, где другая платёжная специфика, другой стек, другой подход к архитектуре — в итоге ты уже знаешь базис, но при этом как будто пришёл на новую работу.  В командах используются разные методологии — где-то это Kanban, где-то Scrum, где-то вообще LeSS, которого в России очень мало.  Чтобы понимать, где и что, каждый сотрудник НСПК может открыть Confluence и прочитать про конкретную команду: чем занимается, какими hard, system и soft skills обладает, какой технологический стек и так далее. Просто приходи и выбирай. У нас были случаи, когда люди не из IT-подразделений переходили на позицию Junior, и им было очень интересно. К нам как-то пришёл HR, занимавшийся подбором кандидатов, и мы схантили HR-a!  — Как конкретный разработчик ощущает на своей работе то, что у вас жёсткие требования к безопасности, доступности («пять девяток») и так далее? — По большому счету это не сказывается на разработчике: основная нагрузка ложится на отдельную команду, отвечающую за тестирование безопасности приложений. Помимо этого, у нас есть лекции для разработчиков о том, что нельзя делать с точки зрения безопасности: например, правила работы с данными карты, чего не должно быть в логах. Это прямо базис в PСI DSS, есть и более специфичные вещи. Недавно команда организовала квест по безопасности, который был заточен на проверку знаний и обучение сотрудников. Теперь по просьбам команд разработки будем проводить такие квесты на регулярной основе. Требования доступности зависят от системы. У нас есть и онлайн-, и офлайн-системы, везде свои требования к скорости обработки операций. Например, у нас авторизационная система, так называемый платёжный свитч — с запасом в 5000 TPS (Transactions Per Seconds), которые мы должны обеспечить. Для сравнения: как наш сотрудник Александр Утёмов рассказал в своем выступлении на JPoint 2020 про токенизацию, там 10 TPS, то есть 10 токенов в секунду — казалось бы, ни о чём. Но там операция на порядки сложнее, сильнее, более защищенная, там задействована криптография, всё упирается в HSM (Hardware Security Module). Чувствует ли человек, который приходит, что его связали по рукам и ногам, и он не может нормально кодить? Нет, такого дискомфорта он не ощущает. Но требования по безопасности есть, и есть коллеги, которые следят за их соблюдением.   — Когда все переходили на удалёнку, в вашем случае с дежурной службой получилось довольно увлекательно. А у разработчиков каких-то особых сложностей с переходом не возникало? — Мы думали, написать ли пост про наш переход разработчиков на удалёнку, но для меня это не стало чем-то «вау». У нас и так разработчики периодически оказывались на удалёнке. Я всегда была против того, чтобы простуженные сотрудники находились в офисе, и, хотя наш работодатель возмещает до 21 календарного дня больничного в год, никто не хочет этим злоупотреблять лишний раз, сотрудники просятся на работу. Поэтому разработчики уходили на удалёнку, и у них был VPN, механизм был отработан. Конечно, с какими-то вопросами пришлось разобраться. У нас есть различные стенды, например, стенд с фермой мобильных телефонов, и часть операций с ним была ручной (само подключение мобильных телефонов, инициация и считывание карты). Удалённо по VPN с такими видами стендов раньше никто не работал, в офисе всегда кто-то присутствовал, поэтому мы этим просто не озадачивались. Полтора дня потратили на дополнительную настройку, пробивали доступы и делали прокси к таким стендам, а их у нас немало.  Еще отдельно проверяли удалённую работу, закупались Zoom и прочим. Я готовила правила работы. Казалось бы, всё логично и понятно, но нет — одно дело, когда ты один удалённо работаешь с командой в офисе, и другое, когда вы все удалённо. — Владимир уже сказал, что в отличие от систем, где легаси копилось десятки лет, вы начали меньше 10 лет назад и поэтому были свободны от такого. Но спрошу вот что: а что вы делаете сейчас, чтобы и в будущем не застрять в легаси? — Да, специфика любого продукта такова, что если он не пересматривался в течение двух-трёх лет, то возникает легаси. НСПК существует уже седьмой год, так что появление каких-то кусков легаси неизбежно. Но мы всячески этого избегаем и искореняем. Я и каждый из моих замов отвечаем за развитие определённого направления, и один из моих замов отвечает за направление «Развитие Solution-архитектуры». Это значит, что в каждой команде разработки у нас есть минимум один эксперт, которого мы прокачиваем с точки зрения навыков и знаний solution-архитектуры. Он следит за архитектурным развитием продукта для предотвращения легаси. Есть продукты, в которых стоит переделать архитектуру, и мы планомерно этим занимаемся. Я считаю, что проще итеративно что-то пересматривать, чем раз в пять лет просыпаться и нагонять толпу разработчиков переписывать всё с нуля.  — Поняли, спасибо за ответы! ContentProvider