Aprender desarrollo web Backend puede ser una tarea simple siempre y cuando se tenga la ruta correcta, es por esto que en este video les mostraré un listado de tema, y tratando de darselos en orden para que puedan ir conociendo más temas que puede ayudarlos a mejorar profesionalmente como desarrolladores backend.
Consideraciones de este Roadmap
- No esta enfocado a algun lenguaje de programación en especifico.
¿Qué es un desarrollador web Backend?
La responsabilidad principal de un desarrollador web Backend es crear logica principal de la aplicacion del servidor.
Lo que hace un desarrollador backend:
- administra base de datos
- Desarrollo de APIs
- Administra servidores
- Seguridad de la aplicacion
Conceptos Basicos de tu Lenguaje de programación
- Bases de tu lenguaje
- sintaxis basica (condicionales, bucles, funciones)
- Paquetes o bibliotecas de tu lenguaje: http, net, tcp, archivos del sistema
- adminitrador de paquetes:
- Python: pip, conda
- JavaScript (Node.js): npm, yarn, pnpm
- Ruby: RubyGems, Bundler
- PHP: Composer
- Rust: Cargo
- Java: Maven, Gradle
- C# (.NET): NuGet
- C/C++: vcpkg, Conan
- Haskell: Cabal, Stack
- Elixir: Mix
- Perl: CPAN
- Swift/Objective-C (iOS/macOS): CocoaPods, Carthage, Swift Package Manager
- Dart/Flutter: Pub
Framework de Backend
Una vez se estudia las bases del lenguaje es pasar a usar un Framework, la razon de esto es que no es necesario que para cada proyecto nuevo pasemos horas inventando bibliotecas para organizar archivos, o procesar datos usando HTTP, todas las aplicaciones necesitan de lo mismo, es por eso que un Framework ya resuelve estas cosas para que nosotros nos enfoquemos en la logica de la aplicacion principalmente.
En muchos framewors existen conceptos como:
Rutas o Endpoints: Definen los puntos de acceso a la aplicación y se asocian con funciones específicas del servidor para procesar las solicitudes HTTP. Las rutas guían cómo debe responder la aplicación a una petición en una URL particular.
Request y Response: Son los objetos fundamentales en el manejo de HTTP. El request (solicitud) contiene la información enviada por el cliente al servidor, como datos de formulario, parámetros en la URL, encabezados, etc. El response (respuesta) es lo que el servidor envía de vuelta al cliente, como datos, estado HTTP y encabezados.
Parámetros: Son valores que se pueden pasar a las rutas o endpoints. Pueden ser parte de la URL (parámetros de ruta), parámetros de cadena de consulta (query parameters), o incluso venir en el cuerpo de una solicitud POST.
Middleware: Son funciones que se ejecutan entre la solicitud del cliente y la respuesta del servidor. Pueden realizar operaciones como autenticación, registro, manejo de errores, etc., y pueden modificar los objetos de solicitud y respuesta.
Manejo de errores: Refiere a cómo la aplicación captura y responde a los errores que ocurren durante la ejecución. Un buen manejo de errores puede proporcionar respuestas útiles a los clientes y ayudar a los desarrolladores a diagnosticar problemas.
Códigos de estado HTTP: Son códigos de respuesta estándar en el protocolo HTTP que indican el resultado de una solicitud. Los códigos de estado como 200 (OK), 404 (Not Found), y 500 (Internal Server Error) son comunes.
Validaciones de datos: Son técnicas para asegurar que los datos entrantes (por ejemplo, desde formularios) cumplan con los requisitos esperados antes de procesarlos. La validación puede incluir comprobar la presencia, el formato y la lógica de negocio de los datos.
ORM (Object-Relational Mapping): Técnica de programación para convertir datos entre sistemas de tipo incompatible usando lenguajes de programación orientados a objetos, facilitando el trabajo con bases de datos.
CORS (Cross-Origin Resource Sharing): Mecanismo que permite que los recursos de una página web sean solicitados desde un dominio diferente al dominio del recurso que los sirve. Es crucial para la seguridad y la flexibilidad en el acceso a recursos entre dominios.
Autenticación y Autorización: La autenticación verifica la identidad de un usuario, mientras que la autorización determina sus permisos. Juntos, estos procesos controlan el acceso a recursos y operaciones en la aplicación.
Sesiones y Tokens: Mecanismos para mantener el estado de la autenticación del usuario entre múltiples solicitudes HTTP. Las sesiones suelen almacenarse en el servidor, mientras que los tokens, como JWT (JSON Web Tokens), se envían al cliente.
Caché: Almacenamiento temporal de datos para reducir el tiempo de acceso a estos. La caché puede existir en varios niveles, como el navegador del cliente, el servidor web o la base de datos, y mejora significativamente el rendimiento de la aplicación.
Logging: Proceso de grabar eventos, como transacciones, errores y operaciones significativas, en un archivo o sistema de gestión de logs. Es esencial para el monitoreo, la depuración y el análisis de seguridad de la aplicación.
Internacionalización (i18n) y Localización (l10n): La internacionalización es el proceso de diseñar una aplicación para que pueda adaptarse a diferentes idiomas y regiones sin cambios de ingeniería. La localización es el proceso de adaptar la aplicación para una región e idioma específicos.
API Rate Limiting: Restringe el número de solicitudes que un usuario puede hacer a una API en un período determinado. Ayuda a prevenir el abuso de la API y garantiza la equidad en el uso de recursos entre los usuarios.
Archivos estáticos y Servicio de contenido multimedia: Manejo de archivos que no requieren procesamiento por parte del servidor, como imágenes, hojas de estilo CSS y archivos JavaScript. Estos archivos son esenciales para la carga de recursos en aplicaciones web.
Configuración y Gestión de entornos: Se refiere a la práctica de manejar diferentes configuraciones para diversos entornos (desarrollo, prueba, producción), lo
Hay Frameworks en todos los lenguajes de programación.
JavaScript/Node.js
- Express.js
- NestJS
- Koa.js
- Fastify
Python
- Django
- Flask
- FastAPI
Ruby
- Ruby on Rails
- Sinatra
PHP
- Laravel
- Symfony
- CodeIgniter
Java
- Spring Boot
- Jakarta EE (anteriormente Java EE)
- Quarkus
- Micronaut
C# (.NET)
- ASP.NET Core
Go
- Gin
- Echo
- Fiver
Rust
- Actix Web
- Rocket
- Warp
Elixir
- Phoenix
Scala
- Play Framework
- Akka HTTP
Kotlin
- Ktor
- Spring Boot (también popular en Kotlin)
Base de datos
Cauando hablamo de bases de datos para desarrollo web Backend hay algunas opciones que son comunes, ya sea tanto en bases de datos relacionales como No Relacionales.
SQL (Relacionales)
- MySQL: Muy popular en aplicaciones web, ampliamente utilizado en combinación con PHP.
- PostgreSQL: Conocido por su conformidad con los estándares y extensibilidad.
- SQLite: Ligera, sin servidor, ideal para desarrollo local y aplicaciones pequeñas.
- Microsoft SQL Server: Ampliamente utilizado en entornos empresariales.
- Oracle Database: Muy utilizado en aplicaciones corporativas de gran escala.
- MariaDB: Un fork de MySQL, creado por los desarrolladores originales de MySQL.
NoSQL
- MongoDB: Orientada a documentos, popular por su flexibilidad y escalabilidad.
- CouchDB: Basada en documentos, utiliza JSON para almacenar datos.
- DynamoDB: Servicio de base de datos NoSQL ofrecido por Amazon Web Services.
- Cassandra: Altamente escalable, diseñada para manejar grandes cantidades de datos distribuidos.
- Redis: Almacenamiento de estructura de datos en memoria, utilizado como base de datos, caché y broker de mensajes.
- Neo4j: Base de datos de grafos, enfocada en relaciones entre datos complejos.
- Elasticsearch: Orientada a la búsqueda, popular para búsquedas de texto completo y análisis de logs.
APIs de Backend
Una vez teniendo las bases del framework y una base de datos ya podemos desarrollar APIs.
De hecho cuando hablamos de API, estamos refiriendonos a un concepto muy generico que basicamnete involucra a dos sistemas distintos y como se pueden comunicar.
aqui en el backend es lo mismo, desarrollamos una API para que pueda comuncar el frontned con la base de datos.
pero para
- REST APIs
- JWT (JSON Web Tokens): Un estándar abierto (RFC 7519) que define una forma compacta y autónoma para transmitir información de forma segura entre partes como un objeto JSON.
- OAuth y OAuth2: Protocolos de autorización que permiten a las aplicaciones terceras acceder a información del usuario sin necesidad de conocer su contraseña, mejorando la seguridad.
- APIs versión: Estrategias para versionar APIs, permitiendo que las mejoras y cambios no rompan las aplicaciones cliente existentes.
- tRPC
- GraphQL
- WebSockets: Tecnología que permite la comunicación bidireccional en tiempo real entre el cliente y el servidor sobre una única conexión persistente.
- gRPC
Optimizaciones
- Testing
- Documentacion
- Caching: Técnicas y herramientas para almacenar temporalmente datos para reducir tiempos de carga y mejorar el rendimiento de las aplicaciones.
- Seguridad: Conceptos como inyección SQL, XSS (Cross-Site Scripting), CSRF (Cross-Site Request Forgery) y manejo seguro de contraseñas son fundamentales para desarrollar aplicaciones seguras.
- Logging y monitoreo: Prácticas y herramientas para registrar y monitorear el comportamiento de las aplicaciones, fundamentales para la detección de problemas, la seguridad y la optimización del rendimiento.
- Git
Computacion en la nube
- Servicios por parte de la Nube como:
- VPS
- VPN
- Almacenamiento en la nube
- CDN (Content Delivery Network): Uso de redes de entrega de contenido como Amazon CloudFront para distribuir contenido de manera eficiente a usuarios finales con alta disponibilidad y alta velocidad.
Automatización de Infraestructura: Herramientas como Terraform o AWS CloudFormation para implementar y gestionar infraestructura como código, permitiendo la creación reproducible y automatizada de entornos.
Seguridad en la Nube: Best practices para asegurar aplicaciones y datos en la nube, incluyendo la encriptación de datos en reposo y en tránsito, y el uso de políticas de seguridad.
- CI/CD (Continuous Integration/Continuous Delivery): Prácticas de desarrollo de software diseñadas para mejorar la calidad del código y facilitar el despliegue continuo a través de la automatización de pruebas y despliegues.
- Docker y contenedores: Plataformas y conceptos para empaquetar y distribuir aplicaciones y sus dependencias en contenedores ligeros y portables, lo que facilita la continuidad entre entornos de desarrollo, prueba y producción.
- Contenedores orquestación: Herramientas como Kubernetes y Docker Swarm que permiten gestionar la implementación, escalado y operaciones de contenedores de aplicaciones a gran escala. Balanceo de carga: Técnicas y herramientas para distribuir el tráfico de red o solicitudes entre varios servidores, mejorando la disponibilidad y la escalabilidad de las aplicaciones.
Serverless y FaaS (Function as a Service): Modelos de computación en la nube que permiten a los desarrolladores construir y ejecutar aplicaciones y servicios sin tener que gestionar la infraestructura subyacente.
- API Gateway: Un servidor que actúa como una puerta de entrada única para manejar solicitudes a microservicios, proporcionando una capa de abstracción y seguridad.
- Cron Jobs
Arquitectura
- Microservicios: Arquitectura de diseño de aplicaciones como una colección de servicios pequeños y autónomos, cada uno corriendo en su propio proceso y comunicándose mediante mecanismos ligeros, a menudo una API HTTP.
Herramientas y protocolos como RabbitMQ, Kafka, y otros sistemas de colas de mensajes que facilitan la comunicación entre diferentes partes de una aplicación, especialmente en arquitecturas de microservicios.
Message Brokers
Conceptos y metodologias
Patrones de Diseño: Conceptos como Singleton, Factory, Strategy, y Observer, entre otros. Estos patrones proporcionan soluciones a problemas comunes en el diseño de software y son cruciales para escribir código reutilizable y mantenible.
Principios SOLID: Un conjunto de cinco principios de diseño orientado a objetos que facilitan el desarrollo de software entendible, flexible y mantenible. Son fundamentales para la arquitectura de software de alta calidad.
Desarrollo dirigido por pruebas (TDD): Una práctica de desarrollo de software en la que los requisitos se convierten en casos de prueba específicos antes de que el software sea mejorado, promoviendo un diseño de software mejor y más confiable.
Principios de Twelve-Factor App: Metodología para construir aplicaciones de software como servicio (SaaS) que enfatiza la portabilidad, escalabilidad, y la independencia de entornos, crucial para aplicaciones modernas en la nube.