Введение
1. Краткое резюме
В этом кейсе анализируется архитектурный дизайн системыинтернет-банкингадля вымышленного финансового учреждения «BigBank». Цель проекта — обеспечить клиентов личного банкинга безопасным, доступным и мультиканальным доступом к их счетам (через веб и мобильные приложения), одновременно интегрируя с существующей унаследованной инфраструктурой основного банковского ядра.
Архитектура документируется с использованием модели C4 (диаграмма контейнеров), которая визуализирует высокий уровень выбора технологий и взаимодействие контейнеров системы (приложения, базы данных и т.д.).

2. Бизнес-вызовы
-
Интеграция с унаследованными системами:Банк обладает надежной, но устаревшей «системой основного банкинга», которая хранит основную информацию о клиентах. Новая система должна была предоставить доступ к этим данным, не заменяя основную систему сразу.
-
Доступ через несколько каналов:Клиенты требовали доступ через настольные браузеры и мобильные устройства.
-
Безопасность:Обработка конфиденциальной финансовой информации требует строгой аутентификации и защищенных каналов связи.
3. Архитектурное решение (взгляд на контейнеры C4)
Решение разработано как система с разделением слоев, где слой представления отделен от слоев бизнес-логики и данных.
А. Слой пользовательского интерфейса (фронтенды)
Система поддерживает три различных входных пункта для клиента личного банкинга:
-
Одностраничное приложение (SPA):
-
Технология: JavaScript и Angular.
-
Роль: Это работает в веб-браузере клиента. Оно обеспечивает полный набор функций интернет-банкинга. Это динамичный, адаптивный интерфейс, который асинхронно взаимодействует с бэкендом.
-
-
Веб-приложение:
-
Технология: Java и Spring MVC.
-
Роль: Это выступает точкой входа для веб-опыта. Оно доставляет статическое содержимое (HTML/CSS/JS) и размещает одностраничное приложение. Оно служит «запускателем» для приложения Angular.
-
-
Мобильное приложение:
-
Технология: Xamarin (позволяет кроссплатформенную разработку, вероятно, iOS и Android).
-
Роль: Предоставляет «ограниченный набор» функций, оптимизированных для мобильных устройств. Это означает, что сложные задачи (например, настройка международных переводов) могут быть ограничены полноценным веб-интерфейсом/SPA, тогда как обычные задачи (проверка баланса) доступны на мобильных устройствах.
-
B. Уровень бизнес-логики (бэкенд)
-
Приложение API:
-
Технология: Java и Spring MVC.
-
Роль: Это центральная нервная система архитектуры. Оно выступает в роли шлюза API или бэкенда для фронтенда (BFF).
-
Функция: Оно предоставляет JSON/HTTPS API для веб- и мобильных клиентов. Оно обрабатывает аутентификацию, авторизацию и оркестрацию запросов данных.
-
C. Уровень данных и интеграции
-
База данных:
-
Технология: Схема базы данных Oracle.
-
Роль: Хранит данные, специфичные для интернет-банкинга. Включает информацию о регистрации пользователей, хэшированные учетные данные для аутентификации (наилучшая практика в области безопасности), и журналы доступа. Он не не хранит фактические остатки на счетах (они находятся в основной вычислительной системе).
-
Связь: Приложение API считывает/записывает в него через JDBC.
-
-
Основная вычислительная система банка:
-
Роль: Система записи. Хранит основную банковскую информацию (клиенты, счета, транзакции).
-
Связь: Приложение API взаимодействует с основной вычислительной системой с помощью XML через HTTPS. Это указывает на то, что основная вычислительная система, вероятно, является устаревшим сервисом на основе SOAP или более старой системой, требующей обмена структурированными данными в формате XML.
-
-
Система электронной почты:
-
Технология: Microsoft Exchange.
-
Роль: Обрабатывает уведомления.
-
Связь: Приложение API отправляет электронные письма через SMTP на сервер Exchange, который затем доставляет их клиенту.
-
4. Ключевые потоки данных и пути пользователей
Сценарий 1: Вход через веб-браузер
-
The Клиент личного банковского обслуживания переходит на
bigbank.com/ibс использованием HTTPS. -
Запрос поступает на Веб-приложение (Java/Spring MVC).
-
Веб-приложение доставляет Одностраничное приложение (Angular) в браузер клиента.
-
Клиент вводит учетные данные в одностраничном приложении.
-
Одностраничное приложение делает вызов API (
JSON/HTTPS) на Приложение API. -
Приложение API проверяет учетные данные против Базы данных (через JDBC).
-
При успешном результате одностраничное приложение запрашивает балансы счетов. Приложение API получает эти данные с Основной банковской системы (
XML/HTTPS) и возвращает их одностраничному приложению.
Сценарий 2: Уведомление о мобильной транзакции
-
Клиент совершает платеж через Мобильное приложение (Xamarin).
-
Приложение отправляет запрос к Приложение API.
-
Приложение API обрабатывает платеж с помощью Мейнфрейм.
-
Приложение API запускает подтверждающее письмо, отправляя запрос SMTP к Система электронной почты (Exchange).
-
Клиент получает уведомление по электронной почте.
5. Технические особенности и лучшие практики
-
Разделение ответственности: На диаграмме четко разделены данные, специфичные для «Интернет-банкинга» (Oracle DB), и данные «Основного банкинга» (Мейнфрейм). Это предотвращает прямой доступ веб-слоя к основному финансовому реестру.
-
Перевод протоколов: Приложение API выступает в роли переводчика. Современные фронтенды используют JSON, но устаревший бэкенд использует XML. Приложение API устраняет этот разрыв.
-
Безопасность: Учетные данные хранятся в базе данных в виде «хэшированных», что гарантирует, что даже при компрометации базы данных исходные пароли не будут раскрыты. Все внешние коммуникации используют HTTPS.
-
Масштабируемость: Используя одностраничное приложение (Angular) и независимый API, фронтенд можно масштабировать независимо от логики бэкенда.
Эта статья также доступна на Deutsch, English, Español, فارسی, Français, English, Bahasa Indonesia, 日本語, Polski, Portuguese, Việt Nam, 简体中文 and 繁體中文













