Base de IT
En este módulo, debemos cubrir todas las lagunas en los fundamentos de la Ingeniería de Software y en los temas principales del desarrollo de backend.
IMFO: Un ingeniero de IA aplicada no debe ser un especialista en desarrollo de backend, pero usted mismo debe profundizar con el nivel de inmersión + omitir los temas familiares.
- ¿Quiere pasar más rápido al desarrollo de Agentes? - estudie estos temas superficialmente - volviendo a la inmersión en SWE en el curso del desarrollo industrial.
- Para estudiantes a tiempo completo: dedique 0.5-1 días al módulo
- Para estudiantes a tiempo parcial: dedique 1-2 días al módulo
- ¿Quiere conocimientos profundos? - será útil para los futuros arquitectos
- Para estudiantes a tiempo completo: dedique 1-2 días al módulo, revise superficialmente las secciones Extra/Silver
- Para estudiantes a tiempo parcial: dedique 2-4 días al módulo, revise superficialmente las secciones Extra/Silver
Dado que estos temas no cambian con el tiempo, lo mejor es estudiarlos con un profesor personal: ChatGPT.
El proceso de estudio debe ser el siguiente:
- usted crea un prompt del sistema para ChatGPT (plantillas), donde describe sus antecedentes, preferencias, nivel de detalle de las explicaciones, etc.
- copia el tema de la lista (triple clic) y le pide a ChatGPT que le explique este tema
- si desea profundizar, haga preguntas aclaratorias
Actualmente, esta es la forma más conveniente de estudiar los fundamentos. Además de los conceptos, puede estudiar materiales adicionales en las secciones Gold, Silver, Extra.
- Gold - vale la pena estudiar antes de comunicarse con ChatGPT
- Ask AI - haga preguntas sobre cada tema desconocido
- Silver - materiales secundarios
- Extra - temas avanzados
Gold
1. No agrupado
Fundamentos del diseño de sistemas por ByteByteGo
Vídeo por ByteByteGo
2. Git y Github
Git y Github
Ask AI
Temas para el estudio secuencial con ChatGPT (agrupados por categorías):
Fundamentos de red y protocolos
Cómo funciona internet
-
HTTP vs HTTPS: diferencias clave e impacto en la seguridad
-
TCP/IP: principios básicos de funcionamiento (brevemente)
-
Códigos de estado HTTP: aplicación práctica (2xx, 4xx, 5xx)
Códigos de estado HTTP: clasificación y uso (2xx, 4xx, 5xx), brevemente
-
WebSockets vs HTTP Long Polling: comparación de enfoques (concepto)
-
CORS: configuración de seguridad para solicitudes entre dominios
CORS en 100 segundos
Arquitectura de API y servicios web
-
REST vs SOAP: comparación para principiantes
-
Stateless vs Stateful: ventajas para el escalado
-
Operaciones CRUD: patrones básicos de trabajo con datos
-
RESTful API: 6 principios clave de diseño
-
Versionado de API: estrategias para la compatibilidad con versiones anteriores
-
OpenAPI/Swagger: automatización de la documentación (visión general)
-
GraphQL vs REST: criterios para la selección de tecnología
GraphQL vs REST: cuándo usar
-
Webhooks: implementación de notificaciones asíncronas
Webhooks: mecanismos de funcionamiento y aplicación
-
API Gateway: patrones arquitectónicos (visión general)
API Gateway: rol en la arquitectura de microservicios
-
Limitación de la tasa de API: protección contra DDoS y abusos
-
Microservicios vs Monolito: análisis de trade-off
Microservicios vs Monolito: cuándo usar qué
Principios de desarrollo y pruebas
-
SOLID: aplicación práctica en el backend
-
DRY/KISS/YAGNI: antipatrones y soluciones
-
Pruebas en el backend: pirámide de pruebas (comparación)
Los 9 tipos de pruebas de API más populares
-
TDD: flujo de trabajo para principiantes
-
Pruebas A/B: enfoques arquitectónicos
-
Feature flags: gestión de lanzamientos (brevemente)
-
SemVer: versionado semántico en la práctica
-
Logs estructurados: mejores prácticas
-
Monitorización: métricas clave de SLA
- Manejo de errores y registro: enfoques estándar, middleware
- Servidores proxy
Git y CI/CD
- Git-flow: estrategias de ramificación en equipo
- CI/CD: pipeline desde el commit hasta la producción
Seguridad y autenticación
-
JWT: implementación de tokens en microservicios
Tokens JWT: estructura y formas de uso
-
OAuth2: flujo de autorización para API
OAuth2: principios de autorización
-
Hashing de contraseñas: estándares de seguridad modernos
Hashing de contraseñas: almacenamiento seguro de credenciales
-
Gestión de secretos: Vault y análogos (visión general)
12 consejos para la seguridad de la API
Asincronía y paralelismo
- Programación asíncrona: bucle de eventos y callbacks (concepto y comparación con el código síncrono)
- Multihilo vs Multiprocesamiento: especificidad de Python (concepto y diferencias clave)
- Python GIL: descripción general del problema y enfoques para evitarlo
- asyncio: fundamentos del trabajo con corrutinas (ejemplos prácticos de uso)
- Tareas en segundo plano: colas y planificación (implementación a través de Celery/Redis)
Patrones arquitectónicos
Patrones arquitectónicos
- Inyección de dependencias: Implementación práctica de dependencias (inversión de control)
- Patrón de fábrica: Creación de objetos a través de fábricas (concepto y comparación con otros patrones)
- Singleton: Recursos globales y antipatrones (Descripción general para principiantes)
- Validación de datos: modelos Pydantic/Schema (bibliotecas y enfoques clave)
- Serialización de objetos: JSON/Protobuf/MessagePack (formatos y optimización de la transmisión)
- Idempotencia de la API: garantía de ejecución única de operaciones
Temas adicionales
- Agile, Scrum, Kanban: metodologías básicas de desarrollo (concepto y comparación)
- Software Development Life Cycle (SDLC): etapas de desarrollo, planificación, revisión de código (Descripción general para principiantes)
- DevOps: principios e instrumentos básicos (Descripción general de los aspectos clave)
- Balanceo de carga: principios e instrumentos básicos (concepto y comparación de enfoques)
Silver
Lista de reproducción de Fundamentos del diseño de sistemas - por ByteByteGo