en Programación

La importancia de lo que no se ve

Me pasa a menudo: los clientes tienden a dar mucha importancia a la parte visual (lo que en el argot informático llamamos frontend) y muy poca importancia (incluso ninguna) a la parte no visual, el backend.

Incluso algunas empresas del gremio, como el cliente no lo ve, dedican un esfuerzo ínfimo al motor, simplemente con que funcione lo dan por válido, pero no lo diseñan para altas cargas, alta disponibilidad y mucho menos para aprovechar bien los recursos de las máquinas.

Cuando una aplicación tiene éxito y su backend no está bien diseñado ni preparado para crecer, empezamos a tener problemas que pueden llevarnos a “morir de éxito” y a varias empresas les ha pasado ya, no es nada raro.

Y es que empezamos a tener popularidad en las redes sociales y crecemos como al espuma, pero nuestra plataforma no estaba preparada y dejamos de dar servicio a los clientes, o se lo damos en pésimas condiciones, lo que hace que los usuarios se cansen y nos abandonen.

Qué entendemos por backend

Es todo aquello que no tiene que ver con la interfaz de usuario (la parte visual); si lo relacionamos con el mundo automovilístico podemos decir que el frontend es la carrocería del coche y el backend el motor, las suspensiones, los frenos, …

Es por ello que hay backend en la aplicación móvil (todo el acceso a datos y comunicación con la red), en las webs (rara es la web que no interactúa con un servidor) y por supuesto, todo el código que gestiona la lógica de negocio en el lado servidor.

Los servidores propiamente dichos, con las redes informáticas, formarían la infraestructura necesaria para poder dar el servicio esperado.

¿Por qué no se da importancia al “motor”?

Básicamente porque el cliente no lo ve y no “entiende” en qué va a ser empleado el coste de la oferta.

Aquí quiero dar a entender la importancia de esta parte en una aplicación, web, producto, etc; si estás haciendo un prototipo (MVP como lo conocen los anglosajones – “Minimal Viable Product”) es – hasta cierto punto – entendible que queremos centrar el esfuerzo en la parte visual, pero cuando ya vamos a un producto serio, debemos hacer un buen motor si no queremos tener sorpresas desagradables.

¿Sirve cualquiera para hacer backend?

En los años que llevo trabajando, me he encontrado con muchos productos (sobre todo webs) desarrolladas por personas sin experiencia en programación … básicamente se dedican a personalizar un CMS, ya sea Joomla! o WordPress (más común a día de hoy).

Este tipo de webs suelen empezar a dar problemas – muchos problemas – cuando empiezan a tener visitas y se empiezan a parchear con plugins obtenidos de distintos sitios para funcionar con un rendimiento decente; por supuesto nunca lo logran, todo lo contrario, empeoran la situación y es entonces cuando contactan con un programador.

Como programador puedo decir que, según lo vemos, lo primero que nos apetece es tirarlo todo y empezar de cero, lo que (aunque parezca mentira) a la larga reduce los costes de nuestro cliente.

Como decía, es necesario un programador con experiencia y que sepa qué está haciendo y qué tiene entre manos. La programación es un arte (a diferencia de otras ingenierías, la programación requiere que el programador piense diferente y sea capaz de visualizar en su mente a lo que quiere llegar antes de plasmarlo en código), y al igual que yo no puedo pintar un cuadro como Velázquez o componer una sinfonía como Beethoven, no podemos esperar que cualquiera sepa implementar un sistema eficiente copiando y pegando código encontrado por distintos sitios de la red como si de un collage de primaria se tratara.

¿Cómo debe ser un backend de hoy en día?

Actualmente, y con la popularidad de la famosa “nube”, los desarrolladores de backend trabajamos implementado lo que llamamos “microservicios”, que básicamente son pequeñas aplicaciones que se encargan de hacer una misión concreta y se comunican con el resto de una u otra manera para, en conjunto, resolver el problema.

Un buen backend debe ser capaz de adaptarse a la demanda de los usuarios de manera rápida y confiable.

Cada microservicio debe estar desacoplado, es decir, no depender para nada de lo que esté pasando con el resto; tampoco debe tener estado (stateless), es decir, que pueda arrancar y parar en cualquier momento y no dependa de lo que haya pasado antes para que pueda resolver su tarea. Si está bien diseñado, podemos iniciar cualquier microservicio todas las veces que queramos en cualquier máquina, y hará su tarea concreta y morirá cuando termine. Cuando la demanda crece arrancamos servicios, y cuando decrece los matamos; y todo esto de forma transparente a los usuarios, que simplemente observan que las cosas funcionan.

¿Qué entorno necesito para la ejecución?

Si es difícil hacer entender a un cliente la necesidad de invertir en un buen motor, más difícil es hacer entender que tiene que pagar X por tener varios servidores, balanceadores de carga, … más cuando vemos por la red que hay servicios de hospedaje por precios irrisorios … pero claro, todo depende de lo que busques y de cuál será tu demanda. Y no hablo sólo de hospedar un blog, que por supuesto no requiere lo mismo que, por ejemplo, una plataforma de emisión de video en tiempo real.

Quiero hacer las cosas bien

Me encanta que pienses así, y en Ferimer podemos ayudarte. Sólo dinos qué necesitas y qué esperas, y nosotros nos encargamos del resto con un presupuesto ajustado a las necesidades del proyecto.

Llevamos más de 15 años desarrollando todo tipo de aplicaciones, incluso hemos trabajado en el desarrollo de un sistema operativo o colaborado en proyectos tan ambiciosos como puede ser Mozilla Firefox.

Varios clientes nos avalan, y siempre trabajamos pensando en lo mejor para ellos.

Ponte en contacto con nosotros y cuéntanos tu proyecto, sin compromiso alguno. No te defraudaremos. Si quieres un resultado profesional, deberás confiar en profesionales.

Escribe tu opinión...

Comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.