¿Cómo podemos migrar una aplicación Spring a la nube? ¿Cómo lo está haciendo en la actualidad la comunidad de desarrolladores y qué problemas se están encontrando?
Desde el blog oficial de Azure se hicieron estas preguntas y decidieron lanzar una encuesta anual entre los asistentes al evento Spring One 2021 siguiendo la estela de estudios anteriores como The State of Spring 2021 y 2020, que analizan anualmente el estado de Spring.
Los resultados se publicaron en el blog de Azure a principios de diciembre de 2021, por lo que son perfectamente aplicables en 2022. Si estás valorando Spring Boot y/o estás preparando una migración de estas características, probablemente te interesen los aspectos claves que desgranamos en este post sobre cómo lo están haciendo los desarrolladores que ya están dando este paso.
En la encuesta de Microsoft participaron 260 profesionales asistentes al evento Spring One 2021, de los que se estima que alrededor del algo más de la mitad (55%) eran desarrolladores puros y duros. El resto se reparten entre un perfil de Arquitectos/Jefe de equipo (28%) y una miscelánea (17%) entre perfiles de negocio, infraestructura y ejecutivos.
Aunque este número no es desdeñable y nos puede servir para hacernos una idea, queda bastante por debajo de los 1586 profesionales que participaron en The State of Spring 2021. Probablemente en sucesivas ediciones se conseguirá ir ampliando el espectro de participación.
Adopción de Spring Boot y migración a la nube
La adopción Spring Boot aumenta cada día, así que es inevitable que nos acompañe en el salto a la nube. Y no lo decimos nosotros, según The State of Spring 2021 (TSS21 de aquí en adelante) Spring Boot no para de crecer a la hora de ser adoptada como framework principal y ya lo usan el 62% de los encuestados (9 puntos más que en 2020) y el 91% lo considera mucho más productivo que otros frameworks de Java.
Curiosamente, el 75% de los encuestados indican que su principal fuente de aprendizaje de Spring es Stack Overflow. Una respuesta que, aún siendo esperada, no deja de ser sorprendente ya que todo el mundo sabe que la mejor forma de aprender es este curso de Spring Boot. Y ya no es solo por la calidad de lo que aprendes, sino por el tiempo que ahorras y la tranquilidad que te da tener un instructor de primer nivel dándote soporte. Y si la nube a la que estás pensando migrar es la de Azure, es que ni hace falta que te plantees buscar otro curso de Azure que no sea este 😉
De estos encuestados de TSS21, apenas un 3% están usando Spring Native porque aún no lo ven maduro aunque más del 96% están al tanto de que existe. Lo sí que ven con muy buenos ojos es Kubernetes ya que un 57% está ya usando este orquestador para sus aplicaciones Spring en contenedores. Lo cual nos da pie a recordarte que el mejor curso sobre Docker y Kubernetes está en campusMVP.
Un nivel muy similar de aceptación lo encontramos en la encuesta de Microsoft, ya que la principal solución elegida en la nube para ejecutar aplicaciones de Spring Boot es Kubernetes, seguido por las plataformas PaaS (Platform as a Service) de cada cloud en detrimento de las máquinas virtuales.
Principales dificultades a la hora de migrar apps de Spring
Las dificultades que suelen encontrarse los desarrolladores al irse al cloud las podemos categorizar en los tres grupos en que las han dividido en el estudio del blog de Azure:
- Migración de la tecnología partiendo de una app Spring
- Migraciones desde otra tecnología hacia Spring
- Aspectos clave de la migración al cloud
Migración de la tecnología partiendo de una app Spring
La principal dificultad que se encuentran los desarrolladores es migrar aplicaciones monolíticas de Spring Boot a aplicaciones cloud-friendly (33 %), pasar de versiones no compatibles de Spring Boot a versiones compatibles (20 %) y versiones no compatibles de componentes de Spring Cloud a versiones compatibles (20 %).
Migraciones desde otra tecnología hacia Spring
Ya comentamos el gran crecimiento en la adopción de Spring, y esto se refleja en el gran interés a la hora de migrar desde otros tipos de aplicaciones, donde va en cabeza la migración desde Java hacia Spring Boot con el 33%.
Aspectos clave de la migración al cloud
Hablando ya propiamente de la migración al cloud, la principal preocupación se centra en la migración de las bases de datos (30%), seguida muy de cerca por la monitorización end-to-end (24%) y el testing de las aplicaciones migradas (23%).
Herramientas de monitorización para migrar Spring al cloud
Aparte de la migración de los datos, la correcta monitorización end-to-end es uno de los principales quebraderos de cabeza.
Y esto no afecta solo a los desarrolladores, ya que también los equipos de DevOps, infraestructura y SRE (Site Reliability Engineering) se ven beneficiados al poder obtener datos muy valiosos para su desempeño diario.
Por no hablar de que redunda en la posibilidad de que los equipos de negocio puedan tomar las mejores decisiones basadas en datos.
Las herramientas AMP (Application Performance Monitoring) preferidas en este caso por los desarrolladores suelen ser las herramientas nativas del propio servicio cloud al que migren, seguidas por Prometheus y otras herramientas AMP tradicionales como Dynatrace, AppDynamics, Datadog o New Relic.
En cuanto a las herramientas de monitorización end to end para analizar grandes cantidades de logs, ganan Splunk y Elastic, y las herramientas nativas del cloud caen hasta el tercer lugar.
Los componentes de Spring Cloud más usados por los desarrolladores
Dado que en la mayoría de los casos se migran al cloud aplicaciones monolíticas que ya estaban hechas en Spring, los primeros puestos no han cambiado en los últimos tres años de encuestas de TSS21.
Así que ahí siguen Spring Cloud Config Server, Spring Cloud Gateway y Spring Cloud Service Registry, aunque se nota que la comunidad está explorando potenciales herramientas open source que les puedan ayudar en la tarea.
En conclusión
Spring Boot está imparable, no solo no para de crecer como framework a la hora de modernizar aplicaciones Java (o desarrollarlas de cero), sino que cada vez más desarrolladores y empresas están moviendo a la nube sus aplicaciones creadas en Spring apostando principalmente por Kubernetes y soluciones PaaS.
Si desarrollas en Java y aún no has probado Spring Boot, tal vez ha llegado el momento de darle una oportunidad.