Descripción
**Equipo de herramientas para MongoDB**
**Equipo:** Herramientas para MongoDB (Producto e Ingeniería)
**Ubicación:** Remota
**Proyectos:** percona/percona\-clustersync\-mongodb y percona/percona\-backup\-mongodb
**Acerca del equipo**
==================
El Equipo de herramientas para MongoDB desarrolla las herramientas operativas de código abierto de Percona para MongoDB. Dos proyectos están en el centro de nuestra labor. Percona ClusterSync para MongoDB (PCSM) clona y replica continuamente datos entre clústeres. Percona Backup para MongoDB (PBM) es una solución distribuida y de bajo impacto para copias de seguridad y restauración de conjuntos de réplicas y clústeres fragmentados. Ambos están escritos en Go, ambos tienen licencia Apache 2\.0 y ambos se desarrollan íntegramente de forma abierta.
Este puesto se centra principalmente en PCSM, que es más reciente y evoluciona rápidamente, por lo que tendrás una influencia real sobre su configuración final. También trabajarás en PBM. Ambas herramientas comparten muchos problemas complejos: topología de clúster, oplog y flujos de cambios, coherencia entre fragmentos y rendimiento en clústeres productivos muy grandes. La experiencia previa en copias de seguridad y restauración constituye aquí una ventaja real, no solo un requisito formal.
**Los proyectos**
================
* **PCSM** (enfoque principal): clonación inicial de datos seguida de replicación continua de cambios mediante los flujos de cambios de MongoDB, tanto para conjuntos de réplicas como para clústeres fragmentados. Aún está en versión previa a 1\.0 y evoluciona rápidamente.
* **PBM** (enfoque secundario): copia de seguridad y restauración coherentes con recuperación hasta un punto específico en el tiempo, utilizando la captura del oplog para mantener la coherencia entre conjuntos de réplicas y clústeres fragmentados, con almacenamiento compatible con S3 y en sistemas de archivos. Está impulsado por procesos pbm\-agent en cada nodo y una CLI pbm. Es maduro y ampliamente desplegado en producción.
**En qué trabajarás**
=========================
**Principalmente en PCSM**
--------------------
* **El motor central de replicación:** clonación inicial de colecciones seguida de captura continua de cambios mediante los flujos de cambios de MongoDB, con manejo correcto de tokens de reanudación, ordenación y capacidad de reanudación tras fallos.
* **Corrección y tolerancia a fallos a escala:** recuperación limpia ante caídas de red, elecciones de primarios y reinicios sin pérdida ni duplicación de cambios, y análisis cuidadoso de las garantías de entrega que podemos prometer con sinceridad.
* **Soporte para clústeres fragmentados:** replicación entre fragmentos, gestión de las realidades de las migraciones de fragmentos y la actividad del equilibrador, y mantenimiento de la coherencia en el destino.
* **Filtrado por espacio de nombres y gestión automática de índices**, además de los casos límite que surgen con DDL, TTL y diferencias de índices entre origen y destino.
* **Rendimiento y rendimiento general:** paralelización de la clonación, aplicación de contrapresión y mantenimiento razonable del uso de memoria y conexiones frente a clústeres grandes con gran volumen de cambios.
* **La CLI y la API HTTP** que controlan y supervisan una sincronización, así como las métricas y los registros que permiten a un operador confiar en lo que está ocurriendo.
**También en PBM**
-------------------
* **Copia de seguridad, restauración y recuperación hasta un punto específico en el tiempo**, coherentes, tanto para conjuntos de réplicas como para clústeres fragmentados, utilizando copias de seguridad de tipo físico o lógico.
* **Almacenamiento de copias de seguridad:** integración fiable con los principales servicios de almacenamiento de objetos en la nube (S3, GCS, Azure Blob Storage...) y sistemas de archivos remotos, y manejo del rendimiento y los modos de fallo que aparecen a gran escala.
* **El agente pbm\-agent y la CLI pbm**, y el estado de la colección de control en MongoDB que los coordina en todo el clúster.
**Compartido entre ambos**
----------------------
* **Trabajo en abierto:** solicitudes de extracción (pull requests), revisiones de código, JIRA y foro comunitario.
* **Calidad en las versiones:** pruebas, empaquetado y CI y escaneo de seguridad que controlan cada cambio.
**¿Qué has hecho?**
=======================
* **Amplia experiencia práctica con Go en entornos productivos**, con dominio real de la concurrencia: goroutines, canales, cancelación de contextos, grupos de trabajadores (worker pools) y contrapresión. Has depurado una condición de carrera que solo aparecía bajo carga, y sabes cómo la identificaste.
* **Conocimientos sólidos sobre sistemas distribuidos y coherencia de datos.** Puedes explicar con claridad los conceptos de "al menos una vez" frente a "exactamente una vez", idempotencia, ordenación y qué se requiere para hacer que un proceso con estado sea reanudable.
* **Conocimientos prácticos de MongoDB:** flujos de cambios, oplog, tokens de reanudación, conjuntos de réplicas y fragmentación. No es necesario haber construido previamente un sistema de replicación, pero sí debes comprender por qué resulta difícil.
* **Capacidad para crear y operar herramientas de línea de comandos y APIs HTTP**, e instrumentarlas con métricas y registros estructurados.
* **Hábito de escribir pruebas que detecten problemas reales**, y comodidad al trabajar con una cadena de herramientas mixta.
* **Experiencia trabajando en abierto:** flujos de trabajo con Git y solicitudes de extracción, realización y recepción efectiva de revisiones de código, y comunicación clara por escrito con colaboradores que nunca has conocido en persona.
**Deseable**
================
* Experiencia previa en desarrollo interno de bases de datos, tuberías CDC, ETL o herramientas de migración de datos.
* Familiaridad con el estilo de métricas y observabilidad de Prometheus.
* Experiencia con golangci\-lint, escaneo de vulnerabilidades (por ejemplo, Trivy) y empaquetado deb y rpm.
* Antecedentes en mantenimiento o contribución a un proyecto de código abierto con una comunidad externa.
* Exposición a clústeres fragmentados de MongoDB a gran escala, donde el comportamiento del equilibrador y la interacción con las copias de seguridad dejan de ser teóricos.
**Cómo trabajamos**
===============
Ambos proyectos se alojan en GitHub, las contribuciones se realizan mediante solicitudes de extracción y revisiones de código, y seguimos el trabajo en JIRA. Nos importa mantener el código abierto verdaderamente abierto, por lo que, por defecto, el trabajo que realices aquí será público y seguirá siéndolo.
**¿Por qué Percona?**
En Percona creemos que un mundo abierto es un mundo mejor. Nuestra misión es permitir que todos innoven libremente, ofreciendo el mejor software de bases de datos de código abierto, soporte y servicios. Hacemos que las bases de datos y las aplicaciones funcionen mejor mediante una combinación única de experiencia y software de código abierto desarrollado con la comunidad para ti. Nuestros equipos técnicos son expertos en MySQL, MongoDB, PostgreSQL y MariaDB.
Percona se enorgullece de ser una empresa exclusivamente remota y globalmente dispersa: ¡tenemos colegas en más de 50 países! Ofrecemos una cultura colaborativa y altamente comprometida, donde tus ideas son bienvenidas y tu voz se escucha.
Nuestro personal recibe excelentes beneficios, incluyendo horarios laborales flexibles y diversos programas de tiempo libre remunerado, todo el equipo necesario para tu oficina remota, fondos para desarrollo profesional (capacitación externa, certificaciones, conferencias), subsidios continuos para conectividad y la oportunidad de participar en nuestro plan de incentivos basado en acciones. También contamos con beneficios que apoyan un sano equilibrio entre vida laboral y personal, como el Equipo de Aventuras de Percona, Trabaja desde Cualquier Lugar, FlowDays, FryDays y una flexibilidad general. Además, fomentamos la responsabilidad social mediante nuestro programa de voluntariado PAVE y Women Transforming Technology.
Si te entusiasma la idea de trabajar en una empresa tecnológica de rápido crecimiento, reconocida como una de las mejores del sector y líder mundial en el ámbito de las bases de datos de código abierto, ¡hablemos!
Conéctate con nosotros y mantente al día sobre nuestras últimas novedades y desarrollos siguiéndonos en LinkedIn y Twitter. ¡Esperamos conectar contigo!