Cómo convertirse en ingeniero de DevOps en seis meses o incluso más rápido. Parte 6. Iniciando la aplicación

Cómo convertirse en ingeniero de DevOps en seis meses o incluso más rápido. Parte 1. Introducción
Cómo convertirse en un ingeniero DevOps en seis meses o incluso más rápido. Parte 2. Configuración
Cómo convertirse en un ingeniero DevOps en seis meses o incluso más rápido. Parte 3. Versiones
Cómo convertirse en un ingeniero DevOps en seis meses o incluso más rápido. Parte 4.
Empaquetado de software Cómo convertirse en ingeniero de DevOps en seis meses o incluso más rápido. Parte 5. Implementación



La foto de arriba muestra la velocidad de implementación de la aplicación tradicional. Y si pasaste un mes en entrenamiento, ahora estás en la etapa 5 de la hoja de ruta:



¿Listo para lanzar?


Entonces, tenemos nuestro código escrito, empaquetado y desplegado en algún lugar. Decidí ignorar la implementación del código como artefactos inmutables de la máquina (como EC2) y centrarme en los contenedores. ¿Por qué?

Debido a que hornear un AMI inmutable en el código fuente, copiarlo en todas partes y luego ejecutarlo es muy difícil. Esta es una buena plantilla, pero solo si es absolutamente necesaria. Por lo tanto, le insto a considerar si realmente necesita hacer eso, y si no, intente reorganizar sus microservicios en contenedores o funciones sin servidor.

En caso de que los contenedores no sean posibles, ya que decide escribir, empaquetar e implementar su software como una aplicación monolítica, considere la plantilla AMI inmutable. Haga lo mismo si necesita ejecutar sus propias aplicaciones que no sean en la nube o software comercial entregado tal cual (tal cual). Sin embargo, este no es el tema principal de este artículo.

Si tenemos contenedores bien embalados, ¿cómo los lanzamos?

Contenedores que realmente funcionan


Lo más simple que puede hacer es simplemente ejecutar el comando docker run myImage y finalizarlo. Pero esta no es una buena idea, porque dicha solución no funciona si:

  • este contenedor de repente "morirá";
  • necesita tener más de un contenedor para manejar la carga
  • necesita implementar una implementación con cero tiempo de inactividad;
  • Desea un control completo sobre sus microservicios.
  • desea utilizar el transportador CI / CD para entregar rápidamente el producto a los clientes
    , etc.

En otras palabras, ¿qué sucede cuando necesita crear una verdadera aplicación distribuida de nivel empresarial? Obviamente, este es un proceso tan complejo que el comando primitivo Docker Run simplemente no puede manejarlo.

Tenga en cuenta que la tecnología de comando docker-compose adolece de un conjunto de problemas muy similar. Docker-compose, que le permite ejecutar muchos servicios con un solo comando, no está destinado a implementaciones de producción. Su propósito es la creación de prototipos locales, pruebas funcionales rápidas o implementaciones a muy pequeña escala (por ejemplo, hogar personal). En resumen, es una herramienta para las cargas de trabajo de los usuarios que no generan ingresos comerciales.

Entonces, ¡la orquestación de contenedores se apresura al rescate!

Una descripción general de los métodos de orquestación de contenedores


Como con todo lo demás en la vida, hay más de una forma de resolver el problema. El primero y más obvio es Kubernetes . Nacido de un proyecto interno de Google, Kubernetes es el estándar de facto para la orquestación de contenedores.



Además, esta es la única opción si ejecuta su aplicación en:

  • centro de datos privado;
  • Google Cloud
  • Microsoft Azure
  • cualquier otra nube pública

Sin embargo, si trabaja en AWS, tiene una opción más: ECS. Aunque, estrictamente hablando, esto no es del todo cierto: tienes Nomad de Hashicorp (estas son las mismas personas que te dieron Terraform) y tienes Docker Swarm de Docker. El problema es que hay muchas plataformas de nicho con una implementación mínima, por lo que, en aras de un rápido crecimiento profesional, las ignoramos.
De todos modos, regrese a AWS Elastic Container Services (ECS). Es un servicio de orquestación de contenedores totalmente administrado, bastante sencillo de comenzar, que está estrechamente integrado con el resto del ecosistema de AWS. Hace solo algunas cosas, pero las hace bien. En resumen, esto es más o menos lo contrario de Kubernetes, y si ECS fue lo suficientemente bueno para McDonald's, entonces probablemente también sea lo suficientemente bueno para usted.

Sin embargo, solo en términos de avance profesional inmediato, no hay duda de que Kubernetes es la mejor opción. Aunque apuesto a que el 99% de las empresas que trabajan en AWS también satisfarán perfectamente a ECS.

Así que ahora puedes hacer una elección. Si eres un novato completo en esta área, puedes templarte con Kubernetes, porque fuera del equipo de ingenieros de DevOps con ideas afines que pueden apoyarte en tu viaje no es una tarea fácil. La imagen a continuación muestra cómo un futuro ingeniero de DevOps está explorando un sistema de acceso basado en los roles de Kubernetes.



Sin embargo, esto es definitivamente posible, especialmente con las ofertas gratuitas de Google y AWS, los tutoriales de YouTube / Udemy y los precios spot de AWS. Si elige esta ruta, le recomiendo que comience con el nivel gratuito de Google Cloud Platform Free Tier o kops, que lanza instancias de AWS puntuales. Kubernetes (EKS) que se ejecuta en Amazon cuesta dinero y, aunque es adecuado para cargas de trabajo de producción, no es una buena manera de comenzar a aprender a ejecutar aplicaciones correctamente. Y no sé lo suficiente sobre Azure como para recomendarlo.
Sin embargo, si no es nuevo en esta área y realmente trabaja dentro del ecosistema de AWS, mi consejo es el siguiente. Haga que sus microservicios estén en contenedores e impleméntelos en ECS para dormir tranquilo por la noche y trabajar en paralelo para crear una plataforma Kubernetes de clase mundial. El hecho es que sumergirse en Kubernetes es como "afeitarse los yaks", lo que ni siquiera puede imaginar, e inevitablemente lo distraerá de su verdadera misión: entregar productos de manera rápida y eficiente a los clientes.

Nota: "Afeitado de Yak" es un término de programación que significa una serie de tareas que deben completarse antes de que un proyecto pueda avanzar a su próximo hito. Fue acuñado por Carlin Vieri, inspirado en el episodio "The Ren & Stimpy Show". El nombre del término sugiere la aparente inutilidad de las tareas realizadas, incluso si pueden ser necesarias para resolver un problema mayor.

¿Realmente necesitas Kubernetis? No. ¿Y si realmente quieres trabajar con él? Entonces sí". ¿Claro? El mercado dice: "Kubernetes o vete a casa". Así que echemos un vistazo rápido a lo que se está suscribiendo contactando esta cosa.

Primero, a pesar de la impresión de tecnología de punta, la idea de Kubernetes es relativamente antigua. Cuando Google eliminó los envoltorios de Borg (el predecesor de Kubernetes) en 2015, ya era una idea bastante antigua.

Lea esto: "Proporcionamos una breve descripción de la arquitectura y las características del sistema Borg, importantes decisiones de diseño, un análisis cuantitativo de algunas de sus decisiones políticas y un análisis cualitativo de las lecciones aprendidas de diez años de experiencia trabajando con él". ¡Leelo de nuevo! En 2015 (!), Google compartió los detalles del lanzamiento de un sistema similar a Kubernetes, que en ese momento tenía más de diez años.



Sin embargo, ellos mismos no son tímidos. Aquí está la primera oración en la página de inicio de Kubernetes: “Kubernetes (K8s) es un sistema de código abierto para automatizar la implementación, el escalado y la administración de aplicaciones en contenedores. Agrupa los contenedores que conforman la aplicación en bloques lógicos para facilitar la administración y el descubrimiento. Kubernetes se basa en sus 15 años de experiencia con las cargas de trabajo de Google, combinadas con las mejores ideas y prácticas de la comunidad ".

Entonces, la próxima vez que escuche a alguien presentar a Kubernetes como una nueva idea "candente", lista para dominar el mundo, recuerde que representa la tecnología que ahora tiene al menos quince años. ¿No es eso un poco innovador?
En segundo lugar, piense en el público objetivo. Google está creando herramientas para resolver los problemas de Google y Google. Una vez más, la página de inicio de Kubernetes dice claramente sobre esto: "Escala planetaria: diseñada con los mismos principios que permiten a Google lanzar miles de millones de contenedores por semana, Kubernetes puede escalar sin aumentar su equipo de operaciones".

Finalmente, uno de los desarrolladores originales de Kubernetes y su partidario más activo, Kelsey Hightower, también enfatiza este punto: “Kubernetes es para personas que construyen plataformas enteras. Si eres un desarrollador que crea tu propia plataforma (AppEngine, Cloud Foundry o un clon de Heroku), Kubernetes es lo que necesitas ".

Por lo tanto, si trabaja a escala planetaria, o lanza miles de millones de contenedores por semana, o crea una nube para otros usuarios, Kubernetes es la opción correcta. Y si no, entonces este no es el final de la historia. Y no me importa que su abuela leyera un montón de tuits de Kelsey durante la pausa para el almuerzo, y luego convirtiera su sitio web de la tienda de flores a Kubernetes en una semana usando CI / CD y análisis automatizado de Canarias. Esta no es la herramienta adecuada para usted, a menos que la naturaleza de su producto requiera que la use.

pero, realmente importa? Kubernetes = $$$. Así que sube de nivel, disfruta de tu viaje al mundo de DevOps y comparte tus experiencias conmigo.
Nota del traductor: El artículo # 7 sobre aplicaciones de monitoreo basado en ELK Stack aún no se ha publicado.

Continuará muy pronto ...

Un poco de publicidad :)


Gracias por estar con nosotros. ¿Te gustan nuestros artículos? ¿Quieres ver más materiales interesantes? Apóyenos haciendo un pedido o recomendando a sus amigos, VPS en la nube para desarrolladores desde $ 4.99 , un análogo único de servidores de nivel básico que inventamos para usted: toda la verdad sobre VPS (KVM) E5-2697 v3 (6 núcleos) 10GB DDR4 480GB SSD 1Gbps desde $ 19 o cómo dividir el servidor? (las opciones están disponibles con RAID1 y RAID10, hasta 24 núcleos y hasta 40GB DDR4).

Dell R730xd 2 veces más barato en el centro de datos Equinix Tier IV en Amsterdam? Solo tenemos 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV desde $ 199 en los Países Bajos.Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - ¡desde $ 99! Lea sobre Cómo construir un edificio de infraestructura. clase c con servidores Dell R730xd E5-2650 v4 que cuestan 9,000 euros por un centavo?

All Articles