- :)
- :0
- :D
- ;)
- :]
- :º
Cómo crear plataformas ágiles en la nube utilizando tecnologías como Kubernetes, Prometheus, JAMstack y Astro que optimizan el ecommerce
Artículo Manager
Introducción
Cuando un cliente nos solicita mejorar el comercio electrónico de su empresa mediante una plataforma tecnológica sólida, lo primero que le preguntamos es si estaría dispuesto a migrar, si no todos, al menos una gran parte de sus sistemas a la nube. La nube se presenta como la solución óptima para el despliegue ágil de recursos de procesamiento de información, imprescindibles en el comercio electrónico. Después de todo, el objetivo es llegar al mayor número de personas posible, ¿no es así? La nube facilita el acceso a un amplio catálogo de servicios para el hospedaje y procesamiento de datos, accesibles con tan solo unos clics. Además, la competencia entre los diversos proveedores ha reducido significativamente los costos en comparación con mantener estos sistemas alojados localmente. Como ventaja adicional, la nube permite la creación de sistemas replicados, lo que ayuda a evitar caídas del servicio o simplemente a acercarse más al cliente final.
Ventajas de una plataforma en la nube
Entre las múltiples ventajas que ofrece la nube, su principal característica es la capacidad de interconectar fácilmente diferentes servicios para que colaboren entre sí. En un entorno donde existe una gran conectividad entre los diversos componentes que conforman una empresa, es sencillo revisar los procesos de venta, diseñar flujos de información eficientes y entender qué acción desencadena cada evento, reduciendo al mínimo la intervención manual dentro del embudo de ventas.
Un ejemplo claro es el de los comercios que operan bajo el modelo de impresión bajo demanda. Típicamente, cuando se realiza una venta a través de la web, se desencadenan varios procesos de forma automática. Por un lado, el pedido se envía directamente al proveedor encargado de la impresión, y por otro, se generan notificaciones por correo electrónico tanto para el cliente como para el agente. A su vez, se registran los asientos en la contabilidad, se actualiza el reporte mensual de ventas y se archivan las características del producto vendido para un análisis posterior, lo que facilita el diseño más eficiente de las campañas de marketing para el próximo trimestre.
Análisis de la situación del cliente
Si el cliente está alineado con la adopción de nuevas tecnologías y desea optar por un escenario similar, el siguiente paso es identificar todos los componentes de su sistema actual y revisar los flujos de información que utiliza diariamente. El objetivo es catalogar todos los elementos disponibles, como bases de datos, carpetas de archivos y software empleado, y analizar cómo interactúan entre sí para gestionar la actividad de la empresa. En esta etapa, es común identificar puntos de mejora en los flujos de información, los cuales suelen resolverse mediante integraciones, automatizaciones o desarrollos personalizados que aportan beneficios en forma de reducción de errores, tiempos y costos, especialmente en un entorno de alta interconexión como la nube.
No siempre es posible migrar todo el software a la nube, ya sea por limitaciones técnicas o por requerimientos funcionales o de negocio. Un ejemplo es la contabilidad, que a veces resulta complicada de trasladar a la nube. Sin embargo, esto no es un obstáculo para contar con una plataforma tecnológica moderna, ya que en estos casos se pueden implementar soluciones híbridas, como conexiones VPN o procesos offline acompañados de procesamiento por lotes, para integrar los sistemas locales con los basados en la nube.
Crear la plataforma en la nube
Suponiendo que ya hemos identificado y catalogado los elementos que se migrarán a la nube como parte de nuestros procesos de venta, el siguiente paso es preparar los cimientos sobre los cuales construiremos todo el sistema. Las características clave que buscamos en nuestra nueva plataforma son:
Seguridad: El sistema debe estar protegido frente a intentos de fraude y accesos no autorizados a la información sensible.
Disponibilidad: Cuanto mayor sea el tiempo de disponibilidad, más ventas potenciales se podrán realizar.
Alcance: Cuantas más personas podamos alcanzar, mayor será la probabilidad de concretar ventas.
Automatización: En la medida de lo posible, debemos procurar que las herramientas y servicios colaboren entre sí con la mínima intervención manual.
Escalabilidad: Una vez que el proceso alcanza su nivel óptimo de automatización, podemos enfocarnos en el crecimiento del negocio mediante diferentes técnicas de marketing. El sistema debe ser capaz de manejar el incremento en el volumen de solicitudes.
Agilidad: Ningún sistema de ventas es eterno. La competencia, la evolución del mercado y la aparición de nuevos productos harán necesario mantener los flujos de venta actualizados. Es fundamental que los cambios en la plataforma se puedan realizar de manera rápida y con costos accesibles.
Observabilidad: Es crucial monitorear y supervisar el comportamiento de la plataforma en todo momento. No debe convertirse en una caja negra; por el contrario, debemos poder visualizar cómo fluye la información entre los componentes para realizar diagnósticos cuando sea necesario. Además, el sistema debe alertarnos ante cualquier anomalía detectada.
Cada negocio tiene sus particularidades, por lo que en este artículo me limitaré a describir los elementos que solemos utilizar como base para desarrollar el resto de los flujos de información, adaptados a las necesidades y restricciones específicas de cada cliente. Si deseas más información sobre alguno de estos puntos, no dudes en escribirnos a info@arteco-consulting.com.
Selección de proveedor cloud
Existen decenas de proveedores cloud en los que podemos desplegar nuestros servicios. Los tres principales son Amazon Web Services (AWS), Microsoft Azure y Google Cloud. Todos ellos ofrecen los servicios que necesitamos, y si utilizamos tecnologías estándar como Kubernetes (del cual hablaré más adelante), no generaremos dependencia con ningún proveedor, lo que nos permitirá cambiar en cualquier momento, aunque este proceso requerirá una planificación adecuada.
En mi caso, suelo recomendar Google Cloud. Es el proveedor que hemos utilizado desde la creación de Arteco Consulting SL en 2012, una empresa que nació siendo cloud native, sin necesidad de servidores físicos propios. Google Cloud ofrece precios competitivos y la posibilidad de obtener descuentos significativos mediante la reserva de recursos a largo plazo.
Preparación del gestor de componentes de software
Cualquiera de los tres proveedores mencionados es compatible con la tecnología de orquestación más utilizada a nivel global y que se ha convertido en un estándar para la ejecución de software en la nube: Kubernetes. Este software de código abierto fue desarrollado originalmente por Google y actualmente es administrado por la Cloud Native Computing Foundation (CNCF), una organización sin ánimo de lucro que forma parte de la Linux Foundation.
Kubernetes, a menudo abreviado como K8S, es un orquestador encargado de mantener en ejecución nuestros componentes de software. Proporciona una amplia base de servicios que facilitan la interacción entre aplicaciones y garantiza su disponibilidad, evitando interrupciones de servicio o paradas por mantenimiento. En resumen, Kubernetes gestiona los recursos de CPU, memoria RAM y almacenamiento para ejecutar de forma virtualizada nuestras aplicaciones, ya sean bases de datos, sitios web o servicios API para la interconexión de aplicaciones. Además, se asegura de que los servicios desplegados funcionen de manera continua y sin problemas.
En la página oficial de Kubernetes, puedes acceder a toda la documentación necesaria para comenzar a usar esta plataforma, tanto en la nube como en servidores propios.
Kubernetes requiere un mínimo de servidores virtualizados, lo que se conoce como un "cluster". La creación de este cluster es relativamente sencilla si no hay necesidades de conectividad especiales. A través de la consola web de cada proveedor cloud, podemos crear el cluster inicial en pocos clics, configurando el nombre, la ubicación geográfica y el tipo de servidor (especificando la cantidad de RAM, CPU y almacenamiento). Tras unos minutos, el cluster estará listo y podremos conectarnos a él mediante varias opciones, siendo la más común el uso de kubectl, un comando de terminal que podemos instalar localmente.
https://cloud.google.com/kubernetes-engine/docs/how-to/cluster-access-for-kubectl?hl=es-419
Es importante revisar cuidadosamente la configuración de las máquinas virtuales, ya que estos sistemas tienen un coste basado en el uso o la reserva de recursos. A mayor cantidad de RAM y CPU, mayor será el coste mensual. Ajustando adecuadamente los recursos, es posible comenzar con un cluster básico por unos 100 dólares mensuales, con capacidad para ejecutar de manera continua entre 20 y 30 servicios fácilmente, entendiendo por servicios bases de datos, sitios web como WordPress, etc.
Sobre esta infraestructura proporcionada por Kubernetes, desplegaremos otros servicios que permitirán automatizar y optimizar la plataforma, facilitando el comercio electrónico. A continuación, describimos los componentes básicos.
Componentes básicos de la plataforma ágil
Una vez tengamos acceso al cluster, necesitaremos implementar servicios que nos permitan alcanzar los objetivos deseados de la plataforma ágil, como seguridad, observabilidad y agilidad, entre otros.
Kubernetes ya proporciona algunas características esenciales, como la disponibilidad. Sin embargo, el resto de las capacidades las añadiremos utilizando otros servicios y aplicaciones de código abierto ampliamente utilizados. Esto nos permitirá alcanzar los objetivos sin tener que pagar por licencias de software, limitándonos solo a los costos de la infraestructura.
Cada aplicación tiene sus propias instrucciones de despliegue, aunque una herramienta que se utiliza con frecuencia es Helm, la cual simplifica el proceso de instalación de muchas aplicaciones. Helm incluye plantillas de configuración que permiten implementar aplicaciones comunes dentro de Kubernetes de forma rápida y eficiente. En la web es fácil encontrar instrucciones de cómo instalar ciertos aplicativos usando helm.
Independientemente de si se instalan manualmente o mediante Helm, es importante asegurarse de tener al menos los siguientes servicios en ejecución para construir una plataforma ágil. Para cada objetivo, existen numerosas alternativas que cumplen con los requisitos necesarios. El siguiente listado es una propuesta basada en soluciones que hemos utilizado repetidamente en entornos productivos, y todas ellas son open source. Siéntete libre de cambiar cualquiera de estas opciones por otras que prefieras.
Gestor de control de versiones
El primer paso es implementar un gestor de versiones, que permita llevar un control de cambios tanto del código fuente de desarrollos a medida como de todos los archivos de configuración necesarios para desplegar los servicios. A medida que la infraestructura crezca, tener todos los archivos bajo control de versiones y bien documentados será esencial. Estos repositorios también serán el punto de partida en caso de necesitar restaurar la plataforma o migrar a otro proveedor cloud.
Recomendamos Gitea como gestor de control de versiones. Es una aplicación web liviana que permite gestionar repositorios Git y ofrece funcionalidades básicas como control de acceso por usuario, revisiones de código, gestión de tickets de errores, entre otras. Aunque no es la solución más completa, es rápida y fácil de instalar. Si se requieren funcionalidades más avanzadas, como despliegues continuos integrado en una sola herramienta, GitLab Community Edition es una alternativa más robusta.
Despliegues continuos
Si trabajas con software personalizado (algo común tarde o temprano), como una página web tipo Jamstack (altamente recomendado para optimizar el SEO) o conectores entre componentes, es esencial que los cambios se desplieguen rápidamente desde el momento en que se realizan hasta que se ejecutan en producción.
Por ejemplo, un programador detecta un error en un software que conecta dos sistemas. Tras realizar el cambio que corrige el error, sube el código fuente a Gitea. Gitea, a su vez, lanzará un evento que notificará a la plataforma que debe redeployar el servicio con la corrección aplicada. A estos servicios se les denomina Continuous Integration o Continuous Deployment (CI/CD).
Para configurar este flujo de despliegue continuo, utilizaremos Jenkins, una herramienta web que permite definir los pasos necesarios para desplegar el software actualizado dentro del cluster. Con Jenkins, podremos establecer secuencias de comandos que se ejecuten automáticamente y dentro de nuestro propio cluster cada vez que Gitea registre una actualización del código fuente. Esta interacción entre herramientas se realiza mediante webhooks, que son mensajes HTTP simples que desencadenan acciones, como la ejecución de un flujo de despliegue cuando se recibe una notificación de cambio en el código.
Estos disparadores también suelen usarse cuando hay nuevos productos cargados en el gestor de contenido (CMS) por ejemplo. Así los propios editores que no tienen conocimientos de programación sean capaces de actualizar la web, aunque sea de forma indirecta.
Este enfoque permite que la plataforma sea ágil, con actualizaciones rápidas y automatizadas, optimizando la eficiencia del equipo de desarrollo y reduciendo el tiempo entre la detección de un problema y su resolución en producción.
Observabilidad y Monitorización
Uno de los pilares fundamentales de cualquier plataforma ágil es la observabilidad. Tener visibilidad total sobre lo que ocurre en el sistema, en tiempo real, es crucial para detectar problemas, optimizar el rendimiento y garantizar una operación fluida. En este sentido, es necesario contar con herramientas que nos permitan monitorear el estado de los servicios y aplicaciones desplegadas, así como analizar los logs y rastrear las solicitudes a través de toda la infraestructura.
Prometheus
Prometheus es una de las herramientas más populares para la monitorización en entornos de Kubernetes. Se integra perfectamente con los contenedores y proporciona poderosas capacidades de recopilación y almacenamiento de métricas. Prometheus funciona recolectando métricas de los distintos servicios desplegados en el cluster y almacenándolas para que podamos observar el comportamiento de nuestras aplicaciones a lo largo del tiempo. Es especialmente útil para monitorear recursos como el uso de CPU, memoria, y la latencia de las aplicaciones, permitiendo detectar rápidamente anomalías o cuellos de botella.
Grafana
Una vez que Prometheus ha recopilado las métricas, necesitamos una herramienta que nos permita visualizarlas de manera clara y efectiva. Aquí es donde entra en juego Grafana, la mejor opción para la visualización de métricas en Kubernetes. Con Grafana, podemos crear dashboards personalizados que monitoricen la salud del sistema y las aplicaciones. Esta flexibilidad nos permite adaptar las visualizaciones según nuestras necesidades específicas, proporcionando una visión en tiempo real del rendimiento de la infraestructura, desde el uso de recursos hasta la actividad de los servicios individuales.
Los indicadores no tienen porqué ser sólo técnicos ya que las aplicaciones pueden emitir sus propias métricas como el número de ventas en la última hora, que luego pueden ser mostradas en grafana en un nuevo dashboard destinado a un perfil de negocio.
ELK Stack (Elasticsearch, Logstash, Kibana)
Además de la monitorización de métricas, es vital contar con una solución para la gestión y análisis de logs, que son una fuente invaluable de información cuando se trata de diagnosticar problemas o auditar el comportamiento del sistema. Para este propósito, el ELK Stack es una de las soluciones más robustas. Este conjunto de herramientas incluye:
- Elasticsearch, que almacena y facilita la búsqueda eficiente de logs.
- Logstash, que procesa y transporta los logs a Elasticsearch.
- Kibana, que nos permite visualizar los logs de manera intuitiva y crear gráficos basados en la información recolectada.
En cuanto a la recolección de logs, podemos utilizar agentes como Filebeat o Fluentd, que se encargan de enviar los logs generados por los servicios directamente a Elasticsearch. Esto nos brinda un flujo continuo de información que podemos analizar para identificar errores o tendencias que puedan afectar al rendimiento de la plataforma.
Los sistemas de almacenamiento de logs como Elasticsearch normalmente van acompañados de unas políticas de retención para evitar que los volúmenes de disco se llenen, así los mensajes más antiguos son desechados automáticamente para no ocupar espacio.
Jaeger
En arquitecturas más sofisticadas basadas en microservicios, el rastreo de las solicitudes a través de múltiples servicios es esencial para entender el comportamiento de la aplicación. Aquí es donde Jaeger juega un papel importante. Esta herramienta de tracing distribuido nos permite seguir el recorrido de una solicitud a través de diferentes microservicios, lo que es fundamental para identificar problemas de latencia, cuellos de botella y otras ineficiencias que puedan surgir en un entorno distribuido. Con Jaeger, podemos obtener una visión detallada del rendimiento de nuestras aplicaciones, facilitando la optimización y el diagnóstico de problemas complejos que afecten la experiencia del usuario final.
Balanceador de Carga y Entrada
En una plataforma ágil, es fundamental contar con mecanismos que permitan distribuir eficientemente el tráfico hacia los servicios desplegados en el cluster, garantizando que las solicitudes sean manejadas de manera equitativa y que no haya sobrecarga en un solo punto. Además, es necesario exponer estos servicios al exterior de forma segura y escalable. Para cumplir con estas necesidades, se utilizan balanceadores de carga y controladores de ingreso (Ingress Controllers), que gestionan la entrada de tráfico público de Internet y lo distribuyen a los servicios adecuados dentro de la infraestructura.
NGINX Ingress Controller
Una de las herramientas más utilizadas para gestionar la entrada de tráfico en Kubernetes es el NGINX Ingress Controller. NGINX es una solución ampliamente reconocida y probada en el entorno de contenedores, gracias a su capacidad para manejar grandes volúmenes de tráfico con eficiencia y flexibilidad.
El NGINX Ingress Controller actúa como intermediario entre el mundo exterior y los servicios internos del cluster. Permite exponer tus servicios a través de rutas HTTP/HTTPS, facilitando el acceso desde fuera del entorno de Kubernetes. Lo hace gestionando reglas de enrutamiento que permiten dirigir el tráfico entrante al servicio adecuado en función de factores como el dominio, la URL solicitada o el protocolo utilizado.
Una de las grandes ventajas de utilizar NGINX como controlador de ingreso es su capacidad para gestionar tanto tráfico seguro (HTTPS) como no seguro (HTTP). Además, es altamente configurable, lo que significa que podemos ajustar fácilmente parámetros de rendimiento, habilitar la compresión de tráfico, gestionar certificados SSL para ofrecer conexiones seguras, e incluso aplicar políticas de seguridad avanzadas, como la limitación de accesos o el filtrado de tráfico malicioso.
El uso de NGINX Ingress Controller también es fundamental para asegurar un balanceo de carga eficiente. Esto significa que el tráfico entrante se distribuye equitativamente entre las distintas instancias de los servicios, evitando la sobrecarga de una única instancia y garantizando una alta disponibilidad. En caso de que una instancia falle, NGINX redirige automáticamente el tráfico a las demás instancias disponibles, manteniendo la continuidad del servicio sin interrupciones perceptibles para el usuario final.
La implementación de un Ingress Controller como NGINX nos ofrece un control total sobre cómo se gestiona el tráfico hacia nuestros servicios, asegurando que la plataforma sea escalable, segura y capaz de manejar altos volúmenes de solicitudes sin comprometer la experiencia del usuario.
Mezclar todos los componentes con una tienda online
Una vez que tenemos todos los componentes fundamentales de la plataforma en marcha —monitorización, observabilidad, balanceadores de carga, y control de versiones— podemos enfocarnos en construir aplicaciones ágiles y eficientes. Un ejemplo perfecto de cómo integrar estos componentes para crear una solución de comercio electrónico moderna y escalable es el uso del enfoque JAMstack en combinación con Astro, una de las tecnologías emergentes más potentes para la creación de sitios web estáticos y optimizados.
JAMstack con Astro: Catálogo de productos y compras
El JAMstack (JavaScript, APIs y Markup) es una arquitectura moderna para crear sitios web rápidos, seguros y fáciles de escalar. Al separar la lógica del frontend (la interfaz del usuario) del backend (las funciones de servidor y bases de datos), podemos crear aplicaciones que se despliegan como sitios estáticos, pero que interactúan de manera dinámica con servicios externos, logrando así una combinación perfecta entre velocidad, seguridad y flexibilidad.
En este caso, utilizaremos Astro como el framework para crear nuestra tienda online. Astro se especializa en generar sitios web estáticos, lo que significa que nuestras páginas serán extremadamente rápidas, ya que la mayor parte del contenido se genera de antemano (pre-rendering) y se sirve directamente desde el CDN. Esto no solo mejora la experiencia del usuario, sino que también reduce los costos de infraestructura y aumenta la seguridad, al minimizar las interacciones directas con servidores.
Creación del catálogo de productos
El primer paso para construir nuestra tienda online con Astro es integrar un CMS (Content Management System), que nos permita gestionar el catálogo de productos de forma sencilla. Existen muchas opciones de CMS headless que se pueden conectar fácilmente a un proyecto JAMstack, como Strapi o Directus que también pueden desplegarse dentro de nuestra infraestructura y que permiten que los productos se almacenen y gestionen de manera centralizada, mientras que Astro se encarga de generar las páginas del catálogo de productos de manera estática.
Por ejemplo, cada vez que se añade un nuevo producto al CMS, Astro puede generar automáticamente una página optimizada para ese producto, con su descripción, imágenes y detalles de precio. Además, al tratarse de páginas estáticas, la carga será extremadamente rápida, y gracias al control de versiones y despliegue continuo con herramientas como Gitea y Jenkins, los cambios en el catálogo se podrán reflejar inmediatamente en la tienda sin necesidad de intervención manual.
Proceso de compra y pago
Una vez que el catálogo está en marcha y es accesible por el controlador NGINX, el siguiente paso es habilitar el proceso de compra. En este caso, aprovechamos las capacidades del JAMstack para integrar servicios de terceros como PayPal o Stripe, que permiten gestionar los pagos de forma segura y eficiente.
Gracias a las APIs de estos proveedores, podemos implementar un flujo de compra completamente dinámico sin sacrificar la naturaleza estática de nuestro sitio. El proceso típico sería el siguiente: el cliente añade productos al carrito, selecciona una opción de pago (como PayPal o Stripe), y al completar la transacción, estos servicios externos se encargan de procesar el pago de manera segura.
Este punto del túnel de venta es crucial. Nuestra plataforma ha de verificar que efectivamente se ha realizado el pago correctamente a través de una consulta con el proveedor de pagos para evitar que un posible usuario malintencionado nos haga creer que ha pagado cuando no ha sido así. Este punto se suele requerir un pequeño desarrollo personalizado que realice la verificación por un lado, y por el otro anote la compra en nuestra herramienta de control de pedidos, que puede ser desde el envío de un email a un buzón, hasta la llamada a otros API o la inserción de registros en la base de datos. Nuestra recomendación es utilizar Java y SpringBoot en forma de un API que se encargue de orquestar la compra. Pero otras opciones más sencillas también serían válidas como APIs realizados con Python, Php o NodeJs.
El uso de Astro garantiza que la tienda siga siendo rápida y segura, ya que el sitio web se mantiene estático, mientras que las interacciones dinámicas, como el proceso de pago, se gestionan a través de APIs. Esto no solo asegura un rendimiento óptimo, sino también una mayor protección contra ataques o vulnerabilidades comunes en sitios web tradicionales.
Ventajas de la tienda online con JAMstack y Astro
Al combinar Astro con el enfoque JAMstack, obtenemos una tienda online que ofrece una serie de ventajas importantes:
- Rapidez: Los sitios estáticos generados por Astro se cargan increíblemente rápido, mejorando tanto la experiencia del usuario como el posicionamiento SEO.
- Escalabilidad: Al tener el stack desplegado en K8S es tremendamente sencillo desplegar nuevas versiones de cualquier pieza del tunel de venta sin cortes de servicio y escalar horizontalmente si la carga lo requiere.
- Seguridad: El hecho de que las páginas sean estáticas y se apoyen en servicios de terceros para procesos críticos reduce considerablemente los riesgos de seguridad.
- Mantenimiento sencillo: Gracias a la automatización de despliegues con herramientas como Jenkins y Gitea, mantener el catálogo de productos y gestionar la tienda se vuelve más eficiente y menos propenso a errores.
Con esta arquitectura, hemos creado una tienda online rápida, escalable y segura, utilizando los mejores componentes de una plataforma ágil, todo ello aprovechando las ventajas del JAMstack y las capacidades de Astro para generar un sitio web estático, eficiente y preparado para el comercio electrónico moderno.
Evidentemente, esta arquitectura es una simplificación de los entornos empresariales complejos, donde existen grandes requerimientos tecnológicos y numerosos procesos interconectados, involucrando a varios departamentos y grandes equipos de gestión. Para un proyecto a pequeña escala, probablemente sería suficiente con un sitio en WordPress gestionado por una herramienta de hosting y algunos plugins adicionales. Sin embargo, arquitecturas similares a la descrita se están utilizando en empresas que facturan miles de millones, como aquellas cercanas a nuestras oficinas en Palma de Mallorca, donde grandes cadenas hoteleras y mayoristas del sector turístico gestionan cientos de ventas diarias en mercados internacionales.
En resumen, la creación de una plataforma ágil y moderna, ya sea para comercio electrónico u otras aplicaciones empresariales, puede ofrecer enormes ventajas en términos de escalabilidad, seguridad y eficiencia. Las soluciones que hemos descrito son solo el comienzo de lo que se puede lograr con la combinación correcta de herramientas y tecnologías. Si estás interesado en implementar una arquitectura similar, optimizar tus procesos o explorar más sobre plataformas ágiles, no dudes en ponerte en contacto con nosotros. En Arteco Consulting, estamos aquí para ayudarte a llevar tu negocio al siguiente nivel. Escríbenos y estaremos encantados de asesorarte.
ÍNDICE
RELACIONADOS
CATEGORÍAS
kubernetes
plataforma
nube
prometheus
ecommerce
Mantente Conectado
Newsletter
¡Mantente al día con lo último en tecnología y negocios! Suscríbete a nuestra newsletter y recibe actualizaciones exclusivas directamente en tu correo.
Reunión Online
No dejes pasar la oportunidad de explorar nuevas posibilidades. ¡Agenda una reunión online con nosotros hoy y comencemos a construir juntos el futuro de tu negocio!
- :)
- :0
- :D
- ;)
- :]
- :º