NubeNativa BuasafCangaMoreno
NubeNativa BuasafCangaMoreno
NubeNativa BuasafCangaMoreno
Abstract—Este informe presenta un acercamiento a las tec- computación en la nube, se produce una transformación en
nologı́as y prácticas utilizadas en el desarrollo orientado en la la computación corporativa, creando un entorno basado en el
nube pago por consumo, ubicación compartida o exclusiva, y la
Index Terms—nube, desarrollo, operaciones, infraestructura
creación de múltiples máquinas virtuales según la necesidad.
I. I NTRODUCCION Esto cambia la forma en que se ven los grandes centros de
datos empresariales, los desafı́os de las actualizaciones de
La nube moderna, también conocida como la computación software base y los problemas de obsolescencia tecnológica,
nativa (cloud native), ha revolucionado la forma en que se ya que todo esto queda en manos de un proveedor externo de
integran y adaptan los modelos tradicionales de servicios confianza.
en la nube. Este avance ha dado lugar a nuevos mode- La primera transición hacia la computación en la nube
los de computación, incluyendo la computación sin servidor se da con el concepto de ”Infraestructura como servicio”
(serverless computing), ası́ como nuevos componentes como (IaaS), que implica simplificar la administración haciendo más
microservicios, contenedores y orquestadores. fácil la configuración y gestión del hardware a través de
La computación sin servidor es un modelo en el que un servidores virtuales y redes compartidas. En este escenario, el
proveedor en la nube gestiona dinámicamente el alojamiento proveedor se hace responsable y custodio de la infraestructura
de los recursos computacionales, eliminando la necesidad de para asegurar un entorno de computación confiable para las
que los desarrolladores se ocupen de la administración de empresas.
la infraestructura. Esto permite a los desarrolladores crear La segunda transición se refleja en el ocultamiento de los
aplicaciones más rápidamente y centrarse en la lógica del servidores y la creación de entornos de programación para
negocio, ya que no tienen que preocuparse por la gestión de desarrolladores, lo que se conoce como ”Plataforma como
servidores. Aunque los servidores fı́sicos siguen existiendo, su servicio” (PaaS) y ”Software como servicio” (SaaS). En esta
administración queda en manos del proveedor del servicio, lo etapa, las máquinas y el software se presentan como marcos
que permite a los desarrolladores enfocarse en escribir código de trabajo simplificados que permiten a los desarrolladores
sin tener que gestionar servidores. avanzar rápidamente en los despliegues de aplicaciones y
El modelo de serverless computing permite facturar al productos especializados.
usuario solo por el tiempo en que se ejecuta el código, lo que En un tercer momento, se produce una evolución hacia
ofrece mayor flexibilidad y eficiencia en el uso de recursos. lo que se conoce como ”Computación sin servidor” (CSS),
Aunque el nombre puede ser engañoso, ya que la información donde se ocultan los servidores y la programación de las
se guarda en servidores fı́sicos, su verdadero valor radica aplicaciones. Actualmente, la CSS se presenta en dos versiones
en liberar a los usuarios de la carga de administrar dichos diferentes: ”backend como servicio” (BaaS) y ”función como
servidores. servicio” (FaaS). El BaaS proporciona a los desarrolladores un
En resumen, la computación sin servidor ayuda a aumentar conjunto de servicios y herramientas para facilitar el desarrollo
la productividad de los equipos, acelerar el lanzamiento de de aplicaciones móviles y web, mientras que el FaaS permite
productos al mercado y optimizar el uso de recursos, permi- a los desarrolladores desplegar y ejecutar sus funciones en la
tiendo a las organizaciones centrarse en la innovación y en nube.
aportar más valor al núcleo principal del negocio.
B. FaaS
II. F UNCIONES COMO SERVICIO
III. D ESARROLLO Y O PERACIONES EN LA NUBE
A. Los modelos de servicio tradicionales
La ”Computación sin servidor” es una evolución de la A. El concepto de DevOps
computación en la nube que forma parte de un ejercicio para Durante años los conceptos de los desarrollos de sistemas
hacer más transparente tanto para los clientes como para los informáticos y las operaciones de mantenimiento se trabajaban
desarrolladores el uso y la gestión de recursos informáticos, como conceptos separados, es decir, distintos departamentos
independientemente de su ubicación. En el contexto de la que realizaban tareas que a veces tenı́an principios en común
entregas más frecuentes, ası́ como monitorear la ejecución de
estas prácticas.
1) Integración Contı́nua: Mientras que anteriormente los
desarrolladores realizaban cambios en distintas ramas e inte-
graban a distintas ramas solo cumpliendo con ciertas pruebas
de humo, en la cultura DevOps se intentan realizar los cambios
en ramas correspondientes al requerimiento funcional que se
está realizando o la corrección y los cambios se combinan
a una sola rama dependiendo del cumplimiento de pruebas
de unidad e integración. La integración contı́nua incluye un
conjunto de revisores de código que se encargan de validar el
código a ser integrado; ası́ como posteriormente se realizan de
Fig. 1. Ciclo DevOps según la empresa Atlassian
manera automatizada construcciones de versiones y pruebas.
[3]
pero de manera desacoplada en base a metodologı́as de 2) Entrega contı́nua: Esta tarea se ejecuta al igual que
desarrollo. Sin embargo, con la aplicación de metodologı́as la integración continua, de manera automatizada. La entrega
ágiles [1] surgió la necesidad de realizar operaciones de contı́nua está dedicada a la construcción, ensamblado y de-
mantenimiento y despliegue más frecuentes y acorde al flujo spliegue automatizado de las distintas versiones armadas luego
de trabajo de las actividades de desarrollo; de esta manera de la integración contı́nua. Tradicionalmente durante la fase
los departamentos de desarrollo y operaciones se fusionaron, de despliegue se dedicaba tiempo a la asignación de opciones
trabajan en una misma sintonı́a y compartiendo las respons- en la configuración de manera manual; la entrega contı́nua es
abilidades de ambos equipos en un nuevo rol llamado DevOps lograda hoy en dı́a gracias la automatización de esta asignación
(del inglés ”Development” y ”Operations”). dependiendo de las distintas versiones.
Hoy en dı́a DevOps es más que un rol o un departamento, 3) Monitoreo de servicios: Parte de las responsabilidades
sino que se entiende como una filosofı́a o una cultura [2] que tradicionales de los departamentos de operaciones era la de-
trasciende de las metodologı́as de desarrollo, permitiendo a los tección y mantenimiento de sistemas una vez en los entornos
equipos de desarrollo acelerar sus ciclos de entrega y lograr de producción o preproducción; DevOps utiliza herramientas
entregas escalables y de mayor calidad a través de una mejora que automatizan la toma de registros de consumo del sistema
entre la comunicación. en los entornos de producción para agilizar la atención al
cliente y la detección de errores, ası́ mismo al estar autom-
B. El ciclo de vida DevOps atizado se ofrece una contı́nua disponibilidad 24/7 sobre el
monitoreo, permitiendo obtener registros más exactos sobre
Cuando los equipos de desarrollo y operaciones trabajan
la calidad del sistema y la percepción de los usuarios en la
de forma separada, se entiende que un equipo se encarga
plataforma.
del diseño y desarrollo del sistema informático, mientras
que otro se encarga de tareas de configuración, entrega y
mantenimiento. La cultura DevOps implica que estas respon- D. Infraestructura como Código
sabilidades empiezan a superponerse entre los miembros del Gran parte del trabajo DevOps corresponde a la realización
equipo, obligando a un cambio en el ciclo de trabajo. de tareas clave de desarrollo y operación del sistema, debido
Como bien se mencionó, DevOps no está atado a ninguna a la velocidad en los procesos de construcción, entrega y
metodologı́a de desarrollo, que si bien en apariencia es ágil, despliegue se requiere del uso de distintas herramientas pro-
su aplicación no necesariamente lo es. Los ciclos de desarrollo gramables que automatizen estas tareas, ahorrando tiempo vital
DevOps corresponden a un ciclo de retroalimentación que en la realización de tareas crı́ticas en las distintas fases del
comprende desde las tareas tradicionales de desarrollo como ciclo de desarrollo.
lo son el diseño, la construcción del sistema la realización de La automatización de estas tareas es realizada mediante
pruebas; y las tareas tradicionales de operaciones como lo son herramientas agrupadas bajo el nombre de ”Infraestructura
la implantación y despliegue; añadiendo al final tareas refer- como Código” (IaC, por sus siglas en inglés). Estas herramien-
entes al monitoreo y la retroalimentación del funcionamiento tas permiten a los desarrolladores DevOps definir mediante
del sistema. código opciones de configuración y automatizar acciones
según las condiciones y versiones especı́ficas [4]. Actualmente,
C. Tareas DevOps múltiples plataformas de cloud computing incluyen soporte
La aplicación de la filosofı́a DevOps implica el cambio en directo a herramientas IaC; ası́ mismo incluso servicios de
la realización de múltiples tareas a través de la automatización control de versiones ofrecen herramientas IaC como GitHub
de ellas o la división en múltiples segmentos. Los ingenieros Actions, las cuales tienen soporte directo a plataformas cloud
DevOps suelen ser los encargados de configurar y mantener las como Microsoft Azure; otras herramientas open source, como
herramientas dedicadas a estos procesos permitiendo realizar Jenkins [5], también poseen integración en múltiples servicios
cloud como AWS o Google Cloud; además de las herramientas • Desventajas: Los servicios basados en contenedores de
propietarias de cada uno de los proveedores en nube. Google Cloud Function son menos avanzados que los de
otros proveedores de FaaS.
IV. P ROVEEDORES DE FAA S
A. AWS Lambda D. IBM Cloud
Lanzado por Amazon a finales del año 2014, es una her- IBM Cloud procede de SoftLayer, una plataforma de nube
ramienta muy popular entre los usuarios ya que para el cuarto pública que IBM compró en junio de 2013. IBM convirtió la
trimestre de 2021 el 33% de los usuarios de la nube utilizaban plataforma en Bluemix y la lanzó como herramienta PaaS en
por lo menos un servicio de AWS [6]. julio de 2014. Desde entonces, IBM ha rebautizado el servicio
como IBM Cloud y ha ampliado sus funciones a FaaS. En el
• Caracterı́sticas: se conecta con otras herramientas de
cuarto trimestre de 2021, el 4% de los usuarios de la nube
AWS, monitoriza el rendimiento de programas en Ama-
han utilizado IBM Cloud. Se ejecuta en el ecosistema Apache
zon CloudWatch, posee mas de 200 integraciones con
OpenWhisk [6].
herramientas SaaS y recientemente fue agregada una
funcionalidad en 2020 para poder desplegar contenedores. • Caracterı́sticas: puedes conectar tu programa con otros
• Ventajas: se puede construir un backend propio utilizando programas a través de las API de IBM Watson y es
la API Lambda o la puerta de enlace de la API de compatible con Node.js, Python, Swift, PHP, Go, Ruby,
Amazon, se puede desplegar funciones de imágenes de Java y .NET Core.
contenedor, se puede conectar a bases de datos rela- • Ventajas: es ideal para crear aplicaciones móviles, es fácil
cionales con Amazon RDS Proxy, se puede elegir cuánta de aprender a usar y se puede monitorear las aplicaciones
memoria dedicar a cada función. a través de IBM Cloud Monitoring.
• Desventajas: AWS puede llevar un tiempo de adaptación • Desventajas: limita el tiempo de memoria de tu función