Lecciones aprendidas sobre deep learning para la detección de fraude de tarjetas de crédito

En este post os presentamos un resumen y la presentación completa de una de las charlas del UOC Data Day, celebrado el día 14 de junio de 2017 en Barcelona sobre el uso de las redes neuronales (deep learning) para la detección de fraude de tarjetas de crédito.

Esta ponencia fue a cargo de Alberto Rubio Muñoz, Senior Data Scientist en BBVA Data & Analytics y profesor colaborador docente del área de minería de datos y machine learningdel Máster universitario en Ciencia de datos (Data Science).

Los datos están cambiando nuestra sociedad. Debido a los datos estamos repensando nuestras industrias para construir mejores productos: agricultura, educación, finanzas, jurídicos, etc. Con el advenimiento de los datos, un hijo pródigo del machine learning ha vuelto a la delantera para desempeñar un papel principal: las redes neuronales artificiales, también conocido como Deep learning o aprendizaje profundo. En esta charla, proporcionaremos algunas ideas sobre su aplicación para detectar transacciones de tarjetas de crédito fraudulentas realizadas en tiendas y minoristas en línea. También describiremos los datos que usamos, cómo se entrenan las redes neuronales y cómo se mide su eficiencia o precisión. Además, reflexionaremos sobre cómo la posibilidad de procesar gran cantidad de datos ha impulsado el deep learning y el machine learning en la industria.

A continuación, os dejamos la grabación de la ponencia completa, así como el material de soporte utilizado para la presentación.

¡Esperamos que la disfrutéis!

Nota: Este artículo ha aparecido previamente en el blog de Análisis y Ciencia de Datos de la UOC: http://dataanalysis.blogs.uoc.edu/.

 

Jordi Casas es profesor de los Estudios de Informática, Multimedia y Telecomunicación en la UOC y director del Máster Universitario en Ciencia de Datos y del Máster en Inteligencia de Negocio y Big Data. Su docencia se centra en las áreas de ciencia de datos, machine learning, privacidad y teoría de grafos.

Deep Learning en #XDS3

A finales de agosto se celebró en París (concretamente en Palaiseau) la Data Science Summer School 2017 (DS^3), organizada por el Laboratoire de Informatique (LIX) de la prestigiosa École Polytechnique francesa.

Aunque era su primera edición, el evento fue todo un éxito, con más de 400 inscritos, incluyendo estudiantes, investigadores, profesores y profesionales de industria y empresa del sector. Sin duda, estos números confirman el auge que estamos viendo en los temas relacionados con la ciencia de datos, machine learning, análisis de datos, Big data y otros temas relacionados.

Durante los cinco días que duró el acto, se dieron diversas ponencias y tutoriales de muchos temas relacionados con la ciencia de datos: por ejemplo, se habló extensamente de graphical models, randomized optimization methods o bayesian optimization. Pero sin duda, el “rey de la fiesta” fue el deep learning. Cerca del 40% de la programación del evento estaba relacionado con las redes neuronales y deep learning.

Uno de los grandes atractivos de este evento fueron las clases magistrales que ofreció Yoshua Bengio sobre redes neuronales artificialesdeep learning.

Las redes neuronales artificiales (ANN, artificial neural networks) están formadas por un conjunto de neuronas distribuidas en distintas capas. Cada una de estas neuronas realiza un cálculo u operación sencilla sobre el conjunto de valores de entrada de la neurona, que en esencia son entradas de datos o las salidas de las neuronas de la capa anterior, y calcula un único valor de salida que, a su vez, será un valor de entrada para las neuronas de la siguiente capa o bien formará parte de la salida final de la red.

La siguiente figura presenta un esquema básico de una red neuronal con la capa de entrada, múltiples capas ocultas y la capa de salida.

Estas redes se suelen inicializar con valores aleatorios, y requieren de un proceso de entrenamiento con un conjunto de datos para poder “aprender” una tarea o función concreta. Este proceso de aprendizaje se realiza utilizando el método conocido como Backpropagation. En esencia (y a riesgo de simplificar demasiado), este método calcula el error que comete la red en la predicción del valor para un ejemplo dado e intenta “retroceder” este error, de tal forma que cada neurona “asuma” su parte de responsabilidad en este error y modifique sus parámetros para intentar reducirlo.

Este tipo de algoritmos tuvo su época de esplendor hace ya unas décadas. Su principal limitación se encuentra en un problema en el proceso de aprendizaje que se da en las redes con cierto número de capas ocultas (capas intermedias, es decir, que se encuentran entre la entrada de datos y la salida o respuesta final de la red). En estos casos, se produce lo que se conoce como el problema de la desaparición o explosión del gradiente, que básicamente provoca problemas en el proceso de aprendizaje de la red.

Estos problemas han sido superados años más tarde, dando inicio a lo que se conoce actualmente como deep learning. Se ha modificado la estructura básica de las redes neuronales, creando, por ejemplo, redes convolucionales que permiten crear distintas capas donde el conocimiento se va haciendo más abstracto. Es decir, las primeras capas de la red se pueden encargar de identificar ciertos patrones en los datos, mientras que las capas posteriores identifican conceptos más abstractos a partir de estos patrones más básicos. Por ejemplo, si queremos que una red neuronal pueda detectar cuando aparece una cara en una imagen, este enfoque buscaría que las primeras capas de la red se encarguen de detectar la presencia de un ojo en alguna parte de la imagen, de una boca, etc. Así, las siguientes capas se encargarían de combinar esta información e identificar una cara a partir de la existencia de las partes que la forman (ojos, boca, nariz, etc). De esta forma vamos avanzando de una información más básica hacia un conocimiento más abstracto.

La siguiente figura muestra un esquema, aunque muy general, de una red convolucional.

Para quién tenga interés en profundizar sus conocimientos sobre redes neuronales y deep learning, os dejamos un par de referencias que creemos que pueden ser de interés (entre las muchísimas que hay disponibles en la actualidad):

  • En la página www.deeplearningbook.org se puede descargar (gratuitamente) los capítulos del libro “Deep learning”, escrito entre otros por Yoshua Bengio. Además, se pueden encontrar otros recursos interesantes, como por ejemplo presentaciones o vídeos de charlas que han dado los autores del libro.
  • El libro “Minería de datos: modelos y algoritmos” es una introducción a distintos métodos de minería de datos, entre otros las redes neuronales artificiales. El libro forma parte del material docente del máster universitario en ciencia de datos (data science) y ha sido escrito por varios profesores del área de minería de datos y machine learning de la UOC.

Nota: Este artículo ha aparecido previamente en el blog de Análisis y Ciencia de Datos de la UOC: http://dataanalysis.blogs.uoc.edu/.

 

Jordi Casas es profesor de los Estudios de Informática, Multimedia y Telecomunicación en la UOC y director del Máster Universitario en Ciencia de Datos y del Máster en Inteligencia de Negocio y Big Data. Su docencia se centra en las áreas de ciencia de datos, machine learning, privacidad y teoría de grafos.

Computación distribuida y de alto rendimiento para potenciar la educación online

Los entornos de aprendizaje online actuales o sistemas de gestión de aprendizaje (LMS, en sus siglas en inglés) evolucionan muy rápidamente, y con requisitos tanto pedagógicos como tecnológicos cada vez más exigentes. Ciertamente, estos entornos ya no dependen de los contenidos y recursos estáticos del pasado, con grupos de alumnos homogéneos y modelos de aprendizaje únicos, sino que cada vez es más necesaria una alta flexibilidad y personalización en todos los frentes. Actualmente, se desarrollan complejos recursos e innovadoras estrategias de aprendizaje, como los juegos serios, los laboratorios virtuales, las analíticas del aprendizaje y la gamificación, que potencian fuertemente la interacción, colaboración y personalización del aprendizaje y, en conjunto, redundan en incrementar la motivación e implicación de los alumnos en su proceso de aprendizaje.

Analíticas del aprendizaje (fuente: proyecto ICT-FLAG, Ref. TIN2013-45303-P)

Sin embargo, al escalar estos recursos y estrategias de aprendizaje desde pequeños tests controlados a su puesta en producción masiva en entornos reales, nos encontramos con importantes barreras computacionales que impiden su despliegue y ejecución efectiva, limitando a su vez los beneficios pedagógicos esperados. Además, las organizaciones educativas actuales necesitan dar soporte a la distribución de actividades de aprendizaje y funcionalidades de los LMS con independencia de la localización tanto de los alumnos y profesores como de los recursos, y así facilitar la experiencia de aprendizaje en entornos abiertos, dinámicos, heterogéneos y masivos.

Resumiendo, la mayoría de desarrollos tecnológicos en los LMS tienden a aproximarse a la parte visible (funcional) de estos sistemas, desmereciendo la parte invisible (no funcional), como el rendimiento, la escalabilidad, la interoperabilidad, etc, que finalmente son requisitos cruciales para el correcto funcionamiento del sistema. Esta decisión de no tratar adecuadamente los requisitos no funcionales muchas veces viene motivada por su alta complejidad y por la falta de presupuesto para adquirir la costosa infraestructura ad hoc necesaria para hacerle frente.

En este contexto, la computación distribuida y computación de alto rendimiento (HPC, en sus siglas en inglés) han sido estudiadas a nivel de investigación demostrando un gran potencial para los entornos educativos y permitiendo abordar específicamente sus exigentes requisitos no funcionales de forma relativamente fácil y asequible. A continuación, revisamos brevemente algunos de los esquemas de computación distribuida más populares aplicados a entornos de aprendizaje online:

  • Computación Grid y Cloud. Las tecnologías Grid y Cloud se refieren a la integración y compartición de recursos computacionales (ordenadores, redes, etc) que se encuentran ampliamente distribuidos geográficamente. Son usadas en áreas complejas con necesidades computacionalmente intensivas y con requisitos de fuerte escalabilidad, disponibilidad y transparencia de acceso a los recursos con ahorro de costes. Estas características forman un contexto ideal para dar respuesta a los requisitos no funcionales indicados de los sistemas LMS. Además, el Cloud permite proporcionar servicios bajo demanda a estudiantes y profesores para desplegar recursos computacionales (por ejemplo, para laboratorios virtuales y video-materiales). El objetivo es dar soporte a experiencias complejas de aprendizaje personalizadas que requieren acceso bajo demanda, transparente e ubicuo.
  • Tecnologías peer-to-peer (P2P, en sus siglas en inglés). Estas tecnologías permiten superar los inconvenientes de poca escalabilidad y tolerancia a fallos de los sistemas clásicos cliente-servidor en los que se basan la mayoría de sistemas LMS, donde casi todo ocurre en el lado del servidor de forma centralizada, y el cliente no es más que una simple interfaz de acceso al servidor. Los sistemas LMS basados en redes P2P revierten esta situación con un enfoque descentralizado, donde cada cliente actúa también como servidor proporcionando y gestionando los recursos. Esto conlleva interesantes beneficios tecnológicos y pedagógicos para el aprendizaje online, como disponer de escalabilidad natural mediante el uso de los propios ordenadores de los usuarios, y comunicación directa entre los alumnos, lo que incrementa la interacción y fomenta el aprendizaje informal.
  • Computación Cluster. Un Cluster es un sistema de ordenadores o nodos conectados dentro de una red de alta velocidad que se comporta como un único recurso computacional. En organizaciones en general, y educativas en particular, se usa esta tecnología para reducir el tiempo global de procesar grandes cantidades de datos, especialmente cuando se requieren resultados en tiempo real, lo que es inviable utilizando los recursos computacionales habituales. A continuación se describe un caso típico del uso del Cluster para procesar datos, que también nos sirve de ejemplo del aprovechamiento de tecnologías distribuidas y HPC en general para la mejora de la educación.

Los LMS y Campus online actuales recogen enormes cantidades de información sobre la interacción de sus usuarios con el sistema que se guardan en ficheros log. Estos ficheros llegan a ser del orden de 20GB diarios de datos en estado primitivo, necesitando un procesado de extracción, transformación y carga (ETL, en sus siglas en inglés) previo a su análisis. El objetivo es conseguir un análisis efectivo de esta información para descubrir conocimiento útil que permita entender, por ejemplo, los patrones de navegación de los usuarios en el sistema LMS (analíticas del aprendizaje) y así mejorar el diseño de esta navegación mediante su adaptación a los hábitos y preferencias de los alumnos, incrementando así la eficiencia y satisfacción con el aprendizaje.

Sin embargo, procesar tanta información, y más si necesitamos los resultados en tiempo real, requiere infraestructura computacional más allá de un único ordenador (nodo) que procesa los datos de forma puramente secuencial. Se hace necesario el uso de computación distribuida y HPC con varios nodos procesando datos al mismo tiempo en paralelo. En las siguientes infraestructuras Cluster hemos testeado el procesado de grandes ficheros log procedentes del Campus Virtual de la UOC con resultados muy satisfactorios:

  • RDLab (Universidad Politécnica de Cataluña): 160 nodos físicos, CPU con 1000 cores y 3 TBytes de memoria RAM, 130 TBytes de espacio en disco y red de alta velocidad de 10 Gbit.
  • Artemis (Universidad de Sidney): 136 nodos físicos, CPU con 4264 cores y 6 TBytes de memoria RAM, 200 TBytes de espacio en disco y red de alta velocidad de 56 Gbit.

Según este estudio, acelerar el procesado de datos en paralelo con una de estas infraestructuras Cluster de 10 nodos, y usando Hadoop como software distribuido, mejoró en un 76% el rendimiento respecto a una aproximación secuencial (1 nodo).

 

Santi Caballé es Ingeniero y Doctor en Informática por la Universitat Oberta de Catalunya y profesor de los Estudios de Informática, Multimedia y Telecomunicación de esta misma universidad. Sus líneas de investigación más activas son: e-Learning y tecnologías distribuidas.

Portafolio y beneficios de TI

En una entrada anterior abogamos por la realización de beneficios de la inversión en TI como un esfuerzo compartido entre el negocio y los departamentos de tecnología en el largo plazo. El examen de beneficios comienza antes del proyecto (con la realización de un caso de negocio) y acaba después (con la revisión de los beneficios obtenidos). La gestión estratégica del portafolio es, para algunos, el instrumento más crítico de la dirección estratégica de TI. No es un plan estratégico, que sólo algunas empresas abordan en momentos muy críticos, pero tampoco es un formulario de gestión de la demanda o una manera más guay de recoger los pedidos.

La gestión del portolio de inversiones de TI según Joe Peppard

Actualmente las inversiones en informática compiten por el favor de lo comités de inversiones de las empresas con cualquier otra clase de inversión: abrir una nueva línea de producción, desarrollar un servicio nuevo, comprar equipamiento o construir una nueva planta. Con frecuencia, cualquiera que lleva una inversión al comité tiene que completar el mismo cuestionario, presentar su caso y anticipar el retorno con evidencias e indicadores.

El análisis de beneficios, en la teoría clásica, intenta relacionar, mapear cada tipo de inversión en informática con una clase de logro para la organización:

  • inversiones estratégicas, o sea las que se consideran críticas para sostener o mejorar las ventajas para competir, según la propia estrategia definida por cada empresa. Hay ventajas que tienen que ver con la diferenciación (Apple) o con los costes (Ryanair) o con la defensa de la posición en un nicho de mercado concreto (Prada). Por ejemplo, las inversiones en tecnologías de investigación y desarrollo son críticas para el futuro de algunas empresas farmacéuticas (Pfizer).
  • inversiones en aspectos clave de las operaciones, o sea las que soportan o transforman procesos que son críticos para el negocio. Los procesos del core business son diferentes para cada negocio, pero normalmente tienen que ver con el acceso al mercado (el time to market), el servicio al cliente, la gestión de pedidos (el order to cash) y la gestión de inventarios. En una empresa de distribución comercial, como Zara, las aplicaciones de punto de venta o las de logística serían de este tipo.
  • inversiones de soporte al resto de los procesos de negocio o a algunos aspectos de los procesos del core business, pero que no se consideran clave. Por ejemplo, hacer la nómina se ha convertido en una commodity que se puede entregar a un tercero para que la gestione en la nube.
  • inversiones de alto potencial son aquellas que permiten a las empresas explorar oportunidades y experimentar con nuevas tecnologías cuyo beneficio aún no está bien contrastado. La digitalización ha concedido mayor valor a este cuadrante donde se pueden situar las redes sociales, la inteligencia artificial, los big data, la internet de las cosas o la movilidad (lo que se conoce con el acrónimo SMACIT).

En los últimos años ha cobrado fuerza hacer un análisis combinado de beneficios y riesgos. Se dice, con razón, que la informática es una palanca, un facilitador (enabler), pero que es además el mejor instrumento para mitigar los riesgos de pérdida de clientes, de ventas o de activos (incluidos los activos informacionales) o para evitar problemas con los reguladores. Si la mayor pregunta del análisis de beneficios es por qué hacemos alguna cosa, el análisis de riesgos nos permite mostrar qué pasaría si dejásemos de hacerlo. En mi experiencia, resulta bastante efectivo y conmovedor y permite apalancar algunas inversiones, como las de infraestructura informática, que de otro modo se acaban considerando inversiones de soporte y obtienen tienen menor financiación. El director de informática, lo hemos escrito en otro lugar, es quizá sobre todo un gestor de riesgos.

Introducir una cultura de realización de beneficios requiere paciencia, gobierno, confianza, transparencia y, sobre todo, liderazgo. “Obtener valor para el negocio es un tema de liderazgo, no es un tema tecnológico”, decían McDowell y Simon hace tiempo. “El nivel de compromiso de los líderes de negocio y los líderes de TI determina si los sistemas sirven como un catalizador para obtener verdadero valor”.

 

José Ramón Rodríguez es profesor de dirección de las TIC en diferentes programas de la UOC y consultor independiente. Investiga la planificación y gestión de proyectos de transformación empresarial facilitados por los sistemas y tecnologías de la información.

Frameworks de JavaScript en el lado del cliente en 2017

En un post anterior ya hablamos sobre la evolución del desarrollo web del lado del cliente. Tal como anunciamos entonces, hoy es el turno de los frameworks del lado del cliente.

Los frameworks no son nuevos en el desarrollo de aplicaciones de gran envergadura. De hecho, la mayoría de lenguajes consolidados tienen una gran variedad de frameworks. Por ejemplo en el mundo Java son ampliamente conocidos Java Server Faces (JSF), Struts o Spring; en PHP encontramos Laravel, Yii o Symfony.

Las principales ventajas que aportan los frameworks son las siguientes:

  • Desarrollo rápido. Crear un proyecto desde cero suele conllevar un elevado coste en tiempo. Por eso, los frameworks proporcionan la estructura del proyecto y un conjunto de bibliotecas preconfiguradas que ahorran tiempo en el comienzo de los nuevos proyectos. Muchas tareas son delegadas a los frameworks permitiendo a los desarrolladores centrarse exclusivamente en las funcionalidades de su software.
  • Incorporación/Rotación de nuevos miembros a los equipos de desarrollo. Uno de los mayores problemas en el desarrollo de software es la rotación de miembros en los equipos de desarrollo, puesto que la incorporación de un nuevo miembro conlleva un coste en aprender la arquitectura del proyecto. Esto es minimizado utilizando un framework, ya que éste obliga a adaptarse a una arquitectura concreta, de modo que cualquier persona que conozca el framework podrá incorporarse rápidamente al desarrollo de cualquier aplicación basada en ella (puesto que conoce la manera de trabajar del framework), minimizando el coste para la empresa.
  • Seguridad/Rendimiento. Los frameworks suelen ser creados y mantenidos por equipos de desarrollo diferentes y externos a nuestra organización. Esto permite que esta organización esté completamente centrada en eliminar bugs de seguridad que puedan ir apareciendo a lo largo del tiempo. Y lo mismo sucede en relación al rendimiento.
  • Coste. La mayoría de framewoks son de código abierto y gratuitos, lo que supone una gran ventaja, puesto que están siendo actualizados constantemente por la comunidad.

A continuación se van a describir los principales frameworks de JavaScript para el lado del cliente que existen en 2017.

Angular

Angular es el framework estrella hoy en día en demanda de ofertas de trabajo y en comunidad detrás de él. Este framework es la evolución del anterior framework denominado AngularJS.

Eliminar el sufijo JS (referencia a JavaScript) es muy importante puesto que Angular pretende ser una plataforma de desarrollo y no un simple framework. Es decir, con Angular se pueden crear aplicaciones móviles utilizando diferentes tecnologías: Web progresivas (Angular), webview (Ionic) o nativo (Nativescript). Además, hay intentos de crear aplicaciones de escritorio (Angular Universal).

Angular es creado y apoyado por Google, en la actualidad se mantienen los desarrollos de AngularJS y Angular puesto que aún existe una gran comunidad detrás de AngularJS.

La gran crítica de los desarrolladores sobre Angular es su gran curva de aprendizaje, ya que empezar con Angular implica tener unos amplios conocimientos de diferentes tecnologías. En primer lugar, Angular es un framework de JavaScript que se ha apoyado y recomienda el desarrollo sobre TypeScript (superconjunto de JavaScript creado por Microsoft), utiliza la programación funcional o declarativa haciendo uso de funciones lambda, y se basa en el patrón reactivo (RxJS) para la gestión del código asíncrono del lenguaje JavaScript. Además, recomienda fuertemente el desarrollo basado en pruebas utilizando herramientas como Jasmine/Karma para las pruebas unitarias y de integración, y Protractor para las pruebas del sistema.

Por otro lado, las principales características de Angular que lo hacen el framework más utilizado son las siguientes:

  1. Buenas prácticas de desarrollo. Angular te fuerza o, al menos, te facilita la adopción de buenas prácticas de desarrollo, puesto que proporciona una estructura del proyecto que es fácilmente comprensible por cualquier desarrollador, así como una especificación clara de dónde deben ir los ficheros y cómo deben desarrollarse.
  2. Multiplataforma. Cuando se refiere a multiplataforma, ya no se está refiriendo a que el código funcionará adecuadamente en los diferente navegadores, sino que con los mismos conocimientos se podrán desarrollar aplicaciones móviles y de escritorio.
  3. Herramientas que permiten arrancar fácilmente. Oficialmente se mantienen herramientas como angular-cli que permiten crear proyectos y porciones de código de manera rápida que ayudan a crear proyectos desde cero.
  4. Facilidad para realizar pruebas e incluye aplicar metodologías como TDD. Al forzar a los desarrolladores a aplicar buenas prácticas de desarrollo se facilita la incorporación de pruebas en el código, llegando a poder aplicarse metodologías de desarrollo como TDD (Test-Driven Development) de un modo bastante sencillo.

React

React es la segunda gran apuesta en el desarrollo de aplicaciones del lado de cliente. Ha sido creado por Facebook para el desarrollo de interfaces de usuario en aplicaciones Web. Constantemente se compara React con Angular pero sus objetivos son diferentes: React no es un framework sino una biblioteca que se centra en crear interfaces de usuario, a diferencia de Angular, que trata de abarcar mucho más.

Su incorporación en esta lista se debe a que es ampliamente utilizada y comparada con otros frameworks. El principal objetivo de esta biblioteca es proporcionar a los desarrolladores un entorno fácil para crear aplicaciones con un gran volumen de datos que son modificados en tiempo real y, por tanto, requieren de muchos refrescos en la pantalla (interfaz de usuario).

Es importante remarcar que en el patrón de diseño de aplicaciones MVC (Modelo-Vista-Controlador), React solamente sería la vista (V). Por lo tanto, React puede ser integrado en muchos más proyectos de desarrollo Web, ya que solamente implica una parte del desarrollo.

La razón de la gran popularidad de esta biblioteca es que impulsó el concepto de DOM Virtual (Document Object Model Virtual), por el cual se conseguía un gran rendimiento en las interfaces de usuario que tenían un gran volumen de refrescos, y supuso un cambio importante en el momento de su aparición (dicha característica también es proporcionada hoy en día por otros frameworks).

Otra de las razones de su gran popularidad es que es la biblioteca utilizada para los interfaces de usuario de tres grandes proyectos de la compañía de Facebook: Instagram, Whatsapp y la propia Facebook.

Tal es el éxito de esta biblioteca, que ha surgido un proyecto conocido como React-native para crear aplicaciones móviles utilizando React.

Vue.js

El tercer framework en esta lista es el proyecto de código abierto denominado Vue.js, el cual ha tenido una gran popularidad en los últimos tiempos con la aparición de la versión 2.0 en 2016. Este framework trata de tomar lo mejor de cualquier framework e implementarlo, de hecho, en amplias comparativas entre diferentes frameworks ha conseguido unos resultados extraordinarios en velocidad y ligereza de peso (esa es otra de las grandes críticas a otros frameworks).

Se podría decir que Vue.js se encuentra en un estado de complejidad entre Angular y React puesto que no llega a proporcionar tantos elementos y complejidad como Angular, pero sí se ocupa de tareas que, al ser un framework completo, no son contempladas en React.

Al ser más simple y fácil de aprender que Angular, está siendo adoptado por muchos desarrolladores: entre sus principales alabadores se encuentra la comunidad de Laravel (uno de los principales frameworks de lado de servidor en PHP), que lo ha elegido como el framework del lado del cliente por defecto.

Otros frameworks

No solamente existen tres frameworks del lado del cliente, de hecho, hay un popular chiste entre la comunidad de desarrolladores que cuenta que cada semana aparece un nuevo framework del lado del cliente que hay que aprender. Por lo tanto, describir la larga lista de frameworks que existen no sería provechoso, pero sí es importante remarcar otros frameworks de JavaScript populares:

BackboneJS es uno de los frameworks del lado del cliente con larga vida (más de 7 años), pues su primera versión es de 2010. Este framework está centrado en crear aplicaciones clientes sincronizadas con un servidor, proporcionando una interfaz de comunicación RESTful muy potente. Algunos de los desarrollos más populares que utilizan BackboneJS son AirBnB, Groupon now o LinkedIn.

EmberJS es otro popular framework que vivió su esplendor en 2015, cuando fue considerado uno de los mejores frameworks por la comunidad. Hoy en día es sólo otro framework más con una amplia comunidad de desarrolladores, pero no se puede decir que destaque por una característica novedosa. Eso sí, está centrado en que se apliquen buenas prácticas de desarrollo del mismo modo que Angular.

Conclusiones

El uso de un framework de JavaScript depende de exactamente lo mismo que utilizar un framework en cualquier otra tecnología. La gran diferencia que puede surgir hoy en día es que la fragmentación de dispositivos y navegadores es un gran quebradero de cabeza para los desarrolladores y los frameworks permiten mitigar este problema. La elección de uno u otro depende principalmente del tipo de proyecto que se quiera abordar, puesto que si se va a crear una aplicación de gran envergadura es bueno apostar por un framework que permita aplicar buenas prácticas a todo el equipo de desarrollo, tal y como puede ser Angular o Ember. Por otro lado, si se quiere tener un framework ligero y sin muchas complicaciones quizás sea una buena idea utilizar Vue.js o React.

No obstante, lo que es seguro es que tomar la decisión de utilizar un framework u otro implica un gran coste en el desarrollo y debe ser meditada, puesto que cada uno de ellos proporciona una serie de ventajas, pero fuerzan al proyecto a tomar un rumbo u otro.

Carlos Caballero González es Ingeniero y Doctor en Informática por la Universidad de Málaga. Máster en Ingeniería del Software e Inteligencia Artificial. Es profesor técnico de formación profesional en la especialidad de sistemas y aplicaciones informáticas, profesor colaborador de los estudios de Informática, Multimedia y Telecomunicación de la Universitat Oberta de Catalunya (UOC) e investigador en la Universidad de Málaga.