- Ale
Detrás De Una Aplicación
Hola a todos!
Hoy vamos a hablar de lo que hay detrás de un software/aplicación/portal.
Mucha gente mira una aplicación que tiene algún costo y dice:
- "5$ por escuchar música?"
- "2$ por decirme donde estoy?"
- "1$ por decirme cómo hacer deporte?"
Pues aquí va la historia de lo que hay detrás de todo eso:
Normalmente las aplicaciones de hoy en día están conformadas por una parte que muestra los datos e interacciona con el usuario (frontend) y otra que se encarga de la lógica del producto, almacenar y proveer los datos al frontend (backend). Para almacenar los datos el backend necesita mínimo un almacenaje de archivos (file storage) donde guardar archivos pero normalmente tienen una base de datos que también almacena datos 😮.
El backend y el frontend tienen que estar alojados en la nube (hosted in the cloud) por ejemplo en aws ó google cloud.
Si adicionalmente es una aplicación de Android ó iOS, se necesita una cuenta en google play y/ó en App Store.
Para desarrollar y mantener éstas componentes se necesitan desarrolladores. Una aplicación pequeña puede ser desarrollada por dos personas y finalmente mantenida por una.
Asegurar la calidad de un software en mantenimiento no es una tarea fácil, ya que en poco tiempo se genera mucho código con dependencias complejas que al tocarlo en una parte, puede tener efectos secundarios en otra y dañar funcionalidades. Como un castillo de naipes. Para evitar esto hay tests automatizados que te dicen si después de alguna modificación el software todavía funciona como queremos. Estos tests automatizados se ejecutan en otro software llamado continuous integration (CI). El CI normalmente está alojado en la nube.
Finalmente es importante tener una forma automatizada de desplegar el software a la nube para poder satisfacer las necesidades de los clientes de forma dinámica y sin mucha espera. Esta es otra tarea de la CI que hace el trabajo de automatizar la generación de nuevas versiones a partir del código fuente y los despliegues de las mismas a la cloud.
Normalmente nuevas modificaciones no se prueban instancias de producción por lo que se necesita mínimo una instancia de prueba adicionalmente a la de producción.
En resumen se necesitan las siguientes componentes para mantener un software:
- 2 x instancias en la nube (prueba y producccion) con frontend, backend y database
- Un desarrollador
- Un CI software
- Cuentas en Google Play y App Store
Todo esto cuesta dinero y si los clientes quieren tener una experiencia óptima con pocos tiempos de espera, los costos de la infraestructura pueden ser mayores. Espero que después de este post tengan una idea de todo lo que hay detrás de un software.
Feliz semana!

Sobre el autor: Felipe es Máster en informática de la universidad de Bremen en Alemania y trabaja desde hace diez años en desarrollo de software, gestión ágil de producto y control de calidad en Berlín.