Archivo de la etiqueta: NOsql

La aventura de Civitana.org


Actualización octubre del 2014:

” Después de un verano intenso que nos ha dado tiempo a desarrollar un protocolo de voto electrónico en el que por mis tareas me he tocado definir y desarrollar en gran parte, a partir de octubre de 2014, las circunstancias  hacen que me desligue de Civitana.org, .

Aunque tengo una pequeñisima parte del ella desde ese momento paso de ser ‘cerdo’ a convertirme en ‘pollo’. Quizás más adelante, cuando las circunstancias cambien en un futuro se pueda retomar la relación laboral.”

M.E.


Han sido unos meses muy intensos y cuando por fin Civitana.org está en producción siento la necesidad de escribir esta entrada. Mucho trabajo y no pocos retos los que hemos tenido que superar.

El primer contacto

Fue a [Civitana]principios de verano pasado cuando Iván contacto conmigo para presentarme su proyecto.

Lo que me encontré fue una declaración de intenciones de proyecto ambicioso, del que todavía no somos conscientes del calado que puede llegar a tener.

Me presentó un proyecto donde la palabra “Firma” dejaría de estar desvirtuada. Pasaría a tener un valor probatorio real, tanto de integridad, como de veracidad de la misma y de verificación de cuando se realizó.  Un proyecto donde la “participación ciudadana” se vería respaldada por un documento firmado electrónicamente, cuya firma estuviera basada en estándares, para que pudiera ser fácilmente validada y que solamente con él se pudiera defender el cambio. El reto de como presentaba el concepto de identidad en Internet era algo que se adelantaba a lo que probablemente tengamos en un par de años.

Todo estaba por hacer, se partía desde cero. Me uniría al proyecto en calidad de consultor en firma electrónica gracias a la experiencia anterior en el Ministerio de Cultura. En realidad a los que formamos el equipo técnico de Civitana con Tania, Jesús y yo mismo, nos ha tocado hacer de todo y estar en todos los frentes.

El comienzo

Mientras todo se definía y entre unas cosas y otras todo se retrasó hasta medidos de octubre. La propia naturaleza y lo innovador del proyecto me hizo ser consciente que podría tener un futuro incierto.

He de reconocer que los principios fueron duros pero a la vez apasionantes. Aunque para ser sincero, esto ha sido así en todo el proceso y no sólo al principio. Cada paso ha sido un reto que hemos tenido que superar y del que por ahora siempre hemos salido airosos.

Primero había que definir la arquitectura y la tecnología. Civitana tenía que ser escalable y montada con alta disponibilidad y además muy interactiva y usable. Creo que se eligió un stack tecnológico que cumple con todo ello. Con Frontend y Backend diferenciados y escalables, solución mixta de bases de datos relacionales y NoSql, sistema de ficheros distribuido,..etc.. Perdonarme que no pueda ser más específico pero en Civitana.org hay mucho más de lo que se ve.

Finales del año pasado

Y fue cuando estuvimos en el quizás hasta ahora ha sido el momento más crítico del proyecto.

La firma no iba como nosotros queríamos que fuera.  Nos obligó a realizar una nueva implementación de la parte de firma y generación de claves desde cero con otra tecnología, y lo que fue nuestra debilidad, se ha convertido en nuestra fortaleza. Ahora tenemos firma con cualquier dispositivo que tenga un navegador moderno, sin necesidad de instalar java, plugins, drivers, aplicaciones nativas….

Sin poder entrar en detalles, de un plumazo pasamos a tener firma en PC, firma en “movilidad”, etc… Y lo mejor de una manera usable, universal, basada en estándares, y como debe ser generando las claves y la firma en el cliente, es decir, en el navegador.

Y todo con, a mi modesto entender, a años luz en facilidad de uso y universalidad de la “firma electrónica” a la que está todo el mundo acostumbrado. Como chascarrillo, siempre digo que esto nunca será valorado suficientemente,… si no es alguien que ha tenido que dar soporte de firma electrónica en una Sede Electrónica (un “pequeño” infierno y lo digo por lo he sufrido en mis propias carnes 🙂 ).

¡Ah! y todo es tecnología “by Civitana”.

Salir a producción

Nos tocaba ponernos “el gorro” de sistemas y montarlo todo en la nube, que es toda una aventura en si,… auditoria de seguridad, terminando la maquetación del diseño … en fin ultimando todo para por fin salir a producción el 15 de Mayo.

¿Y ahora? El futuro sigue incierto, ..’¿la gente tomará como suya Civitana?, ¿realmente lo verá como la herramienta que puede ser?’…. De lo que no tengo duda es todo el equipo técnico de Civitana disparamos siempre nuestro ‘mejor tiro‘.

M.E.

Java versus JavaScript

Java versus JavaScript, reflexiones

Con la aparición de Node.js y la posibilidad de programar JavaScript en servidor se palpa entre los “javeros” cierta, no se encontrar la palabra, …¿preocupación?. La sensación es de “…nos están cambiando el agua…” y el comentario más oído es “… parece que es lo que se lleva ahora, no me gusta, pero habrá que aprenderlo…

A este desasosiego no ayudan post como los de PayPal (enlace ) en el que en resumen dicen que se pasan a JavaScript entre otras cosas porque es más rápido, necesitan menos gente y además se tira menos código. En respuesta a este post ha habido otros que han salido en defensa de Java y para poner coherencia en el tema (enlace)… y es que es lo que tienen casi todos los benchmark que pecan de partidistas.

En todas las ingenierías, pero mucho más en informática, tienes que estar en continua formación y estar al tanto de lo que se está haciendo. Es cierto que no podemos negar que también va todo un poco por modas y que es todo es cíclico. Parece que más tarde o más temprano siempre volvemos al mismo sitio que nos estamos moviendo en un circulo cerrado. Yo prefiero verlo más como una espiral… si la ves verticalmente parece que estás en el mismo punto,… pero que si la ves horizontalmente te das cuenta que estás en un nivel superior. Un ejemplo de esto son las nuevas bases de datos NOsql. Puede parecer que vuelven a las bases de datos pre-relacionales pero en realidad aportan muchas más cosas (escalabilidad, rapidez, big data y su explotación).

Pasa lo mismo con JavaScript hace mucho mucho tiempo que ha dejado de ser un lenguaje que sirve para poco más que hacer validaciones y hacer las “cosas bonitas” en la capa de presentación.

El gran problema de los “javeros” que dan sus primeros pasos en JavaScript, entre los que me incluyo, es que a la hora de enfrentarse al nuevo lenguaje piensan “… al final será algo como Java, con tipado dinámico y bueno con callbacks... ” y nada más lejos de la realidad, JavaScript es otra filosofía y en realidad casi casi comparte con Java poco más que el nombre y algunas palabras reservadas.

Creo que en el aprendizaje hay que enfrentarse con una actitud diferente y positiva. Me parece muy interesante el trabajo que ha realizado Micael Gallego en su blog (enlace), en el que explica su viaje en el aprendizaje del lenguaje desde el punto de vista de un programador Java y como a lo largo de los diferentes artículos va entendiendo la filosofía de JavaScript. A mi me ha ayudado mucho su lectura, así que no puedo más que recomendarla.

Reconozco que no soy experto en JavaScript y no puedo opinar en profundidad. Pero desde fuera creo que lo bueno y lo malo de JavaScript es que debido a su dinamismo, se pueden hacer las cosas de varias maneras. En Java por el contrario que es todo más cuadriculado.

De todas maneras creo que lo mejor es ser práctico, intentar conocer las debilidades y las fortalezas de cada lenguaje… Por ejemplo no me platearía hacer una aplicación de escritorio para Widonws en Java, para eso creo que es mucho mejor .NET. Por la misma razón me encontraría más a gusto, en aplicaciones de Backend en un proyecto con un equipo de trabajo numeroso, en un arquitectura Java que en una JavaScript, ya que al ser Java más “estricto” el código tendería ser más uniforme.

Lo que es cierto es que JavaScript permite hacer nuevas arquitecturas muy escalables y derivando gran parte de la responsabilidades al cliente. Angular.js es un framework que sigo muy de cerca. Sé que en algunos aspectos puede ser limitado pero prefiero la seguridad de basarme en algo estándar para montar una arquitectura MVC en el cliente.

Además JavaScript, junto con HTML5 se está convirtiendo en la única opción en la parte de navegador. Debido a las restricciones de seguridad que se están poniendo a los applets de java y a las extensiones y plugins. Son un autentico quebradero de cabeza por los agujeros de seguridad encontrados. Un ejemplo, Firefox a partir de su versión 26 no vienen habilitados por defecto los plugins excepto el de Flash.

Por eso en cosas “especiales” en la capa de cliente que por inercia antes te planteabas hacerlas con un applet o una extensión ahora enfocas tus esfuerzos en hacerlas en JavaScript… y se pueden hacer cosas muy, muy chulas.

Espero que os sirva.

M.E.