En un blog anterior te enseñamos La ruta del programador frontend y la comunidad nos estuvo pidiendo la continuación: La ruta del backend. Así que ponte cómodo porque esta ruta es un poco más compleja y puede marearte, así que muy atento.
1. Backend y frontend
Lo primero es recordar las bases, ¿qué es backend y qué es frontend? Backend, es lo que el usuario no ve, donde está toda la lógica de negocio y el funcionamiento de la aplicación, mientras que frontend es lo que ve el usuario en su pantalla y con lo que puede interactuar. Si lo comparamos con un restuarante, la cocina sería el backend, las mesas donde están los clientes sería el frontend y los meseros sería la API que conecta las peticiones de los clientes con lo que se entrega en el servidor (en la cocina).
Entonces en el backend, está la lógica de negocio, mientras que en el frontend está la interacción con los usuarios. Pero a esto tenemos que añadirle una capa más, esa capa son las bases de datos. Porque las aplicaciones necesitan un lugar donde guardar los datos de nuestros cursos, de nuestros clientes, compras, etc.
Así que backend también tiene que comunicarse con la base de datos o DB en inglés. Entonces, esa sería la estructura: frontend, backend y base de datos.
Generalmente, se mete a la base de datos dentro de la parte del backend, lo cual no está mal, pero es bueno recordar que existe un profesional exclusivo de la base de datos llamado DBA o Database Administrator. Hecha esta aclaración, tenemos: 1. capa de datos, 2. lógica de negocio y 3. las pantallas en las que ocurre la interacción con el usuario. Esa es la arquitectura web super resumida, es mucho más complejo, pero resumido: datos, lógica de negocio y pantallas o vistas.
2. Bases de datos
Lo primero son las bases de datos, porque sin datos no hay aplicación. Tú podrías programar una aplicación donde la información se guarda en memoria, no en RAM, pero cada vez que inicies la aplicación de nuevo toda la información se pierde, así que comencemos por la capa de los datos.
Las bases de datos las hay de 2 tipos, base de datos SQL y base de datos no SQL. Tenemos un blog en el que te explicamos todas las diferencias con muchos ejemplos y detalles que puedes ir a ver luego, pero para resumírtelo las bases de datos SQL organizan la información en tablas tipo Excel mientras que las no SQL las organizan de diferentes maneras según el tipo de uso. Las pueden organizar, por ejemplo, en documentos, en nodos que luego se conectan entre ellos, en diccionarios y hay muchas maneras más que te explicamos en el blog que te mencioné arriba.
Las bases de datos más usadas son las SQL, las no SQL aunque se usan un poquito menos, tienen muchas ventajas en ciertos escenarios.
Bases de datos SQL
Las SQL se llaman así porque utilizan un lenguaje llamado SQL, que es structure query language o lenguaje de consulta estructurado. Ese lenguaje SQL te permite crear tus tablas (Recuerda que la información se organiza en tablas en estas bases de dato), llenar la información, leerla, actualizarla, modificarla e incluso eliminarla, y también asignar o retirar permisos de acceso.
Todo eso lo haces con SQL y hay varios motores de base de datos que utilizan este lenguaje. Los más conocidos son los siguientes:
- MySQL, es uno de los más conocidos y es open source.
- Postgres, la que usamos en EDteam, también es open source
- Oracle, que es Enterprise para grandes empresas con costos altos, pero que incluye soporte de expertos.
- SQL Server que es la propuesta de Microsoft
Bases de datos noSQL
Por el lado de las no SQL tenemos:
- MongoDB, es el mas conocido
- Redis
Ahora ya conoces las bases de datos. ¿Nuestra recomendación? Aprende SQL, porque con SQL te puedes mover entre cualquiera de estos motores de base de datos.
¿Un backend debe saber SQL?
Por supuesto que sí. Hay un profesional llamado DBA, que es el experto en las bases de datos. Así que un backend no necesariamente debería ser súper experto en base de datos. Es algo así como en el frontend, muchos saben poco de CSS y HTML (aunque no lo creas). Muchísimos saben lo mínimo, porque eso ya va para otro tipo de profesional, pero sí deben saber, por lo menos las bases. Lo mismo en el backend, debes saber las bases de SQL.
3. Lenguajes de Backend
A diferencia del frontend, donde todo está limitado a HTML, CSS y JavaScript (porque son los únicos 3 lenguajes que funcionan en el navegador), en el backend no, porque qué es el backend sino un servidor, ¿y qué cosa es un servidor? Una computadora con un sistema operativo que en el 99% de los casos es un sistema Linux. Entonces todo lenguaje que pueda funcionar en esa computadora ya puede utilizarse como lenguaje de backend, siempre y cuando pueda entregar datos al frontend.
Los lenguajes principales para el backend son:
- Al viejo PHP tan querido y tan odiado por la comunidad y a la vez amado.
- Java, otro que genera sentimientos encontrados, gente que lo ama y gente que lo detesta.
- Python, tiene un gran uso en el mundo web y el machine learning.
- Javascript, que desde el 2009 se convirtió en un lenguaje de backend gracias a Node.js.
- [Go],(https://ed.team/cursos/go) el lenguaje que utilizamos en EDteam.
- También tenemos a Ruby
- Y el lenguaje favorito de Microsoft, C#.
Si quieres dominar estos lenguajes puedes aprenderlos en EDteam 😉. Mira las primeras clases gratis y comprueba que en español #NadieExplicaMejor que EDteam 💻 ed.team/cursos
Y esos son los lenguajes más usados en el mundo backend. Recuerda que el backend en realidad es la lógica de negocio. Por lo tanto, si luego vas a crear una aplicación móvil. La aplicación móvil se va a conectar también a este backend.
4. Funciones de un backend
La lógica de negocio
Son las funcionalidades que debe tener la app. Pongamos como ejemplo a EDteam, un usuario debe poder ver cursos, comprar cursos, debe poder editar su perfil, cambiar su contraseña y así podemos seguir. Entonces, todas esas funcionalidades son las que crea el equipo de backend, ¿y que hace frontend? Crea la interfaz gráfica, es decir las pantallas para que el usuario pueda editar su perfil, pueda comprar el curso, pueda ver los cursos, etc.
Frontend crea las pantallas para que esto sea fácil de hacer por los usuarios, pero realmente está ocurriendo en el backend, por eso le llamamos lógica de negocio.
Entonces, si nosotros necesitamos que los usuarios puedan regalar cursos a sus amigos, es decir, comprar para otras personas, comienzan en backend, se plantea cómo van a hacer que funciones necesita, qué información necesita en base de datos, etc. Hace todo el proceso y luego frontend hace las pantallas para ese proceso, independientemente del lenguaje que utilices.
Seguridad
Otra función muy importante del backend es la seguridad, porque frontend no se comunica con la base de datos porque sería muy vulnerable el sistema, ya que HTML, CCS y JavaScript están en el navegador y cualquier persona con los conocimientos suficientes se mete al navegador, edita el código, lo lee y descubre información privada que no debería ser pública, y ahí vienen los hackeos. Por eso la conexión con base de datos y la seguridad es labor del backend.
5. Los ORM (Object Relacional Mapping)
Hay dos maneras de conectarse a la base de datos:
- Directamente con SQL, escribes SQL y te conectas a la base de datos
- Usas un atajo llamado ORM
¿Qué es un ORM? Es un puente entre los lenguajes de programación y la base de datos para que el programador no tenga que aprenderse SQL.
Supongamos que quieres conectar PHP a una base de datos. Necesitarías saber SQL, pero si no sabes o quieres hacerlo más rápido puedes usar un ORM. Esto permite que el programador se conecte a la base de datos, no con SQL, sino con el mismo PHP, y este ORM tranforma en lenguaje a SQL.
6. Frameworks backend
¿Cómo comunicamos el backend con el frontend? Una forma que es la que ya te he dicho, son las APIs. A través de ella el backend le entrega la información frontend para que con esa información, construya desde cero las interfaces.
Imagínate que tengamos una lista de usuario. Backend entrega la lista de usuarios y listo, frontend la recibe y empieza a construir una pantalla donde estén todos los usuarios.
La otra forma es que backend le envíe el HTML a frontend, a eso le llamamos vistas. Entonces tenemos dos escenarios:
- El escenario en el que backend envía la API y ahí y se desentiende completamente de cómo será la interfaz.
- Y la otra forma en que backend, entrega las vistas, a esta forma le podemos llamar Fullstack, no es un término 100% aceptado, pero es un término para entendernos.
Independientemente de la forma que tú utilices, puedes hacerlo con el lenguaje puro, que es bastante tedioso o puedes utilizar frameworks, eso es lo ideal.
- En el caso de PHP, el framework más usado es sin duda Laravel.
- Para Java tenemos a Sprint
- Para Python, tenemos a Flask y a Django, los dos con casi el mismo nivel de uso.
- En Javascript, tenemos a Node.js (un round time ) donde corren frameworks como Express, ahí también podemos ver a Nuxt, a Next y otras soluciones. Pero aunque Node.js, no es un framework, es vital ponerlo en el backend de JavaScript, porque sin eso no funciona.
- Go que usa frameworks como Echo y Búfalo.
- Ruby usa Ruby on Rails.
- Y C# que usa ASP.NET
Entonces resumiendo, lo que deberías aprender para ser un backend developer es:
- SQL
- Un lenguaje de programación (los que te recomendados)
- Conocer un ORM que te va a ayudar a trabajar más rápido sin descuidar el aprendizaje de SQL.
- Y con eso puedes crear una API o puedes crear las vistas utilizando un framework de tu lenguaje favorito.
Y amigos y amigas mías, esta es tu ruta para ser backend. Si te has mareado con tantas tecnologias y lenguajes puedes volver a leer el blog, tomar nota y empezar a aprender con los cursos en EDteam, por qué en español #NadiExplicaMejor.