candorblog-03

Computación en la nube como motor de innovación

En el 2021 es casi imposible imaginar emprender sin la presencia de tecnología. Es fácil verlo en emprendimientos de naturaleza tecnológica, pero también es importante integrar la tecnología en emprendimientos tradicionales; ¿Puede imaginar usted una tienda operando en tiempos de pandemia sin algún tipo de plataforma de e-commerce?

Si bien la computación puede ser nuestra aliada, también puede ser el principal bloqueo que le impide a muchas personas emprender y desarrollar sus ideas innovadoras. La motivación para innovar puede ser cualquiera: Querer desarrollar la nueva aplicación estrella de la región, vender nuevos productos, facilitar nuevos servicios; podemos tener una idea muy clara, una lista de objetivos concetros, un roadmap definido, y muchas veces el muro más alto y grueso con el que topamos es: ¿Cómo implemento esto? ¿Qué equipo necesito? ¿Cuánto me va a costar?

Como desarrolladores, es normal que tengamos una idea muy rígida de qué implica desarrollar una solución tecnológica, incluso armamos una lista de compras que más o menos siempre se ve así:

  • Necesitamos servidores, y son caros, podría empezar por uno barato y ahí ir escalando… Pero ¿Qué pasa si salgo en las noticias y tengo un pico de tráfico? Tengo que tener varios en caso de… Y son muy caros.
  • Necesitamos equipo de red, y gente que sepa configurar y mantenerlo, ambos muy caros. Y volviendo a los servidores: ¿Quién los va a mantener y configurar?
  • Y esos servidores son tan impredecibles: ¿Qué pasa si algo deja de funcionar a las 2 am y tengo un cliente en Australia ¿Quién va a estar disponible a cualquier hora para atender un incidente?

Después de revisar esa lista, replanteamos todo nuestro modelo de negocios y llegamos a la triste conclusión de que necesitamos miles de dólares y que mi idea vivirá en mi imaginación o en mi laptop hasta que alguien se apiade de mí y me ofrezca capital semilla, pero ¿Cómo alguien me va a dar capital semilla sin un MVP?

Aquí es donde entra la computación en la nube. En este artículo exploraremos qué es, cómo nos puede ayudar a desarrollar nuestros emprendimientos y qué aspectos debemos tener en cuenta a la hora de implementar una solución en un servicio en la nube.

¿Qué es la computación en la nube?

La nube” es un término que está muy de moda, lo vemos por todas partes, incluso muchas personas sienten que es un término de mercadeo para hacernos ver cool. Lo cierto es que computación en la nube es un concepto, que si bien es amplio, es muy concreto. Amazon Web Services (AWS), uno de los principales proveedores de servicios en la nube,define computación en la nube de la siguiente manera:

La computación en la nube es la distribución de recursos de tecnológicos bajo demanda a través de Internet mediante unesquema de pago por uso. En vez de comprar, poseer y mantener servidores y centros de datos físicos, puede obtener acceso a servicios tecnológicos, como capacidad computacional, almacenamiento y bases de datos, en función de sus necesidades a través de un proveedor de servicios en la nube.

En resumen, los servicios de computación en la nube se caracterizan por lo siguiente:

  • Pagamos únicamente por lo que usamos: Los servicios en la nube tienen capacidad para escalarautomáticamente según sea necesario, y nos cobrarán únicamente lo que utilizamos: si usamos poco, pagamospoco, si usamos mucho, nos cobrarán más.
  • Delegamos trabajo de infraestructura: Los servidores, equipo de red, etc, son del proveedor, lo que significa que es el proveedor el que se encargará de la configuración y mantenimiento de la infraestructura necesaria paraproveernos a nosotros, los clientes, con los servicios que necesitamos para nuestras soluciones tecnológicas.

¿Cómo la nube nos ayuda a desarrollar nuestros emprendimientos?

Esto es todo un tema, y estoy seguro que la mayoría de usuarios de computación en la nube habrán descubiertobeneficios específicos para la industria en la que trabajan. Esta lista no pretende ser exhaustiva, y es reflejo de misexperiencias personales.

1. Bajo costo inicial

Cualquier persona u organización que haya emprendido en el campo tecnológico sabrá que una de las principales dificultades que encontrará al principio es la falta de capital. El software cuesta dinero, y la infraestructura es unaparte significativa del capital que debe invertirse (Y seguir inviertiéndose).

El dinero siempre es un factor riesgo a la hora de emprender. Según estudios post-mortem realizados en 339 startups, el70% de emprendimientos fracasan. Y la segunda causa más mencionada como el principal motivo de fracaso fue “quedarsesin capital“.

La computacion en la nube puede ser un aliado clave es reducir costos, especialmente en las etapas iniciales, ya que nos permite prototipar, realizar experimentos e implementar un MVP sin pagar ni un centavo, ya que la mayoría de proveedores ofrecen períodos de prueba o límites de uso gratuitos. También permite escalar nuestros gastos de acuerdo a nuestras necesidades, ya que nos cobran por lo que utilicemos. Si tenemos pocos clientes, vamos a utilizar menos recursos para proveer un servicio, y nuestra factura será baja. Si tenemos muchos clientes, nuestra factura aumentará, pero una cantidad mayor de usuarios significa que la organización tiene mayores ingresos.

Parte fundamental de la computación en la nube es diseñar nuestros servicios e infraestructura de tal forma que podamos minimizar costos. AWS, por ejemplo, provee una sofisticada y detallada consola de costos donde podemos monitorizar nuestro consumo, ver proyecciones de costos por período, establecer presupuestos, y emitir alertas cuando nuestro usose aproxima a sobrepasar lo presupuestado.

2. Reduce el tiempo a mercado

El mismo estudio mencionado en el punto anterior nos revela una estadística que a muchas personas puede resultar inesperada: La principal causa de fracaso de startups es que se dieron cuenta, muy tarde, que no existe mercado para laidea que fue desarrollada.

Que un startup reciba capital y desarrolle un producto sin tener un mercado puede parecer absurdo, sin embargo, es unerror común que es difícil de detectar sin “salir a la calle”. La metodología lean startup sugiere que debemos eliminar laincertidumbre impelementado un ciclo donde constantemente probamos y aprendemos. Para evitar darnos cuenta tarde deque no existe mercado para nuestra idea y visión, debemos experimentar constantemente y rápido, y debemos también aprender de nuestros experimentos, así sabremos qué ajustesdebemos implementar para acoplar nuestra idea al mercado.

Si nos ponemos a pensar en todo el tiempo que implica diseñar una arquitectura de software, la infraestructura necesaria, probar una interfaz de usuario, desarrollar el código, etc; nos puede parecer imposible experimentar rápido yconstantemente. Aquí es donde la computación en la nube entra en el juego: los proveedores de servicios en la nube proveen plataformas y servicios que nos permite facilitar tareas de desarrollo, por ejemplo Firebase de Google o Amplify de AWS, donde el backend de nuestra aplicación es dado como un servicio el cual solicitamos bajo demanda según nuestra amplicación lo requiera. De esta forma simplificamos el proceso de desarrollo, automatizamos procesos y podemos enfocarnos en implementar nuestra idea y ponerla a prueba antes de que sea demasiado tarde.

3. Reducción de tareas de mantenimiento y atención de incidentes

Uno de los libros más influyentes en la cultura DevOps y Agile en IT es The Phoenix Project. En este libro, los autores GeneKim y Kevin Behr nos explican que en tecnología existe cuatro tipos de trabajo:

  • Projectos del negocio: Que permiten proveer valor al cliente.
  • Projectos internos de IT: Que reducen costos y agilizan procesos.
  • Cambios: Corrección de errores, actualizaciones y mejoras.
  • Trabajo no planificado: Incidentes generados por problemas en los 3 tipos de trabajo anteriores.

El trabajo no planificado nos roba tiempo que podría ser destinado a trabajo planificado, y es trabajo que rara vez proveevalor a la organización y a los clientes. Si un trabajo no genera valor, es trabajo que los equipos no quieren hacer.

El trabajo no planificado siempre existirá, es inevitable en el tipo de industria en el que nos desarrollamos, sin embargo,siempre debemos buscar como minimizarlo.

Utilizar servicios en la nube, especialmente si son de tipo gestionados por el proveedor, nos permite delegar tareas de mantenimiento y atención de incidentes al proveedor. Esto significa que existirá menos puntos de fallo en nuestrasaplicaciones, y si un incidente sucede del lado del proveedor, rara vez es nuestro problema. Esto nos permite reducir drásticamente el trabajo no planificado y evitar distracciones en nuestros ciclos de desarrollo.

Esto no significa que la computación en la nube es la solución a todos los problemas de IT y que nunca volveremos aver incidentes. Es fundamental tener monitorización y estrategias de atención de incidentes probadas y entendidas portodos los stakeholders, aún si nuestra infraestructura se encuentra en la nube.

Desventajas de la computación en la nube

Es importante tener en cuenta que la computación en la nube es solamente una herramienta, y como cualquier otra herramienta, no es la adecuada para absolutamente todos los problemas, sino que facilita ciertas tareas y, para otras,existen mejores herramientas. Siempre debemos escoger la herramienta más óptima para solucionar nuestrosproblemas, y para hacerlo debemos considerar los puntos débiles de las herramientas que tenemos a disposición.

“Si todo lo se que tiene es un martillo, todo parecerá un clavo.” Abraham Maslow

1. Curva de aprendizaje inicial

La computación en la nube representa un nuevo paradigma en el desarrollo de aplicaciones y en operaciones de IT, por lo que implica una curva de aprendizaje inicial. Muchos servicios llevan nombres con siglas poco intuitivas, siendo AWS elprincipal culpable de esto (EC2, VPS, ELB, S3, RDS, etc). Además de saber qué significa cada sigla, existe también ladificultad de conocer cuáles servicios ofrece mi proveedor. Por ejemplo, al 2020, AWS ofrece más de 175 serviciosdiferentes.

Finalmente, la computación en la nube implica el aprendizaje de nuevas ténicas: creación de imágenes, infraestructuracomo código, aplicaciones serverless, contenedores, etc.

2. Rápido cambio en tecnologías y técnicas

Al principio de los tiempos eran las máquinas virtuales, luego los contenedores que resultaban más baratos y más flexibles,luego la complejidad de contenedores era creció mucho y pasamos a serverless. La realidad es que la computación en la nube es un campo relativamente reciente, en el cual compiten gigantes (Microsoft, Amazon, Google, Oracle, etc) yconstantemente aparecen nuevas técnicas y servicios.

Puede ser agobiante estar al tanto de las nuevas oportunidades que la nube ofrece, además que muchas veces implica gran trabajo implementar una nueva tecnología. Lo cierto es que estoy suscrito a muchos newsletters sobretecnologías en la nube y DevOps, y no les miento si les digo que recibo emails todos los días.

3. Muchas opciones, ¿cuál es la mejor para mí?

¿Cuál es la mejor solución a mi problema? ¿Contenedores? ¿Serverless? ¿Grupos de máquinas virtuales autoescalables?Las opciones son muchísimas, y por si fuera poco, existen muchísimos proveedores amplios catálogos de servicios: ¿Mevoy con Amazon Web Services? ¿Google Cloud Platform? ¿Microsoft Azure?

Por un lado es bueno tener tantas opciones, pero por otro, tener tantas alternativas puede dificultar tomar una decisión,y siempre existirá FOMO de si en otro proveedor me iría mejor.

4. Susceptibilidad a “vendor lock-in”

El vendor lock-in es cuando contratamos los servicios de un proveedor y luego es imposible cambiarnos a otro sin incurrir en grandes esfuerzos de tiempo y dinero, dejándonos prácticamente en un estado de exclusividad con el proveedororiginalmente seleccionado.

La computación en la nube fácilmente incurre en vendor lock-in, siendo muchas veces inevitable. En los últimos años han surgido herramientas como Terraform que buscan eliminar el vendor lock-in, y muchas organizaciones han logradoimplementar arquitecturas multi-proveedor siguiendo metodologías y diseños cuidadosos que evitan dicho fenómeno. Sinembargo, la independencia de proveedor no suele ser la regla en aplicaciones en la nube, especialmente cuando se trata de startups, ya que éstas buscan poner productos rápido en el mercado y no suelen tener tiempo para diseñar softwareagnóstico de plataforma.

5. Puede que no sea lo mejor para mi situación

No toda aplicación puede estar en la nube. Existen regulaciones, especialmente si se trabaja con gobiernos o la industria dela salud, que pueden impedir o limitar el uso de infraestructura en la nube

También, dependiendo del volumen de uso y la naturaleza de los datos que se tienen, es posible que una infraestructurainterna sea económicamente más viable y barata que implementada en la nube.

Es importante siempre conocer la legislación que cubre nuestras aplicaciones, las necesidades y requerimientos denuestros clientes, y hacer cuidadosos estudios de costos para escoger la mejor herramienta para nuestra situación.

¿Por dónde empiezo?

¿Tiene una idea de negocios? ¿Cree tener en su mente la nueva aplicación estrella? O incluso puede que después de leertodo este artículo tenga curiosidad de probar lo que la nube ofrece.

¿Por dónde empezar? Lea sobre los servicios de los diferentes proveedores, casi todos ofrecen pruebas gratuitas, hagauna cuenta sin costo y empiece a experimentar.

Investigue sobre Serverless, pruebe Firebase, lance máquinas virtuales en EC2. Las posibilidades son muchas. Mucho seha escrito y grabado sobre la nube, y seguirá apareciendo más recursos en internet sobre la nube. Documentación ytutoriales nunca le harán falta.

La nube es verdaderamente el motor que impulsa la transformación digital, y si usted es como yo, no querrá perderse detodo lo que la nube hace posible.