Introducción
La transformación digital abarca cada año más y más áreas de la vida y los negocios. Si una empresa quiere ser competitiva, ya no es suficiente contar con sitios web informativos; se necesitan aplicaciones móviles y web que no solo proporcionen información a los usuarios, sino que también permitan realizar funciones como recibir o solicitar productos y servicios, así como ofrecer herramientas.

Por ejemplo, a los bancos modernos ya no les basta con tener un sitio web informativo; necesitan herramientas en línea para sus clientes, como una área de clientes donde el usuario puede gestionar cuentas, inversiones y créditos. Incluso las pequeñas empresas requieren herramientas convenientes para aumentar la conversión, como citas médicas o en peluquerías, y la reserva de mesas en restaurantes o salas de juegos infantiles para celebrar cumpleaños.
Los propietarios también necesitan recibir información en un formato conveniente sobre el estado de su empresa, como la recopilación de datos estadísticos y análisis de diferentes departamentos de producción o la productividad de estos departamentos. A menudo, cada departamento recopila estos datos a su manera, e incluso pueden utilizar diferentes herramientas, lo que lleva al propietario a gastar mucho tiempo personal tratando de entender todo esto; esto puede influir indirectamente o directamente en la eficiencia de la empresa y, en última instancia, en las ganancias. Aquí también la transformación digital y el desarrollo de una aplicación web o móvil pueden ser de gran ayuda.
La tecnología no se detiene y está en constante evolución, y lo que se utilizaba hace unos años puede no ser relevante hoy en día, o lo que no se podía hacer hace unos años ahora es una realidad. Hay una mayor cantidad de herramientas modernas que ayudan a crear aplicaciones web y móviles de manera más rápida y eficiente. Basándome en observaciones personales y experiencia, quiero compartir mi visión sobre cuáles de estas tecnologías y herramientas serán demandadas en un futuro cercano y por qué deberían ser tenidas en cuenta al crear una aplicación web moderna.
Single page application (aplicaciones de una sola página)
Vamos a definir un poco los términos. Una Aplicación de Una Sola Página (SPA) es una aplicación web cuyos componentes se cargan una vez en una página, y el contenido se carga según sea necesario. Al navegar entre las secciones de la aplicación, la página no se recarga completamente, sino que solo se cargan y muestran los datos necesarios.
Las aplicaciones de una sola página ofrecen una gran ventaja en velocidad y facilidad de uso en comparación con las aplicaciones web clásicas. Con una SPA, se puede lograr que un sitio web funcione como una aplicación de escritorio, sin recargas y con mínimas demoras.
Si hace unos años las aplicaciones de una sola página prácticamente no soportaban la optimización para motores de búsqueda y se utilizaban mayormente para crear paneles de usuario y paneles de administración, hoy en día crear una aplicación de una sola página con un soporte completo para SEO ha mejorado mucho. Usando aplicaciones de una sola página con renderizado en el servidor, este problema ya no existe. En otras palabras, es una aplicación de una sola página, pero en la primera solicitud, el servidor genera no solo datos, sino que crea una página HTML lista para mostrar y los motores de búsqueda obtienen páginas completas con toda la meta-información y marcado semántico.
Con el desarrollo de herramientas para crear aplicaciones web del lado del cliente, el desarrollo y la transición a aplicaciones de una sola página solo seguirán creciendo este año y en los venideros. Si tienes una aplicación antigua que está desactualizada y funciona lentamente, además de recargar toda la página al navegar entre secciones, este es el momento ideal para actualizar a una aplicación de una sola página rápida: ahora es un buen momento, las tecnologías permiten hacerlo de manera rápida y de calidad.
Tener un sitio web moderno y rápido es muy bueno, pero debo informarte honestamente: no todas las aplicaciones se pueden traducir fácilmente a una sola página, y la transición puede resultar costosa. Por lo tanto, es importante entender quién necesita y por qué hacer esta transición.
Para ayudarte a comprender, en la siguiente tabla proporcionaré algunos ejemplos de cuándo el desarrollo o la transición a una SPA es pertinente y justificada, y cuándo no.
ZA
Si deseas crear una aplicación moderna y rápida que no solo utilice la versión web, sino también la móvil o incluso la de escritorio, y que todos los procesos y cálculos se realicen en un servidor remoto o en la nube. Además, de tal manera que todos los clientes tengan una única interfaz de interacción y no sea necesario modificar el código del servidor cada vez que se añade un nuevo cliente.
Por ejemplo: redes sociales, agregadores, plataformas SaaS (software como servicio en la nube), marketplaces.
Si tienes una tienda o un servicio web, sabes que es lento y la gente se va, deseas hacerlo más rápido, entiendes el valor de los clientes y estás dispuesto a pagar por una actualización de un millón de rublos.
Tienes una aplicación móvil que utiliza la API del sitio, mientras que el sitio es lento y hace recargas completas de contenido al cambiar de página.
EN CONTRA
Si tu público objetivo no utiliza navegadores y dispositivos modernos.
Por ejemplo: sectores corporativos específicos, como el desarrollo de sistemas internos para bancos, instituciones médicas y educativas.
Tu actividad principal se realiza fuera de línea y no estás dispuesto a ofrecer ningún servicio en línea, y solo necesitas atraer clientes.
Si tienes una tienda en línea o un servicio web que ya vende bien, no ves una pérdida de clientes ni quejas.
Si tienes una aplicación funcional que no se puede adaptar a SPA y necesitas reescribir todo desde cero y usar otras tecnologías, y no estás dispuesto a gastar varios millones en ello.
Por ejemplo: hay un sitio empaquetado o algún código antiguo hecho a medida y monolítico.
Aplicaciones web progresivas
Las aplicaciones web progresivas (PWA) son el producto de la evolución conjunta de las aplicaciones nativas y los sitios web. En esencia, es una aplicación web que se ve y se comporta como una verdadera aplicación nativa, puede recibir notificaciones push, funcionar en modo offline, etc. Además, el usuario no necesita descargar la aplicación desde AppStore o Google Play, solo necesita guardarla en el escritorio.
La tecnología o el enfoque para el desarrollo de PWA ha estado evolucionando desde 2015 y, recientemente, ha ganado una gran popularidad en el ámbito del comercio electrónico.
Algunos ejemplos reales de la vida:
- El año pasado, el hotel Best Western River North, tras lanzar un nuevo sitio web con soporte PWA, logró aumentar sus ingresos en un 300%;
- el sitio árabe Avito OpenSooq.com, después de implementar soporte PWA en su sitio, pudo incrementar en un 25% el tiempo de visita y en un 260% la cantidad de leads;
- el famoso servicio de citas Tinder logró reducir el tiempo de carga de 11.91 s a 4.69 s mediante el desarrollo de PWA, y además, la aplicación ocupa un 90% menos que su equivalente nativo para Android.
El hecho de que se debe prestar atención a esta tecnología se refleja en que uno de los motores más grandes para crear proyectos de e-commerce, Magento, lanzó en 2018 una versión para desarrolladores de PWA Studio. La plataforma permite crear frontends basados en React para sus soluciones de e-commerce con soporte PWA 'out of the box'.
Consejo para aquellos que ya tienen un proyecto en internet o solo una idea para un nuevo servicio con soporte para dispositivos móviles: no se apresuren a escribir una aplicación nativa completa, primero consideren la tecnología PWA. Quizás esta sea la mejor solución en términos de costo y calidad para su producto.
Un poco de la práctica. Para crear una simple aplicación móvil nativa de noticias, dado que ya existe un servidor REST listo, se requieren aproximadamente de 200 a 300 horas-persona por cada plataforma. Con un costo promedio en el mercado de 1500-2000 rublos/hora, la aplicación puede costar alrededor de 1 millón de rublos. Si se desarrolla una aplicación web con soporte completo para PWA: notificaciones push, modo offline y otras funcionalidades, el desarrollo tomará de 200 a 300 horas-persona, pero el producto estará disponible de inmediato en todas las plataformas. Es decir, se ahorra aproximadamente el 50%, sin mencionar que no se tendrán que pagar tarifas para su publicación en las tiendas de aplicaciones.
Sin servidor
Este es otro enfoque moderno de desarrollo. Debido a su nombre, muchos piensan que realmente es un desarrollo sin servidor, que no es necesario escribir código de back-end, y que cualquier desarrollador de front-end podrá crear una aplicación web completa. Pero no es así.
Al crear una aplicación sin servidor, aún se necesita un servidor y también bases de datos. La principal diferencia de este enfoque es que el código de back-end se presenta en forma de funciones en la nube (otro nombre de serverless es FaaS, funciones como servicio) y permite que la aplicación se escale de forma rápida y sencilla. Al crear una aplicación de este tipo, el desarrollador puede centrarse en tareas comerciales y no preocuparse por el escalado y la configuración de la infraestructura, lo que acelera el desarrollo de la aplicación y reduce su costo. Además, el enfoque Serverless ayuda a ahorrar en alquiler servidores, ya que utiliza exactamente los recursos necesarios para realizar la tarea, y si no hay carga, el tiempo del servidor no se utiliza ni se paga en absoluto.
Por ejemplo, la gran empresa de medios estadounidense Bustle logró reducir sus costos en hosting más del 60% al hacer la transición a Serverless. Y la empresa Coca-Cola, al desarrollar un sistema automatizado para vender bebidas a través de máquinas expendedoras, pudo reducir sus costos de alojamiento de $13,000 a $4,500 al año gracias a la transición a Serverless.
Durante los últimos par de años, debido a la novedad y sus limitaciones, Serverless se ha utilizado principalmente para pequeños proyectos, startups y MVPs, pero hoy, gracias a la evolución del software, la versatilidad y la potencia de la contenerización de servidores, están surgiendo herramientas que permiten eliminar las limitaciones, simplificar y acelerar el desarrollo de aplicaciones en la nube.
Esto significa que los escenarios comerciales corporativos, en los que la modernización en la nube anteriormente se consideraba imposible (por ejemplo, para dispositivos periféricos, transferencia de datos o aplicaciones con estado), ahora son una realidad. Herramientas prometedoras son kNative y Serverless enterprise.
Pero a pesar de todo esto, Serverless no es una solución mágica para el desarrollo de aplicaciones web. Como cualquier otra tecnología, tiene sus ventajas y desventajas, y es necesario elegir esta herramienta con conocimiento, y no 'clavar un clavo con un microscopio' solo porque es más tecnológica.
Para ayudarlo a aclarar, aquí hay algunos ejemplos de situaciones en las que debería considerar Serverless al desarrollar un nuevo servicio web o al mejorar uno existente:
- Cuando la carga en el servidor es periódica y usted paga por el tiempo de inactividad de los recursos. Por ejemplo, teníamos un cliente con una red de cafeteras automáticas que necesitaba procesar solicitudes y recopilar estadísticas solo unas pocas cientos o miles de veces al día, mientras que por la noche la cantidad de solicitudes caía a unas pocas decenas. En este caso, es mucho más eficiente pagar solo por el uso real de los recursos, por lo que propusimos y realizamos una solución basada en Serverless;
- Si no planea profundizar en los detalles técnicos de la infraestructura y pagar de más por la configuración y el soporte de servidores y balanceadores. Por ejemplo, al desarrollar un marketplace, no sabe con certeza cuál será el tráfico o, por el contrario, prevé un gran tráfico y desea asegurarse de que su aplicación soporte la carga, entonces Serverless es una excelente opción.
- Si es necesario realizar ciertos eventos en flujo en el funcionamiento de la aplicación principal, registrar datos secundarios en tablas, realizar ciertos cálculos. Por ejemplo, recopilar datos analíticos sobre las acciones del usuario, procesarlos de una manera específica y guardarlos en la base de datos;
- Si necesita simplificar, unificar o acelerar el trabajo actual de la aplicación. Por ejemplo, crear servicios que mejoren el rendimiento para trabajar con imágenes o videos, cuando el usuario sube un video a la nube, y una función separada se encarga de la transcodificación, mientras que el servidor principal continúa funcionando normalmente.
Si necesita procesar eventos de servicios externos. Por ejemplo, procesar respuestas de sistemas de pago, o redirigir datos de usuarios a CRM para acelerar el procesamiento de solicitudes de clientes potenciales.
Si tiene una gran aplicación y algunas partes de esta pueden ser implementadas de manera más óptima, utilizando un lenguaje diferente al principal. Por ejemplo, tiene un proyecto en Java y necesita agregar una nueva funcionalidad, pero no hay manos disponibles, o la implementación en este lenguaje puede llevar más tiempo y ya existe una solución en otro lenguaje; Serverless puede ayudar en esto también.
Este no es el único listado de herramientas y tecnologías que merecen atención, solo he compartido lo que utilizamos todos los días en nuestro trabajo y sabemos con certeza cómo pueden ayudar al negocio.
Fuente: habr.com
