Ingeniero sénior de DevSecOps y desarrollo full stack
A partir de 75.000 EUR anuales, bruto, tiempo completo
Lugar de trabajo: Remoto, en todo el mundo.
Modalidad de contratación. La forma de contratación, la entidad contratante y la ley aplicable se establecen en la etapa de oferta y no se indican aquí, ya que dependen de la ubicación del candidato seleccionado y aún no se han decidido de antemano. El candidato es responsable de su propia autorización para trabajar en el lugar donde reside, y estos aspectos se tratan en el mismo momento.
Componente variable. Se paga un componente variable anual vinculado al desempeño de la empresa además del salario base inicial. Es independiente del salario base inicial y no está garantizado.
Disciplina. Ingeniería
La misión
La plataforma funciona hoy mediante alojamiento gestionado. Cada vez más compradores institucionales y públicos de los mercados principales no pueden utilizarla de ese modo: quieren desplegarla en su propia infraestructura, bajo sus controles y sin dependencias que no hayan aprobado. Ya existe un plan técnico para esa modalidad, que también deja claro qué elementos todavía no se pueden empaquetar. Este puesto convierte ese plan en un despliegue operativo y sigue desarrollando el producto mientras lo hace.
Cómo es realmente el primer periodo de 90 días
- Integre en un artefacto de compilación con sumas de comprobación las dependencias de módulos remotos que las funciones perimetrales resuelven al arrancar, para que un despliegue en una red privada no necesite acceder a un registro público durante el inicio.
- Implemente la pila de referencia en contenedores: PostgreSQL con sus extensiones y su historial completo de migraciones, el servicio de autenticación, la capa REST, el almacenamiento de objetos, una puerta de enlace y el tiempo de ejecución de funciones, sobre primitivas de Kubernetes que se comportan de forma idéntica en cualquier clúster gestionado.
- Defina por escrito la ruta canónica para una instalación limpia, inicialice el esquema primero y luego aplique las migraciones hacia adelante, y verifique esta secuencia en un clúster vacío en lugar de asumirla como válida.
- Presente una lista franca de lo que todavía no puede empaquetarse. El mayor problema conocido es que las operaciones diarias dependen hoy del panel del proveedor de alojamiento, que no existirá en un despliegue del cliente; los procedimientos operativos que lo sustituyan aún no están escritos.
Lo que el puesto asume después de eso
- Infraestructura como código y los manifiestos de despliegue, escritos sobre primitivas básicas en lugar de un único proveedor de nube, de forma que el mismo conjunto funcione en el Kubernetes gestionado por el cliente, independientemente de quién lo opere.
- La ruta de publicación: artefactos construidos fuera del perímetro del cliente, firmados, publicados con sus resúmenes criptográficos y una lista de materiales de software, y verificados al entrar. El equipo de seguridad del cliente aprueba cada actualización; esto solo tiene valor si el mecanismo garantiza que sea así.
- Tráfico saliente denegado por defecto y documentación exacta de los bytes de cada flujo permitido, para que el equipo de red del cliente pueda inspeccionar el canal en vez de confiar en una descripción.
- Las interfaces externas. Correo, identidad, punto de acceso al modelo y sellado de tiempo son módulos que el cliente configura. Cada ajuste tiene consecuencias explícitas sobre lo que podrá afirmarse después, y cada módulo falla de forma cerrada si está activado pero no configurado. La ausencia de una alternativa silenciosa es la garantía de seguridad.
- Ejecutar un pequeño modelo de lenguaje en el propio hardware del cliente dentro del perímetro, para las superficies de inteligencia artificial que estén activadas, para que ningún prompt tenga ningún camino hacia fuera.
- Ingeniería de producto, de forma continua. Aproximadamente la mitad del trabajo consiste en la aplicación React y las funciones del lado del servidor que la sustentan. Este no es un puesto exclusivo de plataforma.
Lo que se requiere
- Ha ejecutado en producción un servicio PostgreSQL con estado, desplegado en contenedores, y lo ha restaurado realmente desde una copia de seguridad, no solo en un procedimiento escrito.
- Trabaja con las primitivas básicas de Kubernetes y puede explicar por qué un StatefulSet con una plantilla de solicitud de volumen no equivale a una base de datos gestionada por un operador.
- Programa en TypeScript tanto en el frontend como en las funciones del servidor y está dispuesto a dedicar la mitad de cada semana al código del producto.
- Ha mantenido un control cerrado bajo presión de entrega, y puede describir la conversación que tuvo para lograrlo.
- Lee políticas de seguridad a nivel de fila de Postgres y puede explicar cómo una política aparentemente válida puede provocar una fuga de datos.
- Trabaja de forma remota y sin supervisión en una superficie que nadie más posee. El puesto está abierto a candidatos de cualquier parte del mundo, y lo descrito en los primeros 90 días es una representación honesta de lo que representa el primer trimestre.
Lo que no es este puesto
- No es un puesto exclusivo de Kubernetes. Aproximadamente la mitad consiste en código de aplicación, y alguien que desee mantenerse alejado del producto se sentirá insatisfecho.
- No es un proyecto desde cero. La plataforma ya existe, tiene un amplio historial de migraciones y cada decisión de empaquetado está condicionada por ese historial y por las afirmaciones que la empresa puede sostener.
- No es una función de auditoría ni de aseguramiento. Los controles aquí son código ejecutable, no informes de hallazgos sobre el código de otros.
- No es un puesto de liderazgo con personas bajo su responsabilidad. Actualmente no hay nadie a cargo, y el anuncio no lo fingirá.