Tradicionalmente, los administradores de sistemas han sido responsables de diseñar, implementar y administrar el hardware y el sistema operativo subyacente. Sin embargo, los avances en la informática perimetral, el aprendizaje automático (ML) y las aplicaciones inteligentes han ampliado el alcance del trabajo de los administradores de sistemas y los conjuntos de habilidades necesarios para los proyectos de desarrollo de software.
[ Download now: A system administrator’s guide to IT automation. ]
Este artículo explora cinco cosas que los administradores de sistemas deben saber sobre el desarrollo de software.
Tabla de Contenidos
1. La comunicación es clave
La comunicación entre los equipos es la clave del éxito y comienza con hacer las preguntas correctas desde el principio.
En un proyecto típico de desarrollo de software, hay muchos jugadores: arquitectos, ingenieros de datos, científicos de datos, ingenieros de ML, ingenieros de software, desarrolladores front-end y, por supuesto, administradores de sistemas. Debido a la naturaleza especializada de estos roles, la comunicación entre equipos puede ser un desafío. Por lo tanto, todos los equipos responsables de los proyectos de extremo a extremo deben participar en las fases de descubrimiento y planificación, incluidos los profesionales de TI y los administradores de sistemas.
Hacer las preguntas correctas a las personas adecuadas es fundamental para cumplir con los requisitos ambientales, de seguridad y de hardware. Aquí hay algunas ideas para preguntar a los participantes:
- ingeniero de datos: Pregunte sobre la naturaleza de su consulta. Por ejemplo, ¿cuántos terabytes de datos se almacenarán, procesarán e incorporarán?
- ingeniero de software: Averigüe qué bibliotecas y paquetes se utilizarán. ¿En qué lenguajes codificarán (Kotlin/Swift, Java, C)?
- científico de datos: ¿La aplicación incluirá modelos de aprendizaje automático? Si es así, ¿qué hardware se requiere para ejecutar y entrenar el modelo? Pregunte si se requiere una Unidad de procesamiento de gráficos (GPU). Averigüe en qué lenguaje de programación están escritos sus modelos; por ejemplo, ¿usan Python, Scala o R? ¿Qué bibliotecas se requieren para ejecutar el código? También sería útil saber si se incluirá alguna tecnología (por ejemplo, Tecton, Seldon o Kubeflow).
- todos los participantes: Por último, es fundamental discernir qué políticas de seguridad requieren los distintos usuarios. ¿Quién necesita usar la política de solo lectura para acceder a la base de datos? ¿Qué pasa con la lectura y la escritura? ¿Qué usuarios necesitan acceso al entorno de este proyecto oa otras plataformas?
Documente las respuestas a estas preguntas en el plan de desarrollo de software.
[ Free cheat sheet: IT job interview tips. ]
2. Establecer expectativas
Establezca las expectativas de infraestructura y hardware lo antes posible para evitar futuros conflictos.
En algunos casos, los desarrolladores confían en los administradores del sistema para que les expliquen las políticas de seguridad, las limitaciones del hardware y los recursos disponibles para ellos. P.ej:
- ¿Hay demasiadas personas que solicitan acceso al medio ambiente innecesariamente?
- ¿Son los requisitos de memoria o almacenamiento del proyecto más de lo que se puede proporcionar de manera realista?
- ¿Es posible fusionar algunas tablas o vistas de datos redundantes?
Desafíe las solicitudes, describa por qué pueden ser problemáticas desde una perspectiva de TI y brinde soluciones alternativas. Cuanto antes el equipo de desarrollo logre sus objetivos de hardware y seguridad, es menos probable que tenga conflictos con ellos más adelante.
[ Download now: Git cheat sheet. ]
3. Desviación esperada
A medida que avanza el desarrollo, los cambios en los requisitos de la aplicación y la dotación de personal alterarán el plan de desarrollo de software inicial. Es posible que deba volver a las discusiones anteriores sobre los requisitos de hardware, los permisos de seguridad (incluidos agregar nuevos usuarios y cambiar los permisos de acceso) y agregar bibliotecas a su entorno. Si bien es esencial apegarse al alcance original, debe haber cierto margen de maniobra para la adaptabilidad y la flexibilidad en los proyectos de desarrollo de software.
4. Esté preparado para administrar muchos entornos de desarrollo
Es posible que sea responsable de más entornos de desarrollo de los previstos inicialmente. Un entorno de desarrollo es un espacio de trabajo aislado que los desarrolladores usan cuando realizan cambios en su código sin afectar la aplicación en vivo. Conduce a errores, comportamiento inconsistente de la aplicación y el diálogo notoriamente molesto «Bueno, funcionó en mi máquina…» cuando el entorno es diferente entre las máquinas.
La mejor práctica es mantener un entorno aislado iniciando sesión en un entorno de gestión remota o utilizando un entorno virtual.Por ejemplo, los administradores de proyectos y paquetes de Python son ambiente virtual y ocurrenciaPuede usar los paquetes que necesita en el entorno especificado archivo requisitos.txt A continuación, cree un entorno de desarrollo en un terminal local o remoto. Recuerde que los entornos de desarrollo también se pueden contenerizar mediante Podman.
[ Download the Podman basics cheat sheet. ]
Es posible que instale más bibliotecas o paquetes de los esperados, especialmente si administra su entorno en una plataforma en la nube como AWS.Además de mantener el mismo entorno de desarrollo, también es importante utilizar herramientas de control de versiones como DVC o git Realice un seguimiento de los cambios en el código base y quién realizó los cambios.
5. Usa herramientas similares
Los desarrolladores aprecian cuando los administradores de sistemas hacen todo lo posible para comprender sus herramientas. Es posible que se sorprenda al saber que los desarrolladores usan muchas de las mismas herramientas y técnicas que los administradores de sistemas. Por ejemplo, muchos lenguajes de secuencias de comandos, como Python y Perl, se utilizan como bases de código para modelos de aprendizaje automático y canalizaciones de procesamiento de datos. Los ingenieros de datos y los desarrolladores web usan comandos de Linux para transformar datos (tr
, paste
) y probar la conexión entre los servidores (ping
, curl
). Cuanto más sepa sobre sus herramientas, más se preocuparán los desarrolladores por respetar las políticas de seguridad y el hardware subyacente.
envolver
Los administradores de sistemas son fundamentales para el éxito del proceso de desarrollo de software, y la naturaleza del rol está en constante evolución. Esté al tanto de las nuevas tecnologías y herramientas incluidas en la tubería de desarrollo de software.echar un vistazo Blog para desarrolladores de Red Hat permanecer en el bucle.también puedes buscar artículos de tendencia o destacados Encuentre nuevas herramientas, lenguajes y aplicaciones en GitHub para beneficiarlo a usted y a sus desarrolladores.Además, lee Manual de DevOps: Cómo crear agilidad, confiabilidad y seguridad de clase mundial en organizaciones tecnológicas Autor: Gene Kim, lo mencioné mientras escribía este artículo.
[ Download now: A sysadmin’s guide to Bash scripting. ]
¡Gracias a Stephen Wilson, Chris Kang y Trevor Royer por sus ideas!