Per un progetto enterprise ad alta complessità, siamo alla ricerca di professionisti Senior con solide competenze Java, esperienza nello sviluppo di applicazioni backend e conoscenza dei processi batch, dello scheduling e degli strumenti di monitoraggio applicativo.
Cerchiamo persone autonome nell'analisi tecnica, capaci di contribuire allo sviluppo e all'evoluzione delle applicazioni, affrontare problematiche complesse e garantire affidabilità, performance e continuità operativa.
? Competenze tecniche richiesteSviluppo backend
- Java: conoscenza approfondita del linguaggio, programmazione object-oriented, Collections, generics, gestione delle eccezioni, concorrenza e multithreading.
- Spring Boot: sviluppo di servizi backend, configurazione applicativa, dependency injection, gestione delle API REST e integrazione con sistemi esterni.
- Spring Framework: conoscenza di Spring Core, Spring Context, gestione delle transazioni e configurazione dei componenti applicativi.
- API REST e integrazioni: progettazione e consumo di servizi, gestione degli errori HTTP, timeout, retry e comunicazione tra sistemi distribuiti.
- Maven o Gradle: gestione delle dipendenze e build dei progetti.
Elaborazioni batch e scheduling
- Spring Batch: progettazione, sviluppo e manutenzione di job, step, reader, processor e writer.
- Gestione di job complessi: chunk processing, tasklet, transazioni, restartability, retry, skip, gestione degli errori e riesecuzione controllata.
- IBM Workload Scheduler (TWS): definizione e gestione di job, calendari, dipendenze, predecessori e successori, finestre operative, monitoraggio delle esecuzioni e gestione delle anomalie.
- Capacità di analizzare flussi batch end-to-end, individuare colli di bottiglia e garantire la corretta elaborazione dei dati.
- Database e persistenza
- PostgreSQL: conoscenza approfondita di SQL, join, subquery, CTE, funzioni e interrogazioni complesse.
- Modellazione dei dati relazionali, chiavi, vincoli,
indici e gestione delle transazioni.
- Analisi e ottimizzazione delle query attraverso execution plan, indici e strumenti di diagnostica.
- Conoscenza dei livelli di isolamento, locking, deadlock e concorrenza nell'accesso ai dati.
- Familiarità con ORM e persistence framework, preferibilmente JPA/Hibernate.
- Monitoring, observability e troubleshooting
- Dynatrace: monitoraggio applicativo, analisi delle performance, individuazione dei colli di bottiglia e correlazione tra servizi e componenti.
- Splunk: ricerca e analisi dei log, costruzione di query, correlazione degli eventi e supporto alla diagnosi degli incidenti.
- Conoscenza dei concetti di logging strutturato, metriche, distributed tracing, correlation ID e analisi dei tempi di risposta.
- Capacità di effettuare root cause analysis su errori applicativi, anomalie batch, problemi di performance e malfunzionamenti nelle integrazioni.
- Familiarità con la definizione e l'interpretazione di indicatori di disponibilità, latenza, throughput e tassi di errore.
⚙️ Competenze architetturali e operative
- Architetture applicative enterprise e sistemi distribuiti.
- Principi di progettazione software, modularità, separazione delle responsabilità e design pattern.
- Gestione della resilienza applicativa: timeout, retry con backoff, circuit breaker e idempotenza, ove pertinenti.
- Gestione delle transazioni e delle consistenze dei dati nei processi distribuiti e batch.
- Sicurezza applicativa di base: autenticazione, autorizzazione, gestione delle credenziali e protezione dei dati.
- Conoscenza dei principali protocolli e formati di integrazione, tra cui HTTP/HTTPS, JSON e XML.
- Familiarità con sistemi di versionamento del codice, in particolare Git.
- Conoscenza delle pipeline CI/CD e dei processi di build, test e rilascio.
- Familiarità con container Docker e piattaforme di orchestrazione come Kubernetes o OpenShift.
- Conoscenza dei principali ambienti applicativi Linux e dei comandi utili per analisi e troubleshooting.
- Capacità di leggere stack trace, analizzare dump e individuare problemi legati a memoria, thread e risorse applicative.
? Qualità del software e modalità operative
- Scrittura di unit test e integration test, preferibilmente con JUnit e Mockito.
- Conoscenza delle pratiche di debugging e analisi del codice.
- Attenzione alla manutenibilità, alla qualità del codice e alla gestione del debito tecnico.
- Capacità di documentare soluzioni tecniche, procedure operative e modalità di recovery.
- Esperienza nella gestione degli incidenti applicativi, nell'analisi dei problemi ricorrenti e nell'individuazione di azioni preventive.
- Capacità di collaborare con team di sviluppo, operations, infrastruttura e referenti funzionali.
- Autonomia nella gestione delle attività, approccio strutturato al problem solving e orientamento al risultato.
⭐ Nice to have
- Apache Kafka: conoscenza di architetture event-driven, producer e consumer, topic, partizioni, offset, consumer group, gestione dei messaggi e strategie di retry.
- MongoDB: conoscenza di database documentali, modellazione dei documenti, query, indici e aggregazioni.
? Vuoi entrare a far parte di Techrock? Se possiedi le competenze richieste, oppure conosci un professionista in linea con il profilo, contattaci o condividi questo annuncio. invia il tuo CV a
[email protected]
#Techrock #Java #SpringBoot #SpringBatch #PostgreSQL #Dynatrace #Splunk #TWS #Kafka #MongoDB #SoftwareEngineering #ITJobs
📌 Senior Java Software Engineer (Lombardia)
🏢 Techrock
📍 Lombardia