CONVIERTETE EN UN ING DEVOPS, que debes saber para iniciar en el mundo de devops


 



 

RoadMap 2021 para conseguir con exito ser un ing Devops







En este video te daremos a conocer las herramientas que necesitas aprender para ser un Ing. DevOps.Además de las tareas y responsabilidades que tendrás.


Que es lo primero que debes enterder para iniciar el camino Devops



Primero debes entender las principales partes al momento de crear una aplicación:

1 Desarrollo

La parte de desarrollo donde los desarrolladores programan la aplicación y la prueban.

2 Operaciones

Y la parte de operación donde la aplicación se despliega y se mantiene en el servidor.

3 DevOps

DevOps es el enlace entre los dos. Ok, esto es algo un poco abstracto, asì que vamos a entrar en los detalles para realmente entender las tareas del DevOps y cuales herramientas son necesarias para realizar estas tareas.


Conceptos del desarrollo del Software


Todo comienza con la aplicación. El equipo de desarrollo programará la aplicación con cualquier stack de tecnología, lenguaje de programación, herramienta de construcción, etc. Y ellos tendrán por supuesto un repositorio del código para trabajar en el código como equipo, uno de los más populares hoy en día es GIT.



Git es un software controlador de versiones una herramienta fundamental que ayuda a los desarrolladores a organizarse y a trabajar en equipo para desarrollar una app.



si deseas ver un video de git entra en este enlace

Buenas practicas de GIT

 



Ahora tu como DevOps no programarás en la aplicación pero necesitas entender los conceptos de cómo los desarrolladores trabajan, cuál flujo de trabajo de GIT usan, también de cómo está configurada la aplicación para hablar con otros servicios o base de datos también conceptos de pruebas automáticas y màs.

Devops y los Sistema de operación, que debo saber de linux para sentirme comodo en devops


ahora la aplicación necesita estar desplegada en un servidor, para que eventualmente los usuarios puedan acceder a ella, entonces necesitamos alguna clase de infraestructura o servidores o en la nube.

Y estos servidores necesitan ser creados y configurados para correr nuestra aplicaciòn. otra vez tu como un ingeniero devops podrás ser responsable por preparar la infraestructura para correr la aplicacion y como la mayoría de los servidores, en donde la aplicación corre son servidores en linux necesitas conocimientos en linux y necesitas estar cómodo usando la interfaz de comandos de lineas porque estarás haciendo la mayoría de las cosas en el servidor usando esta interfaz.

entonces conocer los comandos básicos de linux, instalaciones de diferentes herramientas y softwares en los servidores. entender el sistema de archivo de linux.

Lo básico en cómo administrar un servidor, como hacer ssh en el servidor, etc


Networking y seguridad para desempeñarte como ing devops


También necesitas saber lo básico en networking y seguridad por ejemplo configurar firewalls para asegurar la aplicación pero también abrir puertos para que la aplicación sea accesible desde afuera, entender cómo funciona las direcciones de ip, puertos y DNS.




Sin embargo para dibujar una linea aqui entre operaciones IT y devops no necesitamos habilidades super avanzadas de operación de sistema o networking o de seguridad o ser capaz de administrar el servidor de inicio a final. hay profesiones propias como administradores de red y sistema, ingenieros de seguridad etc. que realmente se especializan en estas áreas.



entonces tu trabajo es entender el concepto y tener la capacidad de preparar el servidor para que corra la aplicación pero no para manejar completamente el servidor y toda la infraestructura.


Contenedores realmente importante en devops e ingeneria de sotfware

En estos días los contenedores se han convertido en un nuevo estándar asi que probablemente estarás corriendo tu aplicación como contenedor en un servidor por esto necesitas genuinamente entender conceptos de virtualización y contendores y también ser capaz de manejar aplicaciones que están en los contendores en un servidor.


uno de los populares tecnologías de contenedores es DOCKER así que definitivamente debes aprenderlo.

si deseas aprender mas de docker te dejo un link a un curso muy bueno

CURSO DE DOCKER GRATIS Y COMPLETO 



bien ahora tenemos desarrolladores que están creando nuevas características y arreglando errores en un lado y tenemos infraestructura y servidores los cuales son manejados y configurados para correr la aplicación en el otro lado, la pregunta ahora es como llevar estas características y arreglos desde el equipo de desarrollo hasta los servidores para hacerlo accesible para los usuarios finales.

como llevar las nuevas caractisticas de la aplicacion de desarrollo a los servidores para que sea accesible por los usuarios finales

entonces básicamente: como soltamos la nueva versión de la aplicación?

y aqui es donde las principales responsabilidades y tareas de devops aparecen

con devops la pregunta es no solo como hacemos esto en cualquier manera posible sino como hacemos esto continuamente y en una manera rápida eficiente y automática.




¿En devops todo trata de automatización de builds y CI CD pipeline?



cuando una nueva version de la aplicacion esta lista, es decir se han agregado caracteristicas nuevas o simplemente se han arreglado errores necesitamos correr pruebas y luego empaquetar la aplicacion como un artefacto ya sea un archivo jar o una imagen de docker o simplemente un zip


cuando las características y el arreglo de errores esta terminado necesitamos correr las pruebas y empaquetar la aplicación como un artefacto, un archivo jar o zip etc.

para que podamos desplegarlo y alli es cuand las herramientas de construccion o build y de gestion de paquetes entran en el cuadro.


algunas de los ejemplos son MAVEN, GRADEL para aplicaciones en java NPM para aplicaciones en javascript y asi



mi experiencia dice que en este punto puedes o no saber de estas herramientas porque siempre puedes guiarte de algun desarrollador experto que te guia para automatizar esta parte PERO si dominas almenos la lectura de los errores y sabes donde conseguir los logs y los comandos basicos te ahorraras mucho tiempo.


no esta demas entender como las aplicaciones empaquetan y gestiona las dependencias


con respecto a los gestionadores de paquetes


como mencione los contenedores han sido adoptados como un nuevo estándar por mas y mas compañias así que probablemente construiremos imágenes de dockers para tu aplicación, el siguiente paso de estas imágenes es que deben ser guardadas en algún lado,cierto? en un repositorio de imágenes entonces.


DOCKER ARTIFACT REPOSITORY o Nexus o DOCKERHUB etc,

seran usados aqui. entonces necesitas entender como crear y manejar repositorios de artefactos tambien y por supuesto no quieres hacer nada de manera manual en vez de eso quieres una pipeline que haga todo en pasos secuenciales.


para esto necesitas construir la automatización y una de las herramientas más populares para esto es JENKINS por supuesto que necesitas conectar esta pipelines con el repositorio de GIT para ver el código y a esta parte la llamamos el proceso de integración continua.

Jenkins es una Herramienta que permite automatizar procesos si esto no te queda claro aqui te dejo un SUPER CURSO que te ayudara a entenderlo Curso de jenkins CI para principiantes


que es cuando el código cambia del código del repositorio es probado continuamente y quieres desplegar esa nueva característica o ese arreglo de algún bug a servidores después que fue probado construido y empaquetado lo cual es parte del despliegue continuo cuando el código cambia se despliega continuamente en el servidor de despliegue y pueden haber pasos adicionales en este pipeline como enviar notificaciones al equipo acerca del estado de una pipeline o manejar un despliegue fallido etc, este flujo representa el centro del pipeline CI/CD


Y en este pipeline de CI/CD es donde estan el corazon de las tareas y responsabilidades del DEVOPS


como ingeniero devops debes ser capaz de configurar este pipeline para tu aplicación y este debe ser continua es por eso que el logo no oficial de devops es un ciclo infinito porque la mejora de la aplicación es infinita, los nuevas características y arreglar los errores son añadidos todo el tiempo que necesita desplegar.


Proveedores de nube (iaas) infraestructura como servicios


Ahora volvamos a la infraestructura donde nuestra aplicación está corriendo. en estos días muchas compañías están usando infraestructura virtuales en la nube en vez de crear y manejar su propia infraestructura física. estas infraestructuras son plataformas de servicios co AWS y google cloud azure, etc


una de las razones obvias es ahorrar en el costo de armar tu propia infraestructura pero estas plataformas también manejan muchas cosas por ti haciendo más fácil gestionar la infraestructura. por ejemplo usando un UI puedes crear tu red, configurar firewalls, route tables y todas las partes de tu infraestructura a través de servicios y características que las plataformas proveen, sin embargo muchas de estos servicios son específicos de cada plataforma asi que debes aprenderla individualmente. es decir que si tu aplicación corre en aws debes aprender aws y sus características, ahora aws es muy complejo, pero no necesitas saber todos los servicios que ofrece, necesitas saber los conceptos en servicios que necesitas para desplegar y correr tu aplicación específica en la infraestructura de aws.


Contenedores y orquestación

Nuestra aplicación correrá como un contenedor, cierto. porque construiremos imágenes en docker y los contadores necesitan ser manejados para aplicaciones pequeñas, docker compose o docker swarm es suficiente para manejarlas


pero si tienes muchos contendores en caso de un gran microservicios necesitas una herramienta mas poderosa de orquestación de contendores que haga el trabajo, la más popular es kubernetes. por eso necesitas entender cómo kubernetes funciona, ser capaz de administrar y manejar el cluster como a su vez desplegar la aplicación en ella.

si deseas saber mas sobre KUBERNETES te dejo un link a un super curso que tambien es gratis y esta completo


 



Monitoreo


Ahora, cuando tienes miles de contenedores corriendo en kubernetes en cientos de servidores como le llevas el rastro al rendimiento de tu aplicación individualmente, si corre exitosamente, si la infraestructura tiene algún problema o lo que es más importante como saber el tiempo real si tus usuarios están experimentando algún problema. una de tus responsabilidades como devops es establecer el monitoreo para tu aplicación cuando esta corriendo. el cluster subyacente de kubernetes y los servidores en los cuales el cluster está corriendo entonces necesitas saber una herramienta de monitoreo como PROMETHEUS o NAGIOS etc.


necesitas tener informado a todo el equipo sobre el funcionamiento de la aplicacion, como estan los recursos y como se compoarta la aplicacion


debes poder monitorear los errores tanto de infra como de cada componete de la aplicacion


con el tiempo te daras cuentas cuales son los errores mas importantes de los cuales debes estar pendiente y en ese momento deberas crear alertas


herramientas en internet hay muchas debes buscar la que se adapte al bolsillo de la empresa y a las aplicaicones. por jemplo prometeous me gustas es bastante flexible permite monitoria la infra y crear alertas


pero si trabajas con kubernetes quizas prometeus se queda corta y deberas incoporporar grafana a la equacion o mas aun usar cloud waths y enviar mensajes de alerta a correos y telefonos


INFRAESTRUCTURA COMO CÓDIGO


para explicar esto necesito que imagines que tines un ambiente de produccion donde tu aplicacion corre sim problemas y para llegar a este caso idea donde todo corra sin problemas pasaste pro el proceso de estabilizar el ambiente donde configuraste todo para los diversos componentes de tu app estuvieran ok


ahora la empresa necesita tener ambientes para desarrollar y probar antes de lanzar nuevas caractisticas a produccion mantener un ambiente cuesta tiempo y es propenso a errores mas si tiene muchos procesos manuales.

------------------

las empresas normalmente tiene mas de un ambiente las mas avanzandas replican su ambientes para generar pruebas justo cuando lo necesitan y luego destruyen todo para no gastar dinero en infra sin usar


para replicar ambientes una buena opcion es usar infrastructura como codigo



tambien lo podrias hacer de forma manual la cual te aseguro que es mas dificil de escalar y es muy facil cometer errores usando esta forma


la infra como codigo donde creas todo en archivos configura toda tu ambiente en archivos donde escribes todo lo que quieres levantar y luego usas herramientas que desplieguen por ti todo lo que dejastes definidos en los archivos de forma automatica

es mas eficiente y mucho mas rapido…. si es mas rapido obviamente cuando logras estabilizarlo luego de eso replicar un ambiente casi no tiene errores podras recurar ambiente que fallen o crear X ambientes en cualquier momento


hay herramientas de aprovisionamiento como terraform que es agnostico y cloud formation que es de aws y tambien te permite aprovisional infra

y hay herramientas de manejos de configuración como ANSIBLE, CHEFF, PUPPET, ETC.


entonces tu como ingeniero devops debes conocer una de estas herramientas para hacer tu propio trabajo mas eficiente como tambien hacer tus ambientes mas transparentes para que sepas exactamente en cual estado esta y sea fácil de recrear y fácil de recuperar.

Lenguajes scrpting


en adición desde que estas trabajando al lado de los desarrolladores y sistemas de administración también para automatizar alguna de las tareas para ellos, probablemente necesitas escribir scripts, quizás pequeñas aplicaciones que automaticen tareas como hacer respaldos, tareas de monitoreo de sistemas, cron jobs, manejo de redes etc.

para hacer esto necesitas saber un lenguaje scrpting este puede ser especifico de un sistema operativo como BASH o POWERSHELL o uno mas demandado mas poderoso y flexible como python, ruby, go INSERTE CURSO DE GO, debes aprender uno de estos lenguajes y python sin duda es el mas popular y demandado en el espacio de devops hoy, es facol de aprender , facil de leer y muy flexible, tiene librerías para muchas base de datos tambien para muchas plataformas de nubes.


Control de versiones


ahora con estas herramientas de automatización y lenguajes en las cuales tu escribes toda esta lógica de automatización como código como crear manejar, configurar la infraestructura por eso se llama infraestructura como código,

entonces como manejas este codigo, igual que el codigo de tu aplicación usando versiones de codigo como git, por eso es esencial aprender git

a este punto te estarás preguntando si debes aprender todas estas herramientas o debes aprender multiples herramientas o debes aprender todas en la categoria o cual debes aprender primero porque hay muchas.

debes aprender una herramienta en cada categoría una que sea lo mas popular o màs usada porque cuando entiendes el concepto usar herramientas alternativas es màs fácil.




Comentarios

Entradas populares de este blog

AWS SAM y AWS Lambda docker Container Image tutorial con PYTHON USANDO A...

Solucion: Docker Error: No such container:

Los unicas 4 herramientas que necesitas para volverte un master en Devops