Sobre las actualizaciones en Elasticsearch

Si estás trabajando con elasticsearch muy posiblemente te hayas dado cuenta de que Elastic publica versiones nuevas con bastante frecuencia. Para tener un poco más de contexto, veamos lo que han hecho otros sistemas de bases de datos en el último año, fijándonos en sus versiones más recientes:

MESCassandraElasticOracleMySQLMSSQLPostgreSQL
2019-Nov7.5.02019 RTM12.1
2019-Dic7.5.18.0.19
2020-Ene7.5.219.6.0.02019 CU1
2020-Feb3.11.67.6.0, 7.6.12019 CU212.2
2020-Mar7.6.28.0.202019 CU3
2020-Abr19.7.0.02019 CU4
2020-May7.7.0, 7.7.112.3
2020-Jun7.8.08.0.212019 CU5
2020-Jul3.11.77.8.119.8.0.0
2020-Ago3.11.87.9.02019 CU612.4
2020-Sep7.9.1, 7.9.28.0.222019 CU712.5, 13.0
2020-Oct7.9.32019 CU8
2020-Nov3.11.97.10.019.9.0.013.1
TOTAL4154497

Elasticsearch destaca con 15 publicaciones, más de una al mes! SQL Server y PostgreSQL le siguen con 9 y 7 publicaciones respectivamente. El resto de bases de datos tienen una media de una por trimestre.

Versiones en Elasticsearch

Veamos con un ejemplo cómo se definen cada una de las partes de una versión en Elasticsearch:

Ejemplo de versión de Elasticsearch

Quizás hayas podido comprobar que a veces una actualización, dentro de la misma major version por ejemplo dentro de 6.X, ha podido traer problemas de incompatibilidad. Estos problemas pueden ocurrir entre los mismos componentes de la familia de productos elastic, ELK stack, o simplemente con la aplicación que usa elasticsearch. Algo que funcionaba antes, ha dejado de funcionar después de aplicar una actualización menor. El motivo más que probable, pudo haber sido un cambio de compatibilidad, un breaking change.

En general, en otras bases de datos, estas rupturas de compatibilidad suelen ocurrir con cambios mayores de versión. Es decir, en cierta manera podríamos considerar un minor upgrade de elasticsearch equiparable a una actualización mayor de otra base de datos.

Elastic compensa este posible efecto de los minor upgrades con su política de mantenimiento (que veremos un poco más adelante) y con una buena cantidad de documentación para ayudarnos en el proceso de actualización.

Los pasos generales que debes seguir cuando vayas a hacer una actualización en elastic:

Preparación

En general se deben seguir estos pasos como parte de la preparación de una migración de Elastic:

  • Comprobar el registro de deprecación, deprecation log. Esto lo puede proveer un DBA.
  • Revisar los cambios de compatibilidad, breaking changes, de cada una de las versiones desde la versión actual hasta la versión objetivo. Documentado en la página oficial de cada versión. Ej: 7.10.
  • Buscar el código afectado en función de los dos puntos anteriores, y adaptarlo.

En ciertos casos puedes tener que hacer reindexado de indices creados en una versión anterior. Elastic acepta indices de la major version anterior, pero no dos versiones anteriores. Por ejemplo:

  • Los indices de la versión 6.X son compatibles en 7.X, pero los de la versión 5.X no son.
  • Los índices creados en la versión 7.X serán compatibles en la versión 8.X, pero los de la versión 6.X no lo serán.

Actualización

  • Probar la actualización en un entorno local o de desarrollo.
  • Hacer una copia de seguridad de los datos.
  • Parar jobs de Machine Learning.
  • Actualizar los componentes del ELK stack en este orden:
    1. Elasticsearch Hadoop
    2. Elasticsearch
    3. Kibana
    4. Logstash
    5. Beats
    6. APM Server
  • Actualices los drivers de cada aplicación que se conecten a elastic (o sus componentes).

Política de mantenimiento

Recordemos los dos factores principales que hemos visto hasta ahora:

  1. Frecuencia de publicaciones de versiones menores en el último año: 15, siendo 6 de ellas minor upgrades.
  2. Cada minor upgrade tiene normalmente varios breaking changes, cambios de ruptura de compatibilidad.

Elastic reconoce en su Política de Mantenimiento que no todos los usuarios pueden mantener su ritmo de minor upgrades. Es por esto que Elastic también mantiene actualizada la rama de la minor version de su versión mayor anterior. Esto es con el ejemplo actual:

  • Versión actual: 7.X (7.10.0 publicada el 5-Nov-2020)
  • Versión anterior: 6.8.X (6.8.13 publicada el 15-Oct-2020)

Resumen

Con lo explicado hasta aquí, ya podrás sacar tus propias conclusiones y tener criterio a la hora de decidir en lo referente a actualizaciones de elastcisearch. Sin duda, para muchos usuarios, el momento de actualizar a 7.X llegará cuando se publique la versión 8.0.0. Si estáis en ese grupo…¡Avisados quedáis!

Espero que el artículo te haya servido de ayuda ¡Hasta la próxima!

Enlaces relacionados

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Salir /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s