Construyendo un mapa para aprender sobre el Back-end
Tags: javascript, programming, node, database
Published: 2024-02-28 18:47:05

Para los que estudiamos desarrollo de software y nos fuimos por el desarrollo FullStack, sabemos que llegara ese momento donde tendremos que tomar una decisión ya sea por voluntad propia o simplemente porque nos lo exigen en nuestro trabajo o proyecto, y es me voy por el lado del Front-end o del Back-end.

Independientemente del camino que elijas, debes ser consciente de que cada lado será tan apasionante como complejo y es que el mundo de tecnologías que existen tanto en una como en la otra es tan diversa y amplia, que hay que tomarlo con calma y con una ruta bien definida.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0xcfqdyfe1yzrhxlu1l0.png)


Es por eso, que en este artículo lo que vamos a hacer es hablarte de forma amplia sobre el mundo del Backend, y que es lo que debes saber  de esta rama del desarrollo de aplicaciones y, teniendo esto claro, puedas encauzar tu camino como un perfecto back.

## Qué es el Back-end:

Esto es lo primero que lógicamente deberíamos saber para poder iniciar en esta rama, al menos saber para qué nos va a servir en nuestra aplicación tener un back-end.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ea4tif1uhq9tg022zno0.png)


De una forma simple, el back-end es la parte de toda aplicación que funciona del lado del servidor o también la podemos explicar como la parte que comunica los datos con los clientes; estos clientes pueden ser tanto internos como externos dentro de la misma empresa o clientes fuera de esta.

## Las API:

Imagínate básicamente un puente, que es lo que hace un puente, comunica un lado con el otro; esto es lo que hace una API en nuestras aplicaciones, va a hacer el puente de comunicación para intercambiar información entre las peticiones de los clientes y nuestros datos en el servidor.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5jiby38xin2r9afunja6.png)


Debemos destacar, que este intercambio de información puede ser tanto del cliente hacia la API como de la API hacia el cliente, y esto va a depender del tipo de API que estemos manejando, lo que debemos saber es que una API puede ser sincrónica o asíncrona.

Sincrónica implica que el cliente espera una respuesta inmediata del servidor, mientras que la comunicación asíncrona implica que el cliente no espera una respuesta inmediata, sino que puede recibir una notificación posteriormente.

## Protocolos de comunicación:

Estos protocolos van a definir cómo se establece la conexión, cómo se transmiten los datos y cómo se verifica la integridad de esos datos; son como los lineamientos de cómo se van a manejar los datos en la aplicación. 


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4ei786c9xkhos2meebo2.png)


Estos protocolos van a depender del tipo de aplicación, arquitectura, entre otras, que estemos construyendo estos protocolos son:

- REST: Manejado por formatos como JSON.

- SOAP: Manejado por formatos como XML.

- GraphQL: Permitiendo consultas de una forma más flexible.

## Base de datos:

En un back-end también debemos construir las peticiones y la forma en que se van a enviar los datos, ese lenguaje se llama SQL.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ejtzdv2zhwe2qay8phz5.png)


En el mundo de los datos se manejan dos tipos:

- Relacionales: En estos encontramos a MySQL, PostgreSQL, MariaDB.

- No Relacionales: En estos encontramos a MongoDB, Redis, Cassandra, Neo4J.

Estos por nombrar algunos dentro de muchos más.

## Estructura de datos y algoritmos:

Aquí estamos hablando, de la forma en que guardamos la información en memoria, con el fin de que esta pueda ser mejor utilizada en las diferentes peticiones que se hagan.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/z917w6ctf7zhkrnmafdz.png)
 

Las más usadas:

- Arrays.

- Pilas.

- Colas.

- Listas enlazadas.

- Hashmaps.

- Árboles.

## Algoritmos:

Esta es una parte importante en un proyecto back-end, ya que es la forma en que vamos a resolver el flujo de la información para hacerlo de la manera más eficiente, mejorando las respuestas de nuestro sistema o puente de comunicación. Estas las podemos evaluar mediante lo siguiente:


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0lh15hbus50u65t8jdjs.png)


- Complejidad Temporal: Se refiere al número de operaciones que realiza un algoritmo para hacer una tarea. 

- Complejidad Espacial: Se refiere al espacio en memoria que utiliza un algoritmo para almacenar datos.

- Notación Big O: Mide la complejidad algorítmica en términos de tiempo y espacio. 

Estos conceptos son importantes tenerlos en cuenta al momento de desarrollar como back-end, así garantizamos las mejores prácticas y el mejor rendimiento de la app.  

## Framework y Librerías en el Backend:

Estos 2 conceptos son muy utilizados en nuestros días y son los que nos van a ayudar a construir nuestras aplicaciones en el back-end; un framework incluye todas las herramientas que necesitas para desarrollar un proyecto completo y una librería solo aborda utilidades específicas, sin embargo, actualmente una librería puede llegar hacer muchas cosas, tanto como un framework.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/d6lj5dr6z8aqs2ztbsce.png)
   

Estos son algunos lenguajes de programación con sus pares de librerías para el back-end:   

- Node.js: Express.js - Nest.js.

- Python: Flask - Django - Fast API. 

- Ruby: Ruby on Rails.

- PHP: Laravel - Synfony.

- Java: Spring.

- C++ y #C: .NET

- Go: Fiber.

- Elixir: Phoenix.

## Objetos relacionales de mapeo (ORM) :

Estos van a establecer una estructura ya desarrollada para obtener muestras de datos, es decir, nuestras peticiones a la base de datos.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/x4pfqbyqo9m5rexu5rhi.png)


Menciono algunas con su referente lenguaje de programación:

- JavaScript: Mongoose - Sequelize - TypeORM.

- Java: Hibernate.

- PHP: Doctrine.

- .NET: Dapper.

- Python: Django (esta librería ya incorpora un ORM).

Como podemos ver, en el back-end existe un universo de conceptos y herramientas con las cuales podemos construir ese puente de comunicación entre los datos y los clientes y que nos van a permitir hacer aplicaciones más eficientes; todo va a depender del tipo de arquitectura que estemos construyendo y  con el lenguaje de programación con que lo estemos haciendo.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/62nle4v417dxbuqsk8xq.png)


Este fue un artículo a modo introductorio, ya que en los próximos continuaremos en el lado del back-end, pero desarrollando más en profundidad cada una de las partes mencionadas aquí.    

> La tecnología que utilizas no impresiona a nadie. La experiencia que creas con ella lo es todo. Sean Gerety 

Nos vemos en un siguiente artículo. 
Un fuerte abrazo y saludos...