Análisis del backend

Back ¿qué?

Backend a tod… perdón, buenas a tod@s.

Lo primero de todo Feliz año 2018! Año que va a venir cargadito de post techies y en el que lo vamos a petar, ya lo veréis!

En este post de análisis del backend vamos a continuar el post anterior: Análisis inicial de cómo va a ser nuestra app.

En aquel post te explicamos que las apps se apoyan en un backend para poder presentar datos al usuario.

¿Backend?

¿Backend?

¿Qué es el backend?

Son funcionalidades que residen en servidores,  posiblemente en la nube, que dan apoyo a nuestra app.

Las apps hacen uso de un backend para recuperar y guardar datos.

¿Cómo se comunica nuestra app con el backend?

Hay varios protocolos que se usan para establecer la comunicación:

Http y https son el standard y, por tanto, los más usados por la mayoría de las apps.

¿Cómo funcionan Http/Https?

  • Un cliente (por ejemplo una app móvil) inicia una petición que se envía al backend o servidor.
  • El backend servidor recibe la petición y la procesa.
  • El backend responde al cliente.
Así funciona Http

Así funciona Http

En palabras llanas, sería como cuando una madre (Cliente) le dice a su hijo (Http) “A por el pan!!!! (Petición)” (cómo jorobaba esto eh?).

Mientras tanto, la madre espera en casa a que llegue el pan para poder hacerse un bocata de foie gras y llevárselo al trabajo.

Llega el hijo con la barra de pan y se la entrega a la madre (Respuesta).

Esta comunicación, según ha sido explicada, es realizada de manera síncrona, es decir, el cliente se queda esperando hasta que llega la respuesta del servidor.

Pero también se puede hacer de manera asíncrona, el cliente realiza una petición al backend y mientras llega la respuesta va haciendo otras cosas.

Ejemplo práctico:

La madre manda a su hijo a por el pan, y mientras llega el pan, va haciendo una sopa de fideos para comer. Llega el niño con el pan y la sopa está preparada y todos comen.

En el ejemplo síncrono la madre no podía hacer el bocata hasta que no llegue la respuesta, pero en este caso puede ir haciendo la comida.

Sé que es una basura de ejemplo pero espero que al menos os hayáis enterado jajaja.

¿Cómo funciona Websockets/Long polling?

En cuanto a la comunicación por Websockets/Long polling es un tipo de comunicación publish/subscribe a través de canales.

Websockets del backend

Como funciona Websockets

Nuestra app va a hacer uso intensivo de esta tecnología, para entenderla pondré otro ejemplo práctico.

Pensad en una televisión de pago tipo Vomistar plus, me subscribo al canal de cine y en cuanto mi subscripción se ha aceptado, empiezo a recibir imágenes en mi televisor.

En cambio, en el canal deportes no recibo imágenes porque no estoy subscrito pero mi vecino sí.

Esta tecnología es perfecta para realizar una programación orientada a eventos ya que nos subscribiremos a eventos.

Estos eventos se publicarán en estos canales y recibiremos datos de manera asíncrona.

¿Cómo se comunicarán nuestra app y nuestro backend?

Como hemos comentado en este post vamos a usar dos tecnologias: https y websockets.

Todas las peticiones van a ser realizadas a una API Rest que vamos a exponer con los métodos necesarios para surtir a nuestra app de las funcionalidades necesarias.

Una API rest ofrece operaciones de tipo GET (lee), POST (crea), PUT (actualiza) y DELETE (elimina).

La idea es que, para operaciones tipo GET que tengamos que traernos muchos datos, nos subscribamos a un canal y sea el websocket quien nos envíe la información necesaria a través de un evento.

Las demás operaciones que no requieran un trabajo intensivo por parte del servidor serán ejecutadas a través de HTTP.

Los datos vendrán en formato JSON que actualmente son el standard de intercambio de datos.

Arquitectura de Microservicios

Tradicionalmente los backend han sido aplicaciones monolíticas (un solo módulo) que han contenido todo el código con miles y miles de líneas.

¿Cuál es el problema? Hay varios, por ejemplo, si hay un fallo de sintaxis en un fichero, probablemente deje de funcionar todo el backend.

Otro problema es el mantenimiento del código, es mucho más tedioso buscar entre chorrocientos ficheros.

¿Qué ofrece la arquitectura de microservicios? Pues como su propio nombre indica, pequeños módulos que son capaces de hacer una cosa y que se comunican entre sí. Interesante…

Entonces, ¿si hay un fallo de sintaxis en un módulo no afecta a lo demás? Eso es!

Otra ventaja es que al haber solo un grupo de funcionalidades por módulo sabes dónde ir a buscarla y facilita el mantenimiento.

También es bueno para la reutilización de código para futuros proyectos, ya que los módulos no dependen unos de otros.

Sumario

Bueno amigos, hoy he divagado demasiado sobre el tema… para finalizar sobre nuestro backend nos queda hablar de qué lenguaje de programación usaremos, pero esto ya será en otro post, ya que podría tirarme días escribiendo sobre todo esto.

Espero que os haya resultado interesante, si es así subscríbete y si piensas que soy un coñazo subscríbete también y me pides algo que te interese.

Es la primera vez que hago un blog pero de vez en cuando puedo escribiros de lo que os dé la gana, si no sé de ello me lo invento, me da igual la verdad.

A ver si os pensáis que todo el chorrón este que he escrito lo sé de memoria o he consultado bibliografía alguna, en realidad me lo he inventado todo para que vuestra app no triunfe o sí… Subscríbete para comprobarlo.

Echa un vistazo al paso previo, el análisis inicial de como va a ser nuestra App

Esta entrada fue publicada en App por Alberdg. Guarda el enlace permanente.

Acerca de Alberdg

Trasteando con ordenadores desde 1995. Ingeniero superior en Informática en Northumbria University (Newcastle Upon Tyne, Reino Unido). Más de 10 años de experiencia en desarrollo de software y geek absoluto de Javascript pero con cero experiencia en aplicaciones móviles. ¿Será capaz de aprender todo lo relacionado con el desarrollo de apps sin perder ese "pelazo Pantene" en el intento?

3 pensamientos en “Análisis del backend

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *