Bogotá · Abierto a trabajo remoto

Alejandro Ávila

Senior Full-Stack Engineer · Platform & Cloud

Construyo plataformas de banca digital de punta a punta: microfrontends, microservicios e infraestructura como código.

  • TypeScript
  • NestJS
  • Angular
  • React
  • Terraform
  • AWS
  • GCP

Perfil

No llegué al software por el camino corto

Soy ingeniero mecatrónico y desarrollador full-stack senior. Trabajo en plataformas de originación de crédito empresarial, cubriendo las tres capas: el frontend en arquitectura de microfrontends, los servicios de backend, y la infraestructura que los sostiene.

Pasé casi cinco años manteniendo, reparando y poniendo a punto maquinaria industrial: tarjetas electrónicas, sistemas de control y potencia, equipos importados que tenían que funcionar en planta. Esa etapa me dejó un sesgo que sigo usando — pienso el sistema completo antes que las piezas, y asumo que todo lo que se despliega eventualmente falla.

En software eso se traduce en algo concreto: no entrego un endpoint sin saber cómo se despliega, cómo se observa y cómo se asegura.

Experiencia
6 años en software, todos en banca digital
Antes
5 años en mantenimiento y automatización industrial
Idiomas
Español nativo · English B1, lectura y escritura técnica
Ubicación
Bogotá, Colombia · Abierto a trabajo remoto

Dominio

Banca digital, donde un error no es un bug de interfaz

Mi dominio es la banca digital, específicamente la originación y el desembolso de crédito empresarial. Son sistemas donde una falla no se queda en la pantalla: tiene consecuencias regulatorias y financieras.

Trabajar en un entorno regulado cambia cómo construyes. La trazabilidad, el permiso mínimo y la revisión de seguridad no son etapas al final del proyecto: son condiciones de entrada.

  • Flujos que he construido
  • Firma electrónica
  • Segundo factor de autenticación
  • Validación de identidad
  • Evaluación de riesgo
  • Renovación y reclasificación de productos de crédito

Arquitectura

Capa de borde

Todo empieza en el CDN

El contenido se sirve pre-renderizado desde una red de distribución global, sin servidor que mantener y con certificado gestionado.

  • HTML estático distribuido en el borde, con caché agresiva para los recursos versionados
  • Cabeceras de seguridad aplicadas en el origen: HSTS, nosniff, control de marcos y política de contenido
  • Funciones en el borde para manipular peticiones y respuestas antes de que lleguen al origen

Capa de frontend

Microfrontends que se componen en runtime

Dos aplicaciones distintas, con stacks distintos y despliegues independientes, se ensamblan en el navegador del visitante. Esta página es el ejemplo: lo que estás leyendo y el chat son piezas separadas.

Shell

Next.js · React

  • Orquesta rutas, layout y estado compartido entre los remotos
  • Module Federation para cargar aplicaciones de otros equipos sin recompilar
  • Librerías de UI versionadas y consumidas por varios productos

Widget

Angular · Stencil

  • Empaquetado como Web Component, montable en cualquier shell
  • Sin acoplamiento al framework que lo hospeda
  • Se despliega solo, sin tocar el shell

Capa de backend

Servicios con el dominio aislado

Construyo microservicios en NestJS y TypeScript sobre arquitectura hexagonal, documentados con OpenAPI y cubiertos con pruebas.

  • Puertos y adaptadores que mantienen el núcleo de negocio testeable y portable
  • APIs públicas y privadas con contratos OpenAPI como fuente de verdad
  • Arquitectura dirigida por eventos para procesos asíncronos
  • Escalado a cero: el servicio no consume nada mientras nadie lo llama

Capa de datos

Modelado por patrón de acceso

Trabajo datos sobre bases NoSQL y relacionales, diseñando el modelo a partir de cómo se consulta y no al revés.

  • DynamoDB con diseño de claves orientado a los patrones de acceso reales
  • Bases relacionales para lo que exige consistencia e integridad referencial
  • Procesamiento batch en Spark para transformación de datos

Infraestructura

Nada se crea a mano

Gestiono infraestructura como código en Terraform, con módulos reutilizables, estado remoto y separación por ambiente.

  • Despliegue continuo autenticado por identidad federada, sin llaves de larga vida
  • Separación entre la capa que puede otorgar permisos y la que automatiza CI
  • Compuertas de calidad y seguridad obligatorias en cada integración
  • Rotación de secretos y monitoreo proactivo como parte de la operación

Caso de estudio

Este sitio es el ejemplo

Todo lo que acabas de leer está aplicado aquí mismo. El código es público y la infraestructura se define en Terraform, así que cada línea de esta tabla se puede verificar en los repositorios.

Costo mensual
0 USD, dentro de la capa gratuita
en línea
Frontend
Next.js, export estático en Firebase Hosting
en línea
Infraestructura
Terraform, dos capas con permisos separados
en línea
Autenticación de CI
Workload Identity Federation, sin llaves JSON
en línea
Widget
Angular Elements, desplegado y versionado aparte
en construcción
Backend
NestJS en Cloud Run, escala a cero
en construcción

La arquitectura hexagonal también está aquí

No es solo una viñeta de la capa de backend. Este frontend está partido en dominio, aplicación e infraestructura: el dominio no importa React, la página depende de un puerto y no del archivo que carga el contenido, y una regla de linter rompe la compilación si un import apunta hacia adentro. El día que el contenido venga del API, cambia una línea del contenedor y nada más se mueve.

Composición en runtime

El microfrontend, en vivo

El chat de abajo no viene en el bundle de esta página. Es un Web Component construido en Angular, desplegado desde otro repositorio a otro sitio, que este shell en React descarga y verifica mientras lo estás leyendo.

Cargando el widget desde su propio despliegue…

Origen
widgets.alejoavila.com
Versión
—
Framework
—
Tamaño
—
Integridad
—
Elemento
—

Los datos del panel se leen del manifest real, no están escritos a mano. Si el bundle no coincidiera con su hash, el navegador se negaría a ejecutarlo y esta página seguiría funcionando igual.