En este post vamos a comparar los servicios Elasticsearch como SaaS con los que contamos en AWS. Elasticsearch se ha convertido en una de las herramientas más ampliamente usadas para desplegar diferentes capacidades de búsqueda en aplicaciones empresariales.
Elasticsearch fue lanzado como implementación open source por Shay Banon en 2010. Fundó la compañía de búsqueda Elastic en 2015 para vender una versión comercial a través de licenciamiento. Elasticsearch implementa motores de búsqueda optimizados para búsquedas «full text search». Pero Elasticsearch no sólo almacena texto, sino también logs, métricas, lo que permite la analítica del dato, monitorización de aplicaciones y analítica de seguridad.
Elasticsearch puede descargarse de manera gratuita e instalarse en diferentes plataformas en modo servicio o también dentro de contenedores docker. En entornos empresariales existe la posibilidad de desplegar Elasticsearch en Elastic Cloud Enterprise, que se encarga de orquestar múltiples clusters de Elasticsearch on-premise. Otra opción consiste en desplegar Elasticsearch en Kubernetes, a través de un operador de kubernetes creado por Elastic. Para instalar Elasticsearch como servicio gestionado en AWS hay dos enfoques diferentes:
Un tercer enfoque «auto-gestionado» sería instalar el software open source sobre una instancia EC2. Este último requiere más recursos de gestión y más technical expertise.
Amazon ES vs Elastic Cloud
Amazon ES Service y Elastic Cloud ofrecen funcionalidades similares pero difieren en puntos clave. Todas las capacidades son compartidas, como el soporte de Kibana. Kibana es la herramienta que utilizamos para analizar los datos indexados en Elasticsearch. Ambos servicios soportan Beats y Logstash, lo que simplifica la indexación y transformación de los datos. Ambos proveen un fácil despliegue, escalabilidad y requieren menos intervención humana comparándolo con un despliegue manual on-premise o sobre instancias EC2.
Amazon ES Service ofrece una mayor integración con otros servicios AWS:
- Kinesis Streams
- Kinesis Firehose
- CloudWatch Logs
- Buckets S3
- Funciones Lambda
Elastic Cloud incorpora herramientas para portar fácilmente desde otros proveedores cloud o desde infraestructura on-premise. Además soporta una variedad de nuevas capacidades que no tiene el servicio de Amazon. Entre ellas están:
- Data rollups. Usa menos espacio de almacenamiento para resumir y almacenar datos históricos.
- Elasticsearch SQL Provee nuevas herramientas para consulta a Elastic de la manera tradicional pero con la velocidad increíble de la herramienta.
- Kibana Spaces. Facilita la creación y organización de dashboards por grupos de usuarios y funcionalidad.
- Elastic Commercial Plugins. Quizá sea la gran diferencia. Elastic cloud ofrece Seguridad a nivel de acceso a los datos, Reporting, monitorización/alertas y Machine Learning para el entrenamiento y búsqueda de pautas y detección de anomalías. Amazon Elasticsearch Service está incorporando poco a poco su propia implementación de las anteriores funcionalidades basada en Opendistro for Elasticsearch y en muchos casos sólo para nuevos despliegues (ver documentación).
- Canvas. Para la presentación de los datos.
Claves para elegir AWS ES o Elastic Cloud
- Elastic Cloud ofrece más control a las organizaciones y requiere menos trabajo de mantenimiento.
- Si habitualmente trabajas con los servicios de AWS (Kinesis, S3, lambda…), se recomienda utilizar el servicio Elasticsearch de AWS, ya que el mantenimiento y el coste será menor.
- A favor de Elastic Cloud está el hecho de que incorpora plugins de seguridad, machine learning y alertas. Estas características no están aún incluidas en su totalidad en el servicio de Amazon. La propia Elastic ha creado documentación para indicar las diferencias entre ambos servicios.
- Otro punto a tener en cuenta es evitar el efecto «vendor lock-in». Cuantos más servicios AWS se utilicen, más duro será salir de allí por razones económicas o técnicas.
- Por último, organizaciones que utilicen Elasticsearch de manera intensa y como core de su negocio, que quieran el mayor control sobre sus cargas de trabajo, deberían estudiar su propio despliegue y su propia gestión de Elasticsearch.