Nuestro Blog

Nuestro equipo de especialistas quiso compartir algunos artículos sobre tecnologías, servicios, tendencias y novedades de nuestra industria en la era de la transformación digital.

Mejores prácticas en Microservicios

Mejores prácticas en Microservicios

La arquitectura de microservicios, o simplemente microservicios, es un método distintivo de desarrollo móvil y de sistemas de software que trata de enfocarse en construir módulos de una sola función con interfaces y operaciones bien definidas, es por eso que se considera una tendencia que podría beneficiar a muchas empresa ya que se orienta a brindar servicios y está compuesta de elementos acoplados libremente que tienen contextos delimitados.

El término de “acoplado libremente” significa que se puede actualizar los servicios de forma independiente, esta actualización no requiere cambiar ningún otro servicio. De hecho, si tienes un montón de servicios pequeños y especializados pero para realizar un cambio en ellos debes actualizarlos juntos, entonces no puede llamarse arquitectura de microservicios, ya que no se encuentran acoplados de manera flexible.

En otras palabras, son un patrón arquitectónico granular que separa partes de una aplicación en pequeños servicios independientes, además, en el desarrollo móvil y de software es un estilo arquitectónico que estructura una aplicación como una colección de servicios que se soporta y comprueba constantemente, débilmente acoplado y desplegable independientemente.

Además de ser organizado en torno a las capacidades empresariales y de sus múltiples beneficios, se cree que el 90% de todas las aplicaciones nuevas contarán con una arquitectura de microservicios para mejorar la capacidad de diseñar, depurar, actualizar y aprovechar el código de terceros.

Este pronóstico no es del todo sorprendente, ya que esta arquitectura es ventajosa por su entrega continua, escalabilidad, sencillo mantenimiento, disminución de riesgos y mayor productividad a través de la automatización.
Sin embargo, estos beneficios solo se pueden aprovechar si el estilo arquitectónico se adopta adecuadamente con las herramientas y elementos correctos. Sin más que agregar, analicemos cuáles son las mejores prácticas:

1) Crea un almacén de datos separado para cada microservicio
Primero que nada, no uses el mismo almacén de datos para el backend cuando quieras implementarla o realizar la transición a este tipo de arquitectura.
Para ello, permite que el equipo de cada microservicio elija la base de datos que mejor se adapte al servicio y que pueda ser almacenada en un único espacio de datos, esto permite la escritura de diferentes equipos y que estos, puedan compartir estructuras de bases de datos, reduciendo así la duplicación de trabajo.

Mantener los datos separados puede hacer que la administración de datos sea más complicada, porque los sistemas de almacenamiento separados pueden tener errores o ralentizarse en los momentos de sincronización, volviéndose inconsistentes y limitando la escalabilidad.

2) Mantén el código en un nivel de madurez similar
Esta práctica recomienda mantener todo el código a un nivel similar de madurez y estabilidad, es decir, si necesita agregar o reescribir parte del código en este tipo de arquitectura implementada que funciona bien, el mejor enfoque suele ser crear un nuevo microservicio para el código nuevo o modificado, dejando el microservicio existente en su lugar.

De esta forma, puedes implementar y probar de forma repetida el nuevo código hasta que esté libre de errores y sea lo más eficiente posible, sin riesgo de fallas o degradación del rendimiento en el microservicio existente, este proceso se conoce como el principio de infraestructura inmutable.
Permitiendo así, luego de verificar que este nuevo microservicio es tan estable como el original, fusionarlos nuevamente si realmente realizan una sola función en conjunto, o si hay otras eficiencias al combinarlos.

3) Hacer una compilación separada para cada microservicio
Esta es una de las mejores prácticas recomendadas al momento de diseñar una arquitectura este tipo para el desarrollo móvil o de software, ya que insta la realización de una compilación por separado para cada microservicio, de modo que puedas extraer archivos de componentes del repositorio en los niveles de revisión apropiados para él.

Esto a veces conduce a la situación en la que varios de este tipo extraen un conjunto similar de archivos, pero a diferentes niveles de revisión, eso puede hacer que sea más difícil limpiar la base de código retirando versiones antiguas de archivos (porque debes verificar con más cuidado que ya no se está utilizando una revisión), pero eso es una compensación aceptable por lo fácil que es agregar nuevos archivos a medida que construyes nuevos microservicios.

4) Implementar en contenedores
La implementación de microservicios en contenedores es importante porque significa que solo necesitas una herramienta para implementarlo todo.
Mientras el microservicio esté en un contenedor, la herramienta sabe cómo implementarlo, sin importar cuál sea el contenedor.

5) Tratar a los servidores como miembros intercambiables
Esta práctica recomienda tratar a los servidores, particularmente aquellos que ejecutan código orientado al cliente, como miembros intercambiables de un grupo.
Es decir, todos realizan las mismas funciones, por lo que no necesitas preocuparse por ellos individualmente, tu única preocupación es que existan suficientes para producir la cantidad de trabajo que necesitas, y puede usar la escala automática para ajustar los números hacia arriba y hacia abajo.
De esa manera, si uno deja de funcionar, se reemplaza automáticamente por otro.

6) Usa ‘defensa en profundidad’ para priorizar servicios clave
Luego de identificar cuáles son tus servicios más sensibles, aplicas varias capas de seguridad diferentes para que un atacante potencial que pueda explotar una de sus capas de seguridad todavía tenga que encontrar una manera de vencer a todas sus otras defensas en tus servicios críticos.
En general, esto es más fácil decirlo que hacerlo, pero hay varios recursos disponibles, la buena noticia es que este tipo de arquitecturas facilitan la adopción de esta estrategia de una manera muy granular y estratégica, al enfocar sus esfuerzos y recursos de seguridad en microservicios específicos, aumentando la diversificación de las capas de seguridad que deseas adoptar en cada uno de ellos.

7) Usa actualizaciones de seguridad automáticas
Cada vez que se actualiza una parte de tu sistema, debes asegurarse de detectar cualquier problema lo suficientemente pronto y con el mayor detalle posible.
Para ello, implementa esta práctica para asegurarte de que tu plataforma sea principalmente “atómica”, es decir, todo debe estar envuelto en contenedores para que probar tu aplicación con una biblioteca actualizada o una versión de idioma sea solo una cuestión de envolver un contenedor diferente a su alrededor, así, si la operación falla, revertir todo será bastante fácil y, lo más importante, puede automatizarse.

Conclusiones
A diferencia de la arquitectura de monolito, diseñar e implementar microservicios de manera correcta puede llegar a ser algo desafiante y difícil, pero dado que brinda una solución descentralizada para diferentes problemas para el desarrollo móvil y desarrollo de software, definir el conjunto de mejores prácticas no solo es importante sino también crucial.

Así, no solo se crea un sistema sólido a prueba de balas sino también, se previenen un montón de desastres que podrían ser altamente contraproducentes.
En sí, como un microservicio es capaz de englobar la capacidad comercial central y al mismo tiempo, adherirse a los principios y objetivos de diseño fundamentales, este se convierte en un verdadero activo digital, no únicamente para el desarrollo móvil y de software sino porque también es idóneo para aportar valor a la empresa, pudiéndose usar con éxito en múltiples contextos y procesos, tanto transaccionales como comunicacionales.

Conocé más sobre nuestros procesos de Desarrollo Móvil en nuestra sección.

Herramientas para hacer un prototipo interactivo

Herramientas para hacer un prototipo interactivo

El proceso creativo para diseñar un eficiente interfaz y experiencia de usuario es uno de los más importantes, debido a que de este dependen variables importantes, como el porcentaje de adopción de los usuarios finales, así como el índice de satisfacción general. Por esta razón, las compañías de desarrollo de software hacen mucho hincapié en optimizar el proceso de diseño y aprobación, validando todas las propuestas antes de iniciar con la fase del desarrollo, que es la que consume más recursos; recurriendo entonces al uso de herramientas como el Prototipo Interactivo.

Hoy en día, existen muchas herramientas que brindan la oportunidad de hacer una revisión de todas las fases en un proyecto, estimula la retroalimentación entre los miembros del equipo, y no menos importante: nos da una idea bastante clara de lo que será la experiencia del usuario. Teniendo en cuenda la importancia de esta fase en un proyecto de desarrollo, hemos hecho una recopilación de las mejores herramientas para hacer un prototipo interactivo:

Flinto

Se trata de una aplicación producida para MacOS, ampliamente reconocida y usada por los diseñadores más exigentes para crear prototipos interactivos y animados en desarrollo de software. Entre sus principales funcionalidades, podríamos nombrar las siguientes:

  • Transiciones animadas: Flinto posee un excelente diseñador de transiciones que permite crear tus propias transiciones animadas de una forma bastante sencilla. No necesitas realizar cronogramas, ni programar, el diseñador de transiciones es bastante intuitivo, solo deberás colocar cualquier elemento donde desees y estará listo.
  • Diversos comportamientos: con el diseñador de comportamiento podrás crear microinteracciones dentro de las pantallas, una función perfecta si quieres agregar animaciones en bucle, botones, animaciones de desplazamiento o interruptores.
  • Característica de desplazamiento: es posible agregar áreas desplazables con tan solo un clic y crear también animaciones sorprendentes con base en el scrolling que se encuentra en el diseñador de comportamiento.
  • Recursos para dibujo: excelentes herramientas de dibujo que te permitirán diseñar maquetas simples a tu gusto o editar textos y formas insertados a partir de Sketch. Incluso podrás hacer animaciones de curvas vectoriales.

Podrás conocer más sobre Flinto en su página web: https://www.flinto.com/

JustInMind

Se trata de una herramienta bastante intuitiva y dinámica para la creación de prototipos “todo en uno” recomendada para aplicaciones y páginas web, con ella podrás revisar desde estructuras alámbricas hasta prototipos altamente interactivos.

JustInMind te permitirá comenzar un proyecto desde el principio, por ejemplos ir desde wireframes clicables hasta prototipos 100% interactivos a fin de tener una idea muy amplia de gestos móviles, interacciones en línea, haciendo más sencillo el trabajo de UX/UI. Entre sus principales funcionalidades se encuentran:

  • Diseño eficiente: con esta herramienta podrás escoger el tamaño, el estilo y la distribución de todo tipo de elementos en la interfaz de usuario con la finalidad de que se ajuste al aspecto de sus pantallas.
  • Interacciones en línea: tienes la posibilidad de diseñar experiencias web a través de un amplio catálogo de interacciones y animaciones incluyendo desde enlaces sencillos hasta interacciones cada vez más complejas.
  • Infinidad de gestos móviles: Puedes elegir entre una gran variedad de gestos que te permitirán deslizar, desplazar, tocar, rotar y hasta pellizcar el prototipo de tu aplicación móvil.
  • Diseño liquido: define contenedores líquidos gracias a los cuales los elementos de una página podrán adaptarse sin problemas a los distintos tamaños de pantalla, relaciones de aspecto y orientaciones.
  • Ajuste automático de tamaño: Te permitirá cambiar de forma instintiva el tamaño de los grupos de elementos en cada página, ahorrando múltiples cambios en el diseño de software y dando un espacio real para la creación.
  • Fijación de objetos destacada: esta función habilita la sujeción de los objetos en contenedores o pantallas, una característica que combinada con un desplazamiento libre proporciona experiencias más receptivas.

Descubre más sobre JustInMind en su sitio oficial https://www.justinmind.com/

InVision

Esta herramienta te brinda la facilidad de compartir y comentar un proyecto en vivo con el cliente, convirtiéndose en una excelente estrategia para gestionar y agilizar tiempos y procesos. También podrás administrar las versiones de tus proyectos sincronizando Illustrator o Photoshop con la app, evitando que te pierdas en un laberinto de carpetas y capas de diversos archivos. Entre algunas de sus funcionalidades destaca:

  • Presencia de clic y sobre-clic: Podrás escoger entre los puntos de acceso de clic o desplazamiento para señalar cuáles son los flujos de usuarios en el prototipo.
  • Puntos de acceso a otras ventanas: InVision te habilita para configurar enlaces que se vinculen con otras pantallas en tu prototipo, estilo URL externas, puntos de anclaje, acceso rápido y más.
  • Diseño de plantillas: pensando en aquellos elementos recurrentes como los menús, esta función te habilita para configurar plantillas con puntos de acceso para este tipo de necesidad y aplicarlos de forma global en el prototipo a través de un clic.
  • Inclusión de gestos y transiciones: gestos como el doble toque y el deslizamiento pueden ser agregados a fin de mostrar las interacciones en el prototipo y mejorar la experiencia de usuario en la vida real.
  • Interacciones varias y animaciones: introduce animaciones como tirar hacia abajo o hacia la derecha para revelar la capacidad de interacción de tu prototipo.

¿Te gustaría saber más sobre InVision? Visita su sitio: https://www.invisionapp.com/

¿No tenés claro cuáles son los beneficios de realizar un prototipo interactivo? Te lo dejamos saber en nuestra entrada de blog “Beneficios de realizar un prototipo interactivo”.

Fluid UI

Las ideas se pueden convertir en prototipos en poco tiempo gracias a Fluid UI, y no solo eso, es posible compartir, colaborar y retroalimentarte con la opinión de tu equipo, recomendada para aplicaciones pequeñas. Diseña el maquetado de las vistas primordiales de tu app enlazando cada vista a controles que conectan con otras, dando paso a una demostración más interactiva, dinámica y representativa del resultado final. Sus principales características son:

  • Creación eficaz de prototipos: posee un kit de interfaz de usuario bastante completo y pre-construido para diseñar materiales, Wireframing, iOS, entre otros.
  • Colaboración en tiempo real: brinda la posibilidad a todo el equipo de trabajar en simultáneo en el mismo prototipo.
  • Vistas previas dinámicas: añadir interacciones en su prototipo será más divertido, eficiente y producto gracias a la función de vinculación visual.
  • Fidelidad alta y baja: Fluid UI es compatible con cualquier estilo que requieras, indiferentemente de si es un prototipo de alta o de baja fidelidad.
  • Accede desde cualquier dispositivo: es posible acceder a los prototipos en la app de escritorio o iniciando sesión en Internet, sin problema alguno.
  • Pruebas en móvil disponibles: Con Fluid UI puedes probar tus prototipos en diversos dispositivos móviles, como teléfonos o tablets por medio de apps de reproducción gratuita.

Para más información sobre Fluid UI, visita su página web: https://www.fluidui.com/

Proto.io

Quizás su característica más resaltante es la inclusión de un motor que permite crear animaciones para aplicaciones móviles por medio de un timeline que determinará cuánto tiempo durará la animación. Otras de sus funcionalidades son:

  • Fácil acción de arrastrar y soltar: especial para desplazar archivos desde el escritorio directamente al panel para cargarlos rápidamente, haciendo más sencillo que encuentres todos tus activos.
  • Herramienta de enmascaramiento: Enmascara, recorta, enmarca o crea animaciones sin salir del editor Proto.io.
  • Diversas animaciones disponibles: Incluyen escalar, mover, rotar, cambiar el tamaño y desvanecerse y pueden aplicarse a cualquier elemento.
  • Acciones: con una extensa serie de acciones, es posible desplazarse, usar lógica, controlar correos electrónicos, GIF, audios, vídeos, cambiar de pantalla, hacer una llamada, visitar una URL y más.
  • Exportar como HTML: ideal para obtener una vista preliminar y almacenar el proyecto incluso sin conexión, así como para descargar todos los archivos Javascript, CCS y HTML además de todos los activos del proyecto.

En https://proto.io/ tendrás la oportunidad de conocer todos los detalles de esta herramienta.

Conclusiones

La buena experiencia del usuario se está convirtiendo en un fin más que un medio gracias al peso que esta tiene en que las compañías logren sus objetivos comerciales. Un usuario satisfecho no solo es más propenso a usar más nuestra aplicación, aumentando las posibilidades de monetización, sino que también suele recomendarla más, permitiendo llegar a más usuarios sin invertir tantos recursos en mercadeo y recomendación. Si querés conocer más sobre nuestros servicios de desarrollo, te invitamos a visitar nuestra página Software Development.

Beneficios del Prototipado Interactivo

Beneficios del Prototipado Interactivo

Un buen diseño debe estar construido sobre cimientos estables y correctos, por tanto, los primeros pasos en el proceso de diseño son determinantes para obtener buenos resultados. Cuando nos referimos a la fase de prototipado, esta se compone de varias etapas donde muchas suelen ser bocetos poco representativos del resultado final.

La idea detrás de este tipo de bocetos es repartir, señalar e indicar el contenido que llevará el diseño. Otras representaciones en cambio pueden ser una muestra casi exacta de lo que será el diseño, sobre todo a nivel visual.
No obstante, cuando se trata de diseños de apps, por ejemplo, los cuales se pueden extrapolar perfectamente al diseño web, se deben tomar en cuenta que se está diseñando todo aquello con lo que el usuario va a interactuar; por tanto, el prototipo estático se quedará corto al momento de mostrar cómo el usuario va a relacionarse con este y cómo será su experiencia, sin importar que este prototipo represente muy bien el resultado final.

Esto deja claro que la experiencia del usuario es una de las bases más importante para el desarrollo, ya que de ella depende qué tanto los usuarios finales podrán adaptarse al diseño propuesto.
Los prototipos entonces sirven como una previsualización de cómo será la interacción con la app, he allí la importancia del prototipo durante las fases de diseño y el desarrollo.

¿Qué es un prototipo?
Se trata de un modelo de trabajo superficial de la aplicación. Proporciona información bastante útil sobre el alcance, las necesidades y las expectativas asociadas al desarrollo de apps y web pages. Se considera una muestra interactiva preliminar de la idea antes de que se convierta en un producto completo, la cual funciona como un puente entre la fase de diseño y el producto final.

La creación de prototipos de aplicaciones es imprescindible en el proceso de desarrollo de la aplicación, ya que proporciona una visión de las características y el flujo que se incorporará en ella, además brinda una idea general de lo que los usuarios finales podrán esperar.

Tipos de prototipaje

  • Prototipos de baja fidelidad: Se conoce como el tipo de prototipo más simple que se basa en conceptos amplios del producto final desarrollado. El nivel de detalle y realismo es bajo; su objetivo principal radica en probar y validar el diseño desde el comienzo del desarrollo. Los prototipos de baja fidelidad son más rápidos de crear, se representan como diagramas muy básicos dibujados a mano y muestran cómo fluye el diseño de una etapa a otra.
  • Prototipos de fidelidad media: En esta clase de prototipos se añaden detalles e interacciones significativamente mayores y son capaces de someterse a pruebas de usabilidad. Además, disponen de áreas que proporcionan una guía de navegación a los usuarios dentro de la aplicación y brindan información previa sobre su experiencia. Cada acción incorporada en la aplicación tiene un diseño visual básico asociado, que puede validar otras interacciones dentro del prototipo.
  • Prototipos de alta fidelidad: Estos tienen el más alto nivel de diseño y funcionalidad incorporados en el prototipo del producto, lo que los hace mucho más cercanos al producto final. Aunque los prototipos de alta fidelidad se logran tras un proceso que lleva mucho tiempo, sus beneficios son más que valiosos. Por ejemplo, la mayoría se utiliza para identificar errores durante las pruebas de usabilidad y para descubrir problemas en el flujo de trabajo. La incorporación de elementos y componentes de diseño proporciona a los prototipos de alta fidelidad la apariencia del producto final y permite interacciones muy realistas con el usuario. Son totalmente interactivos, incluso se puede hacer clic, lo que lo acerca un paso más a la validación de clientes e inversores.

Principales beneficios del prototipo interactivo

  • Da vida al diseño de la interfaz de usuario: Si bien los usuarios finales pueden ver y comentar la versión en papel de una aplicación, no podrán comprender completamente la naturaleza de las interacciones clave hasta que se desarrolle la aplicación. Crear un prototipo en el que se pueda hacer clic es el paso más lógico en el diseño donde realmente se da vida a lo que se está desarrollando.
  • Permite a los usuarios proporcionar comentarios valiosos dentro del contexto adecuado: Al utilizar un prototipo, se revelan todos los escenarios en una forma que los usuarios realmente pueden apreciar. Dado que los usuarios ven la apariencia de una aplicación que está en funcionamiento, sus comentarios serán casi tan valiosos como tener una aplicación totalmente funcional.
  • Ayuda a reducir el tiempo de desarrollo general: Llevar a cabo múltiples cambios en un prototipo es mucho más simple y además permite contar con los comentarios oportunos de los usuarios, manteniendo el enfoque en la codificación del sitio o aplicación. Todo esto en lugar de preocuparse por el retroceder en fases del proceso debido a problemas de usabilidad previos o posteriores a la producción.
  • Funciona como una herramienta de referencia útil para desarrolladores: Los prototipos se pueden usar para ilustrar la funcionalidad de una manera que las especificaciones de la pantalla no pueden hacerlo. Por ejemplo, si los desarrolladores necesitan comprender cómo funcionará un widget o control específico, pueden usar el prototipo para responder preguntas de funcionalidad.

Algunas herramientas recomendadas

  • Relative Wave tiene una herramienta de prototipado interactivo llamada Form, la cual posee una comunidad bastante activa.
  • Pixate es otra herramienta de prototipado interactivo que suele ser bastante profesional. Con una completa herramienta, Pixate Studio hace permite hacer prototipos de una manera fácil y rápida y similar a otras suites de diseño como Photoshop o Flash.
  • Facebook tiene una herramienta de prototipado interactivo llamada Origami, y también una comunidad bastante comunicativa como era de esperarse en esta red social.
  • Invision es probablemente la herramienta más conocida de prototipado interactivo y también la más “corporativa” de todas. Cualquier persona del proyecto puede dejar comentarios y discusiones específicas en cada lugar, e incluso permite colaborar en tiempo real.
  • Framer es un framework de Javascript para desarrollar prototipos interactivos de alta fidelidad. Es una herramienta muy completa y con muchas características que vale la pena tener en cuenta.

Conclusión
En algunas ocasiones, cuando no se desarrollan prototipos interactivos como parte del proceso, los cambios que se realicen en el diseño pueden impactar negativamente en el código.

En Huenei entendemos que recodificar una aplicación en la fase de desarrollo no solo conlleva más tiempo, esfuerzo y dinero, también puede afectar el cronograma de desarrollo.
Por ello, incluimos el desarrollo del prototipo como parte fundamental del proceso, lo que garantiza un desarrollo exitoso, con menos errores y resultados acertados.

Si querés conocer más sobre nuestros procesos de desarrollo, te invitamos a visitar nuestra sección Mobile Development.

Ventajas de React para construir Apps

Ventajas de React para construir Apps

Frente a un mercado cada vez más competitivo, realizar actualizaciones y mejoras se ha convertido en toda una necesidad para una gran cantidad de compañías y empresas. Estas mejoras no solo deben ser hechas con rapidez, también deben estar centradas en la experiencia del usuario, la usabilidad y seguridad de la información, donde además se compruebe su compatibilidad con otras plataformas.

Sobre todo los CTOs y los CIOS de compañías de uso masivo como las e-commerces requieren desarrollar diversas aplicaciones a fin de satisfacer las necesidades de distintos sectores del mercado, que a su vez, sean compatibles para diferentes dispositivos. Por ello, una de las principales ventajas de React Native radica en su usabilidad en variadas plataformas y sistemas operativos para móviles.

¿Tu app se está volviendo pesada por tantas funcionalidades? Te invitamos a leer nuestra entrada “¿Necesito Microservicios para mi App?”, donde conversamos cómo pueden ayudar a que esta se mantenga rápida y fluida.
React Native literalmente está haciendo todos estos procesos mucho más eficientes. Este framework reduce el esfuerzo realizado por los equipos de trabajo a la mitad del tiempo, ya que brinda la posibilidad de gestionar todo desde esta plataforma.

¿Qué es React Native? ¿Por qué escogerlo?
React Native es uno de los mejores sistemas de código abierto diseñado para el desarrollo de aplicaciones móviles. Se vale del uso de Javascript para escribir aplicaciones multiplataformas móviles pensadas para iOS y Android, basándose en elementos declarativos a fin de crear una interfaz de usuario móvil.
Javascript es el lenguaje de programación más utilizado en el mundo, por tanto React Native es perfecto para principiantes que necesiten aprender más rápido y puedan desarrollar aplicaciones sin necesidad de incluir un lenguaje nuevo.

Para este framework existe únicamente un código nativo, gracias a ello será posible desarrollar diversas funcionalidades e innovaciones en innumerables tipos de proyectos. React Native es reconocido por ser el OpenSource de muchos desarrolladores, lo significa un punto a favor de usar esta plataforma.
Escogiendo este framework tendrás acceso a cualquier característica que tu proyecto requiera, además contarás con el apoyo de una gran comunidad que podrá brindarte una guía segura evitando que tus proyectos queden incompletos.

Principales ventajas de React Native
Puede desarrollarse en múltiples plataformas a la vez
Al momento de desarrollar una aplicación existen al menos dos opciones de SO que pueden escogerse: iOS o Android para los cuales es necesario aprender Objective- C y Swift o Java y Kotlin respectivamente. Por ello, si tus proyectos se basan en desarrollar una app para iOS o Android con React Native serán mucho más eficientes todos los procesos.

Usando Objective-C, Swift o Java sería necesario desarrollar dos aplicaciones separadas una de la otra. Con React Native más del 90% del código base se puede compartir, lo que reduce enormemente el tiempo de comercialización, manteniendo los mismos estándares de calidad.
Es sobre todo favorecedor para los desarrolladores frontales acostumbrados a React, ya que React Native usa los mismos componentes para crear una interfaz móvil para los usuarios. Por ello, quienes han desarrollado aplicaciones móviles con React, encuentran en React Native una contraparte fácil de entender, basada igualmente en un marco Javascript.

Posee la más grande comunidad de usuarios
Ya que se trata del OpenSource más reconocido, es natural que muchos desarrolladores tengan acceso a todas sus características por lo que podrás contar con los consejos y la guía de toda esta gran comunidad. Además, React Native tiene APIs nativas listas para usarse de inmediato, así como muchas de las APIs que han sido desarrolladas por la propia comunidad.
Muchos usuarios en comunidades como GitHub React o el Chat Reactiflux ofrecen sus códigos de forma gratuita para usar o modificar según tus necesidades. Gracias a estos códigos se han logrado crear nuevas soluciones, maximizar la eficiencia durante el desarrollo de una APP o proponer nuevos estándares de calidad.

Perfecto para equipos móviles
React Native posee una interfaz intuitiva y modular que permite a los desarrolladores conocer con mayor profundidad el proyecto de otra persona y continuar trabajando sobre él si lo desean. Para los equipos de desarrollo esta característica es una de sus principales ventajas y la que más facilita el proceso de creación de actualizaciones para aplicaciones.
Te invitamos a leer nuestra entrada de blog “React Navite vs Flutter: Una batalla de Gigantes”, donde comparamos ambos frameworks.

No hay problema si quieres usar el código nativo
Usar códigos nativos como Swift, Java u Objective-C combinado con el lenguaje de React Native, así como crear aplicaciones completas en este framework siempre será decisión del desarrollador, tomando en cuenta sus preferencias y los resultados que espera obtener.
La idea de combinar React Native con otros lenguajes de programación puede ser beneficiosa cuando el desarrollador debe agregar servicios de terceros a su aplicación que quizás no se encuentran en su idioma materno. React Native permite usar una técnica de programación conocida como “puente” para que esto sea posible.

Posee muy buenas referencias de grandes compañías
Uber Eats, Facebook, AirBnB e incluso Instagram confiaron en React Native alcanzando resultados sorprendentes como ya conocemos. El gran volumen de usuarios que visitan estas aplicaciones continuamente fue la clave para que quedara demostrado que React Native brinda el mejor rendimiento, capacidad de mantenimiento y escalabilidad tan necesarios para una buena aplicación.
Todas estas aplicaciones son la muestra de cómo implementar este framework con éxito. Por ello si quieres crear una aplicación capaz de recibir un público muy amplio, este marco es una excelente opción.

Podrás actualizar las app que estás desarrollando en tiempo real
La actualización de cambios en tiempo real es otra de las grandes ventajas de este marco. Gracias a esta característica es posible agregar funciones innovadoras así como corregir errores en tiempo record. Por ejemplo: si estás desarrollando un proyecto y quieres ver los cambios realizados de forma inmediata, puedes mantener abiertas dos ventanas. Una que contenga el código y otra que muestre los cambios, de esta forma el proceso de desarrollo se vuelve más ágil y eficiente.

Representa un ahorro significativo en tiempo y dinero
React Native permite utilizar el mismo code en distintos SO, lo que se traduce en un ahorro tremendo en tiempo de desarrollo y coste de producción. Con este framework el tiempo de desarrollo ha quedado reducido a más de la mitad. Y aunque el ahorro en costes no es tan significativo, puede llegar a ser lo suficientemente conveniente, dependiendo de la inversión que estés haciendo.

Conclusión
En el mundo IT existe un número incontable de tecnologías, frameworks, metodologías, etc. Cada una tiene su propia ventaja y uso específico, basado en las necesidades puntuales de los negocios; siendo React es solo un framework más de este universo, y si bien es altamente efectivo, dependerá de la naturaleza del proyecto qué tecnología usar.

Si querés saber qué es lo más conveniente para tu desarrollo móvil, te invitamos a conocer más en nuestra sección Mobile Development. También puedes Ponerte en Contacto con nosotros, donde un experto se pondrá en contacto contigo a la brevedad.

¿Necesito Microservicios para mi App?

¿Necesito Microservicios para mi App?

Cuando comenzamos a crear una aplicación, por lo general, seleccionamos un único lenguaje de programación y un único manejador de base de datos, de este modo es como conseguimos desarrollar una sola aplicación back-end. No obstante, cuando la aplicación que hemos desarrollado esté llegando a muchos más usuarios, también irá necesitando un mayor número de recursos y nos veremos en la necesidad de ir anexando mucha más funcionalidad.

Esta funcionalidad necesita ser mantenida y es justo en este punto donde la aplicación se va tornando más compleja, debido a que va creciendo tanto en código como en funcionalidad, entonces, es muy probable que tengamos que dividir nuestra aplicación para conseguir administrarla de una manera mucho más eficiente.
Es allí donde surge la alternativa de los microservicios como un modo de poder seccionar una aplicación del back-end en diversas partes que se comunicarán por separado. De esta manera, cada una de estas partes podrán comunicarse entre sí y tener una función específica y cada una podrá ir evolucionando independientemente de las otras, sin interrumpirse.

¿Qué son los microservicios?
Son un tipo de arquitectura que sirve para diseñar aplicaciones desglosando sus funciones principales en servicios independientes, los cuales idealmente funcionarán separados (y también, fallarán por separado) sin afectar a los demás.

Cabe destacar que esta arquitectura es una de las más recomendadas para las grandes aplicaciones, porque además es posible desarrollarlas en distintos lenguajes de programación, incluso en distintas bases de datos. Esta es una de las formas en las que se puede crear una aplicación gigante y conseguir administrar su complejidad con todo éxito.

¿Para qué sirven los microservicios?
Los microservicios son usados para el desarrollo de software que requieran un alto nivel de escalabilidad y disponibilidad, de desarrollo ágil y que además, sean fáciles de mantener, en otras palabras, suelen usarse para aplicaciones que sean realmente grandes.

Esta arquitectura de microservicios es perfecta para este tipo de aplicaciones enormes y va dirigida especialmente a aquellas que ya se encuentren funcionando y que necesiten una mejor forma de administrarse para continuar creciendo, debido a que están generando una mayor masa de usuarios que a su vez, generan un mayor volumen de datos. Un ejemplo de las llamadas aplicaciones enormes pueden ser Amazon, Ebay, Netflix, Uber, entre otras.
Para saber si tu app necesitará microservicios, considera simplemente si está comenzando a expandirse, si empieza a tener grandes requisitos de escalabilidad, portabilidad, flexibilidad y disponibilidad. Pero si apenas estás comenzando con una aplicación, probablemente te convenga más aplicar una arquitectura monolítica a tu proyecto.

Principales ventajas

  • Con el crecimiento de la aplicación, la complejidad de su gestión no se torna más difícil como sucede con una arquitectura monolítica donde a medida que se expande la aplicación, crece también el número de líneas, la documentación se hace cada vez más complicada y parece imposible realizar modificaciones complejas; además, surge el inconveniente de que nuevos desarrolladores no puedan empezar a trabajar en el proyecto. Todas estas cuestiones que solían ser un problema con los microservicios se han resuelto perfectamente.
  • Es posible mantener equipos de desarrollo que trabajen conjuntamente en un mismo proyecto sin ninguna dificultad. Por ejemplo se pueden tener microservicios desarrollados en javascript utilizando mongoDb con un equipo especializado para ello, pero también es posible tener otro microservicio desarrollado por un equipo Java que utilice MySQL u Oracle como base de datos, sin problemas para juntar su trabajo y hacer que funcione dentro de la misma aplicación.
  • Favorece en gran medida la reutilización de código de los cuales muchos pueden ser productos ya empaquetados para usar o puede tratarse de desarrollos propios que también podrán servir para distintas aplicaciones dentro de una misma empresa.
  • La reducción del time to market es otra de sus ventajas. Gracias a los microservicios es mucho más rápido desarrollar funcionalidades que lleguen más rápido al cliente o al usuario final.
  • Los microservicios apoyan la evolución del proyecto de una manera más sencilla, ya que es más fácil hacer modificaciones aisladas porque al final cada microservicio tiene una funcionalidad documentada y expuesta normalmente con una Api, por lo que es bastante fácil hacer modificaciones a un pequeño componente para refactorizarlo o para optimizarlo, a diferencia de una arquitectura monolítica.
  •  

  • Además, los microservicios permiten una escalabilidad mucho más eficiente, habilita al desarrollador para instalar únicamente una parte de la aplicación. Por ejemplo, si se cree que una ecommerce recibirá un gran número de llamadas, solo será necesario escalar la parte de front-end y la parte de back-end puede quedar sin escalar, sin contar que existen un montón de soluciones para la escalabilidad y la alta disponibilidad de cualquier aplicación usando microservicios.

Algunas desventajas

  • Dificultad para organizar el trabajo al inicio en los equipos de desarrollo móvil: En aplicaciones pequeñas puede ser mucho más fácil desarrollar una arquitectura monolítica que una arquitectura de microservicios, donde será más complicado de levantarla y mucho más complejo para gestionarla.
  • Requiere complejas pruebas de integración.
  • Mayor complejidad para lograr la eficiencia en los equipos de desarrollo de software: naturalmente al tener microservicios surgen nuevas necesidades, por ejemplo al tener una gran variedad de servicios se necesitará de un “orquestador”, un software especializado que ya tenga la configuración de toda la aplicación, donde en cualquier momento se pueda presionar un botón y el software levantará todos los microservicios y los configurará para que marchen todos a un mismo ritmo.
  • Otra de las necesidades que surgen al tener microservicios es un servicio de registro y descubrimiento sobre todo si tu aplicación posee propiedades de escalabilidad y elasticidad, es decir en cualquier momento puede necesitarse qué cierto servicio escale en función a la demanda o cuando los desarrolladores así lo requieran.
  • Registros de log centralizados para integrar todos los elementos: es necesario un servicio de configuración central de manera que no sea necesario configurar servicio por servicio, sino que se pueda tener un servicio centralizado para que cuando se levante un servicio en particular, este registro se disponga a buscar cuál es la configuración que le corresponde.
  • Si se cuenta con un gran número de servicios, integrarlos y gestionarlos puede resultar muy complejo: en este sentido, la comunicación en las arquitecturas de microservicios es mucho más compleja ya que se dispone de una comunicación síncrona y asíncrona.

Conclusión
A medida que avanza el conocimiento humano sobre el software, muchas compañías tecnológicas encuentran maneras cada vez más ingeniosas y creativas para aumentar la calidad y eficiencia del resultado final, logrando así que el usuario final obtenga un producto de calidad.
El asunto a considerar, es que los consumidores y usuarios se vuelven cada vez más exigentes y demandan productos superiores, formando un círculo virtuoso al cual es difícil seguirle el ritmo.
Para conocer más sobre cómo podemos optimizar tu aplicación móvil, visita nuestra sección Mobility.

¿Necesito una Progressive Web App?

¿Necesito una Progressive Web App?

Progressive web apps (o aplicaciones web progresivas), es un término que se da a una nueva generación de aplicaciones que incrementan su funcionalidad, conforme las capacidades del dispositivo en el que se ejecutan, incrementan, de ahí la palabra progresiva. La siguiente parte del nombre web, hace referencia a que se construyen utilizando estándares de desarrollo web, algunos ya conocidos como HTML, CSS y javaScript; y una nueva generación de APIs de javaScript. La parte final app es porque las Progressive Web Apps se comportan como aplicaciones web nativas, pero usan tecnologías web.
 
¿Qué hace de una aplicación web, una Progressive Web App?
En términos muy simplistas, son páginas web que se comportan como aplicaciones nativas. Es una oración muy simple, pero también muy profunda. Las apps nativas (iOs, Android por ejemplo), históricamente han tenido una serie de ventajas sobre las páginas web, ¿como cuáles? Almacenamiento local, ejecutarse offline, notificaciones push, performance, acceso a hardware, acceso al homescreen del dispositivo, entre otros.
 
Las aplicaciones web progresivas están a medio camino entre las dos anteriores: son básicamente páginas web, pero mediante el uso de Service Workers y otras tecnologías se comportan más como aplicaciones normales que como aplicaciones web.
Mediante los Service Workers y otras tecnologías las aplicaciones web progresivas pueden seguir ejecutándose en segundo plano sin tener que vivir dentro del navegador. En el móvil es posible instalarlas como una aplicación más y también en Windows mediante la mediación de Google Chrome y Mozilla Firefox. Windows 10 va a añadir soporte para aplicaciones web progresivas en la tienda de Microsoft en la próxima gran actualización.
 
Principales ventajas
Una PWA es como una web responsive pero:

  • Tiene interfaz de aplicación nativa.
  • Funciona independientemente de la conexión a internet.
  • Envía notificaciones push.
  • Se actualiza automáticamente.
  • Es instalable.

Una PWA es como una aplicación móvil pero:

  • Puede encontrarse a través de cualquier buscador.
  • Se puede compartir mediante una URL.
  • Se distribuye vía web (evitando el lío de las tiendas de aplicaciones).

Algunas desventajas
¿Cuáles son sus desventajas respecto a una aplicación móvil nativa?
Tienen un rendimiento limitado y consumen mayor batería ya que el código nativo (Swift, Objective C o Java) es más rápido que el código web (ya que éste es interpretado en lugar de compilado).
 
Una PWA no puede acceder a todas las funcionalidades específicas de dispositivo como comunicación entre aplicaciones, acceso a contactos o funcionalidades avanzadas de la cámara.
 
Conclusiones
Las aplicaciones web progresivas son una evolución natural de las aplicaciones web que difuminan la barrera entre la web y las aplicaciones, pudiendo realizar tareas que generalmente solo las aplicaciones nativas podían llevar a cabo. Algunos ejemplos son las notificaciones, el funcionamiento sin conexión a Internet o la posibilidad de probar una versión más ligera antes de bajarte una aplicación nativa de verdad.