Python para ingenieros - curso 65.000 rublos. de Slurm, formación 3 meses, Fecha 15 de enero de 2024.
Miscelánea / / November 27, 2023
Líder técnico, ingeniero de datos en Skyeng / ex Slurm, ISPsystem, Grid Dynamics
Sr. Ingeniero de software en Test, Auriga, ex ISPsystem
#1: Sintaxis y estructuras básicas de Python
Por qué: aprender a comprender la lógica de los programas Python, así como escribir programas simples, es la tarea más importante. "Genial" si no está familiarizado con la sintaxis de Python.
- Tipos de datos y variables, tipos de datos mutables/inmutables y simples/compuestos, técnicas de depuración.
- Declaración condicional: operadores lógicos, condiciones simples, condiciones anidadas y reemplazo de declaraciones de cambio.
- Bucles básicos: bucles while y for, iteradores, interrupciones de bucle.
- Funciones, métodos de cadenas, listas y diccionarios.
- Generación y manejo de excepciones.
Práctica: un conjunto de pequeñas microtareas para cada lección.
#2: Competencia mejorada en Python: optimizaciones y programación orientada a objetos
Por qué: dominemos las funciones de Python; es gracias a ellas que es tan simple y práctico. También revelaremos el significado de esas tres letras (estamos hablando de POO) sin teoría académica y con un propósito claro.
- Trabajo avanzado con bucles: declaración de rendimiento y generadores, información sobre bucles en Python, declaración else en un bucle, optimización de bucles de comprensión, etc.
- Tipos especiales de estructuras: frozendict, defaultdict, etc.
- Conceptos básicos de POO: clases, instancias de clases, encapsulación, herencia y polimorfismo.
- Creación de administradores de contexto para sus tipos: la construcción with.
Práctica: un conjunto de pequeñas microtareas para cada lección.
Práctica Avanzada: Auditoría de Uso de Servicios.
El CTO comenzó a sospechar que los equipos ya no utilizaban algunos servicios. El problema es que el módulo de seguimiento de los servicios utilizados no se actualiza desde hace diez años: no puede cargar datos agregados y el formato de los valores devueltos no corresponde a los generalmente aceptados estándares. Ha sido elegido para extraer las métricas capturadas, agregarlas por tipo y equipo, y proporcionar esta información al CTO para una evaluación inicial del alcance del problema.
#3: conexiones de red
Por qué: Casi todos los servicios tienen una interfaz para conectarse a través de algún protocolo de red. Y sin conexión, la interacción es imposible. Afortunadamente, el ecosistema Python tiene módulos cliente para casi cualquier protocolo.
- Paquete Pip e instalación de módulos de terceros.
- Módulo Paramiko para ejecutar comandos vía ssh.
- El módulo de solicitudes para realizar solicitudes HTTP.
- Descripción general de los módulos para trabajar con bases de datos y corredores de mensajes.
Práctica. El equipo de desarrollo está introduciendo una nueva metodología: si permite que se produzca una alerta, recibirá una tarea. El subsistema analítico busca sólo errores seleccionados y envía mensajes sobre ellos al intermediario de mensajes de Kafka. Su tarea es completar el ciclo de devolución de errores a los desarrolladores: su consumidor debe crear automáticamente tareas con la descripción y prioridad requeridas en Trello.
No. 4: Trabajar con texto en varios formatos
Por qué: Conectarse al servicio es sólo la mitad de la batalla. La otra mitad es compartir información. Y la información suele ser un conjunto de caracteres de texto en un formato determinado. Los módulos le ayudarán a decodificar y codificar. ¿No necesitas toda la información? Las expresiones regulares te ayudarán a extraer lo importante y descartar el resto.
- El módulo re y las expresiones regulares.
- Módulos para trabajar con datos en diferentes formatos: valores separados, json, yaml, xml.
- Usando argumentos de línea de comando: módulo argparse.
Práctica: Crear una fuente de datos de uso de servicios.
Durante la auditoría del uso de los servicios, usted identificó información importante para el negocio, incluso el CEO se interesó. Se decidió analizar el dinero perdido y no permitir que situaciones similares se repitan. Para ello, es necesario proporcionar a los analistas una herramienta de adquisición de datos para que puedan preparar informes. El problema es que el módulo de monitoreo devuelve los límites de servicio para una solicitud separada en formatos yaml, y el sistema de facturación devuelve los precios de los servicios en formato xml. Es necesario combinar datos sobre la carga actual con límites y precios. El departamento de análisis solicitó información agregada en formato JSON con la capacidad de especificar un intervalo de tiempo y un paso de agregación.
No. 5: Interacción con el sistema operativo
Por qué: No es necesario explicar más la importancia de interactuar con el sistema operativo. En esta lección se explica cómo conectarlo con Python.
- Lectura y escritura de archivos.
- Módulo os: leer variables de entorno, trabajar con directorios y derechos, trabajar con procesos.
- El módulo de subproceso para la interacción interactiva con procesos.
Práctica: provisión automática de acceso a servidores.
Durante la campaña para abandonar los servicios no utilizados, surgió una situación curiosa: un camarero de supermercado Los equipos cerraron, pero el equipo de infraestructura lo usó periódicamente como anfitrión para puesta en escena. Resultó que el equipo de producto no lo usó porque periódicamente alguien sobrescribía su configuración con la suya propia. Se decidió que ahora el recurso se asignará únicamente a los miembros de un equipo y la automatización ayudará a evitar errores. Usted, como el que empezó este lío, necesita escribir un agente que sondeará periódicamente el sistema de gestión de derechos y realizar cambios en la configuración de derechos dentro de los servicios instalados y, si es necesario, dar a los servicios un comando para volver a leer configuraciones.
No. 6: operador K8S en Python (transmisión de codificación en vivo)
13 de octubre a las 19:00
Por qué: ampliemos las capacidades de K8S para adaptarlo a sus tareas.
No. 7: Escribir nuestro propio módulo para Ansible
Por qué: Ansible es un potente sistema de gestión de configuración e incluso ampliable con sus propios módulos. Qué coincidencia que él mismo y la mayoría de los módulos estén escritos en Python.
- Escribiendo tus propios módulos para Ansible.
Práctica: redacción de un módulo de gestión de derechos.
Hace mucho tiempo, en una galaxia muy, muy lejana, ya escribiste a un agente para emitir derechos sobre ciertos servicios. Es hora de cambiar de tirar a empujar y Ansible le ayudará con esto. Todo lo que necesitas es sólo un módulo.
No. 8: Creación y casos de uso de tu API
Por qué: preparar el código para la implementación es una de las tareas más importantes. Nuestros propios scripts para etapas de canalización ayudan a que este proceso sea más flexible y conveniente.
- Creando una API REST en Flask.
- Creando su propio exportador Prometheus con Prometheus Python Client y Flask.
Práctica: cargar datos a un sistema de seguimiento de terceros.
Los costes de los equipos no utilizados superaron incluso las previsiones pesimistas. Ahora el equipo de ingeniería tiene otra área de responsabilidad: monitorear los servicios no utilizados. Para hacer esto, necesita sondear periódicamente el sistema de facturación a través de su script y pasar los datos a Prometheus. El formato de los datos recibidos todavía no es el adecuado. Necesita implementar un conector. Y al mismo tiempo escribir un endpoint para que el departamento de análisis tenga siempre a mano información actualizada en formato JSON.
Sesión AMA + reunión INFORMAL con ponentes del curso
28 de octubre a las 19:00
Nos reunimos para discutir inquietudes de los participantes del curso.
#9: Probar la API de tu aplicación
Por qué: a veces es mejor no tener código que código inestable. Para no tener miedo de descifrar su código, debe escribir pruebas.
- Tipos de pruebas: unitarias, de integración y de extremo a extremo.
- Descripción general del módulo pyhamcrest y sus comparadores.
- Arquitectura y capacidades de pytest.
- Usando pytest y pyhamcrest para escribir pruebas unitarias.
Práctica: escribir pruebas usando pytest y pyhamcrest para su API.
No. 10: Interacción con sistemas CVS y DevOps
- Usar módulos de terceros usando el ejemplo de integración en canalizaciones de Gitlab.
- Usando pygit para obtener información sobre cambios de código.
Práctica: generar un registro de cambios a partir de confirmaciones.
Al equipo de ingeniería le gustaron tanto sus soluciones que se inspiraron en ellas y comenzaron a escribir las suyas propias. Pero la gente siempre se olvida de escribir descripciones de los lanzamientos. Para lograr esto, el equipo decidió implementar convenciones de confirmación y generar registros de cambios directamente desde las confirmaciones cuando fusionar la rama de desarrollo con la de lanzamiento, y si el nombre de la confirmación no cumple con las convenciones de confirmación, no permita la solicitud de fusión hasta unir.
#11: Chatops con Errbot en Python
Por qué: Los principales problemas empresariales no son el rendimiento de las aplicaciones ni siquiera los errores que se producen en el código. Los problemas más graves surgen cuando la comunicación con los empleados es ineficaz. Chatops es una forma de resolver este problema.
- Concepto Chatops: ¿qué problemas resuelve Chatops?
- Framework Errbot: instalación, creación de una plantilla de complemento básica, configuración y lanzamiento.
- Marco Errbot: creación de su propio complemento para Chatops con varias opciones para procesar mensajes.
Proyecto final
Revisión de plazos y protección a los interesados
Después del curso, tendrás un proyecto en Git: podrás automatizar tu tarea de trabajo o hacer una de las opciones propuestas.
El proyecto terminado se puede utilizar como portafolio y mostrarse al solicitar un trabajo.