02 ago
|
Robótica AI
|
Colombia
02 ago
Robótica AI
Colombia
Acerca del cargo
Experiencia de 5 a 10 años
Estamos desarrollando servicios backend en C# que se encuentran en la intersección entre la búsqueda vectorial, el procesamiento basado en colas de mensajes y los modelos de lenguaje de gran escala (LLM). Serás responsable de desarrollar los servicios que consumen eventos desde colas, recuperan y almacenan embeddings en una base de datos vectorial, se comunican con un endpoint de inferencia de LLM y transmiten los resultados a los clientes en tiempo real.
Toda la infraestructura está contenerizada y se ejecuta sobre AWS ECS. La carga de trabajo es variable y sensible a la latencia, por lo que este rol requiere tanto habilidades de desarrollo de software como conocimientos en optimización de capacidad, rendimiento y escalabilidad.
Lo que harás
- Desarrollar servicios backend en C#/.NET que soporten flujos de trabajo basados en búsqueda vectorial y modelos de lenguaje (LLM).
- Trabajar con Qdrant, incluyendo diseño de colecciones, estrategias de indexación, almacenamiento de embeddings, búsquedas por similitud, filtrado y optimización de consultas.
- Consumir y procesar mensajes desde AWS SQS, implementando reintentos, manejo de colas de mensajes fallidos (Dead Letter Queue), idempotencia y procesamiento por lotes.
- Integrar un endpoint de inferencia LLM expuesto como un servicio contenerizado con una API estilo GPT, gestionando construcción de solicitudes, respuestas en streaming, tiempos de espera, reintentos y degradación controlada del servicio.
- Diseñar e implementar APIs REST bien versionadas, documentadas y capaces de mantener un comportamiento predecible bajo alta carga.
- Implementar conexiones WebSocket para transmisión de datos en tiempo real, asegurando estabilidad a medida que aumenta la concurrencia.
- Desarrollar e integrar webhooks, incluyendo verificación de firmas, protección contra reenvíos (replay attacks) y mecanismos de entrega confiables.
- Contenerizar aplicaciones utilizando Docker y participar en su despliegue sobre AWS ECS.
- Ser responsable del rendimiento del servicio: analizar rutas críticas, optimizar concurrencia y planificar capacidad antes de que el crecimiento del tráfico genere incidentes.
Habilidades requeridas
C# / .NET
- Entre 5 y 10 años de experiencia profesional desarrollando en C#,
preferiblemente sobre .NET 6 o superior.
- Dominio sólido de async/await, Task, Cancellation Tokens y el modelo de ejecución por hilos, comprendiendo tanto su funcionamiento como los errores comunes asociados.
- Experiencia utilizando inyección de dependencias, separación adecuada de responsabilidades y diseño de servicios fácilmente testeables.
- Evitar el uso de estados globales o variables estáticas mutables que dificulten la escalabilidad y el mantenimiento.
Ingeniería de APIs y aplicaciones en tiempo real
- Desarrollo de APIs REST utilizando Core.
- Implementación y administración del ciclo de vida de conexiones WebSocket: gestión de conexiones, control de flujo (backpressure), reconexiones automáticas y mecanismos de heartbeat.
- Experiencia enviando respuestas en tiempo real mediante streaming (token por token o fragmento por fragmento), evitando cargar toda la respuesta en memoria antes de enviarla.
- Desarrollo e integración segura y confiable de webhooks.
Escalabilidad y confiabilidad (el núcleo del cargo)
- Experiencia manejando cargas elevadas y realizando planificación de capacidad, entendiendo cuántas conexiones concurrentes puede soportar un servicio y cuáles son sus principales limitaciones.
- Implementación de técnicas como connection pooling, limitación de tasa (rate limiting), throttling, circuit breakers y estrategias de retroceso (backoff).
- Diseño de servicios sin estado (stateless) y arquitecturas orientadas al escalamiento horizontal.
- Capacidad para identificar cuellos de botella mediante herramientas de monitoreo y perfilado, apoyándose en métricas reales y no únicamente en la intuición.
Datos y mensajería
- Experiencia trabajando con bases de datos vectoriales; se prefiere Qdrant, aunque también son válidos conocimientos en Pinecone, Weaviate, Milvus o pgvector.
- Comprensión de cómo se generan, almacenan y consultan los embeddings,
incluyendo las ventajas y desventajas de diferentes dimensiones e índices.
- Experiencia con sistemas de colas de mensajes, especialmente AWS SQS, comprendiendo el modelo de entrega at least once y cómo diseñar aplicaciones tolerantes a este comportamiento.
- Experiencia con bases de datos relacionales y/o documentales.
Herramientas y buenas prácticas
- Docker y contenerización.
- AWS, especialmente ECS, además de conocimientos en ECR, CloudWatch e IAM.
- Git y GitHub: ramas, pull requests y revisiones de código.
- Manejo de variables de contexto y configuración mediante archivos .env u otros mecanismos seguros, evitando credenciales codificadas en el código fuente.
- Comodidad trabajando desde la terminal.
Deseable (No obligatorio)
- Experiencia directa integrando APIs de modelos de lenguaje (OpenAI, Anthropic o servidores de inferencia autoalojados).
- Experiencia implementando arquitecturas RAG (Retrieval-Augmented Generation).
- Conocimientos de gRPC o SignalR.
- Infraestructura como código (Terraform, AWS CDK o CloudFormation).
- Herramientas de observabilidad como trazabilidad distribuida, logging estructurado y paneles de métricas.
- Experiencia realizando pruebas de carga con herramientas como k6, JMeter o NBomber.
Perfil que buscamos
Buscamos una persona que escriba código limpio y eficiente, entendiendo que ambas cualidades deben ir de la mano. Que piense en el comportamiento de un sistema cuando el tráfico se multiplica por diez antes de que eso ocurra. Que, ante un problema de rendimiento, primero mida, analice y luego optimice. Que se sienta cómoda siendo responsable de un servicio de principio a fin: desde el momento en que un mensaje llega a la cola hasta que la respuesta es enviada al cliente en tiempo real.
Cómo postularse
Envía tu hoja de vida junto con el enlace a tu perfil de GitHub o una muestra de código que refleje cómo estructuras un servicio desarrollado en C#.
Además, en un breve párrafo, cuéntanos sobre un sistema que hayas desarrollado o mejorado y que tuviera que soportar concurrencia real: ¿cómo era la carga?, ¿en qué punto comenzaron los problemas? y ¿qué acciones implementaste para solucionarlos?
Lugar de trabajo: Empleo remoto
📌 Ingeniero Senior C# / .NET — Búsqueda Vectorial y Servicios con Modelos de Lenguaje (LLM) (Colombia)
🏢 Robótica AI
📍 Colombia