Java Developer
- Toronto, ON, Canada
Contract
Applications open in a new tab.
Job details
- Job type
- Contract
- Apply by
- Posting language
- English
- Posted
Original job description
Job Title: Senior Software Engineer – Java / Apache Flink (Hybrid)
Location: Toronto, ON (Hybrid – 3 days in-office / 2 days remote)
Position Overview
We are seeking a talented Senior Java Engineer with deep expertise in Apache Flink to join our growing Core Data Platform team in Toronto.
In this role, you will design, build, and optimize high-throughput, low-latency distributed streaming pipelines. You will play a critical part in evolving our real-time data architecture, transitioning legacy batch workflows into highly scalable, event-driven streaming solutions. This is a hybrid role requiring three days a week in our downtown Toronto office, offering a perfect balance of collaborative in-person whiteboarding and remote flexibility.
Core Responsibilities
- Pipeline Engineering: Design, develop, and maintain production-grade, stateful stream processing applications using the Java DataStream and Table/SQL APIs in Apache Flink.
- Architecture Evolution: Architect real-time event-driven systems utilizing Apache Kafka or AWS Kinesis integrated seamlessly with Flink.
- Performance Tuning: Optimize Flink cluster configurations, manage memory tuning (Managed vs. Unmanaged memory), write custom serializers, and manage RocksDB State Backend performance.
- Fault Tolerance & Reliability: Implement and manage robust state management strategies, including checkpointing, savepoints, and schema evolution rules to ensure exactly-once processing guarantees.
- Cross-functional Collaboration: Partner with Data Science, DevOps, and Product teams to translate complex business analytics into highly performant real-time metrics.
Required Skills & Qualifications
- Experience: 5+ years of professional software engineering experience in backend development, with a minimum of 2+ years of hands-on experience building production pipelines with Apache Flink.
- Java Expertise: Mastery of core Java (Java 11/17+), including concurrency packages, multithreading, garbage collection tuning, and memory management.
- Distributed Ecosystems: Strong experience with event streaming backbones (specifically Apache Kafka, schema registries, and consumer/producer APIs).
- Data Fundamentals: Deep understanding of stream processing concepts such as event-time processing, watermarking, late data handling, and tumbling/sliding windows.
- CI/CD & Cloud: Familiarity deploying Flink applications into containerized cloud environments (Kubernetes, AWS, or Managed Flink providers like Ververica/Confluent Cloud).
- Location Constraint: Must be currently living in or willing to relocate to the Greater Toronto Area (GTA) and able to commute to our downtown office 3 days a week.
More about this job
Responsibilities
Design, build, and optimize stateful, high-throughput streaming pipelines using Java and Apache Flink, integrating event-streaming systems such as Kafka or AWS Kinesis. Tune performance and reliability through cluster and memory optimization, state management, checkpointing, and collaboration with Data Science, DevOps, and Product teams.
Requirements
Requires 5+ years of backend software engineering experience, including at least 2 years building production Apache Flink pipelines, and strong Java expertise. Candidates should have experience with Kafka and schema registries, stream-processing concepts, and deploying Flink in containerized cloud environments; they must live in or be willing to relocate to the Greater Toronto Area and commute to the office three days weekly.
Skills
- Java
- Apache Flink
- Apache Kafka
- AWS Kinesis
- Stream Processing
- Distributed Systems
- Event-Driven Architecture
- Java Concurrency
- Multithreading
- Memory Management
- Checkpointing
- Kubernetes
- AWS
- Schema Registries
- CI/CD
- RocksDB
Visa sponsorship
Not detected in the job text
Categories
- Software
- Technology
- Data & Analytics
- Engineering
Keywords
- Java
- Apache Flink
- Java DataStream API
- Flink Table API
- Flink SQL API
- Apache Kafka
- AWS Kinesis
- Event-Driven Systems
- Distributed Streaming Pipelines
- Stateful Stream Processing
- Event-Time Processing
- Watermarking
- Late Data Handling
- Tumbling Windows
- Sliding Windows
- Exactly-Once Processing
- Checkpointing
- Savepoints
- Schema Evolution
- RocksDB State Backend
- Custom Serializers
- Memory Tuning
- Java Concurrency
- Multithreading
- Garbage Collection
- Schema Registries
- Kubernetes
- AWS
- CI/CD
- Real-Time Data Architecture