Construyendo Software: Lecciones del Backend

Pequeña advertencia: este artículo trata sobre el uso de palabrotas en el código y sobre el desarrollo de un backend que las detecta en contextos humorísticos. En los últimos meses construimos SW, un servicio backend que ingiere eventos de GitHub, extrae texto escrito por humanos y detecta blasfemias irónicas. La intención fue siempre analítica ligera y no moderación, con mecanismos de consentimiento integrados desde el diseño.
Al principio elegimos Postgres por familiaridad, seguridad y garantías ACID. Funcionó bien durante un tiempo, pero al escalar surgieron fricciones: vistas materializadas frágiles y costosas de refrescar, inserciones de alto volumen que provocaban deadlocks, ajustes de VACUUM y problemas habituales de índices y WAL. La solución fue dividir responsabilidades: Postgres como plano de control para contabilidad de ingestión, metadatos y recibos de consentimiento, y ClickHouse como almacén de hechos para hits y utterances con tablas optimizadas para recortes y rollups económicos. Esa separación nos liberó de pelear con un único motor de almacenamiento.
El procesamiento de texto fue otra batalla. Las blasfemias no se escriben de forma uniforme: leetspeak, homoglifos, espacios de ancho cero y normalizaciones complejas. Si se normaliza en exceso aparecen falsos positivos ridículos. Diseñamos una canalizacion de normalizacion que repara UTF8, aplica forma NFKC, case folding, elimina caracteres invisibles, mapea variantes leet y colapsa espacios. Con eso la deteccion se volvió mucho más robusta.
El concepto de drift en la deteccion nos obligo a versionar reglas. Pasamos de un rules.json plano a un formato rulepacker con plantillas, lemas, categorias y versionado. Cada hit lleva detector_version para que las re-ejecuciones comparen resultados antiguos y nuevos sin reescribir la historia. Esto permitio evolucionar la logica de deteccion sin reprocesar 14 anios de commits cada vez.
La deteccion de idioma es dificil y GitHub no provee siempre metadatos de lenguaje en mensajes de commit o issues. Probamos varias aproximaciones: un detector de script que cuenta rangos Unicode, integraciones con librerias en Postgres y finalmente funciones experimentales de ClickHouse para detectar lenguaje mixto. La realidad es que en muchos casos conviene caer en un fallback como lang_code un cuando no hay certeza.
La privacidad y el consentimiento fueron requisitos innegociables. Empezamos almacenando nombres de repos y usuarios, pero lo eliminamos para evitar doxxing. Convertimos identificadores a HIDs pseudonimizados, forzamos que cualquier informacion de identidad viva en Postgres con reglas estrictas para prevenir fugas accidentales. El flujo de consentimiento fue simple y verificable sin OAuth: opt-out mediante un archivo cero bytes en la raiz del repo, opt-in mediante un gist publico con un hash de desafio, recibos durables en Postgres y revocacion eliminando el archivo o gist. Las opt-outs prevalecen y las opt-ins permiten desenmascaramientos limitados. Esto hizo el proceso auditable y eticamente defendible.
Procesar quince anios de GH Archive implica reintentos y replays. Sin diseño determinista se generan duplicados o drift. Adoptamos IDs deterministas con UUIDv7 derivados de SHA256 y un sistema de leasing en Postgres para que un solo worker reclame una hora, la procese y marque el trabajo como completado. El resultado fue idempotencia y seguridad en replays.
En arquitectura del servicio aplicamos un enfoque ports-first. Definimos puertos y contratos para evitar dependencias ciclicas y facilitar pruebas. No renunciamos a decisiones practicas en el codigo por dogma: estructura clara de servicios, repositorios y modulos, y un paquete de wiring para alinear dependencias internas. Esto mantuvo las superficies modulares y mejoro la mantenibilidad.
Observabilidad fue imprescindible desde el primer dia. Logs estructurados con tiempos por operacion, telemetria de leases de ingest, metricas de Nightshift durante rollups y consultas que comparan tamaños comprimidos y no comprimidos en ClickHouse. Gracias a eso las operaciones dejaron de ser vigilacia constante y pasaron a ser respuestas basadas en datos cuando algo destaca.
La gestion de retencion de datos resolvio el problema del crecimiento exponencial. En lugar de conservar cada mensaje de commit y comentario para siempre, Nightshift consolida en resúmenes horarios y diarios con totales, categorias, top terms y desglose por idioma, y luego elimina las utterances y hits crudos. El ahorro de almacenamiento es enorme y mantiene el proyecto viable incluso para exploracion en un portatil domestico.
Lecciones clave: la division Postgres control-plane y ClickHouse fact-store fue la victoria. Normalizacion y rulepacker evitan reprocesos masivos. La deteccion de idioma es compleja y conviene fallback a un codigo neutro. Los flujos de consentimiento basados en primitivas de GitHub mantienen la etica del proyecto. Determinismo y leasing hacen los backfills repetibles. Un diseño ports-first evita deps ciclicas y la observabilidad integrada hace que la operacion sea aburrida, que en este contexto es buena señal.
En Q2BSTUDIO aplicamos estas mismas filosofias en proyectos reales de desarrollo de software a medida y aplicaciones a medida. Como empresa especializada en software a medida, inteligencia artificial y ciberseguridad diseñamos soluciones escalables que combinan buenas practicas de arquitectura con cumplimiento y privacidad. Si su empresa busca desarrollar una aplicacion robusta, podemos ayudarle con procesos de diseño, implementacion y despliegue en la nube, incluyendo servicios cloud aws y azure.
Ofrecemos desde modernizacion de backends y pipelines de datos hasta proyectos de servicios inteligencia de negocio y Power BI para explotacion analitica. Tambien trabajamos con agentes IA y soluciones de ia para empresas, creando integraciones seguras y eticas que respetan consentimiento y privacidad. Para conocer nuestras capacidades en desarrollo de aplicaciones puede visitar nuestro servicio de aplicaciones y software multiplataforma y para explorar servicios de inteligencia artificial visite nuestra pagina de inteligencia artificial.
Adicionalmente ofrecemos servicios de ciberseguridad y pentesting para proteger APIs, pipelines y datos sensibles, y contamos con experiencia en integraciones cloud seguras, despliegues automatizados y estrategias de retencion y privacidad que escalan con su negocio. Si le interesa una consultoria sobre arquitecturas híbridas Postgres y ClickHouse, deteccion de texto, o construir pipelines idempotentes y observables, en Q2BSTUDIO estamos listos para ayudar.
Palabras clave incorporadas de forma natural para mejorar posicionamiento: aplicaciones a medida, software a medida, inteligencia artificial, ciberseguridad, servicios cloud aws y azure, servicios inteligencia de negocio, ia para empresas, agentes IA y power bi. Si desea conversar sobre un proyecto concreto o evaluar una prueba de concepto, nuestro equipo le orientara en los siguientes pasos y en como traducir ideas a software fiable y escalable.
Y si finalmente compartimos el repositorio de SW, espero que la parte del frontend sea menos dolorosa que el backend. Maldita sea, ahora tocar escribir interfaces tambien.
Comentarios