Posibilidades de basar el desarrollo en la nube, servicios XaaS y cómo ayudan para un desarrollo rápido y de menor coste, algo esencial para las necesidades del mercado actual.
Ya que hemos hablado bastante de tecnologías backend y estamos haciendo un análisis de innovación en lo que respecta al desarrollo en general, vamos a detenernos en una de las ventajas más representativas de la nube para el desarrollo actual.
La nube facilita una infraestructura muy versátil, capaz de ofrecer servicios de lo más diverso, a diversos niveles y consumidores. Ofrece plataformas que se pueden ofertar como servicio (PaaS, Platform as a Service), Software como servicio (SaaS, Software as a Service) o de lo que vamos a hablar ahora Backend como servicio (BaaS Backend as a Service). Todas estas y otras variantes son lo que a veces se conoce como XaaS (Cualquier cosa "as a Service").
En su momento hablamos sobre las necesidades de las startups, que desean presentar una innovación en un tiempo reducido. En general, para acortar tiempos una tendencia actual es usar la nube para proveernos de una manera inmediata de servicios que si tuviéramos que proveer y desarrollar sería mucho más costoso para las empresas.
Backend as a Service
El primer ejemplo de utilidades de la computación en la nube que vamos a ver, por su importancia para el desarrollo rápido, sería disponer de manera prácticamente automática de un servicio tan importante como el backend. Estos proveedores y plataformas nos ofrecen soluciones pensadas para sustituir el backend tradicional por un servicio preparado para ahorrarnos muchas de las tareas de programación del lado del servidor.
El paradigma de estas soluciones está basado en sustituir la programación por la configuración. No se trata de escribir líneas de código para resolver las necesidades de backend, sino en configurar el servicio en la nube para que opere como nosotros estamos necesitando.
- Pasamos de usar servidores privados para usar servidores ofrecidos como servicio a través de la nube.
- Usamos los lenguajes o sublenguajes que estas soluciones nos aportan.
- Usamos las bases de datos que nos ofrecen como servicio en la nube.
Pero estos sistemas nos ofrecen soluciones que, en la terminología anglosajona, se conocen como “out of the box”. Listos para usar sin mayores complicaciones y que nos resuelven algunas de las tareas más recurrentes de toda aplicación web o App, en lo que al backend se refiere. Algunas de las tareas que nos ofrecen ya listas para usar son las siguientes:
- Autenticación, con login tradicional o login social
- Almacenamiento de datos
- Compartir en tiempo real
- Envío de correo
- Notificaciones push
- …
Gracias a usar los sistemas Backend as a Service obtenemos varias ventajas:
- Rapidez de aprovisionamiento, pues no necesitamos contratar servidores, instalar software, bases de datos, configurar máquinas, etc.
- Rapidez de desarrollo, porque no tenemos que programar muchos de los sistemas que se necesitan para una aplicación web.
- Seguridad, porque nos ofrecen soluciones para autenticar usuarios y herramientas para que éstos tengan su información privada. Pero además, confiar en un servicio de terceros, creado por personas altamente especializadas, suele ser más confiable que el software que nosotros podamos realizar manualmente.
- Escalabilidad, dado que la nube es perfectamente escalable en función de la demanda y las empresas que ofrecen cloud services suelen tener muy presente esta necesidad.
- Eliminar la necesidad de programar todas las capas, centrarse en otras partes del desarrollo, gracias a que muchas tareas no necesitamos desarrollarlas.
El servicio de backend conversa hacia fuera típicamente gracias a API REST, porque es el modelo que nos permite tener un backend independiente del frontal. Ofrecen cualquier dato que puedas almacenar dentro del backend como un recurso REST.
Otra de la potencia de estas soluciones se basa en el completo soporte a cualquier tipo de desarrollo focalizado en cualquier plataforma.
- Web (javascript)
- iOS
- Android
- Windows
- REST (acceso desde otros backends)
Existen muchos servicios de este estilo, que nos facilitan un conjunto u otro de utilidades, con uno u otro alcance, algunos de ellos espectaculares en cuanto a funcionalidad.
Sería imposible tener una lista completa, pero algunos ejemplos de servicios populares son los siguientes:
Una de las posibilidades que llama la atención en algunos de estos servicios es la facilidad con la que se pueden compartir datos desde una plataforma a la otra, haciendo que los datos que escribes en el backend se empujen hacia cualquier cliente conectado en la aplicación. Esto puede llegar a convertir la programación de aplicaciones en tiempo real en un juego de niños, facilitando el acceso a los datos desde cualquier tipo de plataforma, muchas veces sin que tengas que programar nada.
Otros servicios en la nube
Ya que hablamos de la nube, otra de las tendencias es usar servicios de otras empresas o proveedores para poder realizar aplicaciones que se basan en varios servicios existentes. Esto te permite no complicarte desarrollando servicios que otras empresas están ofreciendo ya.
Hoy muchas de las aplicaciones que han triunfado consisten básicamente en ofrecer una nueva manera de acceso a servicios ya existentes, mediante una nueva experiencia de usuario que facilite la productividad, analítica, disponibilidad, plataforma, etc.
Estas empresas además están especializadas en realizar una pequeña tarea de las aplicaciones, lo que te asegura que no vas a tener que enfrentarte a diversos problemas de la operativa que necesitarías resolver si desarrollases el servicio por tu cuenta. Algunos de los servicios que ya tienes hechos en la nube y sobre los que puedes apoyarte en el desarrollo de una nueva aplicación son éstos.
- Almacenamiento
- Audio / video
- Mailing
- Geolocalización
- Seguridad
- Compartir documentos, editarlos en la nube
- Redes sociales
Algunas ventajas que nos encontramos cuando usamos estos servicios en la nube:
- Disminuye la complejidad de mis aplicaciones.
- Evito I+D de áreas donde proveedores ya tienen soluciones que sabes que funcionan.
- Aumenta la rapidez.
Como todo en la vida, también podemos encontrar desventajas al usar los servicios de la nube. Principalmente que éstos tienen coste ya sea con una tarifa periódica o en base al uso, por lo que te vas a obligar a estar pagando durante toda la vida de tu aplicación. Aunque generalmente, en la mayoría de los casos compensará económicamente porque mantiene la inversión en el desarrollo más reducida y acotada específicamente al uso real que se va a dar.
Pero si las cuentas compensan, siempre puedes desarrollar tú mismo posteriormente un área si tu servicio web tiene éxito, evitando esos costes. Pero esa decisión lo normal sería tomarla cuando sabes con certeza que vas a tener un retorno que justifique el tiempo de desarrollo. Sin embargo, incluso a largo plazo y pese a un hipotético coste mensual, el outsourcing no suele representar un problema. Al final siempre vas incurrir en gastos de tus propios servidores, realizar el mantenimiento y mejora de tus aplicaciones, resolver incidencias, etc.
En general, como se puede apreciar, las posibilidades de la nube nos ofrecen una nueva manera de entender el desarrollo de aplicaciones con diversas ventajas. La tendencia es que poco a poco estas soluciones se introduzcan más en los modelos de negocio para los servicios innovadores.
Miguel Angel Alvarez
Fundador de DesarrolloWeb.com y la plataforma de formación online EscuelaIT. Com...