Job Summary
We are looking for an experienced Spring Boot Java Developer to join our innovative IT team. The successful candidate will play a pivotal role in designing, building, and maintaining distributed systems with a focus on ensuring transactional integrity, performance, security, and reliability. The ideal candidate will be well-versed in managing complex backend services, handling large-scale transactions, and ensuring system robustness and availability in a distributed environment.
Key Responsibilities
- Transaction Management:
- Implement and manage distributed transactions using Sagas for compensating transactions to maintain data consistency across services.
- Handle transaction reconciliation to sync systems when third-party integrations or services go out of alignment.
- Error Handling:
- Develop comprehensive error-handling mechanisms for system and business errors, including managing timeouts, delays, and transaction retries in distributed environments.
- Define and implement error codes, status codes (such as HTTP codes for APIs), and employ standardised error formats (e.g., RFC7807).
- Create automated and manual error resolution processes, ensuring proper logging for troubleshooting.
- Logging & Auditing:
- Ensure detailed request and response logging for external/internal services, with debug and audit logs enabled where necessary.
- Incorporate performance logging and error tracking with detailed contextual information for diagnostics.
- Data Modelling:
- Develop and maintain canonical data models, ensuring consistency across integrations and services.
- Handle complex data transformations and ensure efficient tracking with message headers (context IDs) for monitoring and troubleshooting.
- Validation:
- Enforce business validations at appropriate application layers, particularly within APIs to ensure the integrity of business logic.
- Security:
- Implement robust authentication and authorisation protocols, handling system IDs, tokens, and human credentials securely.
- Ensure adherence to industry-standard security best practices for distributed systems.
- Business Logic & Rules:
- Define and enforce critical business rules and logic within the service layer to ensure smooth service operation.
- Monitoring & Alerting:
- Set up and maintain monitoring systems, including real-time alerts for system issues or performance bottlenecks.
- Caching:
- Implement and manage efficient caching strategies to improve performance and reduce system load.
- Batch Processing & Scheduling:
- Design and manage batch jobs, scheduling processes with enterprise-grade scheduling tools to ensure timely data processing and system integrity.
- Message Ordering:
- Ensure correct message ordering in distributed environments to avoid concurrency issues and ensure data consistency.
- Date & Time Management:
- Handle complex date and time calculations, ensuring consistency across all services by centralising date/time processing.
- Service Availability (24x7):
- Ensure high availability of services to handle client transaction requests and maintain operations, even during backend downtime or failures.
Qualifications & Experience
- Proven experience as a Spring Boot Java Developer, with a strong focus on distributed systems.
- Hands-on experience managing distributed transactions, error handling, data modelling, and system security.
- Strong background in designing and implementing robust monitoring, reconciliation, caching, and batch processing solutions.
- Ability to ensure high system availability and manage complex transaction flows in a cloud-based or hybrid environment.
- Exceptional problem-solving skills and a strong focus on optimising system performance and security.
Preferred Skills
- Experience working with Sagas or similar frameworks for compensating transactions.
- Hands-on knowledge of reconciliation processes and tools for transactional sync.
- Familiarity with standard error handling frameworks (e.g., RFC7807).
- Proficiency with enterprise scheduling and batch processing tools.
Technical Skills
- Java Programming: Strong proficiency in Java, including core language features, data structures, algorithms, and multi-threading.
- Spring Ecosystem: In-depth expertise in Spring Boot, Spring Batch, Spring Data, Spring MVC, and Spring Security.
- Microservices Architecture: Strong understanding of microservices architecture and design patterns.
- RESTful APIs: Experience designing, exposing, and consuming RESTful web services.
- Database Expertise: Proficiency with JPA/Hibernate for database interaction and a deep understanding of SQL.
- DevOps Tools: Experience with Docker, Kubernetes, Maven, Gradle, and other CI/CD tools.
- Testing & Quality: Strong experience with unit testing frameworks such as JUnit and Mockito, ensuring high-quality code through test automation.