Senior DevSecOps / Ingegnere full-stack
Retribuzione fissa iniziale da 75.000 EUR lordi annui, a tempo pieno
Luogo di lavoro: Da remoto, in tutto il mondo.
Forma contrattuale. La forma del rapporto, la società contraente e la legge applicabile vengono definite al momento dell'offerta e non sono indicate qui, perché dipendono dal luogo in cui risiede la persona selezionata e non sono state decise in anticipo. La persona candidata è responsabile del proprio diritto di lavorare nel luogo in cui vive; anche i dettagli vengono discussi al momento dell'offerta.
Componente variabile. È prevista una componente variabile annua legata ai risultati dell'azienda, aggiuntiva rispetto alla retribuzione fissa iniziale. È separata dalla retribuzione fissa e non è garantita.
Area. Ingegneria
La missione
Oggi la piattaforma funziona su un hosting gestito. Gli acquirenti istituzionali e pubblici nei mercati iniziali chiedono sempre più spesso una soluzione diversa: installazione sulla propria infrastruttura, sotto i propri controlli e senza dipendenze che non abbiano approvato. Esiste un progetto tecnico per questa installazione, che indica con franchezza ciò che non è ancora pronto per essere distribuito. Questo ruolo lo trasforma in un'installazione funzionante, continuando nel frattempo a sviluppare il prodotto.
Come saranno davvero i primi 90 giorni
- Includere nell'artefatto di build, con checksum, i moduli remoti importati dalle edge function all'avvio, così un'installazione in una rete privata non deve raggiungere un registro pubblico per partire.
- Avviare lo stack di riferimento in container: Postgres con le sue estensioni e l'intera cronologia delle migrazioni, servizio di autenticazione, livello REST, archiviazione degli oggetti, gateway e runtime delle funzioni, usando primitive Kubernetes di base che si comportino allo stesso modo su qualsiasi cluster gestito.
- Definire per iscritto il percorso canonico di una nuova installazione, inizializzare prima lo schema e poi applicare le migrazioni successive, dimostrando il risultato su un cluster vuoto invece di dichiararlo soltanto.
- Restituire un elenco sincero di ciò che non è ancora distribuibile. Il problema maggiore già noto è che le operazioni quotidiane oggi presuppongono una console di hosting che l'installazione del cliente non avrà; le procedure operative sostitutive non esistono ancora.
Di che cosa sarà responsabile il ruolo in seguito
- Infrastruttura come codice e manifest di installazione basati su primitive comuni, non su un solo fornitore cloud, affinché lo stesso insieme funzioni sul Kubernetes gestito dal cliente, chiunque lo amministri.
- Il processo di rilascio: artefatti costruiti fuori dal perimetro del cliente, firmati, pubblicati con le loro impronte e una distinta dei componenti software, poi verificati all'ingresso. Il team di sicurezza del cliente approva ogni aggiornamento: questa promessa ha valore solo se il meccanismo la rende letteralmente vera.
- Traffico in uscita negato per impostazione predefinita e documentazione dei byte esatti di ogni flusso consentito, affinché il team di rete del cliente possa esaminare il canale invece di fidarsi di una sua descrizione.
- Le interfacce dei servizi. Posta, identità, endpoint del modello e marcatura temporale sono opzioni scelte dal cliente, ciascuna con una conseguenza dichiarata per ciò che si può attestare. Se un'opzione è attiva ma non configurata, deve impedire l'operazione. L'assenza di un ripiego silenzioso è la proprietà di sicurezza.
- Eseguire un piccolo modello linguistico sull'hardware del cliente, all'interno del suo perimetro, per le funzioni di IA attivate, in modo che le richieste non abbiano alcun percorso verso l'esterno.
- Sviluppo continuo del prodotto. Circa metà del lavoro riguarda l'applicazione React e le funzioni lato server. Non è un ruolo limitato all'infrastruttura.
Requisiti
- Ha messo in container un servizio Postgres con stato, lo ha gestito in produzione e lo ha davvero ripristinato da un backup, non soltanto descritto in una procedura.
- Lavora con le primitive di base di Kubernetes e sa spiegare perché uno StatefulSet con un modello di richiesta per i volumi non equivale a un database gestito da un operatore.
- Scrive TypeScript sia nel frontend sia nelle funzioni lato server ed è disponibile a dedicare metà settimana al codice del prodotto.
- Ha mantenuto attivo un controllo che blocca l'operazione in caso di errore anche sotto pressione per la consegna e sa raccontare la conversazione necessaria per farlo.
- Sa leggere le policy di sicurezza a livello di riga di Postgres e spiegare come una policy apparentemente plausibile possa esporre dati.
- Lavora da remoto e in autonomia su un'area di cui nessun altro è responsabile. La posizione è aperta a persone ovunque nel mondo; i primi 90 giorni descritti sopra indicano con sincerità il lavoro richiesto nel primo trimestre.
Che cosa questo ruolo non è
- Non è un ruolo dedicato soltanto a Kubernetes. Circa metà del lavoro riguarda il codice dell'applicazione; chi vuole restare fuori dal prodotto non si troverà bene.
- Non si parte da zero. La piattaforma esiste già e ha una lunga cronologia di migrazioni; ogni scelta su come distribuirla è vincolata da quella storia e da ciò che l'azienda può legittimamente dichiarare.
- Non è una funzione di audit o di attestazione. Qui i controlli sono codice che funziona, non rilievi scritti sul codice altrui.
- Non è un ruolo di guida con persone da gestire. Non c'è ancora nessuno da coordinare e l'annuncio non fingerà il contrario.