¿Dónde viven las aplicaciones web? | CourseIt Blog
logo courseit

¿Dónde viven las aplicaciones web?

64

Cuando comenzamos nuestro recorrido del aprendizaje en programación solemos trabajar de forma local. Tenemos nuestros archivos, sus instalaciones y dependencias. Nos peleamos con pantallas de error que nos indican la falta de alguna referencia.

Tiene sentido que nos enfoquemos en aprender de esta manera. Al final del día, absorber nuevos conceptos es una tarea compleja, y es mejor aprender en partes. Por eso a los estudiantes se los abstrae de las complejidades del mundo real para que se enfoquen en mejorar las tecnologías puntuales de su trabajo.

Pero una vez que ya dominamos las bases, es importante poder compartir nuestro trabajo con el mundo, y acá es donde para muchas personas la cosa se pone rara.

¿Dónde vive el código?

La primera instancia para compartir nuestro código suele ser un repositorio. Un repositorio es un espacio donde el código se versiona e indexa. Hoy en día la herramienta más utilizada es git, y se hace disponible a mucha gente a través de servicios cloud hosteados por las mismas empresas, como GitHub, Bitbucket y otros.

Estas herramientas nos permiten mantener nuestro código ordenado y listo para que otras personas lo revisen, descarguen a su local y prueben o incluyan sus propias modificaciones. Pero, ¿Qué pasa cuando queremos mostrar una versión funcional de una aplicación web? ¿Qué pasa cuando necesitamos que eso que vemos en nuestro local "esté vivo" en algún lugar?

¿Dónde viven las aplicaciones web?

Ahí entra en juego la infraestructura. Por infraestructura (o cariñosamente, infra) nos referimos a toda la capa donde nuestro código se aloja y corre para poder ser utilizado en su forma final, como una aplicación.

A un nivel muy básico, los servidores no son otra cosa que computadoras que nos proveen espacio de guardado en disco, poder de procesamiento, RAM y un sistema operativo a través del cual podemos darle a nuestro código las instrucciones generales para que corra y sea funcional.

Dos requisitos importantes para que nuestra aplicación pueda vivir en ellas es que deben estar continuamente encendidas y mantener una conexion constante a internet, para que nuestra aplicación pueda ser accedida en cualquier momento por sus usuarios (a este concepto se le conoce como operatividad o uptime)

Estas computadoras pueden estar ubicadas en la misma empresa que las utiliza, o pueden contratarse a través de servicios cloud. La frase "la nube es la computadora de otra persona" hace referencia a eso. Compañías como AWS ofrecen contratación de servidores de forma remota, y nuestro código puede terminar alojado en un servidor que físicamente se encuentra a miles de kilómetros de distancia nuestro.

Dentro de estos servidores nuestro código se clona, como si clonaramos un repositorio en local, y se corre o buildea, es decir, se genera una versión optimizada para ser utilizada y publicada a los usuarios.

Estos servidores, están conectados a internet y tienen una ip asignada, un identificador único a través del cual accedemos a su contenido público. Muchas veces también se les asigna una url genérica, pero en cualquier caso siempre podemos asignarle una personalizada si tenemos comprado un dominio.

Y de este modo es como un servidor alojado en algún remoto lugar de virgina se puede convertir en la casa de tu aplicación web.

Dentro de los servidores cloud existen diferentes alternativas que permiten distintos grados de control. Tenemos soluciones como Heroku o Vercel, que nos ofrecen soluciones completamente transparentes al usuario, con un mínimo grado de configuración, y soluciones más configurables como AWS o Digital Ocean que nos ofrecen opciones más robustas para alojar proyectos que necesitan escalar en el tiempo.

Si bien para trabajar en desarrollo no hace falta saber de infraestructura, tener este tipo de conocimiento te da más flexibilidad y posibilidades a la hora de manejar tus propios proyectos.

Si te gustó este artículo y te interesa iniciarte en el mundo de la infraestructura para desarrolladores te recomendamos estos cursos de CourseIt Pro:

Manejando instancias con EC2

Integración Continua con Circle CI

Docker

Enlazando puertos con NGNIX

Bel Rey

@doomling