Temario para un Curso de Python Orientado a Arquitectura de Software (Python Arquitecto) – 12 Clases de 3 Horas


Dirigido a

  • Desarrolladores avanzados de Python interesados en evolucionar hacia roles de arquitecto de software.
  • Profesionales que diseñan sistemas distribuidos, aplicaciones empresariales, o soluciones escalables utilizando Python.
  • Aquellos que desean adquirir experiencia en patrones de diseño, principios de arquitectura y herramientas avanzadas.

Objetivos del Curso

Al finalizar el curso, los estudiantes serán capaces de:

  1. Diseñar y documentar arquitecturas de software utilizando Python.
  2. Implementar principios de arquitectura como SOLID y DDD (Domain-Driven Design).
  3. Diseñar sistemas distribuidos y resilientes con microservicios en Python.
  4. Integrar herramientas de monitoreo, logging, y tracing en sistemas Python.
  5. Implementar soluciones avanzadas como APIs, mensajería, y procesamiento paralelo.
  6. Aplicar estrategias de despliegue, seguridad y mantenimiento de sistemas a gran escala.

Temario

Clase 1: Rol del Arquitecto y Fundamentos de Arquitectura de Software

  • ¿Qué es un arquitecto de software?
  • Tipos de arquitectura:
    • Monolítica, Microservicios, Serverless.
  • Introducción a los principios SOLID y patrones de diseño.
  • Prácticas: Diseñar un diagrama básico de arquitectura para una aplicación de ejemplo.

Clase 2: Principios de Diseño y Modularidad

  • Modularidad y desacoplamiento en Python:
    • Uso de módulos y paquetes.
    • Diseñar sistemas modulares.
  • Separación de responsabilidades con principios SOLID.
  • Prácticas: Refactorización de código para cumplir SOLID.

Clase 3: Patrones de Diseño en Python

  • Introducción a patrones de diseño:
    • Singleton, Factory, Adapter, Observer, Decorator.
  • Implementación en Python.
  • Prácticas: Diseñar un sistema de notificaciones con patrones.

Clase 4: Domain-Driven Design (DDD)

  • Introducción a DDD:
    • Entidades, Agregados, Repositorios, Servicios de Dominio.
  • Diseño centrado en el negocio.
  • Prácticas: Implementar un sistema de pedidos usando DDD.

Clase 5: Arquitectura de Microservicios

  • Introducción a microservicios:
    • Principios básicos y cuándo usarlos.
    • Comunicación entre microservicios (REST vs gRPC vs mensajería).
  • Prácticas: Diseñar un sistema de e-commerce basado en microservicios.

Clase 6: Mensajería y Sistemas Asíncronos

  • Introducción a colas y mensajería:
    • RabbitMQ, Kafka.
  • Implementación en Python:
    • Uso de aio_pika, kafka-python.
  • Prácticas: Crear un sistema de procesamiento de eventos usando RabbitMQ.

Clase 7: Gestión de Datos y Bases de Datos

  • Diseño de bases de datos en arquitecturas modernas:
    • Bases de datos relacionales vs no relacionales.
  • Integración con ORMs como SQLAlchemy.
  • Estrategias de partición y replicación.
  • Prácticas: Diseñar y conectar un servicio a una base de datos escalable.

Clase 8: Seguridad en Sistemas Python

  • Principios básicos de seguridad:
    • Encriptación, autenticación, autorización.
  • Implementación de OAuth2 y JWT.
  • Seguridad en APIs REST y microservicios.
  • Prácticas: Proteger una API con autenticación y autorización.

Clase 9: Monitoreo y Observabilidad

  • Introducción a monitoreo:
    • Logs estructurados con structlog.
    • Tracing distribuido con OpenTelemetry.
  • Herramientas: Prometheus, Grafana.
  • Prácticas: Configurar monitoreo en un servicio Python.

Clase 10: Escalabilidad y Rendimiento

  • Principios de escalabilidad horizontal y vertical.
  • Optimización de código:
    • Perfilado con cProfile y line_profiler.
  • Uso de cachés como Redis.
  • Prácticas: Implementar caching en endpoints críticos.

Clase 11: Despliegue y Entrega Continua

  • Contenerización con Docker y Kubernetes.
  • Estrategias de CI/CD:
    • Integración con GitHub Actions.
    • Despliegues Blue-Green y Canary.
  • Prácticas: Desplegar un sistema Python en un clúster de Kubernetes.

Clase 12: Proyecto Final y Evaluación

  • Desarrollo guiado de un sistema escalable y modular:
    • Ejemplo: Plataforma de gestión de usuarios y pedidos.
    • Microservicios con mensajería, autenticación y monitoreo.
  • Presentación del proyecto y discusión grupal.
  • Repaso de conceptos clave.
  • Feedback y cierre del curso.

Evaluación del Curso

  1. Proyectos prácticos: Cada clase incluye ejercicios orientados a problemas reales.
  2. Proyecto final: Desarrollo de una solución completa para demostrar habilidades adquiridas.
  3. Retroalimentación personalizada: Durante y al final del curso.
Nombre