BASH en la era Cloud: Por que es obligatorio si eres (o no) DevOps
Como todos sabemos el futuro es hoy y ya no hablamos de datacenters si no del "cloud" esta palabra hermosa que le encanta decir a nuestros CEOs y que vemos como algo casi etereo e intangible, mas aun con el nuevo termino de serverless esta promesa de simplemente subir codigo y que un sistema magico ajeno a nuestro plano ancestral se encargara de que nuestro hola mundo en JS pueda estar en la pantalla de millones de personas a la vez. Pero como dicen en Shrek
¡Sí, como si esas cosas pasaran! Esto es pura m...
- Shrek, Shrek I
Al final del dia todo este marketing enrebesado simplemente es el PC de otra persona o en este caso el Data Center de Jeff Bezos en alguna parte del Norte de Virginia. Ahora bien algo que no es una ley si no un mandamiento en todo estos computadores es que trabajan con sistemas Linux (o por lo menos sistemas compatibles con POSIX) entonces esto se convierte en algo no tan trivial por que esto implica que si sabes como funciona tu terminal en tu VM de VirtualBox con Ubuntu virtualmente sabes como manejar los grandes datacenters de Silicon Valley.
Teniendo en cuenta lo anterior, todos nos hemos acostumbrado a ir por la via facil (yo incluido no me voy a marcar de purista) de usar las interfaces de gestion grafica para la gran cantidad de tareas que nosotros hacemos dia tras dia. Por miles de motivos por practicidad, facilidad o simple y llanamente por que nos gusta mas ver una barra de progress dandonos la seguridad de que estan pasando cosas a ejecutar enter en una terminal y entrar en la incertidumbre si la maquina murio o si tu script acabo siendo una fork bomb que acabara matando la memoria RAM y Swap de tu server de 4 USD en Alemania (Contabo reference). Ahora bien el hecho que tener una GUI como es una consola de AWS, GCP o algo mas local como un cPanel o Cockpit te permite tener una visibilidad mas sencilla hay que tener en cuenta que vuelve todo mucho mas manual y es justamente por eso por que las GUI fueron diseñadas para que una persona sea las que interactuen ahi, y esto para las automatizaciones y para la gestion en grandes cantidades mata el rendimiento y ahi es donde entra este blog.
Que es BASH?
La verdad no soy de las personas que les gusta ser profe de historia que para eso tenemos san WikiPedia o ChatGPT propiamente jajaja. Para efecto practico podemos ver a BASH como un consola de un sintetizador.

Esta interfaz nos premite a nosotros como en un piano tando dar entradas y salidas (IO) de forma directa como conectar estas entradas y salidas entre los distintos modulos (comandos o funciones) para generar una respuesta mucho mas refinada, ademas de agregar logica dentro de cada parte de esa señal (informacion) dereccionandola al lugar que es idoneo que este.
Y al igual que un musico moderno con un DAW el no se pone a tocar toda su pieza de principio a fin si no que esto se lo delega a los distintos generadores y arpegiadores de acordes y presets para crear y renderizar una obra completa.
Y por que me interesa?
Claramente los lectores de este blog vienen de varios perfiles tecnicos y me parece interesante para estos perfiles principales:
Si soy DevOps
Claramente como DevOps o persona que trabaja en infrastructure se hace indispensable trabajar con entornos Linux y mas aun cuando trabajas en entornos Cloud Native como lo es Linux, Docker, Kubernetes, entre otros. Ya que aparte de simplmente crear el recurso y comenzar la maquina de quemar dinero que es nuestro proveedor de turno tambien requerimos entrar a este y hacer debugging dentro de dicho entorno de ejecucion ademas de filtrar buscar y comprender este entorno. Al punto inclusive de agregar tus propios scripts para poder hacer CronJobs correctivos o de recoleccion o la automatizacion de procesos que desde nuestro punto es un par de lineas, pero desde el punto del programador es hacer 3 clases un listener y un hilo zombie que se este ejecutando robando preciados recursos a nuestro runtime.
Si soy Desarrollador
Pese a que el ideal de un programa es ser agnostico de su entorno de ejecucion no se puede ser ajeno a como funciona el sistema operativo ancestral donde corre todo el sistema que se esta desarrollando. desde entender que la carpeta /tmp es el lugar mas comodo para guardar archivos efimeros, hasta ser consciente que ejecutar una aplicacion es mucho mas que un php artisan serve o un python main.py. Sabiendo que un aplicativo es mucha mas que una serie de algoritmos que se ejecutan de forma infinita si no tambien una serie de comandos de mantenimiento preventivo y correctivo para tener la aplicacion al punto, que se pueden remontar a cosas tan sencilla como lo es una migracion de base de datos, hasta cosas tan complejas como orquestar como un baile una serie de comandos para poder exportar y sacar copias de seguridad o enviar a gerencia informacion clave del sistema.
Si soy Desarrollador (Frontend)
A ustedes no los he olvidado. Soy consciente de que cuando escucharon sistema operativo omitieron completamente la seccion anterior, lo cual no los culpo y es comprensible desentenderse del sistema operativo cuando se trabaja con una capa de abstraccion comoda y segura como lo es un navegador, pero hay que ser consecuente de que este nos mancha a todos y mas aun cuando se usan cosas como el SSR, donde eres consciente que tu codigo no es solo un archivo "estatico" que se ejecuta en el cliente sino tambien actions que corren en un servidor de miles de millones de dolares en un data center que consume mas energia que una ciudad pequeña. Ahora bien no quiero ser vengativo con este hermoso e importante rol que es el desarrollo frontend tenemos que ser conscientes y mas para ser alguien competitivo que requerimos aprender a ejecutar en terminal cosas aparte de npm i y npm run dev.
Si soy Soporte IT
Para ustedes como Soporte IT es el rol que mas acostumbrado estara con las terminales (y no solo las tipo Unix), lo cual genera que con impedancia aun estudiar como funcionan las terminales modernas y no solo BASH, tambien otras como su predecesora SH o la alternativa de Microsoft PowerShell y generar su propio repositorio donde se guarde toda la serie de procedimientos comunes que se usan dia tras dia para que la oficina no se vuelva un caos desde algo tan sencillo como un script para volver a emparejar la impresora de la oficina hasta cosas mas importantes como hacer backup del servidor de archivos de la oficina para que nada se pierda y se vuelva un doc-magedon jejeje.
Para no quedarme en el campo de lo teorico mas pronto que tarde preparare un repo y un mini blog anotando las cosas que me hacen sobrevivir a mi en el mundo IT al manejar scripts de consola.
Los quiero <3