Construyendo SW: Lecciones del Backend

Pequeña advertencia: este artículo trata sobre palabrotas en el código y sobre las lecciones aprendidas al construir SW, un servicio backend que ingiere eventos de GitHub, extrae texto escrito por personas y detecta blasfemias en tono de broma. La idea fue crear analítica ligera no moderación, con flujos de consentimiento incorporados desde el núcleo.
Comenzamos con Postgres por seguridad y familiaridad, pero al escalar surgieron problemas habituales: vistas materializadas frágiles, contención en inserts, VACUUM y WAL que consumen tiempo. La solución fue dividir responsabilidades: Postgres como control plane para contabilidad de ingesta, recibos de consentimiento y metadatos, y ClickHouse como fact store para hechos de alto volumen como utterances y hits. Ese balance redujo peleas con el almacenamiento y mejoró rendimiento.
La normalización de texto fue clave porque la profanidad no llega siempre escrita de forma literal. Construimos una tuberia de normalización que repara UTF8, aplica NFKC, case folding, elimina espacios de ancho cero y mapea leetspeak para evitar falsos positivos tipo Scunthorpe. Luego implementamos detección versionada con un formato de reglas que incluye templates, lemas, categorías y detector_version para poder comparar resultados sin reescribir historia.
La detección de idioma es complicada y GitHub no adjunta metadata de idioma en commits. Probamos enfoques: detección por rangos Unicode, funciones en Postgres, y finalmente funciones en ClickHouse que ofrecen velocidad y escala. Cuando no queda claro, se usa lang_code un como fallback para mantener consistencia.
La privacidad y el consentimiento fueron requisitos innegociables. Convertimos ids de usuario y repositorio en HIDs, forzamos información identificable a un esquema de Postgres con reglas estrictas y diseñamos flujos de opt-in y opt-out verificables sin depender de OAuth. Opt-out mediante un archivo cero bytes en la raíz del repo y opt-in mediante gist público con un hash de desafío permitieron auditoría y revocación sencilla. Por defecto todo es anónimo y los insultos se enmascaran.
Para backfills y replays diseñamos idempotencia con ids determinísticos basados en UUIDv7 y SHA256, y gestión de leases por hora en Postgres para evitar trabajo duplicado. El lema fue simple: idempotencia es supervivencia. Telemetría por lease facilita detectar y diagnosticar problemas de ingesta.
En la capa de servicio adoptamos un diseño ports-first que mantiene límites claros, evita dependencias cíclicas y facilita pruebas. Modules exportan solo interfaces y la wiring se hace con un kit interno. Esto nos dio superficies predecibles para evolucionar la plataforma sin enredos.
La observabilidad vino desde el inicio: logs estructurados con timings por operación, tablas de ingest_hours con telemetría y métricas de Nightshift que registran compresiones, podas y reverificaciones de políticas. Con métricas fiables la operativa deja de ser babysitting y se vuelve predecible.
El crecimiento de datos obliga a políticas de retención. Nightshift resume datos en ventanas horarias y diarias, calculando contadores, categorías, términos principales y desgloses por idioma, y luego elimina los utterances crudos. Esto reduce terabytes a unos pocos gigabytes útiles para exploración y permite que el proyecto sea replicable en un portátil.
Conclusiones prácticas: la separación Postgres control-plane y ClickHouse fact-store funcionó muy bien; la normalización y un rulepacker versionado mitigaron la deriva de detección; la protección del consentimiento y la anonimización son imprescindibles; patrones de idempotencia y leasing hacen los replays seguros; el diseño ports-first limpió dependencias; y la observabilidad reduce el coste operativo.
En Q2BSTUDIO aplicamos estas mismas buenas prácticas al desarrollar soluciones a medida para clientes. Somos una empresa de desarrollo de software que ofrece aplicaciones a medida y software a medida, especialistas en inteligencia artificial, ciberseguridad y servicios cloud aws y azure, además de servicios de inteligencia de negocio y power bi. Si buscas desarrollar una plataforma escalable y respetuosa con la privacidad, descubre nuestros servicios de desarrollo de aplicaciones y software a medida en servicios de desarrollo de aplicaciones a medida o conoce nuestras soluciones de inteligencia artificial para empresas en ia para empresas y agentes IA.
Ofrecemos desde arquitecturas backend híbridas hasta integración con servicios cloud, automatización, analítica con Power BI y auditoría de seguridad y pentesting. Si tu proyecto requiere escalabilidad, cumplimiento y modelos de IA prácticos, trabajamos en la implementación de agentes IA, pipelines de datos y paneles de inteligencia de negocio para que tomes decisiones basadas en datos.
En resumen, construir SW fue un ejercicio de ingeniería en almacenamiento, normalización, detección y privacidad. Las lecciones aprendidas son transferibles a cualquier proyecto de software a medida y esperamos aplicarlas en soluciones reales para clientes de Q2BSTUDIO, combinando experiencia en software, inteligencia artificial y ciberseguridad para entregar productos robustos y responsables.
Comentarios