– 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:
- Análisis: Definir sistemas, datos y reglas de negocio.
- Diseño: Elegir el patrón y definir contratos de comunicación.
- Desarrollo: Construir APIs, flujos o transformaciones.
- Pruebas: Verificar que los datos se transmitan sin errores.
- 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: NotaDAOmaneja 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) oROLLBACK(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.
