Friday, April 19, 2019

Redis - tus bases de datos favoritas en una

Las aplicaciones Software suelen usar herramientas para persistir datos buscando tiempos de respuesta optimizados de forma distribuida y escalable. En muchos casos, los desarrolladores tendemos a persistir datos temporales para estados u otra información que sólo durará por un tiempo, en otros integramos consultas en memoria o en caché usando otras aplicaciones o librerías.

Redis es un motor de base de datos basado en el almacenamiento en memoria, además de permitir la persistencia. A continuación revisaremos algunas características de Redis.

Redis, todo en uno


Usando Redis podemos tener una base de datos que actúa como caché y persistencia al mismo tiempo, así puedes dejar ese trabajo al mismo motor y no necesitas usar librerías externas u otra base de datos para manejar o diferenciar entre esos dos tipos de datos.

Esta herramienta también provee operaciones sobre los datos almacenados en memoria que son identificados como si fueran una variable hash soportando diversas estructuras bastante flexibles [1]. Para cada tipo de variable, Redis provee diferentes operaciones para su manipulación.

En resumen, Redis es una base de datos distribuida que administra datos en memoria, mejorando el performance de las respuestas y ofreciendo operaciones sobre esos datos. [2]

RediSearch


Si lo que necesitas es hacer búsquedas complejas sobre masivas cantidades de datos, puedes usar RediSearch que posee un engine optimizado y moderno que opera sobre Redis, está escrito en C y es comparable a otras herramientas como ElasticSearch. [3]

Usar en una red interna


A pesar de que usa un sistema para autenticar a las aplicaciones clientes, por su naturaleza distribuida, puede permitir muchos intentos sin bloquearse. Lo cual puede ser vulnerable usando técnicas de fuerza bruta para descubrir contraseñas.

Usos de Redis


Algunos de los usos más populares son los siguientes:
- Sistema cache con políticas de persistencia
- Sistema de colas
- Almacenar sesiones en memoria con tiempos de expiración.
- Cuando se requiera guardar un estado temporal, por ejemplo, en una arquitectura de microservicios
- Almacenar sesiones de usuario
- También puede ser usado para: un carro de compras, un juego online, avisar que un elemento está bloqueado o que hay un proceso en progreso.


Redis es flexible, rápido y escalable, entregando la libertad a las aplicaciones sobre el uso y las políticas con las cuales los datos son almacenados de acuerdos a los criterios de velocidad y tamaños que necesites.

Es recomendable para un extenso rango de tipos de aplicaciones, siempre y cuando resuelva algunos problemas que las otras bases de datos necesitan de más componentes para hacer lo que ya tenemos en uno.

[1] https://redis.io/topics/data-types
[2] https://redis.io/commands
[3] https://redislabs.com/blog/search-benchmarking-redisearch-vs-elasticsearch/

Sunday, April 14, 2019

Hacer una aplicación para una startup o una empresa grande requiere de muchas tareas necesarias antes de desarrollar la aplicación como obtener una infraestructura adecuada, revisar disponibilidad de máquinas, instalaciones, cableado, etc. ¿Cuántas de esas tareas entregan valor a lo que hace esa compañía?

La espera para obtener servidores puede tomar bastante tiempo, además de los dolores de cabeza  cuando dejan de estar disponible

Los desarrolladores a veces trabajan los fines de semana porque no hay infraestructura para escalar ni asegurar disponibilidad. Y ni hablar sobre los costes para obtener y mantener máquinas, transportarlas, hacer cableado, monitoreos, y otras tareas relacionadas.

Externalizar la infraestructura


Hay empresas que se han dedicado a proveer servidores y servicios para que podamos montar aplicaciones, ya no necesitamos todo un equipo para asegurar disponibilidad de las máquinas.

Los proveedores de Cloud, como AWS o Google Cloud, son los que se dedican a hacer ese trabajo por ti, optimizando recursos, electricidad, tiempos y costos. Desde hace un tiempo, tienes la opción de no preocuparte sobre la logística de comprar máquinas y obtener lo necesario para montar los servidores, ahora simplemente tienes que seleccionar lo que usarás con algunos clics y tener consciencia sobre cómo se hará la facturación.

Paga por lo que usas


¿Qué pasa si después de levantar mi infraestructura, todavía no usamos las máquinas?. En la nube,  tendríamos costo cero.

Esa es la filosofía cloud, incluso puedes tener una aplicación disponible y si nadie la usa llamando al servicio o visitando la página web, no hay cobro porque no ha sido utilizado. Obviamente, eso depende de la estrategia que uses al implementar la aplicación.

No es necesario gastar el dinero por algo que no usamos.

Útil para todos los tamaños


Una nueva empresa con recursos limitados puede comenzar con algo pequeño y a medida que va creciendo y obtienen mayores ingresos, pueden solicitar mayor capacidad de cómputo con algunos clics.

Muchas empresas ya se han movido y se están moviendo a cloud [1]. Es una estrategia generalizada debido a los costes y restricciones de infraestructura que se han enfrentado en muchos casos.

Tiempo de los desarrolladores


Los proveedores de cloud ofrecen servicios para que sea más fácil implementar buenas prácticas de programación como el Continous Integration y Delivery. También, los servicios cloud manejan la disponibilidad bajando y subiendo instancias a medida que sean necesarios. Asegurar la alta disponibilidad es posible y no hay excusas para no lograrlo.

Sin duda, hay otras habilidades de los desarrolladores que se están haciendo más necesarias, tenemos que actualizar nuestros conocimientos y modificar nuestros paradigmas.

¿Son necesarios los empleos de infraestructura?


Usando cloud no necesitaremos alguien que revise las conexiones, actualizaciones, estado de las máquinas y otros aspectos. Sin embargo, es vital revisar continuamente esas características de forma automatizada. La forma de trabajar está cambiando ¿No parece ser una más inteligente?

No te quedes atrás


La tendencia es clara, las empresas se están moviendo a este tipo de infraestructuras por diversas razones. Es importante entender los beneficios y los problemas de los servicios Cloud.

Los proyectos e innovaciones están al alcance de todos, ahora podemos tener más tiempo para hacer lo que necesitamos.