DevOps se está convirtiendo cada vez más en una forma popular de crear e implementar aplicaciones, lo que se ha traducido en una creciente demanda de profesionales de DevOps. 

Este artículo cubrirá algunas de las preguntas más frecuentes de la entrevista de DevOps y sus respuestas. El uso de estas preguntas como base para el estudio puede aumentar sus posibilidades de ser contratado o, si es un reclutador, pueden ayudarlo en el proceso de contratación.

Preguntas y respuestas frecuentes de la entrevista de DevOps

What is DevOps for you?

DevOps es un enfoque destinado a mejorar el trabajo a lo largo del ciclo de vida del desarrollo de software. El proceso DevOps se representa como un ciclo infinito, que comprende las etapas de planificación, codificación, construcción, prueba, lanzamiento, implementación, operación y monitorización..

DevOps influye en el ciclo de vida de la aplicación a lo largo de sus fases de planificación, desarrollo, entrega y operación. Cada fase depende de las demás y las fases no son específicas de un rol. En una verdadera cultura DevOps, cada rol está involucrado en cada fase hasta cierto punto.

Why is DevOps important?

Los equipos que adoptan un enfoque DevOps tienden a realizar sus proyectos más rápido. De esta forma, se evitan errores de comunicación, facilitando la rápida implementación de mejoras y otros cambios necesarios. El enfoque DevOps fomenta una mayor colaboración entre los equipos de desarrollo y operaciones, donde los objetivos de todos ellos están más alineados. Puede resumir algunos de los beneficios de la siguiente manera:

  • Comunicacion mejorada
  • Trabajo en Equipo y cohesión
  • Colaboración mejorada
  • Entrega más rápida de productos de calidad.
  • Complejidad reducida y resolución rápida de problemas
  • Mayor escalabilidad y flexibilidad para agregar código nuevo
  • Entornos operativos más estables
  • Mayor automatización
  • Reducción de costos y utilización de recursos
  • Seguridad: a través de herramientas integradas y automatizadas

What are the daily tasks of DevOps?

 Algunas de las tareas diarias que podrías mencionar son:

  • Garantice la integración y el despliegue continuos
  • Asignar y comunicar tareas a realizar.
  • Diseñar y ordenar protocolos de prueba.
  • Supervisión y recopilación de métricas de infraestructura y aplicaciones
  • Análisis de resultados obtenidos en cada fase de desarrollo
  • Reducir la tasa de errores y el tiempo de recuperación en caso de errores
  • Reducir el tiempo de entrega

How does DevOps help developers?

Cuando se implementa una metodología DevOps, los desarrolladores ya no tienen que esperar los comentarios del equipo de operaciones para corregir errores dentro de su código. Pero ahora, pueden resolver estos problemas más rápido porque tienen comentarios continuos sobre su código.

What is version control?

El control de versiones es una práctica que nos permite realizar un seguimiento de los cambios que realizamos en un archivo o conjunto de archivos a lo largo del tiempo para que las versiones específicas se puedan recuperar más tarde. A herramienta de control de versiones nos permite rastrear fácilmente el progreso de su trabajo de desarrollo y guardar diferentes versiones del código fuente para volver a la anterior cuando sea necesario. Una de las herramientas más utilizadas en esta etapa del desarrollo de software es Git.

What is CI/CD, and what are its benefits?

Integración continua (CI) 

CI combina herramientas y prácticas que facilitan la entrega de software rápido y de alta calidad. De esta forma se eliminan cuellos de botella y se evitan problemas técnicos en las fases de lanzamiento.

Entrega continua (CD)

Esta práctica automatiza la entrega de cambios de código, asegurando que el código pueda complementarse rápidamente en producción y que las aplicaciones funcionen correctamente.

Despliegue continuo (CD)

A diferencia de la entrega continua, el objetivo de esta práctica es que no haya intervención humana al implementar el software en producción. La publicación de código nuevo o modificado en producción está automatizada.

CI / CD implementa DevOps durante todo el ciclo de vida de la aplicación. Estas prácticas ayudan a mejorar la productividad en las diferentes fases del proceso de desarrollo de software al optimizarlas y automatizarlas.

What is Continous Monitoring

El monitoreo continuo es una práctica de DevOps que implica monitorear, alertar y tomar medidas tanto en el código como en la infraestructura. De manera que aquel problema que pueda surgir en la implementación sea rápidamente detectado e identificado, reduciendo el tiempo en la resolución de problemas.

Why is continuous testing important?

Las pruebas continuas consisten en automatizar las pruebas de manera temprana, gradual y adecuada en el proceso de desarrollo. Es fundamental porque permite asegurar la calidad del código. Los errores se detectan temprano y la retroalimentación del código se realiza más rápido.

Explain a few types of tests used in DevOps?

Pruebas unitarias

Prueban una pieza específica de código de forma aislada. Las pruebas unitarias no deben estar conectadas a la base de datos, usar el sistema de archivos, hablar con sistemas externos o interactuar con los componentes del sistema. Les permite ejecutarse rápidamente y obtiene comentarios rápidos si los cambios han roto la funcionalidad existente. 

Pruebas de componentes

Prueban grandes grupos de funciones para poder identificar problemas como estos. Por lo general, son más lentos y requieren una configuración más compleja y más E/S para conectarse a una base de datos, un sistema de archivos u otros sistemas. 

Pruebas de implementación

Dichas pruebas verifican que la implementación funcionó, en otras palabras, que su aplicación está correctamente instalada, configurada, puede acceder a los servicios que necesita y está respondiendo.

Además de estos, también existen pruebas de explotación y usabilidad. Para saber más sobre las pruebas, consulta el artículo sobre tipos de pruebas de aplicaciones.

What is microservices architecture, and how is it different from traditional architecture?

El método tradicional de escribir software es monolítico. Significa que todas las funciones de una aplicación están reunidas en un solo bloque. En caso de errores o necesidad de actualización, se analiza el código que rige todo el producto.

Genera paradas o incluso cuelgues y representa un gran peligro para la conservación del código. Para los clientes, significa pérdidas y dolores de cabeza.

En una arquitectura de microservicios, las funciones de una aplicación representan un servicio integrado y desarrollado de forma independiente. Los componentes están separados pero trabajan juntos para realizar las tareas correlacionadas.

De esta forma, cada servicio independiente funciona sin interferir con los demás, lo que también se aplica en casos de falla. Si una función falla, es posible ajustarla sin comprometer el funcionamiento de toda la aplicación.

Llegan los microservicios para hacer aún más DevOps ágil y eficiente, acelerando el desarrollo de extremo a extremo y haciendo que las aplicaciones sean aún más escalables.

¿Qué es la infraestructura como código?

La infraestructura como código es el enfoque para definir la infraestructura informática y de red, que utiliza técnicas de gestión de código fuente y se trata como cualquier sistema de software.

Este código se puede mantener en control de fuente para permitir la audibilidad y la construcción reproducible, sujeto a prácticas de prueba y la disciplina completa de Entrega continua.

Infraestructura como código se basa en algunas prácticas:

  • Usar archivos de definición
  • Sistemas y procesos autodocumentados
  • Versionar todos los elementos
  • Pruebas continuas de sistemas y procesos.
  • Pequeños cambios en lugar de lotes
  • Mantenga los servicios disponibles continuamente

What is Build Automation, and what are some build automation tools?

Las herramientas de automatización de compilación especifican cómo se debe compilar el software (qué pasos deben realizarse y en qué orden) y qué dependencias se requieren (qué otro software debe estar presente para que la compilación sea exitosa).

Algunas herramientas son más adecuadas para proyectos en lenguajes de programación específicos, como Maven y Apache's Ant, que, si bien la tecnología se puede usar con otros lenguajes, se usan principalmente en proyectos Java. Otros, como Hudson o Jenkins, se pueden usar más ampliamente con varios proyectos.

What is a DevOps Pipeline?

La canalización de DevOps es un proceso que abarca varios pasos antes de lanzar un nuevo software. Se puede aplicar en todas las fases del proyecto, desde la integración y las pruebas hasta la entrega y el despliegue. En general, pasa por las siguientes etapas y equipos:

  • Visión del Producto: define las características del producto;
  • Equipo de desarrollo: se desarrolla de forma iterativa e incremental;
  • Área de operación: implementa y mantiene ambientes estables;
  • Seguimiento y retroalimentación: buscan generar valor y aprovechamiento por parte del cliente.

What are the different stages of a CI/CD pipeline?

Los pasos que conforman una canalización de CI/CD son algunas tareas agrupadas denominadas etapa de canalización. Brevemente, son:

  • Compilación: etapa en la que se compila la aplicación;
  • Prueba: la etapa donde se prueba el código. Aquí, la automatización ahorra tiempo y esfuerzo;
  • Lanzamiento: cuando la aplicación se envía al repositorio;
  • Implementación: el código se implementa en el entorno de producción;
  • Validación y cumplimiento: puede usar herramientas de verificación de seguridad de imágenes como Clair para garantizar la calidad de sus imágenes comparándolas con vulnerabilidades conocidas (CVE).

Estas son las etapas más comunes de la canalización de DevOps. Sin embargo, cada empresa tiene sus necesidades y pipeline específicos.

What does platform virtualization mean, and what are its benefits?

La virtualización de plataforma significa simular un sistema informático completo para ejecutar varias instancias de sistemas operativos simultáneamente en una sola máquina física.

En esta configuración, un monitor de máquina virtual (VMM), o hipervisor, tiene control total de los recursos de hardware de la máquina física. Los sistemas operativos invitados se ejecutan en máquinas virtuales, que administra VMM. La virtualización de entornos implica simular una o más máquinas virtuales y las conexiones de red entre ellas.

La virtualización puede ayudar a reducir el tiempo dedicado a la implementación y los riesgos asociados con ella de varias maneras. El uso de máquinas virtuales en la implementación es de gran ayuda para lograr una gestión de configuración eficaz vertical y horizontalmente en todos sus sistemas.

En particular, el uso de la virtualización trae los siguientes beneficios:

  • Respuesta rápida a los requisitos cambiantes
  • Consolidación
  • Normalización
  • Facilidad de mantenimiento de líneas base

What is the difference between containers and virtual machines?

Tanto el Contenedor como la VM funcionan con virtualización y aislamiento de entornos para promover el procesamiento independientemente de las aplicaciones. Todavía, Contenedores crear entornos aislados donde diferentes aplicaciones puedan ejecutarse simultáneamente porque la división se realiza a nivel de los recursos disponibles, como la memoria y el procesamiento. Por otro lado, la Máquina Virtual permite que una máquina física aloje otras con diferentes sistemas operativos, discos duros y hardware, independientes de las originales.

What is the main difference between Docker and Kubernetes?

Docker es una de las herramientas de contenedores DevOps más utilizadas. Se enfoca en la portabilidad de las aplicaciones, colocándolas en contenedores tecnológicos y sistemas de empaque y moviéndolas a través de diferentes plataformas.

Al mismo tiempo, Kubernetes es una herramienta de orquestación de contenedores que puede agrupar contenedores por categorización lógica. Se puede implementar en varias computadoras a través de la distribución automatizada. 

Lea más sobre Kubernetes vs. Estibador.

What are some Telemetry metrics in DevOps?

  • Nivel comercial: los ejemplos incluyen la cantidad de transacciones de ventas, los ingresos de las transacciones de ventas, las suscripciones de usuarios, la tasa de abandono y Pruebas A / B resultados.
  • Nivel de aplicación: los ejemplos incluyen tiempos de transacción, tiempos de respuesta del usuario y fallas de la aplicación.
  • Nivel de infraestructura: los ejemplos incluyen el tráfico del servidor web, la carga de la CPU y el uso del disco.
  • Nivel de software del cliente: los ejemplos incluyen errores de aplicación, bloqueos y tiempos de transacción medidos por el usuario.
  • Nivel de canalización de implementación: los ejemplos incluyen el estado de canalización de compilación (rojo o verde para varios conjuntos de pruebas automatizados), cambios en los plazos de implementación, frecuencias de implementación, promociones del entorno de prueba y estado del entorno.

What technologies do you use to do DevOps?

Esta pregunta tiene como objetivo saber qué tecnologías puede utilizar para implementar la cultura DevOps dentro de la organización. Algunas de las tecnologías más comunes que puede utilizar un DevOps son:

  • Desarrollo continuo: Git, SVN, Mercurial, CVS, Jira
  • Integración continua: Jenkins, Bamboo, Hudson
  • Desarrollo continuo: Nexus, Archive, Tomcat
  • Despliegue continuo: Puppet, Chef, Docker
  • Monitoreo continuo: Splunk, ELK Stack, Nagios continuo
  • Pruebas: Selenium, Katalon Studio

Tell us about your experience managing DevOps projects

Las habilidades de DevOps no son solo conocimientos técnicos y requieren habilidades humanas y de gestión que a menudo se encuentran entre los gerentes, directores de programas y gerentes de proyectos. 

Es fundamental saber gestionar y dar soporte al cambio, proporcionar una puerta de enlace para facilitar la transferencia de nuevas versiones de código al lado de las operaciones, evaluar y monitorear las diversas plataformas y herramientas para medir el rendimiento, y analizar y compartir resultados para mejorar las entregas futuras. , etc.

Aborde esta pregunta con metodología y explique su recorrido para resolver problemas complejos. ¿Cómo piensa mejorar el funcionamiento de las infraestructuras? ¿Cómo planea colaborar con los desarrolladores de front, middle y back-office? ¿Qué herramientas de monitoreo dominas? Además, considere compartir sus experiencias de resolución de conflictos dentro de su equipo.

Para obtener más información, puede considerar inscribirse en uno de estos Cursos DevOps.