Introducción
1. Resumen Ejecutivo
Este estudio de caso analiza el diseño arquitectónico del Sistema de Banca en Líneapara una institución financiera ficticia, “BigBank”. El objetivo del proyecto era proporcionar a los clientes de banca personal un acceso seguro, accesible y multi canal a sus cuentas (a través de web y móvil), al mismo tiempo que se integraba con la infraestructura central heredada de banca.
La arquitectura se documenta utilizando el Modelo C4 (Diagrama de Contenedores), que visualiza las elecciones tecnológicas de alto nivel y cómo interactúan los contenedores del sistema (aplicaciones, bases de datos, etc.).

2. Desafíos del Negocio
-
Integración heredada:El banco posee un sistema de banca de mainframe robusto pero antiguo que almacena la verdad central de los datos de los clientes. El nuevo sistema necesitaba exponer estos datos sin reemplazar inmediatamente el mainframe.
-
Acceso multi canal:Los clientes exigían acceso tanto a través de navegadores de escritorio como de dispositivos móviles.
-
Seguridad:El manejo de datos financieros sensibles requiere autenticación estricta y canales de comunicación seguros.
3. Solución arquitectónica (Vista de Contenedores del Modelo C4)
La solución está diseñada como un sistema desacoplado en el que la capa de presentación está separada de las capas de lógica de negocio y datos.
A. Capa de Interfaz de Usuario (Frontends)
El sistema admite tres puntos de entrada distintos para el Cliente de Banca Personal:
-
Aplicación de página única (SPA):
-
Tecnología: JavaScript y Angular.
-
Rol: Este se ejecuta en el navegador web del cliente. Proporciona la completa suite de funcionalidades de banca en línea. Es una interfaz dinámica y adaptable que se comunica de forma asíncrona con el backend.
-
-
Aplicación web:
-
Tecnología: Java y Spring MVC.
-
Rol: Este actúa como punto de entrada para la experiencia web. Entrega el contenido estático (HTML/CSS/JS) y aloja la aplicación de página única. Sirve como el “lanzador” de la aplicación Angular.
-
-
Aplicación móvil:
-
Tecnología: Xamarin (permite el desarrollo multiplataforma, probablemente iOS y Android).
-
Rol: Proporciona un “subconjunto limitado” de funcionalidades optimizadas para dispositivos móviles. Esto sugiere que tareas complejas (como configurar transferencias internacionales) podrían estar restringidas a la interfaz completa web/SPA, mientras que tareas comunes (ver saldo) están disponibles en móvil.
-
B. Capa de lógica de negocio (backend)
-
Aplicación de API:
-
Tecnología: Java y Spring MVC.
-
Rol: Este es el sistema nervioso central de la arquitectura. Actúa como un Puerta de enlace de API o Backend para frontend (BFF).
-
Función: Exponer una API JSON/HTTPS a los clientes web y móviles. Maneja la autenticación, autorización y orquestación de las solicitudes de datos.
-
C. Capa de datos e integración
-
Base de datos:
-
Tecnología: Esquema de base de datos Oracle.
-
Rol: Almacena datos específicos de banca por internet. Esto incluye información de registro de usuarios, credenciales de autenticación en hash (práctica recomendada de seguridad), y registros de acceso. No almacena no los saldos bancarios reales (estos se encuentran en el Mainframe).
-
Comunicación: La aplicación de API lee/escribe en esta a través de JDBC.
-
-
Sistema de banca Mainframe:
-
Rol: El sistema de registro. Almacena información básica de banca (clientes, cuentas, transacciones).
-
Comunicación: La aplicación de API se comunica con el Mainframe utilizando XML sobre HTTPS. Esto indica que el Mainframe probablemente sea un servicio heredado basado en SOAP o un sistema más antiguo que requiere un intercambio de datos estructurados en XML.
-
-
Sistema de correo electrónico:
-
Tecnología: Microsoft Exchange.
-
Rol: Administra notificaciones.
-
Comunicación: La aplicación de API envía correos electrónicos a través de SMTP al servidor Exchange, que luego los entrega al cliente.
-
4. Flujos clave de datos y recorridos de usuario
Escenario 1: Inicio de sesión a través de un navegador web
-
El Cliente de banca personal navega a
bigbank.com/ibusando HTTPS. -
La solicitud llega al Aplicación web (Java/Spring MVC).
-
La aplicación web entrega el Aplicación de página única (Angular) al navegador del cliente.
-
El cliente ingresa sus credenciales en la SPA.
-
La SPA realiza una llamada a la API (
JSON/HTTPS) al Aplicación de API. -
La aplicación de API valida las credenciales contra el Base de datos (vía JDBC).
-
En caso de éxito, la SPA solicita los saldos de las cuentas. La aplicación de API obtiene estos datos del Sistema de banca en mainframe (
XML/HTTPS) y lo devuelve a la SPA.
Escenario 2: Notificación de transacción móvil
-
El cliente realiza un pago a través de la Aplicación móvil (Xamarin).
-
La App envía una solicitud al Aplicación de la API.
-
La aplicación de la API procesa el pago con el Mainframe.
-
La aplicación de la API activa un correo de confirmación enviando una solicitud SMTP al Sistema de correo electrónico (Exchange).
-
El cliente recibe una notificación por correo electrónico.
5. Destacados técnicos y mejores prácticas
-
Separación de responsabilidades: El diagrama separa claramente los datos específicos de “Banco en línea” (Base de datos Oracle) de los datos de “Banco central” (Mainframe). Esto evita que la capa web acceda directamente al libro mayor financiero principal.
-
Traducción de protocolos: La aplicación de la API actúa como traductor. Las interfaces modernas hablan JSON, pero el backend heredado habla XML. La aplicación de la API cierra esta brecha.
-
Seguridad: Las credenciales se almacenan como “hash” en la base de datos, asegurando que incluso si la base de datos se ve comprometida, las contraseñas sin procesar no queden expuestas. Todas las comunicaciones externas utilizan HTTPS.
-
Escalabilidad: Al utilizar una aplicación de página única (Angular) y una API desacoplada, la interfaz puede escalarse de forma independiente de la lógica del backend.













