Senior Java Developer
Senior engineer designing, building and running Java 21 / Spring Boot microservices for a programme migrating a monolithic platform (onboarding, order management, billing, notifications) to independently deployable services. Stack includes REST APIs, Kafka, PostgreSQL, Redis, Docker/Kubernetes on AWS with CI/CD pipelines.
- Compensation
- Not disclosed
- Location
- London, United Kingdom
- Work setup
- Not specified
- Seniority
- Senior
- Employment
- Contract
- Experience
- 10+ years
- Category
- Software engineering
- Posted
Skills
Must have
- Extensive commercial Java experience (~10 years or equivalent), incl. Java 17/21, concurrency, collections, JVM performance
- Strong Spring Boot, dependency injection, Spring Data JPA, Hibernate, Spring Security
- Track record delivering/operating microservices; service boundaries, timeouts, retries, circuit breakers, eventual consistency
- Designing REST APIs with OpenAPI docs, OAuth 2.0 / OpenID Connect, token-based access control
- Practical Apache Kafka (or comparable) experience: consumer groups, ordering, delivery guarantees, duplicate handling
- Strong SQL, relational modelling, transactions, query optimisation, ideally PostgreSQL; familiarity with Redis caching
- Deploying to AWS or equivalent cloud using Docker and Kubernetes
- Testing with JUnit 5, Mockito, integration testing with Testcontainers or WireMock
- Git, Maven or Gradle, CI/CD tools (GitHub Actions, GitLab CI, Jenkins)
- Agile collaboration: breaking down ambiguous requirements, explaining design choices, code review, mentoring
Nice to have
- Monolith migration experience with incremental approaches such as the strangler pattern
- Domain-driven design, contract testing, distributed transaction patterns (sagas, transactional outbox)
- Terraform, Helm, AWS services (EKS, RDS, MSK)
- OpenTelemetry, Prometheus, Grafana, performance/load-testing tools
Full description
The role
We are looking for a Senior Java Developer to help design and deliver a platform built around Java microservices. You will take ownership of backend services, contribute to architecture decisions and work closely with product, QA and DevOps colleagues to turn business requirements into reliable software. This role suits an experienced engineer who enjoys hands‑on development and solving the practical challenges of distributed systems.
The microservices project
You will join a programme modernising a digital platform covering customer onboarding, order management, billing and notifications. The work combines extracting functionality from an existing monolithic application with developing new services that can be deployed and scaled independently. The aim is to shorten release cycles, improve resilience and support growing transaction volumes without disrupting existing users.
The proposed stack centres on Java 21 and Spring Boot, with REST APIs for synchronous integration and Apache Kafka for asynchronous events. Each service will own its data, using PostgreSQL where appropriate, with Redis for caching. Docker containers will run on Kubernetes in AWS, supported by automated build, test and deployment pipelines.
You will help define service boundaries and API contracts, plan incremental migration and resolve issues such as duplicate events, failed downstream calls and data consistency across services.
Key responsibilities
- Design, build and maintain Java microservices, taking features from technical design through testing, deployment and production support.
- Develop secure REST APIs with clear contracts, versioning, validation and consistent error handling.
- Implement Kafka producers and consumers, including retries, idempotent processing and dead-letter handling.
- Contribute to architecture discussions, documenting decisions about service boundaries, data ownership and integration patterns.
- Write automated tests and review code to maintain quality, readability and long-term maintainability.
- Improve application performance and reliability using profiling, metrics, logs and distributed tracing.
- Work with DevOps engineers on container deployments and CI/CD pipelines; diagnose production issues and implement lasting fixes.
- Collaborate with product owners and QA engineers, explain technical trade-offs and mentor less experienced developers.
Essential skills and experience
- Java: Extensive commercial Java experience, typically around 10 years or equivalent depth, including recent work with Java 17 or 21, concurrency, collections and JVM performance.
- Spring: Strong experience with Spring Boot, dependency injection, Spring Data JPA, Hibernate and Spring Security.
- Microservices: A track record of delivering and operating microservices, with an understanding of service boundaries, timeouts, retries, circuit breakers and eventual consistency.