¿Por qué Parrot es un CRM distinto?
Desmenuzando la capa de datos
El modelo mental con el que desarrollamos Parrot viene primordialmente de CouchDB, la tecnología de bases de datos y capa de datos que adoptamos y hemos utilizado en Parrot desde el comienzo.
“Seamless multi-master sync, that scales from Big Data to Mobile, with an Intuitive HTTP/JSON API and designed for Reliability.”
“Sincronización multi-maestro perfecta, que escala desde Big Data hasta Mobile, con una intuitiva API HTTP/JSON y diseñada para la Confiabilidad.”
Este modelo mental está basado en guardar información en unidades llamadas documentos.
El modelo de documentos
Cada documento es de un determinado “tipo” y, por ejemplo, un documento de tipo cliente nos sirve para almacenar cualquier dato / campo respecto a cliente: nombre, fecha de nacimiento, número de teléfono, etc.
Usando estos documentos modelamos y almacenamos toda la información contenida en Parrot CRM. Esto quiere decir que cualquier dato que se almacene en Parrot debe ser contenido en un documento.
Algunos tipos de documentos que existen por defecto son:
- Clientes
- Oportunidades de venta
- Notas
- Conversaciones
- Mensajes
- Leads
- Page views
Este modelo de almacenamiento es extremadamente flexible, fácil de razonar y utilizar, especialmente cuando se trata de su uso vía el REST API de CouchDB. Sin embargo, cabe mencionar que, similar a muchas otras decisiones respecto a tecnologías subyacentes, existen trade-offs y fue necesario construir una infraestructura de sistemas y servicios alrededor de las implicaciones y compromisos.
Beneficios al usar CouchDB
Habiendo muchas otras funcionalidades y aspectos que podría destacar de CouchDB como capa de almacenamiento, las más relevantes para Parrot y nuestros clientes son:
1. HTTP API de calidad
De verdad, un REST API con una calidad difícilmente superable, bien documentado, consistente, con patrones claros, así como también destaca un API que utiliza de maravilla las capacidades del protocolo HTTP, especialmente mecanismos de caché y arquitectura en capas.
Dejando de lado los detalles técnicos, tanto nosotros como Parrot, así como el usuario de Parrot, pueden hacer uso y tomar ventaja de este HTTP API para extender las capacidades y alcance de integración de un Parrot CRM y de los datos que viven en el CouchDB de Parrot. Esto podría ser relativamente equivalente a tener un Backend as a Service junto a una GUI.
En otras palabras y tal como aparece en nuestras wiki internas: CouchDB + Parrot = :parrotparty:
2. Rendimiento y aislamiento
La plataforma Parrot CRM de un cliente implica la existencia de una o más bases de datos CouchDB exclusivas para un solo Parrot. Esto significa que:
- Los datos almacenados en un Parrot (clientes, conversaciones, leads, ventas, etc.) no están mezclados con los de otros y posteriormente filtrados con un sistema back-end propietario.
- Todos los datos del CRM de cada uno de nuestros clientes están completamente aislados uno del otro.
Esto nos permite brindar mejores características de:
- Seguridad y durabilidad
- Privacidad
- Portabilidad
- Escalamiento, rendimiento y balanceo de recursos
Esta es en realidad una propiedad de diseño respecto a nuestra forma de usar estas tecnologías, pero es destacable lo bien que se acopla al modelo CouchDB y las propiedades que brinda en consecuencia.
Implicaciones al usar CouchDB
Ahora bien, de cada tecnología emergen casos de uso, patrones de diseño y mejores prácticas, CouchDB no es la excepción. Me gustaría destacar dos implicaciones que se han vuelto importantes para poder construir sistemas confiables y resilientes con CouchDB como motor principal.
1. Sistemas observantes
A diferencia de otros sistemas donde las operaciones se realizan a través de APIs que efectúan operaciones adicionales al hacer cambios a la capa de datos (ej. enviar un correo, generar una factura, realizar un cobro), los sistemas de Parrot observan lo que ocurre en cada una de las instancias existentes y ejecutan side-effects en consecuencia.
Esencialmente nos volvemos un cliente latente más de cada uno de estos CouchDB y Parrots, y con esto habilitamos funcionalidades geniales como:
- El multi source inbox, donde puedes concentrar correos electrónicos, recibir formularios web, recibir mensajes de messenger, WhatsApp, etc. y habilitar el uso compartido.
- Pixel de analytics web
- Páginas de pedido
Esto va aunado a otras propiedades emergentes como alta disponibilidad, offline-first y resiliencia a errores temporales.
2. Mutabilidad y conflictos
Cuando existen múltiples clientes haciendo manipulaciones a la capa de datos directamente (por ej. nuestra webapp) es común ver emerger rápidamente problemas de conflictos en la edición de documentos. Conforme aumenta la concurrencia del sistema, el acceso y la mutación a los datos, este problema puede ser muy frecuente.
Para abordar este desafío, Parrot implementa estrategias avanzadas de resolución de conflictos, asegurando la integridad de los datos incluso en entornos de alta concurrencia.
Conclusiones
Soy un cliente. ¿Qué significa todo esto para mí?
Todo esto también significa que, dependiendo de qué tanto adoptes tú o tu equipo Parrot como CRM, backend y base de datos, Parrot está diseñado para poder cubrir las necesidades conforme el tamaño de la operación las demande.
Por ejemplo, no todos requieren integraciones vía APIs en un inicio para su negocio / operación, así que también hemos invertido mucho tiempo refinando la UI de nuestra plataforma para ser accesible y de fácil uso.
Además, a medida que tu negocio crece, Parrot puede escalar contigo:
- Para operaciones pequeñas: Una interfaz intuitiva y fácil de usar que no requiere conocimientos técnicos avanzados.
- Para empresas en crecimiento: Capacidad de integración con otras herramientas a través de nuestra robusta API.
- Para operaciones complejas: Posibilidad de aprovechar la flexibilidad de CouchDB para crear soluciones personalizadas y altamente escalables.
En resumen, Parrot CRM no es solo una herramienta, sino un ecosistema flexible que se adapta a tus necesidades, ofreciendo desde una solución simple y efectiva hasta una plataforma potente y altamente personalizable.