Abstracciones… ¿buenas o malas?

Según wikipedia:

La abstracción consiste en aislar un elemento de su contexto o del resto de los elementos que lo acompañan. En programación, el término se refiere al énfasis en el “¿qué hace?” más que en el “¿cómo lo hace?” (característica de caja negra). El común denominador en la evolución de los lenguajes de programación, desde los clásicos o imperativos hasta los orientados a objetos, ha sido el nivel de abstracción del que cada uno de ellos hace uso.
La abstracción también se puede entender como el método que se usa al momento de analizar un elemento particular, despreciando los aspectos no relevantes para el estudio específico, y considerando solo las propiedades esenciales para dicho análisis, facilitando con ello la mejor comprensión de dicho elemento y disminuyendo de esta manera el esfuerzo que se debe invertir en su comprensión.

Como digo la abstracción SW es una arma de doble hilo. Claramente todo es una abstracción. No vamos a comunicas con la CPU de un ordenador en lenguaje máquina con “1” y “0”. Para esto hemos desarrollado una series de capas que nos permite hacer de un ordenador algo mucho más fácil de manejar. Pero como todo, hay un límite. Y en realidad es bastante fácil determinar donde está el tuyo. Hazte estas preguntas;

  • En el caso ocurra un desastre informático, cuanto tiempo me llevaría reconstituir todo?
  • Podrías reconstruir tus plataformas en un entorno diferentes sin necesitar de mucho tiempo?

Si la respuestas a ambas preguntas es: “Menos de un día de trabajo”, pues enhorabuena! 🙂

En cambio si es “más de un día” y hasta “no sabría como hacerlo“, pues… tienes un problema y de los gordos.

Así que te recomiendo que aprendas a usar muy bien la consola de Linux o de cualquier *nix porqué esta es la base donde la mente humana ha conseguido reducir al mínimo para que sea una herramienta suficientemente rápida de usar, segura y que sea estándar.

Si tu plataforma es por ejemplo un sitio web de wordpress con e-commerce y una radio web y sabes instalarlos desde el terminal con unos pocos comandos copiados y pegados desde tu chuleta personal (la memoria humana tiene límites) y que tanto te ha costado construir… perfecto!
Tienes una hoja de ruta y te dará igual que el ordenador sea un raspberryPi4, una VPS en linode o un servidor real en un rack de un provedor en Africa del sur.
Le instalas una distribución de linux que te agrade y a correr en pocas horas.

Y si no hay linux a disposición y solo hay por ejemplo freebsd u otro *nix? Será un poco más complicado en algunas cosas si no conoces el sistema, pero en media hora de búsqueda en internet, te darás las equivalencias de los comandos de tu lista de comandos para por ejemplo instalar apache+php+mariadb, o nginx+postgresql+ruby o lo que sea.

Mientras que sea un sistema POSIX compatible todo será sobre ruedas y tendrás el control, aunque no todo es perfecto y falta mucho para una convergencia total de los *nix.

Aquí te pongo el comentario que he puesto en un grupo donde se comentaba algo de al abstracción

…además lo de “abstraer” es una arma de doble hilo. Por un lado acelera un poco la producción, pero por el otro te casas con un sistema o un entorno, y por lo tanto cuando pasa un desastre, estás sin soluciones. Mira lo que ha pasado con el incendio de OVH. Miles de paginas web offline, algunas de ellas con comercio electrónico muy activo que no conseguían despejar en otro sitio, porqué sus respectivos administradores no tenían los conocimientos para desplegar una copia en otro entorno con otro proveedor (por ejemplo digitalocean, linode y muchos otros). Saber tocar botones para desplegar un docker o un kubernetes con x nodos, y no saber hacer lo mismo a mano, no es ser un sysadmin verdadero. Y a este vicio se llega poco a poco usando las “abstracciones”. Hay que intentar estas lo más posible cercano al hierro. Dicho esto, yo mismo uso docker para simplificarme la vida, pero cada una de estos contenedores antes he aprendido instalarlos en un entorno real y tomado notas para poder replicarlo donde sea en poco tiempo. En el caso de OVH los sysadmin de las plataformas que se quedaron a pie no tenían el plan de contingencia para desplegar su plataforma en oto proveedor sin usar las API de OVH y han tenido que esperar que OVH recupere las copias de seguridad y vuelva a poner en marcha sus plataformas de comercio. Claramente esto no es importante para un sitio web persona de WP, pero es muy grave para quien vende miles de artículos al día y donde retener el cliente en tu plataforma es primordial para tu supervivencia.

…por esto no hay que alimentar las abstracciones. Está claro que quien paga manda, pero también está en nuestras manos lo de rechazar y buscar otro trabajo con alguien más sensato. Considera que esos sysadmin que por no saber o por no oponerse a los planes de reducción de gastos impuestos por los gerentes, ahora estarán marcados a vida. Quien contrataría a un sysadmin que no ha sabido remediar al desastre? A la gente le dará igual sus motivaciones. Estoy seguro que la gran mayoría de ellos tenían las manos y los pies atados por los jefes…. pero el jefe ahora le echará igualmente la culpa al sysadmin y este no podrá defenderse porque el 99.9999% de la gente no entiende ni un 1% de lo que dice…

Comments are closed.