Insights >Blog

3 pasos para desarrollar una aplicación lista para la nube

Javier Osorio


June 11th, 2019

Ha pasado ya mucho tiempo desde que se dejó de ver a la nube con aprehensión. En los años recientes, las empresas se han adaptado a los conceptos de Software como un Servicio, o ScuS​ (en inglés, Software as a Service, SaaS) y Plataforma como Servicio, o PcS (en inglés, Platform as a Service, PaaS). Además, la nube es actualmente la plataforma principal en la que se ejecutan las aplicaciones de usuarios y de las empresas más importantes. Además, últimamente vemos cómo más y más organizaciones comienzan a adoptar las nociones de Infraestructura como Código, o IcC (en inglés, Infrastructure-as-Code, IaC) y de Funciones como Servicio, o FcS (en inglés, Function-as-a-Service, FaaS).

Sin embargo, muchas aplicaciones aún se desarrollan para ser ejecutadas mediante un servidor on-site configurado de manera tradicional. Esto tiene como consecuencia el hecho de que se tengan que hacer modificaciones sustanciales para lograr que la aplicación esté lista para la nube. Incluso en aquellos casos en los que la aplicación funciona sin la necesidad de hacerle muchos cambios, lo más probable es que no funcione tan eficientemente como podría hacerlo si hubiese sido desarrollada para ejecutarse en la nube desde un principio.

Por eso, es sumamente importante construir aplicaciones que estén listas para la nube desde cero. Esto te permitirá evitar bugs y le dará el impulso necesario a tu aplicación. Existen varios factores que hay que considerar para que una aplicación esté lista para ejecutarse en la nube. A continuación, te contamos las cuestiones más importantes a tener en cuenta.

1. Asegúrate de que los logs sean fácilmente accesibles

No importa qué tan grande haya sido el esfuerzo del desarrollador, ninguna aplicación se encuentra completamente protegida contra los bugs. Sólo basta con pensar en las aplicaciones desarrolladas por las empresas de tecnología más importantes del mundo, como Google y Microsoft, que constantemente son actualizadas para rectificar errores y solucionar baches de seguridad. Lo esencial es tener un mecanismo apropiado para identificar y corregir esos errores. Todo empieza por la manera en la que detectas y almacenas los logs de la aplicación.

Si desarrollas una aplicación para la nube, debes asegurarte que los logs no estén almacenados en el sistema de almacenamiento local. De lo contrario, te será más dificil acceder a ellos en caso de que debas identificar y resolver problemas. La palabra «logs» hace referencia a la grabación secuencial de acontecimientos que te ayudará a entender cuál es el problema, y te dará la base necesaria para proceder a su resolución. Por eso, en vez de almacenar los logs de manera local, puedes almacenarlos usando un compilador de logs, como un log file trailing solution. Esto no solo garantiza que los logs estén disponibles cuando los necesitas, sino que también te permite buscar y filtrar acontecimientos de manera más rápida. Últimamente, también estamos siendo testigos de cómo muchas organizaciones delegan la funcionalidad de los logs de manera total un servicio de nube, como AWS CloudWatch.

2. Proceso y datos separados

El siguiente punto puede parecer muy sencillo. Sin embargo, no está de más destacar el hecho de que las aplicaciones desarrolladas en base a una configuración para un servidor on-site suelen ejecutar el proceso y los datos en el mismo contexto. Aunque esto no es necesariamente un problema, no es del todo apropiado para una aplicación basada en la nube.

En la nube, mantener el proceso y los datos separados es esencial por varias razones. En principio, la gran mayoría de las plataformas de nube, ya sean privadas o públicas, asumirán por defecto que tu proceso y tus datos están separados. En segundo lugar, tu aplicación va a funcionar mejor al no atascarse por el consumo de espacio de servidor por parte de los datos. Por último, esto hace que sea más difícil que una persona no autorizada acceda a los datos, lo cual es de vital importancia.

Asegurarse de que el proceso y los datos estén separados es esencial en el contexto de un mercado altamente competitivo, en el cual los usuarios no van a dudar en pasar a usar la aplicación de tu rival si la tuya no alcanza a cumplir las expectativas de rendimiento que aquellos tienen. Tu aplicación será más rápida, segura y estable.

3. Desarrolla tu aplicación teniendo en mente la escalabilidad

Una de las razones que explican el éxito que tienen actualemente las nociones de Software como un Servicio y Plataforma como Servicio es la rapidez, la facilidad y la asequibilidad que trae aparejada la escalabilidad. Sin embargo, el sólo hecho de que hayas logrado desarrollar tu aplicación para que sea ejecutada en la nube exitosamente no significa que la misma esté desarrollada para poder aprovechar la esacalabilidad que PaaS ofrece. Muchos dueños de aplicaciones se llevan una sorpresa poco grata cuando descubren que su aplicación basada en la nube requiere muchos cambios de configuración cada vez que quieren ampliarla.

Para evitar encontrarte con este tipo de dificultades cuando menos lo necesitas, no desarrolles el código de tu aplicación en base a una topología específica. Lo ideal es que desarrolles tu aplicación visualizando su crecimiento futuro de forma acorde con tus expectativas (deseos) o a los estándares del mercado.

Esto permite que sea más sencillo realizar actualizaciones y ayuda a mantener tu aplicación abierta a adaptarse bien en el futuro.

Consejo extra: Desarrolla la aplicación teniendo en cuenta su rendimiento

Todo aquel que desarrolla una aplicación lo hace con el deseo de que sea atractiva para los usuarios y tenga éxito. El éxito, sin embargo, viene acompañado de expectativas y demandas de rendimiento. Como consecuencia, se va a producir un aumento en el número de usuarios logueados a la aplicación simultáneamente y el volumen de datos que la aplicación tenga que manejar. Saber de antemano cómo va a responder la aplicación ante ese crecimiento es vital para asegurar un rendimiento constante a largo plazo.

Por ejemplo, ¿qué tan bien funciona la aplicación ante el aumento del tráfico de red, de la carga de la apliación y de la carga de la base de datos back-end? ¿Responde de la misma manera cuando hay 1000 usuarios logueados simultáneamente que cuando sólo hay 100? Ninguna aplicación tiene capacidad infitinita. Por eso, es esencial que se lleven a cabo pruebas de carga y de rendimiento para entender cuáles son los límites de la aplicación y determinar si eso guarda coherencia con los objetivos a corto y mediano plazo del dueño de la aplicación.

Vale la pena destacar que a pesar del hecho de que lograr que una aplicación que esté estructuralmente lista para la nube requiere que se le preste mucha atención a los factores mencionados anteriormente, la mayoría de las reglas tradicionales de programación siguen siengo aplicables. El ciclo de desarrollo sigue siendo el mismo en relación a las etapas de diseño, testeo y depuración de la aplicación. Desarrollar una aplicación que esté lista para ejecutarse en la nube puede tardar más de lo habitual, pero dedicarle el tiempo y la atención necesaria en las etapas preliminares es esencial para evitar problemas a futuro.

Share

Related posts

See also

Services

Software development

Software testing

Consultancy & innovation

User experience

Industries

Fintech

Media & entertainment

Healthcare

All industries

Insights

Blog

Whitepapers

Webinars

Videos

Why Belatrix?

International presence

Nearshore advantages

Project governance

Agile expertise

Flexible engagement models

Our talent development