Estrategia de Evolución Tecnológica

Anuncio
Whitepaper
Estrategia de Evolución Tecnológica
Combinando la tecnología clásica con las nuevas tendencias NoSQL, Big Data y
Lean Development.
Punto de partida
El escenario típico que nos encontramos en la
mayor parte de las organizaciones es el de
arquitecturas tecnológicas en aplicaciones
web en tres capas (presentación, lógica y
persistencia) que ofrecen interfaces ligeros
en la presentación, implementan gran parte
de la lógica en servicios web y delegan las
transacciones en una capa de acceso a datos.
Nuevas tecnologías para
desarrollo de
aplicaciones web frontend
Durante los últimos años han surgido nuevos
frameworks y herramientas para la
construcción de aplicaciones web SinglePage, que mejoran no solo la experiencia de
usuario y la usabilidad de la aplicación sino
también suponen un cambio en la forma de
diseñar, desarrollar y mantener este tipo de
aplicaciones.
Frameworks como AngularJS, Ember,
Meteor, Backbone o Knockout entre otros,
permiten estructurar y organizar el código
bajo el paradigma MVC , separando el
modelo de datos de la capa de presentación y
de la lógica de negocio. En algunos casos se
habla de MVVM o simplemente MV*, en
donde * se refiere a esa tercera pieza de la
aplicación que permite que el modelo de
datos y su representación puedan funcionar
juntos.
Whitepaper
Las diferencias entre estas tecnologías residen en su filosofía, framework vs librerías, o en su
implementación MV*, bien basadas en templating sobre el DOM vs templating basado en Strings.
Sin embargo, comparten puntos interesantes como:


Están basados en el lenguaje JavaScript, aprovechándose, entre otros, de importantes
beneficios como: la programación basada en eventos que evita bloqueos en procesos E/S,
el menor uso de recursos en el browser y la encapsulación de código en módulos mediante
JavaScript Clousures.
Existen stacks tecnológicos con un mucha actividad en la comunidad de desarrolladores,
basados en estas herramientas, que simplifican y agilizan el desarrollo de aplicaciones Web,
a la vez que potencian aspectos como la testabilidad o la integración continua con
plataformas Cloud como Herok.
Angular.js
Desarrollado por Google en 2009, angularJS es un framework para el desarrollo de aplicaciones
web dinámicas, en entorno cliente basado en un modelo declarativo que permite extender el
lenguaje HTML para crear componentes de una forma sencilla y eficiente. Angular.js incorpora
funcionalidades para reducir drásticamente los tiempos de desarrollo y el código de aplicaciones
web dinámicas:



Para la generación de aplicaciones CRUD: Data binding, directivas de templating, validación
de formularios, enrutamiento, inyección de dependencias, componentes reusables, deeplinking.
Automatización de tests: unit-testing, e2e testing, mockups
Plantilla de aplicación con una estructura de directorios y scripts de prueba predefinidos.
Angular.js simplifica el desarrollo de aplicaciones con un nivel superior de abstracción. Como
cualquier abstracción, tiene un coste en flexibilidad. No todas las aplicaciones se ajustan al modelo
de Angular. Angular está diseñado, principalmente, para el desarrollo de aplicaciones CRUD,
gestionando de forma transparente el tratamiento del DOM y las comunicaciones AJAX. No
obstante, existe otro interesante caso de uso de angularJS: las aplicaciones analíticas ad-hoc.
Caso de uso I: Aplicaciones CRUD
La filosofía de AngularJS es mantener el core lo más sencillo y eficiente posible, dejando cualquier
funcionalidad no esencial en módulos externos. Estos módulos le permiten al desarrollador
incorporar la funcionalidad necesaria en la aplicación registrándolos en el bootstrapping, y
manteniendo de ésta forma el código bien estructurado. Es la filosofía Lean.
AngularJS se puede incorporar a soluciones ya existentes, reemplazando únicamente el entorno
cliente y manteniendo la arquitectura del servidor independiente de la tecnología utilizada (J2EE,
PHP, etc.). Un buen ejemplo son las aplicaciones CRUD, en donde se gestionan datos que persisten
en el servidor mediante operaciones de creación, consulta, actualización y borrado de registros.
Estrategia de Evolución Tecnológica. Pag. 3
Caso de uso II: Aplicaciones analíticas
Existen dos módulos que se integran con AngularJS especialmente interesantes por sus
posibilidades analíticas: D3.js (o Data-Driven Documents) y crossfilter.js.
D3.js es una librería para la manipulación de
documentos basados en datos. Permite
representar multitud de tipos de gráficos via
HTML, SVG y CSS, y dotarles de una
interactividad especialmente útil para la
analítica de datos.
D3.js se integra con AngularJS mediante el
uso de directivas y controladores,
desacoplando la lógica, especialmente las
interacciones con el usuario, de su
presentación.
Crossfilter.js es una librería para la
exploración multi-variable de datasets en el
browser. Soporta interacciones en tiempo real
(< 30ms) sincronizando las vistas con datasets
de millones de registros, para operaciones de
filtrado, agrupación y ordenación sobre los
datos. En definitiva, provee capacidades OLAP
sobre grandes volúmenes de datos en el
entorno cliente.
Estrategia de Evolución Tecnológica. Pag. 4
Convivencia de nuevas
tecnologías web front-end
con tecnologías clásicas
back-end
Una de las mayores ventajas de estos JS
frameworks, es que son agnósticos con la solución
back-end utilizada. Nos permiten comunicar el
browser con el servidor mediante diferentes
mecanismos, como web sockets para aplicaciones
en tiempo o servicios REST para aplicaciones
CRUD, y mantener toda la agilidad de una
aplicación SPA sin necesidad de cambiar la
arquitectura del servidor.
Desde el punto de vista IT, la incorporación de
estas tecnologías conlleva los siguientes
beneficios:
Menor time-to-market: desarrollo más ágil
de aplicaciones Web basado en una programación
declarativa en vez de funcional.
Mayor calidad del software: se integran
herramientas para automatizar las pruebas
unitarias y pruebas de integración, que permiten
asegurar la calidad del software.
Mayor mantenibilidad del software: la
organización modular del código simplifica el
mantenimiento de las aplicaciones.
Rendimiento y menor uso de recursos:
optimización del uso de recursos mediante
librerías como Browserify, gestión de estáticos,
ficheros minimizados, etc.
Acerca de Indizen
T echnology & Business Confluence
Fundada en 2001, Indizen es una compañía de
consultoría de negocio, ingeniería algorítmica y
desarrollo tecnológico con una clara vocación
por la innovación y por los sistemas orientados
a la computación distribuida..
Hace más de 10 años fuimos pioneros en la
implantación de los primeros sistemas GRID en
España por lo que nuestra evolución hacia el
desarrollo ágil basados en Cloud, tecnologías
Big Data y NoSQL ha sido natural.
Indizen ofrece una alta especialización en el
análisis, diseño, implementación y despliegue
de arquitecturas y procesos orientados a la
ingesta, transformación, normalización,
almacenamiento, análisis y visualización de
grandes datos, a través de nuestra experiencia
y conocimiento sobre casos de uso del mundo
real (modelos predictivos y estadísticos) desde
una perspectiva realista que combina
conocimiento del negocio y de la tecnología
que son clave para toma de decisiones y para la
mejora de la eficiencia de los procesos
empresariales e industriales.
Desde 2011 nos hemos volcado en la
construcción de soluciones basadas en
arquitecturas lambda (Hadoop, Storm, Hbase,
etc.) y NoSQL como componentes principales
de nuestro stack tecnológico, para impulsar la
innovación tecnológica tanto propia como de
nuestros clientes.
Indizen
Paseo de la Castellana, 130
28046 Madrid
España [email protected]
T (34) 91 535 85 68 http://www.indizen.com
Descargar