Fundamentos de Arquitectura de Software, Integración de Sistemas y Bases de Datos


– GESTIÓN DE PROYECTOS DE INTEGRACIÓN

1.1 Conceptos de Integración de Sistemas

Es el proceso de hacer que diferentes sistemas trabajen juntos sin importar el lenguaje o tecnología que utilicen. Su objetivo es evitar la duplicación de información y automatizar flujos.

  • Middleware: Software que conecta sistemas distintos.
  • API (Interfaz de Programación de Aplicaciones): Interfaz para que dos programas se comuniquen.
  • ETL (Extracción, Transformación y Carga): Proceso que extrae, transforma y carga datos entre sistemas.
  • Microservicios: Dividir un sistema grande en partes pequeñas e independientes.

Ejemplo: Conectar ventas (MySQL) con contabilidad (Oracle) mediante un middleware.

1.2 Patrones de Integración

Formas de conectar sistemas según la complejidad:

  • Punto a Punto (P2P): Conexión directa entre sistemas; simple, pero difícil de escalar.
  • Bus de Servicios Empresariales (ESB): Canal central que gestiona todas las comunicaciones.
  • API Gateway: Punto único que controla, autentica y organiza todas las APIs.

1.3 Ciclo de Vida de Integración

Etapas para desarrollar un proyecto de integración:

  1. Análisis: Definir sistemas, datos y reglas de negocio.
  2. Diseño: Elegir el patrón y definir contratos de comunicación.
  3. Desarrollo: Construir APIs, flujos o transformaciones.
  4. Pruebas: Verificar que los datos se transmitan sin errores.
  5. Despliegue: Publicar con seguridad y monitoreo.

Ejemplo: Una API bancaria pasa por todas estas fases antes de publicarse.

1.4 Herramientas Comunes de Integración

Todas estas herramientas conectan, transforman y controlan datos entre aplicaciones:

  • MuleSoft: Plataforma visual muy usada en bancos.
  • Apache Camel: Framework gratuito para definir rutas en Java.
  • WSO2: Plataforma open source con módulos para APIs y seguridad.
  • Spring Integration: Herramienta Java para microservicios.

1.5 Buenas Prácticas en Integración

  • Desacoplamiento: Que los sistemas sigan funcionando aunque otro falle.
  • Versionado: Implementar nuevas versiones para cambios importantes.
  • Documentación: Usar Swagger u OpenAPI.
  • Seguridad: Implementar HTTPS, JWT, Vault y control de permisos.
  • Pruebas y Monitoreo: Usar Grafana o Prometheus.
  • CI/CD: Automatizar pruebas y despliegue.

Ejemplo: Una API nueva se lanza como /v2/, documentada y probada automáticamente.

1.6 Integración Continua y Despliegue Continuo (CI/CD)

El CI/CD es fundamental para la entrega ágil de software.

  • Integración Continua (CI): Probar automáticamente el código al subirlo.
  • Despliegue Continuo (CD): Publicar automáticamente si las pruebas pasan.

Herramientas de CI/CD

  • GitHub Actions, GitLab CI, Jenkins, SonarQube, Docker, Kubernetes.

Ejemplo: Un “push” en GitHub activa Jenkins, que prueba y despliega la API en AWS.


– CICLO DE VIDA DEL SOFTWARE Y FUNDAMENTOS DE INGENIERÍA

1. Ciclo de Vida del Desarrollo de Software (SDLC)

El SDLC describe las etapas desde que nace una idea hasta que el sistema se entrega y mantiene. Cada fase tiene un propósito, entregables y responsables definidos.

  • Análisis: Identificar necesidades del usuario → Documento de requerimientos.
  • Diseño: Planificar estructura y tecnología → Diagramas UML, modelo BD.
  • Desarrollo: Codificar el sistema → Código fuente funcional.
  • Pruebas: Verificar funcionamiento → Reporte de pruebas.
  • Implementación: Instalar y poner en producción → Guía de instalación.
  • Mantenimiento: Corregir errores o mejorar funciones → Nuevas versiones.

2. UML (Lenguaje Unificado de Modelado)

UML permite visualizar y documentar el sistema antes del desarrollo. Los diagramas clave son:

  • Casos de uso: Funciones del sistema y actores.
  • Clases: Estructura, atributos y métodos.
  • Secuencia: Orden de interacción entre objetos.
  • Componentes: Organización del sistema.

Beneficio: Comunicar la lógica antes de programar y detectar errores tempranos.

3. Programación Orientada a Objetos (OOP)

Principios fundamentales de la OOP:

  • Encapsulamiento: Proteger datos con métodos.
  • Herencia: Reutilizar código de clases base.
  • Polimorfismo: Mismo método con diferentes comportamientos.
  • Abstracción: Mostrar solo lo esencial.

4. Patrones de Diseño

Soluciones probadas a problemas comunes de diseño de software:

  • MVC (Modelo-Vista-Controlador): Separa lógica, interfaz y control (Ejemplo: Spring MVC).
  • DAO (Objeto de Acceso a Datos): Separa la lógica de negocio del acceso a datos (Ejemplo: NotaDAO maneja SQL).
  • Singleton: Garantiza una única instancia global (Ejemplo: conexión a BD).

5. Control de Versiones (GIT / GITHUB)

Conceptos clave en el control de versiones distribuido:

  • Repositorio: Carpeta del proyecto.
  • Commit: Registro de un cambio.
  • Branch (Rama): Línea de desarrollo independiente.
  • Merge: Unir ramas.
  • Push/Pull: Subir o traer cambios del repositorio remoto.

6. Pruebas de Software (Testing)

Tipos de pruebas según la Pirámide de Testing (más unitarias, menos E2E):

  • Unitarias: Validan métodos individuales (Ejemplo: JUnit, Mockito).
  • Integración: Prueban la comunicación entre módulos (Ejemplo: H2, TestContainers).
  • E2E (De Extremo a Extremo): Prueban el flujo completo del usuario (Ejemplo: Selenium, Postman).
  • No funcionales: Evalúan rendimiento y seguridad (Ejemplo: JMeter).

7. Implementación y Despliegue (CI/CD)

Proceso para llevar el software a producción y mantenerlo actualizado.

Entornos de Despliegue

  • DEV: Desarrollo y pruebas iniciales.
  • QA: Validación de calidad.
  • PROD: Entorno real de producción.

Pasos del Despliegue

Compilar, subir al servidor, ejecutar, configurar variables de entorno y revisar logs.

Automatización: CI prueba cada push, CD actualiza automáticamente (Herramientas: Jenkins, GitHub Actions).


– ARQUITECTURA ORIENTADA A SERVICIOS (SOA)

1. Concepto y Principios de SOA

SOA diseña sistemas con servicios independientes que se comunican por red. Cada servicio cumple una función, tiene una interfaz clara y puede reutilizarse.

Principios Clave

  • Reusabilidad, Interoperabilidad, Desacoplamiento, Autonomía, contratos definidos y composición.

SOA vs Monolito: SOA es modular y escalable; el monolito es rígido y difícil de mantener.

2. Servicios, Contratos e Interoperabilidad

Un servicio tiene una interfaz pública y un contrato (operaciones, datos, formato y protocolo).

  • Descubrimiento: Puede ser manual, por catálogo o automático (Ejemplo: Eureka, Consul).
  • Interoperabilidad: Comunicación entre lenguajes usando HTTP, XML, JSON, WSDL u OpenAPI.

3. Protocolos SOAP vs REST

SOAP (Protocolo de Acceso a Objetos Simples)
Protocolo basado en XML con WSDL, seguro pero pesado. Usado en entornos formales (Ejemplo: bancos).
REST (Transferencia de Estado Representacional)
Estilo ligero con HTTP y JSON, rápido y fácil de integrar. Usado en aplicaciones ágiles (web/móvil).

4. Servicios RESTful

Utilizan rutas claras y métodos HTTP (GET, POST, PUT, DELETE) para manipular recursos.

Buenas Prácticas REST

  • Nombres de recursos en plural.
  • Versionado (Ejemplo: /v1/).
  • Uso correcto de códigos HTTP (200, 404, 500).
  • Documentación con Swagger.
  • Seguridad JWT/HTTPS.

5. WSDL y XML

  • XML: Estructura de datos jerárquica.
  • WSDL (Lenguaje de Descripción de Servicios Web): Contrato SOAP que define operaciones y protocolos.

Nota: REST usa OpenAPI (Swagger) para documentar en formato JSON/YAML.

6. Mensajería Asíncrona

Permite la comunicación sin esperar una respuesta inmediata, mejorando la escalabilidad.

  • RabbitMQ: Ideal para colas pequeñas (protocolo AMQP).
  • Kafka: Diseñado para alto volumen y streaming de datos.

Ventajas: Evita bloqueos y mejora la escalabilidad.

7. Orquestación y Coreografía

Orquestación
Control centralizado del flujo de trabajo (Ejemplo: BPEL, MuleSoft). Es simple, pero genera dependencia del coordinador.
Coreografía
Servicios que reaccionan a eventos sin un coordinador central (Ejemplo: Kafka, Sagas). Es flexible, pero más complejo de monitorear.

8. Conclusión de SOA

SOA crea sistemas modulares y reutilizables. Utiliza SOAP o REST, contratos claros y mensajería asíncrona. La coordinación puede ser central (orquestación) o distribuida (coreografía). Es la base de los microservicios modernos.


– MOTORES DE BASE DE DATOS Y GESTIÓN DE DATOS

1. Concepto General de DBMS

Un motor de base de datos (DBMS) gestiona, organiza y protege los datos, permitiendo almacenar, consultar y actualizar información. Es el “cerebro” del sistema.

Ejemplos: MySQL, PostgreSQL, Oracle, SQL Server, MongoDB.

2. Modelado Relacional

Organiza datos en tablas relacionadas por claves.

  • Entidad: Objeto real (Ejemplo: Cliente).
  • Atributo: Característica (Ejemplo: nombre).
  • Relación: Conexión entre entidades (Ejemplo: Cliente – Pedido).
  • PK (Clave Primaria): Identificador único.
  • FK (Clave Foránea): Referencia externa a otra tabla.

Las relaciones (1:1, 1:N, N:N) se representan en diagramas ERD (Diagrama Entidad-Relación).

3. Normalización de Bases de Datos

Proceso para evitar la duplicidad de datos y mejorar la integridad. La mayoría de los diseños llegan hasta la Tercera Forma Normal (3FN).

  • 1FN (Primera Forma Normal): Sin columnas repetidas.
  • 2FN (Segunda Forma Normal): Sin dependencias parciales.
  • 3FN (Tercera Forma Normal): Sin dependencias transitivas.

4. SQL Avanzado

El Lenguaje de Consulta Estructurado (SQL) permite interactuar con la base de datos.

Comandos y Estructuras

  • Consultas DML: SELECT, INSERT, UPDATE, DELETE.
  • JOIN: Une datos de múltiples tablas.
  • Subconsultas: Consultas anidadas.
  • Funciones de Agregación: COUNT, SUM, AVG.
  • Vistas: Consultas guardadas que actúan como tablas virtuales.
  • Procedimientos Almacenados: Bloques SQL ejecutables en el servidor.

5. Índices y Optimización

  • Índices: Estructuras que aceleran las búsquedas (CREATE INDEX).
  • Ventaja: Consultas más rápidas.
  • Desventaja: Inserciones y actualizaciones más lentas.

Optimización: Usar solo las columnas necesarias, emplear EXPLAIN para entender el plan de consulta, evitar subconsultas innecesarias y mantener los índices.

6. Triggers y Transacciones (ACID)

  • Trigger: Acción automática que se ejecuta tras un evento (INSERT, UPDATE, DELETE).
  • Transacción: Agrupa operaciones; permite COMMIT (confirmar) o ROLLBACK (deshacer).

Propiedades ACID

Garantizan la fiabilidad de las transacciones:

  • Atomicidad: Todo o nada.
  • Consistencia: Mantiene las reglas de la base de datos.
  • Aislamiento: Las transacciones son independientes entre sí.
  • Durabilidad: Los cambios persisten tras fallos del sistema.

7. Backup y Recuperación

Tipos de Backup

  • Completo, incremental, diferencial.

Estrategias

Automatizar copias, usar la nube, probar restauraciones periódicamente y replicar en bases de datos grandes.

8. Motores Populares

  • MySQL: Rápido y popular.
  • PostgreSQL: Robusto y avanzado.
  • Oracle: Estándar empresarial.
  • SQL Server: Integrado con el ecosistema .NET.

9. Conexión Desde Aplicaciones

  • JDBC (Conectividad de Base de Datos Java): Ejecuta SQL directamente desde Java.
  • ORM / JPA (Mapeo Objeto-Relacional): Mapean clases a tablas (Ejemplo: Hibernate).

Ventajas del ORM: Menos código SQL manual, código más limpio e independencia del motor de base de datos.

Dejar un Comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *