¿Por qué AppDTE no utiliza Spring Boot?

 Durante los últimos años me han preguntado en varias ocasiones por qué AppDTE no fue desarrollado utilizando Spring Boot.

La respuesta es bastante simple.

Cuando conocí Spring Boot, AppDTE ya era un proyecto maduro.

Los primeros años

AppDTE no nació como una API REST.

Los primeros desarrollos fueron aplicaciones de escritorio utilizando Java Swing.

En aquella etapa el objetivo no era desarrollar una aplicación web, sino resolver un problema mucho más complejo: implementar correctamente la facturación electrónica chilena.

Con el tiempo el proyecto evolucionó hacia una arquitectura web utilizando Jakarta Servlets y JSP.

Posteriormente JSP fue reemplazado por Thymeleaf para simplificar la generación de las vistas administrativas.

La interfaz cambió varias veces, pero el verdadero desafío permanecía exactamente igual.


El verdadero problema nunca fue la aplicación web

Cuando se desarrolla una aplicación tradicional, gran parte del esfuerzo suele concentrarse en la interfaz de usuario.

En AppDTE ocurrió exactamente lo contrario.

La mayor parte del tiempo se destinó a implementar funcionalidades como:

  • Generación del XML conforme a los esquemas del SII.
  • Construcción del TED.
  • Firma electrónica mediante XML Digital Signature.
  • Validación de documentos XML.
  • Envío al Servicio de Impuestos Internos.
  • Recepción y procesamiento de respuestas.
  • Implementación de las reglas tributarias.

Toda esta lógica representa el núcleo del sistema.

La aplicación web simplemente expone esa funcionalidad.


La arquitectura evolucionó junto al proyecto

Con el tiempo la arquitectura quedó compuesta por componentes bastante simples:

  • Java SE
  • Jakarta Servlet
  • Thymeleaf
  • JDBC
  • Jetty embebido

No fue una decisión tomada para evitar frameworks.

Simplemente era una arquitectura que ya resolvía correctamente las necesidades del proyecto.


¿Y Spring Boot?

Cuando posteriormente comencé a trabajar con Spring Boot descubrí un framework muy completo y productivo.

Sin embargo, en ese momento AppDTE ya contaba con:

  • Una arquitectura estable.
  • Una capa de servicios consolidada.
  • Integración con el SII.
  • Firma electrónica.
  • Generación de XML.
  • API REST.
  • Interfaz administrativa.

Migrar todo el proyecto únicamente para utilizar otro framework no resolvía ninguno de los problemas reales del sistema.

El desafío seguía estando en la lógica tributaria y no en la tecnología utilizada para atender las solicitudes HTTP.


La tecnología debe responder al problema

Con frecuencia las discusiones técnicas comienzan preguntando:

¿Qué framework utilizaste?

En mi experiencia, la pregunta debería ser otra:

¿Qué problema intentabas resolver?

En AppDTE el problema nunca fue construir una aplicación web.

El verdadero desafío consistía en implementar correctamente la normativa de facturación electrónica chilena.

Una vez resuelto ese problema, la arquitectura basada en Servlets y Jetty continuó siendo una solución simple, estable y fácil de mantener.


Conclusión

Este artículo no pretende comparar Spring Boot con otras tecnologías.

Spring Boot es un excelente framework y resulta una muy buena alternativa para muchos proyectos.

Simplemente, AppDTE nació antes de que Spring Boot formara parte de mi experiencia como desarrollador, y durante su evolución la arquitectura basada en tecnologías estándar demostró ser suficiente para resolver las necesidades del proyecto.

Por esa razón decidí seguir evolucionando el núcleo de la aplicación, en lugar de dedicar tiempo a reescribir una arquitectura que ya funcionaba correctamente

Comentarios

Entradas populares de este blog

Boleta Electrónica en Chile: Los 3 Ambientes del SII para Desarrolladores

Configurando Servlets y JSP en Jetty

GUIA GENERAL DE GENERACION DE DOCUMENTOS TRIBUTARIOS ELECTRONICOS