Prefacio
Este trabajo se ha traducido utilizando IA. Agradecemos tus opiniones y comentarios: translation-feedback@oreilly.com
Una vez Noé estaba en el océano, y una ola se le echó encima y le dejó sin aliento mientras le hundía más en el mar. Justo cuando empezaba a recuperar el aliento, otra ola le cayó encima. Le extrajo gran parte de la energía que le quedaba. Le hundió aún más en el océano. Justo cuando empezaba a recuperarse, otra ola más cayó encima. Cuanto más luchaba contra las olas y el mar, más energía consumía. Se preguntó seriamente si moriría en ese momento. No podía respirar, le dolía el cuerpo y le aterrorizaba la idea de ahogarse. Estar cerca de la muerte le ayudó a centrarse en lo único que podía salvarle, que era conservar su energía y utilizar las olas, no luchar contra ellas.
Estar en una startup que no practica DevOps se parece mucho a ese día en la playa. Hay fuegos de producción que arden durante meses; todo es manual, las alertas te despiertan durante días dañando tu salud. La única escapatoria de esta espiral mortal es el camino DevOps.
Haz una cosa bien, luego otra, hasta que encuentres la claridad. Primero, configura un servidor de compilación, empieza a probar tu código y automatiza las tareas manuales. Haz algo; puede ser cualquier cosa, pero ten una "predisposición a la acción". Haz bien esa primera cosa y asegúrate de que está automatizada.
Una trampa habitual en las startups o en cualquier empresa es la búsqueda de superhéroes. "Necesitamos un ingeniero de rendimiento" porque arreglará nuestros problemas de rendimiento. "Necesitamos un Chief Revenue Officer" porque arreglará todos los problemas de ventas. "Necesitamos ingenieros de DevOps" porque arreglarán nuestro proceso de implementación.
En una empresa, Noah tenía un proyecto que llevaba más de un año de retraso, y la aplicación web se había reescrito tres veces en varios idiomas. La siguiente versión sólo necesitaba un "ingeniero de rendimiento" para terminarla. Recuerdo ser el único lo bastante valiente o estúpido para decir: "¿Qué es un ingeniero de rendimiento?". Este ingeniero hizo que todo funcionara a escala. En ese momento se dio cuenta de que estaban buscando a un superhéroe que les salvara. El síndrome de contratación de superhéroes es la mejor forma de darse cuenta de que algo va muy mal en un nuevo producto o en una nueva startup. Ningún empleado salvará a una empresa si antes no se salva a sí mismo.
En otras empresas, Noah oyó cosas parecidas: "Si sólo pudiéramos contratar a un ingeniero senior de Erlang", o "Si sólo pudiéramos contratar a alguien que nos diera ingresos", o "Si sólo pudiéramos contratar a alguien que nos enseñara a ser disciplinados financieramente", o "Si sólo pudiéramos contratar a un desarrollador de Swift", etc. Esta contratación es lo último que necesita tu startup o nuevo producto: necesita entender qué está haciendo mal para que sólo un superhéroe pueda salvarle el día.
En el caso de la empresa que quería contratar a un ingeniero de rendimiento, resultó que el verdadero problema era una supervisión técnica inadecuada. Las personas equivocadas estaban al mando (y gritando a las personas que podían solucionarlo). Al destituir a una persona de bajo rendimiento, escuchar a un miembro del equipo que sabía cómo solucionar el problema desde el principio, eliminar la oferta de trabajo, hacer las cosas bien de una en una e introducir una dirección de ingeniería cualificada, el problema se resolvió por sí solo sin necesidad de contratar a un superhéroe.
Nadie te salvará en tu startup; tú y tu equipo tenéis que protegeros creando un gran trabajo en equipo, un gran proceso y creyendo en vuestra organización. La solución al problema no es una nueva contratación; es ser honesto y consciente de la situación en la que te encuentras, de cómo has llegado ahí, y hacer una cosa correcta cada vez hasta que consigas salir. No hay superhéroe a menos que seas tú.
Igual que estar en el océano en una tormenta y ahogarte lentamente, nadie va a salvarte a ti ni a la empresa si no eres tú. Tú eres el superhéroe que tu empresa necesita, y puede que descubras que tus compañeros también lo son.
Hay una forma de salir del caos, y este libro puede ser tu guía. Empecemos.
¿Qué significa DevOps para los autores?
Muchos conceptos abstractos de la industria del software son difíciles de definir con precisión. Cloud Computing, Agile y Big Data son buenos ejemplos de temas que pueden tener muchas definiciones dependiendo de con quién hables. En lugar de definir estrictamente qué es DevOps, utilicemos algunas frases que muestren evidencias de que se está produciendo DevOps:
-
Colaboración bidireccional entre los equipos de Desarrollo y Operación.
-
Realiza las tareas de Operaciones en minutos u horas, no en días o semanas.
-
Una fuerte implicación de los desarrolladores; de lo contrario, volveremos a Devs contra Ops.
-
La gente de operaciones necesita conocimientos de desarrollo: al menos Bash y Python.
-
Los desarrolladores necesitan aptitudes operativas: sus responsabilidades no terminan con la escritura del código, sino con la implementación del sistema en producción y el monitoreo de las alertas.
-
Automatización, automatización, automatización: no puedes automatizar correctamente sin conocimientos de desarrollo, y no puedes automatizar correctamente sin conocimientos de operaciones.
-
Idealmente: autoservicio para los desarrolladores, al menos en cuanto a la implementación del código.
-
Puede conseguirse mediante canalizaciones CI/CD.
-
GitOps.
-
Todo bidireccional entre Desarrollo y Operaciones (herramientas, conocimientos, etc.).
-
La colaboración constante en el diseño, la implementación, la implantación -y sí, la automatización- no puede tener éxito sin cooperación.
-
Si no está automatizado, está roto.
-
Cultural: Jerarquía < Proceso.
-
Microservicios > Monolítico.
-
El sistema de implementación continua es el corazón y el alma del equipo de software.
-
No hay superhéroes.
-
La entrega continua no es una opción, es un mandato.
Cómo utilizar este libro
Este libro es útil en cualquier orden. Puedes abrir al azar el capítulo que quieras, y deberías poder encontrar algo útil que aplicar a tu trabajo. Si eres un programador experimentado de Python, tal vez quieras hojear el Capítulo 1. Del mismo modo, si te interesan las historias de guerra, los casos prácticos y las entrevistas, tal vez quieras leer primero el Capítulo 16.
Temas conceptuales
El contenido se divide en varios temas conceptuales. El primer grupo es Fundamentos de Python, y abarca una breve introducción al lenguaje, así como la automatización de texto, la escritura de herramientas de línea de comandos y la automatización del sistema de archivos.
A continuación está Operaciones, que incluye útiles utilidades de Linux, gestión de paquetes, sistemas de compilación, monitoreo e instrumentación, y pruebas automatizadas. Todos ellos son temas esenciales que debes dominar para convertirte en un profesional competente de DevOps.
Los Fundamentos de la Nube están en la siguiente sección, y hay capítulos sobre Computación en la Nube, Infraestructura como Código, Kubernetes y Sin Servidor. Actualmente existe una crisis en la industria del software en torno a encontrar suficientes talentos formados en la Nube. Dominar esta sección reportará dividendos inmediatos tanto a tu salario como a tu carrera.
A continuación está la sección de Datos. Tanto las Operaciones de Aprendizaje Automático como la Ingeniería de Datos se tratan desde la perspectiva de DevOps. También hay una guía completa de un proyecto de aprendizaje automático que te lleva a través de la construcción, implementación y puesta en funcionamiento de un modelo de aprendizaje automático utilizando Flask, Sklearn, Docker y Kubernetes.
La última sección es el Capítulo 16 sobre casos prácticos, entrevistas e historias de guerra de DevOps. Este capítulo es una buena lectura para irse a dormir.
- Fundamentos de Python
- Operaciones
- Fundamentos de la nube
- Datos
- Casos prácticos
Convenciones utilizadas en este libro
En este libro se utilizan las siguientes convenciones tipográficas:
- Cursiva
-
Indica nuevos términos, URL, direcciones de correo electrónico, nombres de archivo y extensiones de archivo.
Constant width
-
Se utiliza en los listados de programas, así como dentro de los párrafos para referirse a elementos del programa como nombres de variables o funciones, bases de datos, tipos de datos, variables de entorno, sentencias y palabras clave.
Constant width bold
-
Muestra comandos u otros textos que deben ser tecleados literalmente por el usuario.
Constant width italic
-
Muestra el texto que debe sustituirse por valores proporcionados por el usuario o por valores determinados por el contexto.
Consejo
Este elemento significa un consejo o sugerencia.
Nota
Este elemento significa una nota general.
Advertencia
Este elemento indica una advertencia o precaución.
Utilizar ejemplos de código
El material complementario (ejemplos de código, ejercicios, etc.) se puede descargar en https://pythondevops.com. También puedes ver contenido DevOps relacionado con el código del libro en el canal de YouTube de Pragmatic AI Labs.
Si tienes alguna pregunta técnica para los autores o algún problema al utilizar los ejemplos de código, envía un correo electrónico a technical@pythondevops.com.
Este libro está aquí para ayudarte a hacer tu trabajo. En general, si se ofrece código de ejemplo con este libro, puedes utilizarlo en tus programas y documentación. No es necesario que te pongas en contacto con nosotros para pedirnos permiso, a menos que estés reproduciendo una parte importante del código. Por ejemplo, escribir un programa que utilice varios trozos de código de este libro no requiere permiso. Vender o distribuir ejemplos de libros de O'Reilly sí requiere permiso. Responder a una pregunta citando este libro y el código de ejemplo no requiere permiso. Incorporar una cantidad significativa de código de ejemplo de este libro en la documentación de tu producto sí requiere permiso.
Agradecemos, pero generalmente no exigimos, la atribución. Una atribución suele incluir el título, el autor, la editorial y el ISBN. Por ejemplo "Python for DevOps " por Noah Gift, Kennedy Behrman, Alfredo Deza y Grig Gheorghiu. (O'Reilly). Copyright 2020 Noah Gift, Kennedy Behrman, Alfredo Deza, Grig Gheorghiu, 978-1-492-05769-7".
Si crees que el uso que haces de los ejemplos de código no se ajusta al uso legítimo o al permiso concedido anteriormente, no dudes en ponerte en contacto con nosotros en permissions@oreilly.com.
Aprendizaje en línea O'Reilly
Nota
Durante más de 40 años, O'Reilly Media ha proporcionado formación tecnológica y empresarial, conocimientos y perspectivas para ayudar a las empresas a alcanzar el éxito.
Nuestra red única de expertos e innovadores comparten sus conocimientos y experiencia a través de libros, artículos y nuestra plataforma de aprendizaje online. La plataforma de aprendizaje en línea de O'Reilly te ofrece acceso bajo demanda a cursos de formación en directo, rutas de aprendizaje en profundidad, entornos de codificación interactivos y una amplia colección de textos y vídeos de O'Reilly y de más de 200 editoriales. Para más información, visita http://oreilly.com.
Cómo contactar con nosotros
Dirige tus comentarios y preguntas sobre este libro a la editorial:
- O'Reilly Media, Inc.
- 1005 Gravenstein Highway Norte
- Sebastopol, CA 95472
- 800-998-9938 (en Estados Unidos o Canadá)
- 707-829-0515 (internacional o local)
- 707-829-0104 (fax)
Tenemos una página web para este libro, en la que enumeramos erratas, ejemplos y cualquier información adicional. Puedes acceder a esta página en oreil.ly/python-for-devops.
Envía un correo electrónico a bookquestions@oreilly.com para comentar o hacer preguntas técnicas sobre este libro.
Para obtener noticias y más información sobre nuestros libros y cursos, consulta nuestro sitio web en http://www.oreilly.com.
Encuéntranos en Facebook: http://facebook.com/oreilly
Síguenos en Twitter: http://twitter.com/oreillymedia
Míranos en YouTube: http://www.youtube.com/oreillymedia
Agradecimientos
Para empezar, los autores quieren dar las gracias a los dos principales revisores técnicos del libro:
Wes Novack es arquitecto e ingeniero especializado en sistemas de nube pública y aplicaciones SaaS a escala web. Diseña, construye y gestiona sistemas complejos que permiten una infraestructura de alta disponibilidad, canalizaciones de entrega continua y lanzamientos rápidos dentro de grandes ecosistemas de microservicios políglotas alojados en AWS y GCP. Wes hace un amplio uso de lenguajes, marcos y herramientas para definir la Infraestructura como Código, impulsar la automatización y eliminar el trabajo duro. Se hace oír en la comunidad tecnológica participando en tutorías, talleres y conferencias, y también es autor de un curso en vídeo de Pluralsight. Wes es un defensor de las CALMS de DevOps: Cultura, Automatización, Lean, Medición y Compartir. Puedes encontrarle en Twitter @WesleyTech o visitar su blog personal.
Brad Andersen es ingeniero de software y arquitecto. Ha diseñado y desarrollado software profesionalmente durante 30 años. Trabaja como catalizador del cambio y la innovación; ha asumido funciones de liderazgo y desarrollo en todo un espectro, desde organizaciones empresariales a startups. Brad está cursando un máster en ciencia de datos en la Universidad de California, Berkeley. Puedes encontrar más información en el perfil de Brad en LinkedIn.
También queremos dar las gracias a Jeremy Yabrow y a Colin B. Erdman por aportar muchas ideas y comentarios estupendos.
Noah
Me gustaría dar las gracias a los coautores del libro: Grig, Kennedy y Alfredo. Ha sido increíble trabajar con un equipo tan eficaz.
Kennedy
Gracias a mis coautores, ha sido un placer trabajar con vosotros. Y gracias por la paciencia y comprensión de mi familia.
Alfredo
En 2010 -hace nueve años en el momento de escribir estas líneas- conseguí mi primer trabajo de ingeniería de software. Tenía 31 años, sin estudios universitarios ni experiencia previa en ingeniería. Ese trabajo significaba aceptar un salario reducido y no tener seguro médico. Aprendí mucho, conocí a gente increíble y adquirí experiencia gracias a una determinación implacable. A lo largo de esos años, habría sido imposible llegar hasta aquí sin que la gente me abriera oportunidades y me señalara la dirección correcta.
Gracias a Chris Benson, que vio que tenía hambre de aprender y siguió encontrando oportunidades para tenerme cerca.
Gracias a Alejandro Cadavid, que se dio cuenta de que yo podía arreglar cosas que nadie más quería arreglar. Me ayudó a conseguir trabajo cuando nadie (incluido yo mismo) pensaba que yo pudiera ser útil.
Carlos Coll me metió en la programación y no me dejó dejarlo ni siquiera cuando se lo pedí. Aprender a programar cambió mi vida, y Carlos tuvo la paciencia de empujarme a aprender y poner mi primer programa en producción.
A Joni Benton, por creer en mí y ayudarme a conseguir mi primer trabajo a tiempo completo.
Gracias a Jonathan LaCour, un jefe inspirador que sigue ayudándome a llegar a un lugar mejor. Sus consejos siempre han sido inestimables para mí.
Noah, gracias por tu amistad y orientación, eres una enorme fuente de motivación para mí. Siempre disfruto trabajando juntos, como aquella vez que reconstruimos la infraestructura desde cero. Tu paciencia y orientación cuando no tenía ni idea de Python me cambiaron la vida.
Por último, un enorme agradecimiento a mi familia. Mi esposa Claudia, que nunca duda de mi capacidad de aprender y mejorar, y tan generosa y comprensiva con el tiempo que he dedicado a trabajar en este libro. Mis hijos, Efraín, Ignacio y Alana: os quiero a todos.
Grig
Mi agradecimiento a todos los creadores de software de código abierto. Sin ellos, nuestros trabajos serían mucho más sombríos e insatisfactorios. Gracias también a todos los que blogueáis y compartís vuestros conocimientos libremente. Por último, también quiero dar las gracias a los coautores de este libro. Ha sido un viaje muy divertido.
Get Python para DevOps now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.