miércoles, 4 de septiembre de 2019

Aplicaciones orientadas a microservicios

Revisando la arquitectura de nuestros sistemas, analizando oportunidades de mejoras, buscando formas de mejorar performance y escalabilidad.
Aquí se mencionan algunos artículos y temas de interés.

Diseño de una aplicación orientada a microservicios: muy buena publicación, donde explica el desarrollo de una aplicación empresarial del lado del servidor.

Advanced Message Queuing Protocol (AMQP)

Command Query Responsibility Segregation (CQRS)
¿Que es CQRS?
CQRS es un patrón de arquitectura que separa los modelos para leer y escribir datos.
La idea básica es que puede dividir las operaciones de un sistema en dos categorías claramente separadas:
- Consultas. Devuelven un resultado sin cambiar el estado del sistema y no tienen efectos secundarios.
- Comandos. Cambian el estado de un sistema.


Event-driven architecture (EDA)

Swagger es un marco de código abierto de uso común, respaldado por una gran variedad de herramientas que le permite diseñar, compilar, documentar y utilizar las API RESTful. Se está convirtiendo en el estándar para el dominio de metadatos de la descripción de API.

Desarrollo de aplicaciones móviles


Hay tres clases de aplicaciones móviles:

  1. Nativas: Significa que para su desarrollo se utilizó el lenguaje de programación nativo del dispositivo. Es un modelo cien por ciento dependiente de la plataforma y las Apps no son portables, hay que desarrollar una por plataforma.
Los principales paradigmas asociados a las Apps nativas son:
·         Se puede lograr el mejor rendimiento posible.
·         Se puede lograr un look&feel ópitimo acorde al sistema operativo
·         Se puede acceder a todas las capacidades del dispositivo

  1. Nativas Hibridas: Son desarrolladas usando HTML5, CSS y JavaScript, desplegadas dentro de un contenedor nativo como Phonegap/Cordova el cual brinda acceso a las capacidades del dispositivo de una forma totalmente neutral respecto al sistema operativo. Es un modelo neutro respecto a la plataforma y con portabilidad máxima.
  1. Nativas Generadas: Son aplicaciones desarrolladas usando herramientas como Xamarin o Genexus (entre muchas otras), en donde el desarrollo se realiza usando técnicas y lenguajes específicos de la herramienta y luego se genera la App en el lenguaje de la plataforma destino para ser compilada con las herramientas nativas.

Frameworks para desarrollo de aplicaciones móviles híbridas

Permite desarrollar aplicaciones híbridas mediante tecnología web HTML5, CSS3 y JavaScript. Utiliza una API que permite acceder a elementos de hardware del sistema como la cámara, almacenamiento, acelerómetro, etc. Permite integrarse con otros frameworks como por ejemplo jQuery Mobile, etc.

Apache Cordova es la versión de código abierto de PhoneGap, la principal diferencia entre estos dos frameworks es que PhoneGap tiene acceso al servicio de compilación en la nube Adobe Creative Cloud permitiendo compilar la aplicación para el sistema operativo deseado e independiente del sistema operativo donde se desarrolle. Consulta este artículo para más información sobre sus similitudes y diferencias.

Al contrario que otros frameworks mencionados más abajo que se ocupan de la parte de la interfaz, PhoneGap/Apache Cordova se encarga de la integración dentro del sistema operativo móvil y de dar acceso a los servicios de éste. Así que probablemente lo usarás junto a alguno de estos frameworks, que en muchos casos sólo ofrecen la parte de la interfaz de usuario en HTML, CSS y JavaScript.

Únicamente integra el framework jQuery basado en JavaScript. Su curva de aprendizaje es muy baja. Se ha quedado un poco atrás en cuanto a potencia y diseño si lo comparamos con el resto de nuevos frameworks que hay en el mercado.

Es uno de los frameworks más famosos para el desarrollo de aplicaciones híbridas. Utilizaa los frameworks Front-End: Angular, React, Vue.JS.

Ionic integra una capa de diseño con estilos css y recursos como iconos, etc. Estos estilos pueden ser adaptados a los estándares de diseño de las plataformas Android e iOS. Otra de sus muchas ventajas es que Ionic tiene su propio IDE de desarrollo que nos facilitará el diseño y programación de aplicaciones.

Framework 7 no es uno de los más conocidos, pero tiene la ventaja de que es completamente independiente y por lo tanto no tiene dependencias externas en frameworks como Angular o React.

Este framework tiene una curva de aprendizaje más baja que React Native e Ionic gracias a que se pueden realizar aplicaciones híbridas utilizando simplemente HTML5, CSS3 y JavaScript. No obstante Framework 7 permite su desarrollo también con Vue.JS o React si nos interesa. Para la emulación y ejecución requiere la combinación con Cordova o PhoneGap.

Frameworks para desarrollo de aplicaciones móviles nativas

Framework para crear aplicaciones híbridas basadas en JavaScript y en un conjunto de componentes del framework ReactJS. Actualmente también es uno de los más famosos, y cuenta con una gran comunidad de desarrollo. Forma parte de aplicaciones muy potentes y conocidas, como Facebook, Pinterest, Skype o Instagram.

Permite el desarrollo de aplicaciones nativas mediante JavaScript y TypeScript. También permite el desarrollo mediante el Framework Angular y Vue.js. NativeScript genera aplicaciones verdaderamente nativas, utilizando las mismas APIS que tendrías disponibles desde Android Studio y XCode. Incluso permite el acceso a bibliotecas nativas de terceros, aportando así mayores capacidades respecto al rendimiento y capacidades de las aplicaciones.

Su mayor inconveniente es que el desarrollo de las interfaces de usuario es más complejo (es XML, no HTML), así como las abstracciones necesarias para acceder al código nativo de manera independiente del sistema. Con NativeScript no necesitarás a PhoneGap/Apache Cordova.

Apps That Work Natively on the Web and Mobile – Angular + NativeScript


Es un nuevo framework desarrollado por Google para desarrollar aplicaciones nativas de forma fácil, rápida y sencilla. La principal y más importante ventaja de Flutter es que desarrollas un solo proyecto para todos los sistemas operativos, lo que significa una reducción de costes y tiempo de producción. Utiliza un lenguaje llamado Dart. Gana en performance a React Native y Native Script.


Otras opciones ya menos utilizadas son:

Permite crear aplicaciones nativas de IOS y Android a partir de un único código escrito completamente en JavaScript o TypeScript. Se pueden utilizar las bibliotecas JavaScript existentes, los módulos de nodo y el complemento Cordova para crear aplicaciones.

Es un marco de código abierto que permite la creación de aplicaciones para Android, IOS, Blackberry y Windows desde una única base de código JavaScript.

Tiene un marco de aplicación MVC que proporciona un modelo simple para separar la interfaz de usuario de la aplicación, la lógica y los modelos de datos. Es opcional, ya que solo puede codificar la interfaz y las lógicas solo en JavaScript.

Al igual que React Native y Native Script, Fuse es una plataforma para crear aplicaciones móviles multiplataforma con UX Markup (un lenguaje basado en XML que proporciona el componente básico de la interfaz de usuario) que se compila en código nativo y JavaScript para controlar la lógica empresarial. que es interpretado por una máquina virtual JavaScript en tiempo de ejecución. 


Cursos y enlaces de interés