Vývoj bankovního systému s multiměnovými účty

Případová studie vývoje systému s víceměnovými účty a funkcemi směny

Požadavek

Přání klienta

Hlavním požadavkem provozovatele aplikace bylo poskytnout klientům praktické funkce jako například jednoduché navýšení účtu, směnu klasických (fiat) měn nebo provádění transakcí prostřednictvím zjednodušené bankovní aplikace. V první fázi bylo cílem umožnit klientům převody finančních prostředků (v klasických měnách) bez vysokých bankovních poplatků, později měly být tyto funkce rozšířeny také na kryptoměny.

Bezproblémový provoz aplikace dále vyžadoval vytvoření rozsáhlého backofficu, který by umožňoval kontrolovat všechny dokumenty, které do aplikace budou uživatelé nahrávat. Po registraci do aplikace měl být uživatel vyzván k nahrání dokumentů, aby je následně mohl zkontrolovat zaměstnanec backofficu. Další praktickou funkcí systému měl být chat umožňující flexibilní komunikaci se zákazníky. Možnost vkládat finanční prostředky a manipulovat s nimi měl uživatel získat teprve po úspěšném ověření identity. Posledním důležitým požadavkem na systém byla dostupnost ve více jazykových verzích.

Obrazovka s přehledem účtů
Obrazovka s přihlášením
Obrazovka se zprávami

Problém

Výzva pro naše vývojáře

Stejně jako u všech bankovních aplikací bylo i v tomto případě nutné zaměřit se hlavně na funkce zabezpečení. To obnášelo potvrzování a zaznamenávání všech akcí a pohybů. Oproti počátečním fázím, kdy převažovaly spíše manuální funkce, se v dalších fázích vývoje naopak zvyšovala potřeba automatizace – například kvůli zobrazování aktuálních měnových kurzů, účetních zůstatků, historie transakcí, dostupných prostředků nebo kvůli verifikaci.

Řešení

Jak jsme aplikaci zpracovali

V první fázi jsme zabezpečení systému vyřešili dvoufázovým ověřením (buď e-mailem, nebo SMS, případně kombinací obojího). Následně jsme přidali také funkci reCaptcha a verifikaci prostřednictvím aplikace Google Authenticator. Další vrstva zabezpečení byla zajištěna sérií automatizovaných testů a penetračními testy prováděnými v pravidelných intervalech třetí stranou. Dokumenty uživatelů byly nahrávány na Amazon S3 bucket s možností jednorázového zobrazení.

Dále bylo zapotřebí některé oblasti automatizovat. Pro pravidelné stahování aktuálních měnových kurzů jsme použili službu API Interactive Brokers. Načítání zůstatků po započtení plateb příchozích na sběrné účty probíhá samostatně podle variabilních symbolů. Odchozí platby zadává systém automaticky jako bankovní příkazy na zadané účty příjemců těchto plateb. Administrátoři mají přehled o aktuálních zůstatcích na všech účtech a také mohou v případě nutnosti na určitou dobu zakázat jakékoli platby či měnové kurzy. V poslední fázi jsme implementovali automatizaci pomocí Amazon Rekognition API.

Hlavní přínos

To nejlepší na systému

  • Několikanásobné zabezpečení přihlášení do aplikace

  • Povinné ověření identity uživatele po registraci

  • Zabezpečené funkce směny a převodů v cizích měnách

  • Uživatel má přehled o všech pohybech na účtu a dalších akcích

  • E-mailová upozornění na všechny akce na účtu

  • Aplikace je vhodná také pro B2B sektor, kde uživatelé musí obsluhovat více společností

  • Dostupnost ve 4 jazykových mutacích

  • Zaměstnanec backoffice má možnost kontrolovat dokumenty nahrané uživatelem a případně si vyžádat další dokumenty prostřednictvím zprávy, ke které může uživatel připojit přílohu

  • Zaměstnanci backofficu mají k dispozici celou řadu funkcí nastavení a obsluhy systému

  • Všechny uživatelské akce jsou zaznamenávány a předávány správcům systému

Seznam uživatelů z pohledu administrátora
Přehled měn a jejich kurzů

Platformy

Jaké technologie jsme při vývoji použili

K naprogramování jádra systému jsme použili jazyk Python a jeho Django Rest Framework. Asynchronní činnosti využívají plánovač Celery a redisovou frontu. Systém jsme propojili se službami Google Authenticator a API Interactive Brokers a napojili jej na víceměnové účty Fio banky. Při programování uživatelské webové aplikace včetně backoffice jsme použili framework React.js.

Náhled systému

Nastavení směny
Detail logu změn z administrátora
Přehled logů z administrátora
Přehled uživatelů z administrátora
Detail osobního účtu
Přehled zpráv
Obrazovka s přehledem účtů
Přehled aktuálních měnových kurzů