Prueba

Stack tecnológico backend recomendado para este 2024

//Arteco - Tecnologías de la información
  • :)
  • :0
  • :D
  • ;)
  • :]
foto Ramón Arnau

Ramón Arnau

Gerente de Arteco Consulting SL

Desde Arteco hacemos mucha vigilancia tecnológica para que las aplicaciones sean eficientes, robustas y fáciles de mantener. ¡Descubre nuestra selección para backend!

En Arteco Consulting, estamos comprometidos con la implementación de las mejores prácticas y tecnologías para asegurar el éxito de nuestros proyectos. Para el año 2024, recomendamos el siguiente stack tecnológico para aplicaciones de gestión estándar, diseñado para proporcionar robustez, escalabilidad y eficiencia en el desarrollo de aplicaciones.

Arquitectura de aplicaciones SPA

Nuestra recomendación es aplicar patrones de aplicaciones SPA (Single Page Applications, o aplicaciones de una sola página, son aquellas en las que toda la interfaz de usuario (UI) se entrega al navegador del usuario). Separar la interfaz de usuario (UI) y el servidor API REST proporciona numerosos beneficios que mejoran tanto el desarrollo como el mantenimiento de aplicaciones. Al mantener estas capas separadas, se logra una mayor flexibilidad y escalabilidad, permitiendo que los equipos de frontend y backend trabajen de manera independiente y se especialicen en sus respectivos ámbitos. Esto facilita el desarrollo paralelo y acelera el tiempo de entrega. Además, una arquitectura desacoplada mejora la seguridad al restringir el acceso directo a los datos y la lógica del servidor, permitiendo implementar políticas de seguridad más estrictas. También ofrece la posibilidad de reutilizar y compartir la API con diferentes clientes (como aplicaciones móviles, web y de escritorio), promoviendo la consistencia y reduciendo la duplicación de esfuerzos. Finalmente, al aislar la lógica de negocio en el servidor, se simplifica la actualización y el mantenimiento del sistema, ya que las modificaciones pueden realizarse en un solo lugar sin afectar a la interfaz de usuario.

¿Qué componentes necesitamos para ello? Aquí te contamos cómo lo hacemos desde Arteco.

Base de Datos: PostgreSQL

PostgreSQL es nuestra elección para la gestión de bases de datos debido a su fiabilidad, robustez y amplia funcionalidad. Ofrece un excelente rendimiento, soporte para JSON y capacidades de extensibilidad que lo hacen ideal para aplicaciones modernas. Totalmente adaptado a entornos tanto Cloud como On-premise.

Backend: Spring Boot

Spring Boot es nuestra tecnología de referencia para el desarrollo de APIs REST por su rapidez y facilidad de configuración. Con este framework se puede levantar una aplicación Java que devuelva JSON validado y conectado a una base de datos como PostgreSQL en cuestión de minutos. Adicionalmente, lo acompañamos con las siguientes librerías para llevar la productividad al siguiente nivel:

Construcción con Maven: Organizar el proyecto en dos módulos

Aunque Maven puede considerarse un sistema de construcción algo antiguo, nos encanta la forma en que obliga a que los proyectos tengan una misma estructura, hecho que preferimos cuando hay que mantener muchas aplicaciones. Normalmente separamos los proyectos en al menos dos módulos:

  1. model: Contiene las entidades JPA.
  2. api: La aplicación Spring Boot con la última versión del JDK estable disponible.

Acceso a base de datos: Utilizar Spring Data JPA Repositories

Para facilitar las operaciones CRUD (Create, Read, Update y Delete). Los repositorios de Spring Data ofrecen servicios de forma nativa como paginado y trabajo de registros por lotes grandes.

Seguridad: Implementar Spring Security

Spring Security es el proyecto oficial para incorporar seguridad dentro de cualquier aplicación Spring. Al recomendar una arquitectura de microservicios, lo ideal es implementar accesos mediante JWT para garantizar la seguridad de la aplicación.

Documentación de API

Usamos OpenAPI con Spring Doc para generar documentación de forma automática en base a anotaciones de los controladores de Spring. Además, OpenAPI nos permitirá generar de forma automática también el código del cliente.

Consultas a base de datos tipadas

Si no conoces el proyecto QueryDSL, no tardes en aprenderlo e incorporarlo a todos tus proyectos. Evitarás el uso de strings en las consultas al utilizar atributos y métodos para definir queries complejas. Así, cada vez que se refactorice el modelo JPA, el compilador te ayudará, mucho antes de ver el error en ejecución.

Migraciones de Base de Datos

Lógicamente, no nos gusta ejecutar sentencias SQL del tipo DDL en producción. Para ello, usamos la gestión de la ejecución de scripts a través de Flyway para tener entornos deterministas y estables entre entornos.

Código Limpio con Lombok

Las anotaciones de Lombok generan código Java por nosotros (como los getters y setters, entre otras funcionalidades), dejando las clases del modelo limpias como patenas.

Controladores REST con vistas JSON

Este punto requiere de experiencia. Lo habitual es crear clases simples (DTO, Data Transfers Object) que solo contienen los getters y los setters de las propiedades que queremos que se publiquen hacia afuera de los controladores. Sin embargo, nosotros, para simplificar y acortar tiempos y de una manera muy supervisada, sacamos las entidades JPA directamente hacia afuera allí donde sea viable usando las vistas de JSON. Eso simplifica el desarrollo y acorta el tiempo de incluir nuevas funcionalidades.

Conversión de DTO a Entities JPA: Mapstruct

No siempre es posible hacer vistas JSON, y cuando no se puede, usamos Mapstruct para traspasar la información de las entidades privadas a los DTO públicos que saldrán en las respuestas de los controladores. ¡Es altamente eficiente ya que no usa reflexión!

Testing para verificar que el código es correcto

Siempre exigimos que la capa de servicio tenga una cobertura del 100% de las líneas de código y de los casos de uso. Para ello usamos cualquier combinación de las siguientes librerías: JUnit, Mockito, y MockMVC.

Despliegues: Kubernetes nuestro aliado

Siempre que la infraestructura del cliente lo permite, usamos Kubernetes (K8S) para desplegar todos los servicios como el API, el frontend y la base de datos. Kubernetes es un gran aliado para no depender de ningún proveedor cloud y es un trabajador incansable para asegurar que las aplicaciones se mantienen en ejecución sin cortes del servicio.

Este stack tecnológico está diseñado para ofrecer un desarrollo eficiente y mantener un alto estándar de calidad en nuestros proyectos. En Arteco Consulting, estamos comprometidos con la innovación y la excelencia, y este stack es un reflejo de esa filosofía.

❤️ Si te ha gustado el post y lo has encontrado útil, háznoslo saber y haremos más como este, trasladando la experiencia que tenemos acumulada en 20 años de desarrollo con Java y HTML.

Mantente Conectado

Newsletter

¡Mantente al día con lo último en tecnología y negocios! Suscríbete a nuestra newsletter y recibe actualizaciones exclusivas directamente en tu correo.

Reunión Online

No dejes pasar la oportunidad de explorar nuevas posibilidades. ¡Agenda una reunión online con nosotros hoy y comencemos a construir juntos el futuro de tu negocio!

  • :)
  • :0
  • :D
  • ;)
  • :]