vClouden – backups para clientes

En esta ocasión mostraré una nueva posibilidad que se la ha añadido a vClouden, ahora los usuarios de las aplicaciones osea tus clientes podrán descargar backups con la data de sus instalaciones, si bien las tareas de automatización de las backups de seguridad propias de vClouden son suficientes para asegurar la fiabilidad, darle tu clientes la posibilidad de tener sus propias backups te ayudará a la adopción ademas de que es un argumento de venta bastante bueno:

aqui una demo:

Dejar un comentario

SaaS en v7 (I) – El análisis previo

Desde que Velneo comenzó resaltar que la v7 estaba enfocado en el CloudComputing y que el el futuro de las apps de gestión era el SaaS,  muchos miembros de la comunidad comenzamos evaluar esta “nueva” modalidad y lo que aporta v7 para adentrarnos en esta nueva “ola”, como resultado de esas consideraciones y muchas lecturas me embarque en el proyecto que hoy denomino vClouden, tratando de cerrar la brecha que hay entre v7 y las aplicaciones SaaS estandar(interfaz web, zona de clientes, soporte online, documentación, billing, etc.), de toda esa experiencia he logrado sacar algunas conclusiones que quisiera compartir y hoy comenzaré con el análisis previo.

 Que trae v7 a la mesa en el area del

Software como Servicio ?


No voy traer a colación las grandes ventajas de v7 desde el punto de vista del desarrollo de aplicaciones, mas bien voy a referirme a ella desde el punto de vista de arquitectura y lo que ello implica de cara a servir aplicaciones SaaS.

  • Posibilidad de conexión a travez de internet por defecto en la plataforma, ello implica que en cuanto a comunicación para un vServer son indiferentes las conexiones locales o las conexiones por internet, el simplemente te permite conectarte.
  • Cache de aplicaciones, después de la primera conexión en donde se “baja” la aplicación  solo se comunican datos entre la aplicación y el servidor de aplicaciones, además los inicios son instantáneos.
  • Cache de datos, los datos que le solicitamos a la base de datos, no tienen que enviarse en un solo paquete va llegando progresivamente como en un streamming de video.
  • Capacidad de manejar tablas locales en memoria para una mayor velocidad en ciertas operaciones.
  • El nuevo vUpdater, realmente útil para mantener a nuestros usuarios SaaS con la ultima versión tanto de nuestras apps como de la plataforma.

y todo esto que significa de cara a las aplicaciones ?, en pocas palabras: que tus cliente podrán disfrutar de un interfaz familiar y rápido, que solo transfiere datos y que siempre se mantendrá actualizado, teniendo la data de su negocio en la nube accesible desde cualquier lugar, además con la posibilidad de ser instalada como una app stand alone normalmente.

ok esto habla muy bien de las aplicaciónes como tal, pero y el resto del entorno Saas ?

Hacia una SaaS real con v7.

Antes de comenzar hay que imaginarse como debe ser una SaaS con v7 desde el punto de vista de lo que se le ofrece al cliente, aqui mi lista de deseos:

  • Interfaz web para registro clientes con una zona interna, la cual contendrá la instalación de aplicaciones, documentación, soporte, billing y datos de cuenta.
  • Darle al cliente la capacidad usar cualquiera de mis aplicaciones en cuantas instancias quiera por el tiempo que quiera.
  • Soporte Online deberá majearse tickets manteniendo la historia de la conversación ademas de notificaciones por mail.
  • Documentación online para las aplicaciones.
  • Darle al cliente la capacidad de tener backups de su propia data.

Antes de siquiera comenzar te enfrentas con el dilema de las instalaciones:

A la fecha solo se me han ocurrido tres formas de entregar un app v7 ne modalidad SaaS y aunque cualquiera de las 3 puede llegar a se valida dependiendo de las aplicaciones a servir, miremos los pro y los contra de cada una, tomando en consideración la lista de deseos:

1. Una instancia por cliente dentro de un solo vServer (Multitenancy): 

Tal vez la ideal en teoria y para la que supongo que Velneo apostaría de futuro pero de cara al Saas tiene varios peros importantes:

Pros:

  • Multytennacy real, actualizas tu aplicación automaticamente todos tus clientes tienen disponible la nueva versión, aunque te limitas a hacerlo cuando no haya nadie conectado, igual vale.
  • Durante un buen rato solo se administra un vServer y el escalado es mas a nivel de hardware.
  • Aíslas los datos de cada cliente en sus carpetas de datos.

Cons:

  • La falta de comandos que recibe por consola un vServer es muy limitada, así que de momento no hay forma de automatizar la creación de usuarios, grupos, instancias, carpetas, etc. automatización necesaria si queremos que el usuario puede tener tantas instancias de nuestra app como desee.
  • Aunque nos saltáramos el punto anterior el vAdmin no tiene facilidades de uso para manejar, buscar o filtrar instancias, por lo que personalmente no me imagino mirar un vAdmin donde hayan unas 100 o 200 instancias cada una con sus herencias.
  • Un tema particularmente importante es aislar el rendimiento de cada instancia, si dos usuarios pagan unos USD 20/ mes para usar tu app ambos debería tener el mismo rendimiento por su dinero pero que pasa si el usuario 1 tiene muchos mas usuarios conectados que el usuario 2 y los dos usan el mismo vServer?, por supuesto esta consideración en una escala mas macro.
  • Falta de información en cuanto a rendimiento, si, he escuchado que a los vservers los ha probado y les han dado mucha “caña” con millones de registros y conexiones, y les creo, pero a mi antes de confiarle buena parte de mi negocia a un vServer me gustaría conocer una publicación oficial que cuantifique el rendimiento de un vServer, cuantas contexiones, cuantos millones de registros, cuantas instancias, es decir … cuando un vServer comienza a deteriorar su rendimiento.
  • Costo: si o si tienes que comenzar tu Saas usando un vServer enterprise de ahi la importancia de conocer el rendimiento para conocer le costo beneficio de usuarios soportados vs costo del vServer enterprise + Hosting.
2. Una sola instancia que albergue a todos los clientes.
Esta es otra opción tambien factible, simplemente encargarnos nosotros mismos dentro de nuestra aplicación de la gestion de usuarios, grupos, permisos, etc.

Pros:

  • Solo gestionar una sola instancia y un solo vserver.
  • Administración de usuarios mas fácil y hasta una comunicación mas directa para crear nuevos clientes dentro de la app desde el interfaz web mediante vModApache o TCP.
  • Multitennacy para mantener a todos tus clientes con la ultima version de tu app.

Cons:

  • Mayor inversión en desarrollo al tener que crear todo el interfaz y la lógica de usuarios para el registro y logueo.
  • No hay un aislamiento de los datos de los diferentes clientes, todos estarían dentro de la misma db, aunque no es un requisito para algunos para mi es importante poderle decirle a mi cliente no solo que sus datos no los pueden ver otros, sino que físicamente están aislados entre si.
  • Dificultad para vender tu app en stand-alone dada la arquitectura necesario para que funcione como una Saas que no puede encajar dentro de una instalación local, sin mencionar que de cierta forma arriesgas tu know-how al tener una app que sirve para montar un Saas por ahí dispersa.
  • El mismo problema de la falta de información en rendimiento y costos que (1)

3. un vServer para cada cliente en la misma maquina usando algún mecanismo de Sandboxing.

Básicamente imitar lo que hace el cloud de Velneo a nivel de desarrollador pero en este caso a nivel de cliente.

Pros:

  • Estabilidad separada, si un vserver se cae por algun bug no afecta a las demás.
  • otra capa de aislamiento para los datos de cliente y mayor facilidad en el proceso de proporcionar backups cuando el cliente lo requiera.
  • Performace aislado para cliente (Depende del mecanismo de enjaulamiento)
  • Al tratarse el el vserver y la app como una unidad, se pueden realizar tantas instalaciones del mismo como se deseen.
  • No hay que preocuparse con que tanto puede dar un vserver.
  • Puede usarse el vserver monousuario para comenzar.
  • El escalamiento es lineal mas clientes, mas maquina y viceversa, claro usando algún servicio cloud.
  • El app sigue siendo el mismo asi que puedes vender tambien licencias stand-alone sin arriesgar el know-how de tus Saas.

Cons:

  • Administración de muchos vservers y tambien automatizar el escalamiento de los servidores en la nube donde se alojan los mismos.
  • Mucha mas Inversión en desarrollo para la automatización requerida
  • Lidiar con el licenciamiento de los vServers ya que vas a necesitar varios.

Bueno, dado los requerimientos me decante por la última opción, aunque requirió mucho mas I+D terminó siendo una solución mas abstracta y lo mejor de todo con la posibilidad de ser abierta para otros desarrolladores, continuare en el siguiente post contanto como pasé de este análisis previo a la implementación de vClouden.

Saas en v7(II) come on cloud

Saludos,

2 comentarios

Presentación de vClouden Beta

Que es vClouden ?

vClouden (Velneo Cloud Engine), es una plataforma para el despliegue de aplicaciones Velneo v7 en modalidad SaaS (Software as a Service) que aporta tanto desde la parte de despliegue en servidores como la interfaz web, pensada para el Velneador que tiene una buena aplicación v7 y que  quiere distribuirla en modalidad SaaS pero que no tiene los conocimientos en programación web o el tiempo y los recursos requeridos para la construcción del la SaaS.

La parte servidora de vClouden corre sobre la  increíble infraestructura de Amazon EC2, la cual administra vClouden, Si leíste bien, vClouden es una web app con la capacidad de administrar recursos de Amazon EC2, esto quiere decir que vClouden escalará los recursos necesarios de acuerdo a su uso, es decir, cuando un servidor se quede sin espacio automáticamente creara y configurará otra maquina lista para recibir más usuarios y viceversa, además con este control remoto podrán realizarse más fácilmente tareas de automatización y conocer el estado del servicio en cualquier momento.

vClouden tiene 2 caras:

Del lado de tus  clientes, vClouden te ofrece una página de inicio para tus cientes donde se podrán loguear y entrar a tu zona interna donde podrán instalar tantas veces como deseen tus aplicaciones, solicitar sus propios backups de datos, desinstalar las apps que no necesiten, solicitar más usuarios, crear soportes y acceder a la documentación de tus apps.

Así que, como se ve una Saas en v7?, que tal esto:

El otro lado del interfaz es para ti como desarrollador, donde podrás crear aplicaciones, subir nuevas versiones y desplegarlas, crear la documentación de tus apps, administrar los soportes que te envíen tus clientes y personalizar la interfaz de la pagina de inicio:

Beneficios de la arquitectura de vClouden:

Son muchas las ventajas de trabajar de esta forma aquí te enumeramos algunas:

  • Tus clientes pueden instalar y desinstalar tus aplicaciones cuantas veces quieran desde su misma cuenta, cada una es una instancia aparte y tiene vida propia.
  • Puedes tener el soporte de todos tus clientes SaaS en un solo sitio, con notificaciones via email.
  • Algo que podrás ofrecer que otras SaaS no => la posibilidad de trabajar en local, que bien poderle decir a un cliente “trabaja en Saas mientras creces y llegado el momento compra tus servidores y yo te venderé una licencia stand alone” como siempre lo has hecho, aunque la idea es que se queden en Saas este es un argumento de venta buenísimo.
  • Documenta tus aplicaciones usando vClouden, de esta forma tus usuarios tendrán a la mano las ayudas necesarias y siempre actualizadas.
  • Puedes darle un toque personal a tu Saas, puesto que queremos que para tu cliente sea transparente el uso de vClouden te damos la posibilidad de incluir tu logo, escoger texturas y color para la página de inicio de usuarios.
  • Olvídate de lidiar con puertos, si tu cliente solo puede acceder mediante cierto puerto para conectarse con el vClient, el mismo puede solicitar el cambio de puerto en la interfaz web.
  • Cada vserver tiene su propia Sandbox que lo aísla en rendimiento y seguridad, desde su punto de vista tiene una maquina dedicada para el solo, limitándolo en rendimiento de acuerdo a la ram especificada en tu app, por lo que ningún vServer podrá consumir más memoria o recursos en detrimento de otros.
  • A pesar de que cada vServer vive dentro de su sandbox los datos de tus aplicaciones se guardan en una unidad compartida, aprovechando los grandes beneficios de las unidades EBS de Amazon, porque esto es importante?, que tal esto:

Asumamos el peor de los casos, la instancia EC2 de Amazon que tiene tu data simplemente no responde, se daño, que hacer?, con la arquitectura de vClouden es bastante simple, saca el disco de datos da esa instancia y la elimina, dado que vClouden es una app aparte que tiene toda la información de tus aplicaciones, clientes y demás simplemente crea otro servidor y vuelve a realizar las instalaciones, le añade el disco de datos y le asigna la misma IP, nada mal heee ?.

  • Tus usuarios concurrentes son solo para ti, si un cliente te solicita 3, 4 o n usuarios concurrentes serán solo tuyos porque cada instalación tiene un vServer para sí solo.

Estado actual de vClouden.

vClouden actualmente se encuentra en beta cerrada realizando pruebas de rendimiento, añadiendo mecanismos de monitoreo y seguridad, en cloud la seguridad y estabilidad son de prioridad y no negociables, al ser nosotros los primeros usuarios de vClouden comenzaremos a distribuir nuestras apps en esta modalidad e iremos abriendo las puertas a nuevos desarrolladores paulatinamente.

Con este post queremos mostrar vClouden como concepto a la comunidad y recoger impresiones.

Se integrará vClouden con el API de la Cloud de Velneo ?

Si claro que SI, en cuanto sea pùblica la API y se añadan las funcionalidades necesarias como la instanciación, creación de  carpetas de datos, más de un vServer dentro de la misma cuenta, limite de usuarios concurrentes por instancia y alguna forma de manejo de versiones, etc.

Limitaciones.

En el camino de la creación de vClouden nos encontramos con muchas limitantes y tropiezos, quizá el más grande es que de momento los comandos que recibe el vServer son muy muy limitados, la imposibilidad de crear usuarios, carpetas de datos e instancias desde la línea de comandos nos limitan mucho en lo que podemos ofrecer y de la forma en que podemos ofrecerlo, esperamos al igual que muchos que esto cambie y así poderle sacar a vClouden todo el potencial que tiene.

El licenciamiento es otro aspecto limitante, aunque vClouden como proyecto se que justifica en si mismo porque la aplicación que quiero distribuir en modalidad Saas no necesariamente necesita usuarios concurrentes, es cierto que una buena parte de los casos para otras aplicaciones no es así, por ello de momento el cliente deberá solicitar en la interfaz la adición de mas usuarios, para lo que se le dará inicialmente una licencia express.

Que sería el ideal ?, porque no soñar: Un vserver que acepte comandos para usuarios, grupos, carpetas e instancias y que se active en modalidad SaaS enviandole reportes a Velneo sobre el consumo de engaches, base sobre la cual Velneo me factura a mi pero que para mis clientes es transparente.

Asi que este es vClouden, que piensas ?

6 comentarios

Que no es Velneo v7

Motivado por las recientes entradas en foro de velneo con respecto a la critica de diferentes carencias o caracterisitcas de la herramienta quisiera escribir unas lineas para darle aclarar un par de cosas a quines se acercan a la herramienta para que no compren algo pensado que es otra cosa:

Sobre la Herramienta:

Lo primero a aclarar Velneo NO ES un generador de codigo ni tampoco es un generador de interfaz, si bien es cierto que a primera vista parece un herramienta RAD, no lo es, por lo que su misión no es tomar n mil estándares y juntarlos de tal forma que  el desarrollo de aplicaciones de gestion sea mas llevadero,  entonces que nos vende Velneo ?, velneo se define a si mismo como “plataforma completa para desarrollo de aplicaciones empresariales”, en esta frase hay que distinguir muy bien el “completa”: en este caso “completa” significa que usando unicamente Velneo puedes crear una aplicación empresarial entera sin depender de bases de datos externas, librerias externas, otros entornos de desarrollo, etc. Asi que en este sentido “completa” no significa que atienda todos los estandares habidos y por haber (UML, SQL, XML, etc), aun así se estan comenzando a implentar algunos que estarán disponibles a travez de QML y JavaScript.

Sobre la base de datos:

Bueno este es uno de los temas mas sencibles para quienes recien se acercan a la plataforma por 2 cosas: en primer lugar porque Velneo solo usa su base de datos propietaria y muchos quieren realizar sus desarrollos sobre otros motores o sobre bases de datos ya existentes, en segundo lugar porque la base de datos de Velneo tiene su propia forma de navegación a travez de los datos y su propia forma de realizar consultas, asi que para un programador proveniente de otra plataforma el NO SE USA SQL es un tabú para usar la plataforma y simplemente no concibe como trabajar sin esto.

1. Solo se usa base datos propietaria:

Aunque no recuerdo haber leido un post al respecto, Velneo no tiene y dudo mucho que algún dia tenga la intención de soportar otas bases de datos (la herramienta ya tiene 15 años y ni asomo del tema), esto obedece a que el gran valor de v7 es la integración que se consigue entre los objetos visuales (formularios, rejillas, acciones, etc) y la base de datos, basicamente por esto es que Velneo nos gusta a la mayoría, asi que yo veo dos posibles explicaciones para que esto siga así: la primera es que se requiere dominio sobre el fuente de la base de datos para realizar ese nivel de integración y las dos mas grandes bd orientadas al enterprise no son de código abierto (Oracle y SQL Server) asi que ni pensarlo, la segunda es que si se pudiera conseguir realizar el tipo de integración que provee velneo mediante mapeo ORM sería un esfuerzo gigantesco que la empresa no tiene con que afrontar (todos sabemos que el departamento de desarrollo de Velneo es pequeño), aunque son meras expeculaciones me inclino mas por la primera opción.

2. No se usa SQL:

Para algunos es simplemente inconcebible pero es la realidad, Velneo y su modelo de datos tienen una forma muy particular manejar el flujo y consulta de datos que simplifica en gran medida el manejo de la información en la aplicación y previene de errores de tipeo gracias a su editor de procesos asistido (No es perfecto pero para la gran mayoría de los casos es mas que suficiente); basicamente con este forma de manejar los datos velneo nos dice “esta es la forma en que nosotros creemos que se debe operarse la data de un motor de base de datos”, ya esta en nuestras manos decidir si nos gusta ese angulo o no.

Asi que desde el punto de vista de la base de datos solicitar que se ataquen otros motores o que se puedan realizar consultas SQL, es cambiar la esencia misma de la herramienta no son un simple par de caracteristicas, auque me incluiria dentro de los que les gustaría que fuera posible editar sobre diferentes motores no me hago ilusiones por las razones expuestas.

Un saludo,

1 comentario

Liberado vQrCodes


Hola en el siguiente video podrás ver la descripción del componente y su uso:

Screencast

Descargar
aqui los links de interes:

http://d-project.googlecode.com/svn/trunk/misc/qrcode/js/

http://www.denso-wave.com/qrcode/vertable1-e.html

Dejar un comentario

Variables Globales, Tablas en Memoria ó JSON, un pequeño BenchMarck

Una de las primeras dudas cuando se comienzan a crear procesos o búsquedas con Velneo es “donde almaceno valores global mente ?”, la solución mas obvia para todos es crear una variable global del tipo que se necesite y almacenar los valores requeridos allí (por supuesto todo esto en memoria); pero algunos detestamos la creación de un objeto solo para mantener el estado de un determinado control y queremos poder crear “al vuelo” estas variables globales, pues bien yo me he econtrado con dos opciones:

1. Tabla de Persistencia en memoria:

Dado que hoy por hoy V7 nos permite tener tablas que se almacenan en la Ram del  cliente, bien nos podemos crear una tabla que se encargue de gestionar valores globales al applicativo que solo sean relevantes para la session en curso del vClient.

Nota: el termino “persistencia en Memoria” aplicado en este contexto en primera instancia se lo escuche a Jorge Hontoria el cual en primer momento no tuvo mucho sentido pero ya despúes lo encontre.

Como puede verse la tabla almacena valores de varios tipos organizados por una clave y se accesa mediante las funciones GET_VAR y SET_VAR, para leer y escribir valores en la tabla, asignandole a cada variable una clave y un tipo. Leer el resto de esta entrada »

Dejar un comentario

V7 – Aceptar pre cuidado con la opción que elíges

Tanto para los nuevos en v7 como para los que venimos de v6 a la hora de hacer un “pre aceptar” (proceso que se ejecuta antes de guardar un form para verificar la validez del registro),  nos encontramos con “aparentes” diferentes posibilidades dada las opciones de eventos y conexiones para los formularios que provee la v7,  para hacer esto tendemos a crear un botón con la instrucción aceptar, un evento y la correspondiente conexión que podría ser:

1. Evento boton pulsado: Por su nombre a primera vista parcerá la mas adecuada, el problema que tiene esta conexion es que si el evento asociado hace un “set retorno no” lo ignora completamente y continua con la acción asignada al botón que seria aceptar y tu form se guarda con el registro sin pasar por la validación.

2. Evento gana foco: Tambien parece adecuada puesto que el usuario para aceptar el formulario debe dar clic en el botón o pulsar enter, en ambos casos el botón obtiene foco y se ejecuta el evento que valida la info, el problema es que si el usuario despúes de ver el mensaje pulsa enter o da click de nuevo se guardara el form, porque el botòn YA tiene el foco por lo que el evento se no ejecutará.

3. Raton botón pulsado: Funciona como esperabas claro asumiendo que tu usuario no cuente con un teclado, puesto con un simple enter se aceptar el form sin validarlo.

Comando de Interfaz “Aceptar” al rescate:

Pues bien, para sortear las anteriores posibles conexiones y sus problemas ademas de asegurarte de que tu form siempre valide la información antes de guardar, lo que debes hacer es crear un evento y asignárselo directamente al botón, en este evento procesarás todas la validaciones, y de pasarlas al final terminaras con la instruccion “Interfaz: Aceptar” que aceptará tu form y lo guardara.

Saludos,

Dejar un comentario

Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.

Únete a otros 98 seguidores